一谐岁、漏洞簡介
了解無線安全的同學應(yīng)該都知道基于ESP8266的wifi killer固件骡湖,可以用來輔助無線滲透測試,其自帶了一個web管理界面莫换,其中有一個wifi ap列表霞玄,就是這個列表存在xss注入骤铃。
ESP8266大概長這個樣子,我買的是可以用micro usb線連接電腦的坷剧,那個xss漏洞就在這玩意兒里面:
此漏洞僅存在于wifi killer張館長漢化版惰爬,審計過官方原版的代碼發(fā)現(xiàn)是沒有此漏洞的,影響范圍較小惫企,并且難以利用撕瞧,故公開。
二狞尔、挖洞過程
買了個ESP8266丛版,讓店家給刷好wifi killer固件郵過來的,午休的時候在辦公室想體驗一下偏序,剛拿出手機查看wifi列表注意到有個wifi名字類似于下面這種的:
root <img />
具體名字我記不得了页畦,大概就是這種模式,我覺得挺有意思的禽车,估計這是哪位巨佬在測試wifi名注入嗎寇漫?
然后我就想到wifi killer的web界面上也有一個wifi ap列表,于是便想試試那個列表是不是能夠被注入殉摔,當我在wifi killer的管理界面上切換到wifi ap列表的時候州胳,我發(fā)現(xiàn)這個熱點的wifi名字只顯示出了前面的root?
雖然我反應(yīng)比較遲鈍逸月,但是也馬上意識到了wifi名字這里有一個xss注入漏洞栓撞,接下來就是慢慢去測試payload確認一下到底能不能搞。
最開始的時候使用
<script>alert(/xss/)</script>
這種形式去測試的碗硬,但是卻并沒有生效瓤湘,于是就去看了它前端的代碼,發(fā)現(xiàn)是在js中拼接wifi名字然后通過innerHTML設(shè)置的到頁面上的:
通過這種方式設(shè)置的script并不會被加載執(zhí)行恩尾,但是可以通過設(shè)置一個img標簽觸發(fā)其error來繞過執(zhí)行js弛说,payload如下:
<img src=x onerror='alert(/!/)'>
用手機開個熱點,熱點的名字用上面這個payload:
然后再在wifi killer的管理界面刷新wifi列表翰意,成功使用wifi名字觸發(fā)了彈窗:
但是wifi的名字木人,也就是SSID,協(xié)議規(guī)定了它不能超過32位冀偶,這就很尷尬醒第,幾乎沒有利用空間,最簡單的payload就快占滿了...
請教了303大佬有沒有什么好的利用方案:
成吧进鸠,好歹也算是個利用方式稠曼,這樣當我發(fā)現(xiàn)我的wifi列表中出現(xiàn)wifi killer默認的熱點名字zhangguanzhang
的時候,我就啟動一個payload熱點客年,不圖別的霞幅,我就是嚇嚇他....畢竟我也做不了別的漠吻,啊哈哈哈哈
三、官方原版是如何做的呢
后來我還去看了原版的wifi killer的這部分邏輯:
https://github.com/SpacehuhnTech/esp8266_deauther/blob/v2/web_interface/js/scan.js
它的源代碼里是有轉(zhuǎn)義的:
跟進去看一下轉(zhuǎn)義:
人家對尖括號進行了轉(zhuǎn)義司恳。
四侥猩、總結(jié)
以后凡是用戶輸入回顯在頁面的字段都試一試,審計一下相關(guān)代碼抵赢,萬一有注入呢...
如果不是辦公室那個奇怪的熱點名字提醒了我欺劳,我可能就與這個雞肋的xss擦肩而過了...感謝那位不知道名字的好心人!