漏洞讲解
漏洞运用过程:
攻击者会通过xss漏洞在网站注入恶意代码,使得用户在访问网页时,恶意代码执行,从而达到攻击的目的
漏洞原理:
程序对输入和输出的控制不够严格,导致恶意代码输入后,在前端浏览时被当作有效代码进行解析,从而产生各种危害。
漏洞危害:
1)网站中弹窗,影响用户体验和利益
2)网络钓鱼,盗取用户账号信息
3)劫持用户通话
4)盗取用户cookies,获取用户隐私信息
5)蠕虫病毒的传播
xss漏洞分类
1)反射型XSS
反射型xss又称非持久型xss,是发生在客户端上,并且要访问了构造好的恶意链接。
反射型xss是利用应用程对用户的输入和输出的不恰当处理,使得攻击者可以通过构造构造链接,将脚本注入到响应中。若有人访问该链接,在他那里的浏览器就会执行该脚本,从而导致攻击者盗取到用户敏感信息等。
常见注入点:网站搜索框、用户登录入口等
攻击流程:
1.攻击者找到有漏洞的网站,攻击者发送恶意链接给用户,并引诱用户点击
2.用户访问恶意链接
3.服务器会在响应时引入该恶意脚本
4.用户在浏览器打开响应时,恶意脚本执行,攻击者成功实现攻击
案例:(pikachu靶场)
get:
如图,我输入a后,message=后面跟着我们输入的
那么我们直接输入,成功
post:
其实也大差不差
post型,我们就打开bp嘛
在bp里面将它都改成进行测试
也确实是这样
2)存储型XSS
存储型与反射型不同,它是将恶意脚本永久地嵌入到网页界面中,当有用户访问时候便会执行,从而收到攻击,反射型攻击是客户端,它是服务器端,又称持久型xss。
常见注入点:论坛留言处、个人信息查看处、博客等
攻击流程:
1.攻击者在一个可以注入的地方,并留下恶意代码,也永久存储在服务器中
2.用户访问网站,打开留下恶意代码的帖子之类的
3.网站从其数据库获取其帖子内容,在用户的浏览器上解析出来
4.恶意脚本在浏览器上执行,攻击成功
案例:(pikachu靶场)
存储型XSS
输入
刷新一下界面后重新进入
3)DOS型XSS
DOM是一种表示HTML文档结构的对象模型,它运行程序和脚本动态地更新文档内容、结构、样式,并且处理后的结果能够被页面重新解析出来,又DOM型XSS至于后端服务器进行交互,所以DOM型XSS又是一种特殊的反射型XSS
常见注入点:可以通过JavaScript脚本对DOM文档对象进行修改的地方
攻击流程:
1.攻击者首先要找到一个可以通过用户输入或JavaScript脚本生成DOM结果的地方
2.对这个页面采取构造恶意URL等方式,将恶意代码注入到页面上
3.用户点击URL,进入界面,页面收到请求,返回HTML,此时是正常的
4.客户端在执行HTML内的恶意脚本后,注入到页面中
5.恶意脚本在浏览器上执行,修改了页面的DOM树结构,通过DOM元素和属性等来达到目的,通过攻击成功
案例:(pikachu靶场)
DOM型XSS
看到其实有提示
看到Javascript里面写的意思:
首先给变量str赋值上id=text的值(也就是输入框的值)
id=dom里面的内容是由<a href>和str拼接而成
document.getElementById("dom").innerHTML ="<a href='"+str+"'>what do you see?";来看这个结构
可以看到"<a href='" 和 str 和 "'>what do you see?" 三部分拼接、
那我们应该先闭合那个单引号
后面发现是标签<a href>
可以应用onclick
再加上onclick="alert('a')"
在闭合标签加上>
所以整体是'οnclick="alert(‘a’)”>(当然答案不唯一,还有其他的)
DOM型XSS-X
也是一样
' onclick="alert('a')">
此时这个链接重新打开,也是可以触发xss的
其他案例:
xss之盲打
盲打只是你输入的不是在你这个页面显示
我们两个输入框都输入
在后台我们就可以看到
xss之过滤
我们尝试几种,<script>等等
后面发现只要与<script>这样相近的就会被会被过滤
那没事,反正还是有其他标签可以触发的
试试之前的<a>
<a href='' onclick=alert('a')>
可以成功
xss之htmlspecialchars
htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体。语法为:htmlspecialchars(string,quotestyle,character-set).
预定义的字符是:
&(和号) 成为&
" (双引号) 成为 "
' (单引号) 成为 '
< (小于) 成为 <
> (大于) 成为 >
(参考于百度百科https://baike.baidu.com/item/htmlspecialchars/9713223)
简单来说,就是对特殊字符进行处理
输入<script>alert(1)
发现输入的在<a>标签内,跟前面的差不多
在输入框内输入' onclick='alert(123)'
xss之href输出
一开始,没思路,看了一下网上的,他们都看了看源码,我也去看了
从中我们获得了两个提示
一个是用了htmlspecialchars,不能采取闭合了
另一个是使用javascript协议
具体参考(https://blog.51cto.com/u_16175448/7480754)
因此输入JavaScript:alert('a')
成功
xss之js输出
<script>
$ms='';
if($ms.length != 0){
if($ms == 'tmac'){
$('#fromjs').text('tmac确实厉害,看那小眼神..')
}else {
// alert($ms);
$('#fromjs').text('无论如何不要放弃心中所爱..')
}
}
</script>
这是网页源代码一部分
可以看到输入的,在
XSS常用标签
1)<script>
如:<script>alert('a')</script>
2)<a>
如:<a href=javascript:alert('a')>
3)<input>
有多种,主要是可以不同形式触发
如:
<input type="type" onclick=“alert('a')”>,鼠标光标点击时触发
<input type="type" onkeypress=“alert('a')”>,按下按键式时触发
<input type="type" onkeyup=“alert('a')”>,松开按键式时触发
4)<style>
如:<style οnlοad=alert('a')>,页面加载好时触发
XSS的检测手段
检测手段分为两种,有手动,有自动
自动的话,我们在搜索xss,也可以看到很多xss平台,除此之外还有其他工具(其他工具我是看网上的):APPSCAN、AWVS、Burp Suite
手工呢,我感觉先找可疑的地方,再去尝试一些特殊一点的字符如<、>、“、‘等等啊
可能还有一些没学习到位的,到时继续补充(抓头)
标签:脚本,XSS,跨站,xss,DOM,用户,漏洞,攻击者,输入 From: https://www.cnblogs.com/l-xx123/p/18017977