記幾次略有意思的 XSS 漏洞發現
記挖洞過程中遇到的幾個XSS漏洞,三個存儲型XSS和一個反射型XSS,主要分享思路。輸入可控,且被輸出,均可測一測XSS。
登錄明細+IP+XFF
登錄后進入【個人中心】,發現【登錄明細】的功能,記錄了登錄時間登錄IP這些東西。

抓登錄的請求包,構造 X-Forwarded-For 頭重放,咦,簡單的拼接,有機會。

很多應用在用戶登錄時都有選擇記錄登錄IP,沒錯,首先想到就是構造xff測sql注入。這里我們不做關于sql注入的分析,主要還是菜xiong反復測試始終沒測出來(默念沒關系沒關系)。
好了,回到正題,登錄明細中將我們構造的xff值回顯,這不得嘗試xss。
登錄明細的記錄我們刪除不了,避免造成不必要的困擾,這里就不用彈窗的payload了,我們使用console.log('test'),觸發效果就是控制臺輸出日志test。

這個漏洞提交后廠家很快就修復了,真的很快。分析發現修復是做了兩次HTML轉義,傳入傳出各一次。
加之修復前的測試截圖找不著了,這里只能用修復后的截圖給大家分析分析了。
修復前,就是尖括號沒還未被轉義成“沒用”的字符時,是能觸發控制臺日志輸出的。
下面是修復前植入的payload,但是截圖是修復后的。廠家修復做了輸入輸出兩次轉義,但由于下面的payload是修復前植入的,就沒辦法做輸入時的轉義,僅能做輸出的轉義了。



下面是修復后植入的,做了輸入輸出兩次轉義,所以展示給用戶的就成了這樣。


登錄成功失敗均有記錄,那么不就證明了非self-xss。
聊天框+img標簽+圖片地址
發現輸入框,輸入文本test<>"" 發送,尖括號雙引號被轉義,嘗試繞過無果。

傳送圖片,發現content參數可控圖片地址,地址中插入test<>""簡單測試,發現未對圖片地址中的尖括號雙引號轉義,構造事件下面的xss Payload。

成功觸發,哈哈哈。其實這里gif表情圖同樣可觸發。

查看源代碼,發現payload已經成功植入了。

payload發送給了目標,目標聊天窗口同樣返回,證明非self-xss。
動態+簡單過濾+分兩次發布
可發布動態,直接console.log(1111),發布會直接替換成空。

這里其實只是做了前端檢測,相信師傅們都能很輕松繞過,不過這里分享一個我另外的思路。
嘗試將console.log(1111)分兩次發布,
第一次輸入發表:*/sole.log(1111);
