xss漏洞发生在前端,攻击的是浏览器的解析引擎

xss就是让攻击者的javascript代码在受害者的浏览器上执行

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

xss攻击者的目的就是寻找具有xss漏洞的网页,让受害者在不知情的情况下,在有xss漏洞的网页上执行攻击者的js代码

xss是提前埋伏好漏洞陷阱,等着受害者上钩。

既然攻击者是执行javascript代码,所以攻击的语句应该能让javascript运行。

javascript运行条件:"<script></script>"标签中,onclick=事件属性中

xss的攻击payload一定满足上述条件

xss学习主要是以测试看到效果为主,通常的明显效果就是使用alert弹个框,弹框意味着我们的js执行了。

xss攻击,一定牢记“输入输出”,输入指的是攻击者对服务器网页输入恶意代码,输出指的是浏览器接收到代码后能解析并输出到前端。

xss的原理就是开发者没有对输入内容进行过滤,导致通过攻击者精心构造的前端代码,输入后和原有的前端代码产生混淆,形成新的页面语句,并且新的页面语句能被浏览器解析并输出。

xss测试步骤:

1、找到输入点,随便乱输,输完字符后,查看输出。

2、打开网页源代码,在源代码中查看输出的位置。

3、以testxss.php为例

输入内容:abcd

输出的位置:<input type="text" value="abcd">

我们的目的是进行xss攻击,执行js代码。执行js代码的条件是要有script标签或事件属性。

<script>alert(1)</script> 这个是一定能在页面上执行弹警告框的

如果我们直接输入上述代码,会变成:

<input type="text" value="<script>alert(1)</script>"> 这个并不符合html的语法

为了使alert可以执行,就需要把上面的内容变换一下:

<input type="text" value=""><script>alert(1)</script>">  变成这样的话,就是input和script两个标签都能执行

因此,我们的输入就变成

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

那此时浏览器在解析的时候,就会解析出两个元素,一个是input,一个是script,从而执行了我们在script中的js代码,完成了xss攻击

要使用事件属性触发:

<img src=1 onclick="alert(1)">
payload1:"><img src=1 onclick="alert(1)">
payload2: " onclick="alert(1)

反射型XSS

我们构造好一个urlxss的payload,发送给受害者,受害者点击恶意链接后会在受害者的浏览器上执行恶意代码。反射型xss是一次性的,而且比较容易被发现。通常恶意连接会被修改成短链接,或钓鱼图片的形式。

存储型xss

存储型又叫永久性xss,常见于留言板。因为存储型xss的页面会将用户输入的内容存入到数据库内,所以当其他人每访问一次的时候,服务器都会从数据库将攻击者输入的内容调取到前端浏览器解析,因此每一次访问就相当于一次xss攻击。

以dvwa靶场中的存储型xss为例:xss(stored)

这是一个留言板,攻击者输入的恶意代码被存入数据库,当其他受害者访问该留言板的时候,后台就会把数据库的恶意代码调取到前端可以被解析的位置,自然每一次访问都会中招。

DOM型xss

不与服务器交互,本质上也是一种反射型xss。主要利用js使用dom对前端html进行操作时候产生的漏洞。DOM型xss的难点就在于通过阅读javascript来确定输出的位置,才好构建输入的payload。

DOM型XSS可通过开发者工具观察js变化

实战中如何利用xss呢?

通过xss获取受害者cookie信息。

条件:

1、有一个xss漏洞页面;

2、攻击者需要一个xss信息接收平台

实验目的:获取受害者cookie,并以受害者的身份浏览网站。

实验工具:攻击者接收xss平台:192.168.100.1 攻击者账号:gordonb/abc123

服务器:装有dvwa的网站 192.168.100.200 受害者账号: admin/password

实验过程:攻击者gordonb在目标网站上设下xss陷阱,当受害者中坑后会把cookie信息发给攻击者,攻击者就用受害者的cookie访问网站。

XSS常用测试语句:
<script>alert(1)</script>
<img src=1 onerror=alert(1)>
<svg onload=alert(1)>
<a href=javascript:alert(1)>
<input onfocus=write(1) autofocus>



扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄