xss漏洞发生在前端,攻击的是浏览器的解析引擎javascript
xss就是让攻击者的javascript代码在受害者的浏览器上执行php
xss攻击者的目的就是寻找具备xss漏洞的网页,让受害者在不知情的状况下,在有xss漏洞的网页上执行攻击者的js代码html
xss是提早埋伏好漏洞陷阱,等着受害者上钩。前端
既然攻击者是执行javascript代码,因此攻击的语句应该能让javascript运行。java
javascript运行条件:"<script></script>"标签中,onclick=事件属性中数据库
xss的攻击payload必定知足上述条件浏览器
xss学习主要是以测试看到效果为主,一般的明显效果就是使用alert弹个框,弹框意味着咱们的js执行了。服务器
xss攻击,必定牢记“输入输出”,输入指的是攻击者对服务器网页输入恶意代码,输出指的是浏览器接收到代码后能解析并输出到前端。cookie
xss的原理就是开发者没有对输入内容进行过滤,致使经过攻击者精心构造的前端代码,输入后和原有的前端代码产生混淆,造成新的页面语句,而且新的页面语句能被浏览器解析并输出。dom
xss测试步骤:
一、找到输入点,随便乱输,输完字符后,查看输出。
二、打开网页源代码,在源代码中查看输出的位置。
三、以testxss.php为例
输出的位置:<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信息。
条件:
一、有一个xss漏洞页面;
二、攻击者须要一个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>