我是如何發(fā)現(xiàn)一枚Cisco XSS漏洞的
我在Cisco的IOS SoftwareChecker中找到一枚XSS(跨站腳本)漏洞,漏洞本身并不復(fù)雜,在此與大家分享漏洞發(fā)現(xiàn)的整個(gè)過程。
無意的發(fā)現(xiàn)
這一天我正在閱讀Cisco提供的漏洞報(bào)告,偶然發(fā)現(xiàn)了“Cisco Ios Software Checker”這個(gè)安全工具。對于Cisco設(shè)備管理員來說,這個(gè)工具十分有用,可以確定Cisco IOS軟件是否錯(cuò)過了安全補(bǔ)丁或者安全漏洞。
我嘗試在用于查找Cisco IOS版本的輸入框中提交一些垃圾數(shù)據(jù),結(jié)果被系統(tǒng)無情的被拒絕了。我想可能是由于我沒有輸入一個(gè)有效的IOS版本吧。
因?yàn)镃isco IOS軟件版本可以包含許多不同的字符,于是我使用有效的IOS版本字符串又試了一次,我在“15.1”后面加上了一大堆”A”。然后我驚奇的發(fā)現(xiàn)”AAAAAA”竟然成功注入到目標(biāo)頁面!
有意思,我覺得有必要再往深處看看。查看HTML源碼,發(fā)現(xiàn)了一處代碼注入點(diǎn)——一個(gè)輸入框的onclick屬性。
現(xiàn)在我需要弄清楚,到底有哪些字符是我可以使用的。
注意雙引號(hào)和圓括號(hào),現(xiàn)在我找到我們所需要的了,這些可是能注入到輸入字段的喲。
輸入嘗試
***步就是避免input標(biāo)簽,我比較喜歡使用onclick=”…” 屬性。使用一個(gè)簡單的雙引號(hào),添加惡意字符串。我就有能力將elements 集合添加到input標(biāo)簽中。
這是input標(biāo)簽,提交“15.1” INJECTION_STUFF_HERE 到表單中后的情況:
- <input …onclick=”redrawRSS(’15.1”INJECTION_STUFF_HERE … >
好了,現(xiàn)在我***個(gè)想法就是將input類型改為圖片形式,這樣可能會(huì)有意想不到的發(fā)現(xiàn)。
- <input … onclick=”redrawRSS(’15.1”type=image src=… >
Perfect!現(xiàn)在可以肯定的是,我能夠執(zhí)行Javascript了!
接下來,我將onload=””屬性添加到input標(biāo)簽,然后可以十分輕松的在目標(biāo)頁面上執(zhí)行alert(1)的彈窗了。也就是說,一個(gè)XSS漏洞被我發(fā)現(xiàn)了。
下面是我簡單制作的挖洞過程動(dòng)畫
http://static.freebuf.com/2015/01/6.gif
http://static.freebuf.com/2015/01/7.gif
結(jié)語
在測試這個(gè)漏洞的時(shí)候,Cisco工程師很快就截獲了相關(guān)信息并修復(fù)了這個(gè)安全漏洞。
這件事情告訴我們:不要絕對的相信用戶的輸入,不要補(bǔ)了東墻忘了西墻,卻把最基礎(chǔ)的安全漏洞給忽略了。