依照海洋站點與PHPOA的内網滲透實驗任務要求,信息安全三班1組劉一搏自2016年12月26日至2016年12月27日期間,對海洋站點與PHPOA進行内網滲透實驗,得此分析報告。
1. 滲透測試範圍此次滲透測試的主要對象包括:海洋CMS網站、内網的PHPOA。
2. 滲透測試内容在本次滲透測試過程中,通過對海洋CMS網站與其内網PHPOA的結構分析、目錄遍曆探測、用戶和密碼猜解、SQL注入漏洞挖掘分析等幾個方面進行測試,得出海洋CMS網站與其内網PHPOA存在的安全風險點,并針對這些風險點提供安全加固建議。
測試流程1. 對海洋CMS站點進行信息收集
2. 對海洋CMS站點嘗試掃描與注入
3. 對海洋CMS站點嘗試木馬包含
4. 獲取海洋CMS站點shell
5. 建立跳闆,利用内網代理訪問PHPOA
6. 對PHPOA進行信息收集
7. 對PHPOA嘗試路徑掃描
8. 對PHPOA嘗試代碼審計
9. 獲取PHPOA的SHELL
10. 對PHPOA的LINUX系統新建用戶提升權限
11. 對PHPOA的LINUX系統安裝後門
12. 對PHPOA的LINUX系統僞造/清除痕迹
13. 完成報告内容
實驗環境1. 海洋CMS站點環境海洋CMS站點與PHPSTUDY(mysql php)環境。
2. 内網PHPOA環境PHPOA與LINUX apache環境。
3. 内網防火牆配置配置内網防火牆,使内網的PHPOA隻允許海洋CMS站點的機器訪問,阻止内網滲透攻擊方訪問,命令如下:
禁止所有80端口連接,
iptables -I INPUT -p tcp --dport 80 -j DROP
隻允許指定内網IP通過80端口訪問,
iptables -I INPUT -s [ip] -p tcp --dport 80 -j ACCEPT
設置好之後用iptables –nvl查看配置是否正确。
實驗原理1. 找功能函數eval的源碼文件寫入木馬· 因命令執行大緻是函數,eval(),system(),proc_open()之類的,能執行php代碼一般就是eval()函數,檢索頁面源碼有eval函數的地方,發現代碼:@eval("if(".$strIf."){\$ifFlag=true;}else{\$ifFlag=false;}");
@eval("if(".$strIf.") { \$ifFlag=true;}
· 構造含木馬的url:[ip]/search.php?searchtype=5&tid=&area=eval($_POST[cmd])
2. 内網滲透原理· 利用reGeorg proxifier兩個軟件進行内網代理。
· reGeorg利用了會話層的socket5協議,提供了代理程序與代理腳本。
· Proxifier是一款功能非常強大的socks5客戶端,可以讓不支持通過代理服務器工作的網絡程序能通過HTTPS或SOCKS代理或代理鍊。
· 由reGeorg提供的代理腳本與代理程序配合Proxifier使網絡程序生成代理鍊進而滲透到内網訪問内網站點。
滲透測試過程1. 收集海洋CMS站點路徑信息使用禦劍工具掃描海洋CMS站點,收集該站點信息,如圖1所示。
- 圖1 -
2. 判斷獲取SHELL方式通過追蹤area參數處理過的地方,查找源碼中有eval函數的地方,判斷可寫入木馬的位置寫入木馬,如圖2所示。(此處詳細說明請見上文實驗原理部分)
- 圖2 -
3. 得到海洋CMS站點SHELL用菜刀工具連接木馬,如圖3、圖4所示。
- 圖3 -
- 圖4 -
4. 設置内網代理至此,獲取到了海洋CMS站點的SHELL。接下來要進行内網代理,才能滲透至内網訪問内網站點。将reGeorg代理軟件的代理程序腳本上傳至海洋CMS網站目錄下,如圖5所示。
- 圖5 -
驗證reGeorg的代理腳本是否可成功執行,如圖6所示。
- 圖6 –
用CMD→reGeorg連上傳的接代理腳本,如圖7所示。
- 圖7 -
使用Proxifier,socks5客戶端生成代理鍊,如圖8所示。
- 圖8 -
填寫代理信息,如圖9所示。
- 圖9 -
5. 搜索内網主機設置代理完畢後即完成内網代理過程,現在通過菜刀工具打開海洋CMS站點機器的命令窗口搜索内網站點地址,如圖10、圖11所示。
- 圖10 -
- 圖11 -
訪問搜索到的192.168.80.128這個内網地址,看到PHPOA登錄界面,如圖12所示。
- 圖12 -
6. 獲取内網PHPOA主機的SHELL現在想辦法獲取PHPOA的SHELL,通過掃描PHPOA的機器IP沒有獲取到有用信息,通過注入與弱口令均沒有效果,通過查看資料發現此OA某PHP文件存在任意文件上傳漏洞,故寫個最簡單的上傳頁面進行任意文件上傳,首先添加一個空的txt文件(sysConf.txt),再添加木馬文件(bkhorse.php),然後提交上傳,如圖13、圖14所示。(此處詳細說明請見後面的代碼解析部分)
- 圖13 -
- 圖14 -
頁面返回木馬保存路徑,如圖15所示。
- 圖15 -
接下來用菜刀工具連接木馬,獲取到PHPOA的SHELL,如圖16、圖17所示。
- 圖16 -
- 圖17 -
7. 在PHPOA的主機上提權最後用菜刀打開PHPOA機器的終端命令窗口進行提權即完成全部實驗過程。(LINUX提權試了幾種辦法均未成功,故此處暫無内容,繼續奮鬥……)
代碼&語句解析1. PHPOA代碼審計該OA在(ntko\uploadOfficeFile.php)這個文件存在一個任意文件上傳的漏洞,對PHPOA源碼文件(ntko\uploadOfficeFile.php)進行審計,發現源碼中用if判斷了是否存在上傳文件,并且隻對name值為uploadfile文件進行了大小檢測,如圖所示,
如果上傳文件符合大小條件,就會判斷是否接收到name值為attachfile的附件,若接收到附件,則保存于磁盤,并沒有對附件進行任何檢測,如圖所示,
則說明存在任意文件上傳漏洞。
隻需寫個簡單的上傳頁面,提交的目标地址指向這個uploadOfficeFile.php文件,然後上傳name值為uploadfile與attache的兩個文件,上傳uploadfile的文件内容大小符合檢測條件,attache附件文件即可上傳木馬文件。上傳後用菜刀連木馬,拿到shell。
分析結果總結1. 内網滲透實驗體會由于此次實驗中的海洋站點包含一句話木馬位置與内網PHPOA可上傳木馬文件位置兩個突破點均為代碼審計的成果,讓我體會到代碼審計的重要性,對于代碼的審計能力必須提高。
2. 遇到問題及解決遇到問題:
在拿到海洋站點shell後,掃描到内網的PHPOA,隻有登錄頁面,不知道該如何下手。
解決過程:
後來通過搜索引擎得知該OA在(ntko\uploadOfficeFile.php)這個文件存在一個任意文件上傳的漏洞,故對PHPOA源碼文件(ntko\uploadOfficeFile.php)進行審計,發現源碼中用if判斷了是否存在上傳文件,并且隻對name值為uploadfile文件進行了大小檢測,如圖所示,
如果上傳文件符合大小條件,就會判斷是否接收到name值為attachfile的附件,若接收到附件,則保存于磁盤,并沒有對附件進行任何檢測,如圖所示,
則說明存在任意文件上傳漏洞。
隻需寫個簡單的上傳頁面,提交的目标地址指向這個uploadOfficeFile.php文件,然後上傳name值為uploadfile與attache的兩個文件,上傳uploadfile的文件内容大小符合檢測條件,attache附件文件即可上傳木馬文件。上傳後用菜刀連木馬,拿到shell,問題解決。
3. 内網滲透實驗總結通過本次内網滲透實驗,證明了海洋CMS站點不夠安全。對于文件上傳漏洞與SQL注入漏洞雖做了嚴謹的安全加固,但對于功能參數賦值的過濾不嚴,導緻木馬寫入。
通過本次内網滲透實驗,證明了PHPOA不夠安全。對于遍曆目錄與相關權限具備安全防範措施,但對于文件上傳的檢測過于缺乏,導緻木馬寫入。
總結,通過本次滲透測試實驗,評定海洋CMS網站與PHPOA軟件安全級别為"十分危險"。
4. 優化防禦措施檢測/過濾對功能參數的賦值
檢測海洋CMS網站的各個功能參數的賦值情況,檢測賦值内容的長度等方法。
改文件源碼阻止任意文件上傳
對PHPOA所有涉及文件上傳的源碼進行改進,檢測/過濾上傳的文件,更改保存接收文件後保存的路徑。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!