XSS学习
XSS漏洞
XSS介绍
(Cross Site Scripting)XSS跨站脚本攻击,为了不和(Cascading Style Sheets)CSS 混淆,故将跨站脚本攻击缩写为XSS,恶意攻击者将而已Script代码插入Web页面,用户浏览时,嵌入其中的Script代码就会执行,从而达到恶意攻击用户的目的
反射型XSS
此又称非持久型XSS,这种攻击具有一次性
具体见下图
以DVWA当中的为例
<script>alert(document.cookie);</script>
存储型XSS
存储型XSS又称持久型XSS,攻击脚本存在与目标服务器中有更强隐蔽性
以DVWA当中的为例,XSS payload存储于服务器中
<script>alert(document.cookie);</script>
DOM型XSS(Document Object Model)
DOM型图示,不是服务器处理响应,而是用户浏览器处理这个响应
?default=<script>alert('hello');</script>
XSS盗取cookie
cookie介绍
什么是cookie:HTTP协议下,服务器与脚本可以维护客户工作站上信息的方式,是由Web(客户端)服务器保存的小文本文件,包含有关用户信息。
cookie又分为[临时]与[持续],一般临时cookie会规定时间过后就被系统清理
反射型XSS盗取cookie 和原理
一般通过链接盗取cookie
url?name=#
那么此处以DVWA的XSS(Reflected)为例
利用cookie进行会话劫持与之后的操作
xp 2003进行连接
或者用菜刀,蚁剑挂上shell
拿到权限
篡改页面的xss,盗取用户信息的xss与防范
篡改页面的xss
盗取信息的xss
未过滤的xss(xss-quiz.int21h.jp/No1)
训练网站
https://xss-quiz.int21h.jp/ 该网站进行xss训练
这个主要通过标签
?什么是标签:该标签规定粗体文本
解密No1
该页面第一关如何探索xss?
构造独一无二切不被识别的代码提交
用F12审查,判断是否显示
此处是加粗内容,此处想要闭合jsp
有代码 1.简单的payload:
2.闭合payload标签:[闭合语句为经常的手法]
"
html属性中的xss(xss-quiz.int21h.jp/No2)
接上,https://xss-quiz.int21h.jp/若在chrome中会出现xss.Auditor报错,该手动处理配置(4.6)
如何寻找xss
处理xss还需要考虑闭合,如 引号 尖括号,再者才引入script脚本
闭合引入script
此处第二关由代码:
"><script>alert(需要填入的内容);</script>
闭合引入事件
" onmouseover=alert(document.domain)>
补充0级DOM事件: onclick,onmouseon,onkeyboard,
やってみましよ
选择列表中的xss(xss-quiz.int21h.jp/No3)
HTML select介绍
select 选择标签,依靠option,value提交值
<select> <option value="?">??</option> <option value="?">??</option> </select>
表单介绍
HTML表单搜集不同类型用户输入:
注:pay attention to 提交方式
Burpsuite测试xss(如何配置自行csdn和吾爱破解)
用Bp截取HTTP请求,修改提交参数
由Bp的repeater多次forward后,考虑在闭合
闭合触发xss
第三关恶心死我了,我giao
hhh挣扎了俩天,终于配置好代理和BP了
html隐藏参数(xss-quiz.int21h.jp/No4)
同样比较easy,和上边第三题一样
通过抓包处理后,在尾巴字段加入script代码,然后pass掉
限制长度的XSS(xss-quiz.int21h.jp/No5)
payload 讲解
payload 又称攻击荷载,又称shellcode,
可返回shell也可程序注入
HTML表单文本框介绍
value 输入字段初始值
readonly 只读不可修改
disabled 输入字段禁止
size 输入字段的尺寸
maxlength 输入字段的最大长度
HTML中的XSS(xss-quiz.int21h.jp/No6)
此处两个闭合方法
第二种思路不成功,'>'被转义成>
空格分割属性中的xss(xss-quiz.int21h.jp/No7)
over 第七关pass掉
Js伪协议触发xss(xss-quiz.int21h.jp/No8)
什么是Javascrpit伪协议
介绍a.href
这关的payload为:
javascript:alert(document.domain);
绕过过滤domain为空的xss(xss-quiz.int21h.jp/No9&&No10)
No 9
No 10
No10过滤掉了domain
思考:采取双写绕过&&编码绕过
- 双写绕过 :
你过滤一个domain是吧,我直接再缝缝补补上一个domain
"><script>alert(document.dodomainmain)</script>
- 编码绕过:
用eval(atob(""))函数,将base64转换为字符
"><script>eval(atob("YWxlcnQoZG9jdW1lbnQuZG9tYWluKQ=="))</script>
そして、No10を分解する
(xss-quiz.int21h.jp/No11)
'giao,打不开网站,我裂开了'