思路決定成敗:F12給了我黑色的眼睛我卻用它來挖洞
*文章原創作者:evil7,本文屬於FreeBuf原創獎勵計劃,未經許可禁止轉載
為了在脫貧致富關鍵的2020年前,正確地貫徹落實互惠雙贏政策和以先富帶後富的重要指示精神。
坐山吃山指哪兒打哪兒,今天就來說說F12除了掛自慰黑頁,如何幫助你完成手工審計吧。(小和尚Maniac&最近在問相關問題,所以文中一道寫來提供基礎學習,文章篇幅將著重解釋)
「打開這個頁面的時候,我就知道這裡肯定有洞」、「看到這個api的返回時我就知道我改如何構造exploitChain了」
大佬們總是一眼識破然後光速提交。我報告都寫完了你卻還在設置掃描器?想擺脫掃描器的你請快打開小本本做筆記。
好了,授人以魚不如授人以漁,今天以FreeBuf的兩個洞
(已修復)
為引子,開始瞎扯…在開源的海洋遨遊,看不到其實能搜得著
世界最大的同性開發者交友網站:Github
你總是說不知道源碼,只能黑盒測試,其實你只是搜尋姿勢不到位。比如在github上就能搜到很多開源的插件代碼,很多甚至官方開源的應用,就算搜不到目標站點的所有源碼,也說不定能找到站點開發者的其他項目,了解了解他的coding習慣語法陋習往往也能帶來不一樣的收穫。
舉例1:Freebuf主站的某dom型xss
我們先來看看流量,尋找某些不一樣的特徵,而這裡找到的特徵,就是我們入手的地方。
可以看見這裡按鈕出現了一個關鍵詞 wpfpaction
那麼插件應該關係於wpfp
,我們可以搜一下,找到看是否找到這個插件的開源代碼,或者自己去wordpress store下載這個插件來審計。
在github找到這個插件的源碼,可以看到有一個奇怪的地方,那就是實際上可以在favorite頁面查找其他用戶的收藏?這是什麼騷操作。。
我們找到wpfp_list_favorite_posts()
這個function,其中有一個$_REQUEST["user"]
引起了我的注意,雖然沒能在freebuf直接找到這個點,但是這個api會不會也存在呢?
進入我的收藏頁面,並帶上這個隱藏的參數,我們看見在https://www.freebuf.com/user/myfavorites?user=1頁面有這樣一個有趣的返回內容:
再繼續回到github,我們直接速審跟進一下這個user參數來去的走向:
可以看到在template里直接把
$user
無處理返回到頁面上了。
(wpfp-page-template.php在wp-favorite-posts.php頁面被include過了,所以我們跟進來到template里)
那麼回到站點,我們直接測試一下是否能構造xss吧。
可以看到,如此一來非常順利的就拿到了一個xss的洞,其實挖洞也沒想像中難,不是么?
同樣修復建議:轉義用戶輸入或者刪除此api。
為F12正名,像開發者去找構造異常尋找弱點
「你逛了半小時相親網站了,找到合適的對象了么?」
「我暫時沒看到合適的伴侶,但是好像找到了2個bug…」
「…恩,挺好…挺好…」
我們來到https://job.freebuf.com也來找找工作。
emmm…順便也找找bug…挺好…挺好…
像個開發一樣,習慣性到處點點,看看響應時間,看看頁面的變化,再找找會不會有「更多機會」 :)
看來「更多機會」真的會帶來更多機會233333。
點擊以後,我們找到了7個可控輸入點,其中2個直接被返回到頁面。是否能找到xss呢?
上探針放dom進參數里,發現0號不可繞過,1號居然沒了???
其實不然,這也是為什麼要開著F12進行測試,我們要看看到底是哪兒發生了錯誤,是否會有「友情提示」?
可見這裡一段error卡在了jquery的選擇器語句中,而下方信息也不要忽視,點進去跟進一下代碼,看看是怎麼處理的。
我們找到所有關聯的文件,知道了city參數是直接傳入,由前端處理的,並且直接拼到了輸出里,使用了危險實現方式
$(dom).html(contents)
教科書般xss點…
那麼接下來就只需要讓error通過就行了,而jq選擇器的拓展語法其實很簡單:
$(dom[value])
選擇器帶值過濾參考:(這就是知識儲備的優勢,基礎特性要牢記!)
https://www.w3.org/TR/selectors-3/#attribute-selectors
測試一下,原來是缺少引號包裹,導致執行錯誤被打死在路上。
於是構造payload完成xss:
後話
前端dom型xss其實是很有意思的,比如當找到一個點,我們可以用#payload
的方式來讓payload只針對用戶攻擊,而攻擊點只使用eval(atob(location.hash.substr(1)))
來構造,盡量避免真正的攻擊目的出現在log里,或者存留在伺服器上,或通過cookie、cdn緩存、第三方載入內容等,做為觸發器做為payload的轉存地。
調試下斷點,跟進js流程或現復現流程弱點再尋找可控點,幫助前端審計的同時還能根據操作的響應時間,判斷是否是前端處理、有沒有後端特殊api流量被暴露、處理時間偏長的是否可能有SQL查詢參與…
不要再說f12隻能自慰掛黑頁了,那只是你不懂合理利用罷了,別只想著用掃描器,掃描器都能掃到還要你干毛?
只會用掃描器不算白帽,頂多算個毛線帽。。哈哈哈23333
*文章原創作者:evil7,本文屬於FreeBuf原創獎勵計劃,未經許可禁止轉載


※萬豪數據泄漏門再敲警鐘,酒店集團7步安全建議
※Armor:一款功能強大的macOS Payload加密工具
TAG:FreeBuf |