基本原理
几乎任何一个网站的建设都离不开数据库,而数据库不仅仅可以储存数据,也可以读写文件,执行命令等等操作,这就导致了攻击者可以利用数据库的这些功能来进行攻击,提权。
数据库提权方式一般分为:注入点和得到数据数据库账号信息。
基本流程
注入点
寻找注入点,最好是高权限注入点
得到数据库账号信息
获取数据库的账号信息方法:
- 通过数据库查询
- 网站连接数据库配置文件
- 弱口令或者爆破
注意:这里的账号信息指的是数据库管理员的账号和密码
攻击方式:
1.通过数据库连接工具,该方法需要数据库支持外连
2.通过webshell进行估计,大马上一般都有数据库提权相关的功能
3.通过其他工具,如msf等等,这些也是外连的一种,所以有需要数据支持外连
实例
MySQL
UDF提权
原理我就不讲了(主要是不会),讲一下复现的时候,需要注意的几点:MySQL的版本(导出dll的路径问题),文件读写权限(secure_file_priv)。
利用webshell大马自带的MySQL提取:
MOF提权
mof是windows系统的一个文件(在c:/windows/system32/wbem/mof/nullevt.mof)叫做"托管对象格式"其作用是每隔五秒就会去监控进程创建和死亡。其就是用又了mysql的root权限了以后,然后使用root权限去执行我们上传的mof。隔了一定时间以后这个mof就会被执行,这个mof当中有一段是vbs脚本,这个vbs大多数的是cmd的添加管理员用户的命令。
这是网上的原理解释,需要注意的是它的条件比udf提权更苛刻,win高版本下,无法对nullevt.mof进行任何操作
启动项
利用读写权限将攻击载荷(如添加用户)写到启动项目录中,当服务器重启时,自动执行
反弹shell
原理跟udf类似
MSSQL
xp_shell
sp_oacreate
沙盒
oracle
总结
说句实话,你说这些数据库提权方法的具体原理我懂吗,懂个屁啊。知道有这么个东西就行哈,有兴趣的操作一遍。思路远比方法更重要,大佬勿喷!!!!
如果要采用数据库提权,第一,当前数据库支不支持提权,第二,采用哪种提权方法,成功率高,这些都是要考虑的
个人觉得如今的数据库提权,已经比较鸡肋了。
切勿浮躁!!!!!