xss讲解
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>