概述
搭載了海洋CMS與phpOA CMS環境的虛擬機進行內網轉發與代理的滲透測試,按照實驗要求對以上這兩個環境進行滲透測試工作,得以下分析報告。
實驗環境搭建與配置
環境搭建
海洋CMS是用windows 2008 R2系統搭建,PHPOA用linux系統搭建,由于實驗環境是事先搭建好了的,所以在這里就不重復了。
環境配置→網絡配置
首先我們做的是內網的滲透,所以我們需要配置海洋CMS兩個虛擬網卡,兩個不同網段的IP,也就是相當于一個是內網,一個是外網,內網連接網的段是跟PHPOA為同一個網段(192.168.80.0/24),內網之間網絡要能ping通,外網跟攻擊者一個網段(192.168.1.0/24),也要能ping通,攻擊者不能直接訪問內網,Windows海洋CMS的IP配置(如圖1),攻擊者IP配置(如圖2),Linux的內網IP配置(如圖3)。

圖1

圖2

圖3
防火墻配置
海洋CMS服務器防火墻必須開啟,防火墻加上兩條規則保證web服務能夠訪問,通過控制面板打開Windows防火墻,點擊高級設置,在入站規則和出站規則加上80端口允許連接的規則;而PHPOA 的Linux服務器需要配置以下幾條規則(如圖4)。
iptables -P INPUT DROP 禁止所有進站鏈接
iptables -I INPUT -p tcp --dport 80 -j DROP 禁止所有80端口的鏈接
iptables -I INPUT -s 192.168.80.10 -p tcp --dport 80 -j ACCEPT只允許指定的內網IP訪問80端口

圖4
3.實驗原理
海洋CMS漏洞原理:
通過代碼審計,利用area參數處理過的地方經過字符是否非法判斷之后,調用echoSearchPage()函數,因為能執行PHP代碼一般就是eval()函數,利用area參數把eval函數帶入進去執行。
lcx端口轉發原理:
lcx工作原理是使不同端口之間形成一個回路,這樣就可以進行端口轉發,常用于外網連接內網3389端口。
這個程序主要采用Socket來實現,有幾個比較重要的函數:bind2bind、bind2conn、conn2conn及transmitdata。transmitdata函數是核心,這個函數作用是使得不同端口之間的數據形成一個回路
內網代理原理:
正向代理:Lhost為了訪問到Rhost,向proxy發送了一個請求并且指定目標是Rhost,然后proxy向Rhost轉交請求并將獲得的內容返回給Lhost,簡單來說正向代理就是proxy代替了我們去訪問Rhost。
反向代理:Lhost只向proxy發送普通的請求,具體讓他轉到哪里,proxy自己判斷,然后將返回的數據遞交回來,這樣的好處就是在某些防火墻只允許proxy數據進出的時候可以有效的進行穿透
而我們平常使用的reDuh、tunna,和reGeorg一樣,都是正向代理。一般都是用戶上傳一個代理腳本到服務器端,本地的程序去連接服務器上的腳本,腳本程序做代理轉發端口和流量。
滲透測試步驟
利用到的工具中國菜刀,lcx.exe轉發軟件,Proxifier代理軟件。
進行外網web滲透→拿外網webshell
海洋web通過代碼審計可以得出area參數里利用eval()函數把一句話木馬帶入,把變量打印出來。
Payload:http://192.168.1.109/search.php?searchtype=5&tid=&area=eval($_POST[hah])
之后直接用菜刀鏈接,密碼是hah(如圖5),直接就能拿到webshell,而且還是system權限的(如圖6)。

圖5

圖6
通過端口轉發遠程連接服務器
之后通過菜刀的虛擬終端創建我們的管理員用戶嘗試開啟服務器的3389端口遠程連接登錄并控制該服務器。(如圖7,圖8)

圖7

圖8
由于服務器開啟了防火墻屏蔽了3389端口了(如圖9),不能遠程登錄到web服務器,所以我們可以利用端口轉發來連接服務器。

圖9
通過菜刀直接可以上傳我們需要的轉發工具lcx.exe(如圖10),執行以下命令(如圖11,圖12),再嘗試連接,連接成功(圖13)。

圖10

圖11

圖12

圖13
內網代理與滲透→內網代理
通過最簡單的arp –a地址解析協議就可以查到內網還存在的一臺主機IP地址(如圖14),當然真正的內網掃描會有很多的主機,所以必須得利用其它的掃描工具,比如nmap,在這里就不演示了。內網的web服務器外網是無法訪問的,只能內網訪問,所以我們可以利用內網代理來實現外網主機訪問內網主機。

圖14
還是由菜刀來把我們事先準備好的reGeorg的對應腳本tunnel.nosocket.php文件上傳到web服務器的web目錄下(如圖15),再通過網頁運行一下該文件(如圖16)沒問題,正常運行,接著打開攻擊者reGeorg的對應目錄下CMD運行reGeorgSocksProxy.py -p 8888 -u
http://192.168.1.109/include/tunnel.nosocket.php命令(如圖17),之后直接打開我們的代理軟件Proxifier設置代理,成功利用內網代理訪問內網的主機(如圖18)。

圖15

圖16

圖17

圖18
內網滲透
既然我們能通過內網代理直接訪問內網主機就可以開始對該內網服務器進行滲透,首先我們可以看到站點直接就是在登錄頁面的,而且登錄不需要驗證碼,可以嘗試密碼爆破,這個時間會比較長,所以我們在這期間可以找找有沒有別的漏洞,相對于這個PHPOA的CMS漏洞,網上可以找到的是屬于文件上傳漏洞,那么我們可以嘗試下該CMS漏洞還存不存在。
要想把一個php木馬掛到網站上首先要在本地構造上傳地址。下圖就是我構建的上傳地址(如圖19)。此路徑也是由代碼審計得出的。

圖19
利用我們構造好的本地上傳html把PHP木馬上傳到內網的服務器主機上,第一個上傳的是隨便一個TXT文件,第二個選擇我們的PHP一句話木馬文件(如圖20)。上傳成功后給出了一個文件的上傳路徑(如圖21),然后嘗試菜刀連接(如圖22),沒問題,內網的webshell也已經拿到了。

圖20

圖21

圖22
實驗總結
總結
通過本次滲透測試實驗可以看出海洋CMS與PHPOA的安全防護結果不是很理想,外網內置參數與函數過濾不夠嚴格,權限策略設置不當,從而導致一步就能拿到webshell以及最高權限。而內網存在文件上傳漏洞,權限中存在漏洞或者權限策略做的不夠得當。本次滲透的突破口主要是分為內網和外網,外網設備存在注入和弱口令破解。內網由于arp防火墻策略做的不是很嚴密。導致內網淪陷。
安全加固建議
對本次滲透給予安全加固建議:
1. 對用戶可控的變量進行嚴格的檢查和過濾;
2. 文件上傳使用隨機數改寫文件名和文件路徑,上傳目錄無執行權限;
3. 還有一些加固建議暫時沒明白,待續。