先来点鸡汤,少就是多,慢就是快。
环境搭建
攻击机kali 192.168.146.140
靶机win7 192.168.146.161
下载zip,pikachu - GitCode
把下载好的pikachu-master,拖进win7,用phpstudy打开网站根目录,.....再用kali访问
XSS攻击
反射型xss,一次性的攻击,
就是在html的源代码,插入了你自己的代码,如<script>alert(1)</script>,并执行
防范方式:
<script>alert(1)</script>
有长度限制
观察url,发现把/转义成%2F
把地址栏上的,补充完整,通过URL的方式将恶意代码嵌入
第二种方法,用开发者工具,点击这个输入框出现
更改长度限制,也能成功
反射XSS,post型,看一下提示,登录,获取cookie
<script>alert(document.cookie)</script>
存储型XSS,
会存储到服务器中,多次执行,其它用户访问这个界面也可以执行
在留言板里输入
DOM型xss,是特殊的反射型XSS
看一下源代码,依次是文本框、按钮、超链接(用户的输入,比如这里我输入的1)
<a>
标签定义超链接,用于从一张页面链接到另一张页面,herf属性,它指示链接的目的地
输入#' οnclick="alert(document.cookie)">,点击连接,弹出
这里的 #
是一个锚点,代表当前页面。当用户点击这个链接时,页面不会跳转到其他地方,而是会重新加载当前页面
当用户点击这个链接时,它会执行其中的JavaScript代码
一定要记住随时保存草稿,不然ctrl+z就全没了....
DOM型xss -x
更上面那个一样,多点2次连接就行
XSS之盲打
两个留言框都可以实现存储XSS攻击,点击提示,登录后台,会弹出弹窗
XSS之过滤
会过滤掉<script>标签,用于嵌入客户端脚本,要么包含脚本语句,要么通过 src 属性 指向外部脚本文件,比如 <script src="path/to/your-script.js"></script>
xss 常用标签及绕过姿势总结 - FreeBuf网络安全行业门户
换个
<img src=1 οnerrοr="alert(1)">
成功
再换个<a href="" οnclick="alert('2')">
再点击连接
xss之htmlspecialchars
htmlspecialchars() 函数把预定义的字符转换为 HTML 实体(一段以连字号&开头、以分号;结尾的文本字符串),防止代码运行
预定义的字符是: & (和号)成为 & " (双引号)成为 "
' (单引号)成为 '
< (小于)成为 < > (大于)成为 >
看一下源码,οnclick=""多了个双引号
' οnclick='alert(2)' 去掉双引号 ,点击链接
xss之href输出
a标签的href属性,按道理应该能行的,但是点击没反应,说明代码没执行
看一下源代码,双引号和单引号都被编码了
[ 常见漏洞篇 ]常见web漏洞总结------XSS绕过方式-CSDN博客
javascript伪协议,不是真实存在的协议,它的功能是将JavaScript:后面的语句当做JavaScript代码在本页面执行,并不跳转到其他网页,而是结果返回给当前页面,相当于一个伪造的超链接,它经常与a标签一起使用,如<a href=javascript:alert(/xss/) > 点击我</a>
输入javascript:alert(1) 点击
xss之js输出
查看源码,变量 $ms 接收 用户输入的值
先输入</script>让<script> $ms=闭合,接着输入攻击代码
</script> <script>alert(1)</script>
总结
XSS原理
在网页前端界面,url和各种输入框,对用户的输入没做过滤和限制,用户输入<script>alert(document.cookie)</script>执行JS脚本或者<a herf="" οnclick='alert(1)'>test</a>
一个名为test的超链接 或者<img src=1 οnerrοr='alert(2)'>等各种,就是往网页html文档,写入你想执行的代码,就能执行,最好结合网站源码看,观察代码格式。
DOM是...
DOM型XSS,是一种特殊的反射型XSS,不经过服务器,不会被服务器检测,
防范
(1)htmlspecialchars函数把预定义的字符< > ' " / 转换为 HTML 实体,防止代码运行
(2) HTTP-only Cookie: 设置了HttpOnly
属性的cookie不能通过JavaScript的Document.cookie
对象访问,攻击者完成 XSS 注入后也无法窃取此Cookie。只通过HTTP(S)传输:HTTP-only cookie只能通过HTTP请求传输
(3)设置CSP,通过限制可以执行的脚本源,CSP可以防止恶意脚本在网页上执行。(限制脚本只能从同一个源加载,图片只能从特定的域加载,并且不允许内联脚本和样式)
(4)长度限制
(5)验证请求头的referer值,给出"引荐网页"的 URL
比如我在www.google.com 里有一个www.baidu.com
链接,那么点击这个www.baidu.com
,它的header
信息里就有:Referer=http://www.google.com,由此可以看出来:它就是表示一个来源
http请求头中Referer的含义和作用-CSDN博客
过滤<script>标签
绕过
(1)编码绕过,base64 ,十六进制,url编码等
(2)伪协议绕过,javascript:alert(1)
(3)大小写绕过<SCript>
(4)注释干扰绕过<scri<!--test--> pt> alert(1);</scr<!--test--> ipt>