记一次从代码审计到拿下内网edr的过程
0x01、前言
在某次授權紅隊行動中,客戶給定目標外網資產很少
經過各種挖掘,各種嘗試,久久沒有結果,注意到某系統為通用系統。
于是開始了下面的故事。
0x02、尋找源碼到getshell
查找源碼
1、網盤泄露:這套系統并不開源,各種網盤泄露網站一頓查找,無果
2、Github、gitlab泄露:嘗試了多個關鍵詞,均無果
3、Fofa找同類型的站:用favicon.ico,或是用title來搜,并且將這些資產采集起來,最終在某個站發現web.rar,成功獲得源碼
代碼審計
查看代碼目錄結構如下
首先看web.xml,注意到這個過濾器filter.PurFilter
跟進去看下
此處定義幾個數組
使用getRequestURI()獲取url,查找url中最后一個點的位置,然后獲取后綴轉小寫
這個過濾器實際上是一個權限校驗的工作,如果用戶沒登錄的話是只能訪問數組里的路徑,或者后綴數組的特定后綴的文件。但是此處使用
getRequestURI()獲取url,我們注意到
只要我們的strSuffix為后綴數組中的就能過了這個驗證。
我們首先了解一下getRequestURI()這個方法
當我們請求/test/1.jsp;aaa時getRequestURI()取到的結果也是/test/1.jsp;aaa
那么此時想到構造請求/test/1.jsp;1.jpg就能繞過這個權限校驗
繞過權限校驗以后開始尋找可getshell的漏洞點,直接全局搜索multipart,尋找上傳功能
看到第二個的時候成功發現一處任意文件上傳
獲得權限
按照代碼分析,直接構造包上傳shell,成功getshell
0x03、拿下內網edr
獲取edr系統權限
通過shell執行tasklist發現此機器裝了某edr
掃描c段443端口發現https://172.x.x.x為某edr?web管理界面
用frp開個代理
用已經公開的漏洞測了一遍發現,存在一處命令執行漏洞沒修
利用公開的腳本直接彈了一個shell回來
此次的目的不是獲取這個edr的服務器權限,而是可以進到web管理界面可以做到給終端下發后門。所以目標為的登錄web管理界面
首先的想法是找數據庫賬號密碼然后登錄進后臺。
之前也沒搞過,先看下進程
好像是mongodb,使用以下命令查數據庫密碼
find /ac -type f -name "*.php"| xargs grep "password"
太多了發現密碼名字好像叫mongodb_password,再次查找.
find /ac -type f -name "*.php"| xargs grep "mongodb_password"
查的過程中感覺就算找到數據庫連上了密碼也很難解密
于是想到之前的未授權任意用戶登錄,漏洞文件在/ui/login.php
于是先備份文件,然后將此處的if改為if(1==1)
使用/ui/login.php?user=admin登錄成功
然后就可以加白名單批量下發馬執行上線了。
0x04、技術總計
1、想辦法獲取外網系統源碼
2、代碼審計獲取外網shell
3、歷史漏洞獲取edr系統權限
4、修改文件進而任意登錄到web管理端
總結
以上是生活随笔為你收集整理的记一次从代码审计到拿下内网edr的过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WAF机制及绕过方法总结:注入篇
- 下一篇: 干货|如何在无回显时渗透