XSS获取用户明文密码
发布:独自等待 | 发布时间: 2012年1月4日浏览器特性导致,firefox与chrome是默认这样的。IE8默认不会。其他的不关心不测试。
浏览器在用户登录时,会提示用户是否记住密码:
1、对于firefox,用户有三个选择:记住、不记录本站、暂不。
2、对于chorme,用户只有在输入正确密码登录成功后,才会出现提示:“想让谷歌浏览器保存您的密码吗?”,用户有两个选择:保存密码、此站一律不保存密码。
3、而当在“自动完成”设置里开启IE8的“表单上的用户名和密码”功能时,IE8会在用户登录时弹窗提醒是否记住。
其实这些都是类似于普通的表单自动完成功能,不过又不太一样。
最关键的一点在于密码是“顶级”隐私信息,浏览器会专门有一个安全策略来保护记住的密码。
比如不像普通表单那样可以在不同的域共享表单信息。
在Web层面上,既然不可能违背同源策略,那要攻击,只有考虑XSS这样的方法。XSS此时威力无穷。
这三个浏览器安全策略有点差异,比较有意思。先来看firefox。登录后出现的提醒,很多人为了方便都会选择“记住”:
如果退出后,浏览器会记住用户名与密码
PS:恩,上面这两张图有水分,明白的人会知道的,不同源,我赖,就不换图了。
当包含用户名密码的表单被渲染后,浏览器会自动填充值,密码是星号显示,直接查看源码是看不到的。
但却可以通过DOM操作来获取到星号密码的值,比如简单的这样测试,在浏览器地址栏上输入:
javascript:alert(document.getElementsByTagName('form')[0].getElementsByTagName('input')[1].value);
执行,效果如下:
而在实际攻击中,如果有XSS漏洞的话,简单的POC需要这样:
window.onload=function(){
alert(document.getElementsByTagName('form')[0].getElementsByTagName('input')[1].value);
}
在实际攻击中,用户如果是登录状态,则可以采用CSRF让用户退出登录,再执行攻击。上面这个TIP,在一定程度上可以让我们的最终攻击效果更好。 chrome浏览器与firefox半斤八两,不说。IE8在这方面的设计就好些了。因为即使IE8记住了你的用户名与密码,但是在整个页面渲染 后,IE8不会直接填充相应的用户名密码表单项。而需要用户先键入用户名,焦点出现在密码表单项时,才会显示出星号密码。但是也许这样可以继续:
javascript:alert(document.getElementById('username').value='admin');document.getElementById('password').focus();
实际攻击我没测试,但是我想是可以的!
原文转自:http://www.gesong.org/articles/2012/01/03/1325597340851.html
- 相关文章:
Exploiting cross-site scripting in Referer header (2011-12-22 16:26:53)
XSS Cheat Sheet (2011-11-14 9:47:1)
UTF-7 XSS 常见利用方法 (2011-11-1 15:32:12)
utf-7 xss paper (2011-10-31 17:0:28)
foxmail7.0忘记密码的解决办法 (2011-10-27 16:22:39)
xss的高级利用,添加管理员 (2011-10-14 15:26:30)
51cto网站存在xss? (2011-9-7 13:43:25)
网站安全修改本地cookie,post,xss等入侵测试firefox利器 (2011-6-14 11:6:45)
利用john破解Linux系统密码 (2011-3-15 9:51:49)
MYSQL修改密码的几种方式 (2011-2-8 14:57:42)
发表评论
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。







