跨站脚本攻击漏洞

漏洞讲解

漏洞运用过程:

攻击者会通过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
手工呢,我感觉先找可疑的地方,再去尝试一些特殊一点的字符如<、>、“、‘等等啊

可能还有一些没学习到位的,到时继续补充(抓头)

posted @ 2024-02-21 21:24  Lxx-123  阅读(37)  评论(0编辑  收藏  举报