我在Cisco的IOS SoftwareChecker中找到一枚XSS(跨站脚本)漏洞,漏洞本身并不复杂,在此与大家分享漏洞发现的整个过程。
无意的发现
这一天我正在阅读Cisco提供的漏洞报告,偶然发现了“Cisco Ios Software Checker”这个安全工具。对于Cisco设备管理员来说,这个工具十分有用,可以确定Cisco IOS软件是否错过了安全补丁或者安全漏洞。
我尝试在用于查找Cisco IOS版本的输入框中提交一些垃圾数据,结果被系统无情的被拒绝了。我想可能是由于我没有输入一个有效的IOS版本吧。
因为Cisco IOS软件版本可以包含许多不同的字符,于是我使用有效的IOS版本字符串又试了一次,我在“15.1”后面加上了一大堆”A”。然后我惊奇的发现”AAAAAA”竟然成功注入到目标页面!
有意思,我觉得有必要再往深处看看。查看HTML源码,发现了一处代码注入点——一个输入框的onclick属性。
现在我需要弄清楚,到底有哪些字符是我可以使用的。
注意双引号和圆括号,现在我找到我们所需要的了,这些可是能注入到输入字段的哟。
输入尝试
***步就是避免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=image src=… >
Perfect!现在可以肯定的是,我能够执行Javascript了!
接下来,我将onload=””属性添加到input标签,然后可以十分轻松的在目标页面上执行alert(1)的弹窗了。也就是说,一个XSS漏洞被我发现了。
下面是我简单制作的挖洞过程动画
http://static.freebuf.com/2015/01/6.gif
http://static.freebuf.com/2015/01/7.gif
结语
在测试这个漏洞的时候,Cisco工程师很快就截获了相关信息并修复了这个安全漏洞。
这件事情告诉我们:不要绝对的相信用户的输入,不要补了东墙忘了西墙,却把最基础的安全漏洞给忽略了。