實戰 | 記一次對某站點的滲透測試(bypass)
0x01、起因
某天A把我留下,想讓我檢測一下某站點的安全程度(有授權的,領導的任務罷了)
我想了沒想就拒絕了,說,上次不是給你挖出過一個sql注入了嗎
他說,不虧待你,有額外獎勵的
不是因為獎勵啊,只是單純的喜歡滲透網站罷了

垃圾水文,輕噴
0x02、一戰
先訪問某站(原諒我不放圖片,不然無法過審)
看樣子是一個平平無奇的網站
看到.action后綴,立馬想到java環境,多半是tomcat+struts2
直接掏出大寶貝一把嗦

很明顯失敗了
不慌,再看看別的啥的
掃了端口發現oa系統,通過信息收集手段獲取賬號密碼
但我認為此處功能點沒什么用,故暫時放棄(打臉了)
掏出lijiejie的神器一頓掃,也只發現了一處DS_Store文件泄露

棒極了,啥都沒有
接下來還發現了一處反射xss

但這種漏洞要是交差,估計會被A罵死
身為聰明勇敢的讀書人,怎么可能會放棄呢

備份文件,掃不到;目錄爆破,啥都沒有;中間件漏洞,不存在;端口服務開放,做夢呢
就連廢棄系統都在嘲笑我

好在天無絕人之路,我在網站底部看到了一絲希望

此時我的思路是:fofa找相同系統站點------getshell------拖源碼審計------再回到主站
直接fofa大寶貝一把梭
但站點少的可憐,拿lijiejie的神器跑了一輪,也沒有啥泄露。。。

還是硬著頭皮看了一眼
這次運氣挺好,使用相同系統的站點存在struts2漏洞

果斷上傳拿shell

工具也有不準的時候,雖然顯示上傳失敗了,但仍然能getshell
冰蝎連接成功!蕪湖,起飛

但接下來這權限著實把我整吐了,systeminfo無法執行,rar也用不了,但我又懶得一個一個下載源碼

因為本人太菜了,提權基本上不會
但身為聰明勇敢的讀書人,怎么能放棄呢?
這里就去討教了一下某前輩

對某前輩表示感謝
因為此處使用的windows環境,不太方便反彈shell,把木馬換成了哥斯拉的馬兒
哥斯拉下有個模塊,方便操作shell
監聽——nc直連——運行systeminfo文件。成功!

復制補丁號,然后找到了一下缺失的補丁
在此推薦某位師傅的網站:https://bugs.hacking8.com/tiquan/,方便查找

這里采用Potato提權
但生活總喜歡在為我關了一扇窗后,再用門狠狠的夾我的腦子
提權一直失敗,換用了其它的方式也不行
后面才知道,原來SweetPotato源碼中的默認路徑與我的環境不符,要重新修改后再編譯
編譯完,再重新執行
成功提權!

然后就是源碼打包,下載
(PS:用哥斯拉默認的源碼打包,下載下來后文件會報錯,而且缺失很多,也不知道為什么,但權限提升后用7z打包就好了,很奇怪。如果有知道的表哥,在下方留個聯系方式)
接下來就是java源碼審計了

大體目錄是這樣的。老規矩,先翻看一下配置文件,看一下它用了哪些框架


看樣子是使用了Hibernate+Struts2+Spring框架
用jd-gui快速反編譯class文件,獲取java源碼
將Hibernate和Struts2框架的相關配置文件、action對象、filter大體熟悉以后,就開始審計了
這里不得不吐槽一句,這個開發是真的懶,部分源碼還留著與該站點相關的注釋
既然是為了證明危害,那么基本是以getshell-sql-信息泄露為主
全文查找文件上傳的地方
在搜索處發現了一處可以upload的地點
(此處圖片找不到了,假裝我是圖片1)
查看對應java文件源碼,發現無任何過濾

去掉注釋,上傳,不過不知道為什么會出現這種狀況,查詢了很多資料也沒弄明白


直接構造接口上傳,發現會有攔截,但本地源碼審計無攔截,估計是某站點二次開發了

第一處水洞:賬號密碼可爆破
順便看了一下oa系統
成熟的框架,也導致了sql注入和越權不存在
但是邏輯漏洞仍然存在,修改密碼處未限制,能批量爆破賬號改密碼

后面因不可抗力,A也叫停了我,遂暫停了測試
0x03、二戰
幾個星期后的某天,A又提到了某站點,從它口中得知,該站點翻新了
那我上次的源碼也約等于白費了。。。
果不其然,A又找到了我,我也是很《輕松》且《愉快》的接下了任務
第一處漏洞:弱口令
我想了想,既然翻新了,那多多少少會加點東西
更新后發現了部分文章頁面泄露了某editor的組件信息

抱著嘗試的心態,來到了登錄頁面

結果發現,admin/admin一發入魂

第二處漏洞:部分源碼+密鑰泄露
四處翻看目錄,偶然間發現一個壓縮包

看了看大小,感覺像是源碼,下載下來了
果然,泄露了很多secret,有關aliyun、釘釘、wechat、云盤等等

其中部分還與其它公司資產相關聯

oss也能成功接管,也涉及了很多的敏感信息(不敢多說,保命要緊)

但還是高興早了,class相關文件沒打包下來。。意味著只能看jsp的源碼,也就只有對找接口來說,會方便一些
通過配置文件查看,發現學校改成SSM框架,暈,別想與sql注入相遇了
第三處漏洞:bool ssrf
上面下載下來的源碼對接的是oa系統,而第一次的源碼對應的是主站,所以我將重心又重新轉回了oa系統
根據上方的源碼可以看到增添了ueditor組件,1.4.3的jsp版本,相信大家都懂

第四處漏洞:bypass 多個waf--->getshell
又是通過新的源碼,我找到了oa內一個極為隱蔽的上傳點


話不多說,登錄oa,找到頁面開始上傳
一開始我先傳了個jpg,發現能正常解析

再傳了個html,直接g了,顯示Connection reset

我心里一驚,常規應該不會那么攔截,多半是有硬件waf
通過大小寫上傳SVG文件發現,此處應該采用了黑名單,心想,90%是穩了


然而后面的情況讓我挺絕望的,光是后綴名這里我就繞過了很久
換行、多個等號、加點、臟數據、不常見后綴名、去掉引號繞過等組合手段,都無一例外的被干掉了
在這里苦苦繞了一晚上
也算是比較好玩吧,這里的開發有一個邏輯,你把content-type改成text/html,再把filename里改成xxx時(不加后綴,直接xxx),系統會自動幫你重命名成時間戳.xxx
于是乎,后綴名就成功繞過了


可內容攔截比較變態,出現一點java特征都不行,連賦值都會被干掉(el表達式除外)
既然是硬件waf,我想到了臟數據繞過,jsp內容中可以包含html的注釋
最終經過測試,大約80w的臟數據可以成功繞過
可上傳上去冰蝎馬后,無法連接,估計是落地就被干掉了,懷疑存在AV,于是厚著臉皮向某前輩白嫖了免殺馬

上傳成功
這次連接成功,沒有被殺掉

看了一眼,艸,全家桶啊簡直

最后,象征性的whoami,結束戰斗

(本來想進內網的,但想了想,不節外生枝了,如果有機會再說)
0x04、結尾
站在前輩們的肩膀上,結合實際情況,巧妙了繞過了waf,也是蠻開心的
最后也是從A手中拿到了應有的獎勵
安全,狗都不學