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