用户
搜索
  • TA的每日心情
    奋斗
    前天 22:16
  • 签到天数: 79 天

    连续签到: 1 天

    [LV.6]常住居民II

    实习版主

    --i春秋最帅的人

    Rank: 7Rank: 7Rank: 7

    11

    主题

    107

    帖子

    243

    魔法币
    收听
    0
    粉丝
    5
    注册时间
    2016-5-18

    i春秋签约作者核心白帽秦楚燕

    撸大叔 实习版主 --i春秋最帅的人 i春秋签约作者 核心白帽 秦 楚 燕 楼主
    发表于 2017-6-23 22:02:31 2111889
    本帖最后由 撸大叔 于 2017-7-6 13:22 编辑

    开头: 废话不多说,直接进主题。

    0x01 CSRF介绍:
    CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本XSS,但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。


    0x02 CSRF环境搭建:
    环境搭建嘛,肯定要PHP的咯,不过别担心,这不有俺在嘛 我给你尝尝代码的味道。
    CSRF测试代码:
    [PHP] 纯文本查看 复制代码
    <?phpheader("Content-Type:text/html;charset=utf-8");
    if(isset($_POST['sub'])){
            $username = $_POST['username'];
            $password = $_POST['password'];
            $conn = mysql_connect("localhost","root","root");
            $db=mysql_select_db("test");
            $query = mysql_query("SET NAMES 'gbk'");
            $sql="INSERT INTO `adminsql` (`id` ,`username` ,`password`)VALUES (13 , '$username' , '$password')";
            $row=mysql_query($sql); //执行sql插入语句
            $sql="SELECT * FROM adminsql";
            if($row=mysql_query($sql)){
                    while($rows = mysql_fetch_array($row)){
                    echo "user:{$rows['username']}-----pass:{$rows['password']}"."<br/>";
            }
    
    }
    }
    ?>
    
    <!DOCTYPE html>
    <html>
    <head>
            <title>CSRF利用场所</title>
    </head>
    <body>
    <b><h2>CSRF测试环境</h2></b>
    <form action="" method="post">
            <b>user:<input type="text" name="username" /></b>
            <b>pass:<input type="password" name="password" /></b>
            <input type="submit" value="Ok" name="sub" />
    </form>
    </body>
    </html>





    0x03 上层代码解释:
    代码:<?php ?>  开始和结束 没一门编程语言都有
               
    代码:header("Content-Type:text/html;charset=utf-8");  将页面的编码设置为UTF-8


    代码:代码
    [PHP] 纯文本查看 复制代码
    if(isset($_POST['sub'])){ 
                         $username = $_POST['username'];
                         $password = $_POST['password'];
    解释:
    QQ截图20170624103734.png

    代码:

    没错 又到了这里 看过我的细说SQL注入的就知道 我解释过一遍了 没看过那篇帖子的也没事哈 我再解释一遍。

    [PHP] 纯文本查看 复制代码
    $conn = mysql_connect("localhost","root","root");    //连接数据库  mysql_connect("HOST你的网站","你数据库账号","你数据库密码"); 赋值给$conn变量 
    
    $db=mysql_select_db("test");     //mysql_select_db("test");  mysql_select_db()函数是设置数据库, 第一个参数是你数据库名 注意: 是数据库名 不是表名!   
    
    
    $query = mysql_query("SET NAMES 'gbk'");  //mysql_query()函数是执行一条sql语句 他这里是设置数据库字符编码为gbk
    
    
    $sql="INSERT INTO `adminsql` (`id` ,`username` ,`password`)VALUES (13 , '$username' , '$password')";  //SQL语句 INSERT INTO(插入)  INSERT INTO 后       面的反引号是你的数据表名 就是数据库test下的表   

    再后面的括号(`id`,`username`,`password`); 这里是数据表里面的值 我有三个字段表  分别是id、usernam、 password这三个  
    后面的VALUES (13 , '$username' , '$password')";  //第一个参数是id 我没设置那个自增长ID(详  ``                  情:http://jingyan.baidu.com/article/fcb5aff7b3a025edaa4a7130.html)   
    在后面的就懂了吧 就是我前面吧HTML表单的值赋值给那个变量:
    [PHP] 纯文本查看 复制代码
    $username =      $_POST['username'];
          $password = $_POST['password'];



    懂俺意思了吧 嘻嘻  就是啊 你单击提交的数据 会插入到数据库的深处


    代码:
    [PHP] 纯文本查看 复制代码
    $sql="SELECT * FROM adminsql";   //SELECT(查询) from要查询的表 adminsql
            if($row=mysql_query($sql)){  //判断sql语句是否执行了
                    while($rows = mysql_fetch_array($row)){   //执行就把数据库里面的数据表里面的所有字段表用while循环取出来
                    echo "user:{$rows['username']}-----pass:{$rows['password']}"."<br/>";  //echo 输出到页面上  前面的mysql_fetch_array()函数是一行一行获取         值  他吧值赋给了$rows变量 这个函数获取到的值全是array数组 所以要 $rows['username']; 这样取值 输出  
            }
    



    我把数据库发给你们吧
    [SQL] 纯文本查看 复制代码
    [table=98%,none]
    [tr=none ][td][align=right][align=right][size=1em]1[/align]
    [align=right][size=1em]2[/align]
    [align=right][size=1em]3[/align]
    [align=right][size=1em]4[/align]
    [align=right][size=1em]5[/align]
    [align=right][size=1em]6[/align]
    [align=right][size=1em]7[/align]
    [align=right][size=1em]8[/align]
    [align=right][size=1em]9[/align]
    [align=right][size=1em]10[/align]
    [align=right][size=1em]11[/align]
    [align=right][size=1em]12[/align]
    [align=right][size=1em]13[/align]
    [align=right][size=1em]14[/align]
    [align=right][size=1em]15[/align]
    [align=right][size=1em]16[/align]
    [align=right][size=1em]17[/align]
    [align=right][size=1em]18[/align]
    [align=right][size=1em]19[/align]
    [align=right][size=1em]20[/align]
    [align=right][size=1em]21[/align]
    [align=right][size=1em]22[/align]
    [align=right][size=1em]23[/align]
    [align=right][size=1em]24[/align]
    [align=right][size=1em]25[/align]
    [align=right][size=1em]26[/align]
    [align=right][size=1em]27[/align]
    [align=right][size=1em]28[/align]
    [align=right][size=1em]29[/align]
    [align=right][size=1em]30[/align]
    [align=right][size=1em]31[/align]
    [align=right][size=1em]32[/align]
    [align=right][size=1em]33[/align]
    [align=right][size=1em]34[/align]
    [align=right][size=1em]35[/align]
    [align=right][size=1em]36[/align]
    [align=right][size=1em]37[/align]
    [align=right][size=1em]38[/align]
    [align=right][size=1em]39[/align]
    [align=right][size=1em]40[/align]
    [align=right][size=1em]41[/align]
    [align=right][size=1em]42[/align]
    [align=right][size=1em]43[/align]
    [align=right][size=1em]44[/align]
    [align=right][size=1em]45[/align]
    [align=right][size=1em]46[/align]
    [align=right][size=1em]47[/align]
    [align=right][size=1em]48[/align]
    [/align][/td][td][align=right][size=1em][size=1em]-- phpMyAdmin SQL Dump
    [size=1em]-- version phpStudy 2014
    [size=1em]-- [url]http://www.phpmyadmin.net[/url]
    [size=1em]--
    [size=1em]-- 主机: localhost
    [size=1em]-- 生成日期: 2017 年 06 月 23 日 21:14
    [size=1em]-- 服务器版本: 5.5.53
    [size=1em]-- PHP 版本: 5.3.29
    
    [size=1em]SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
    [size=1em]SET time_zone = "+00:00";
    
    
    [size=1em]/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    [size=1em]/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    [size=1em]/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
    [size=1em]/*!40101 SET NAMES utf8 */;
    
    [size=1em]--
    [size=1em]-- 数据库: `test`
    [size=1em]--
    
    [size=1em]-- --------------------------------------------------------
    
    [size=1em]--
    [size=1em]-- 表的结构 `adminsql`
    [size=1em]--
    
    [size=1em]CREATE TABLE IF NOT EXISTS `adminsql` (
    [size=1em]  `id` int(11) NOT NULL,
    [size=1em]  `username` varchar(32) NOT NULL,
    [size=1em]  `password` varchar(32) NOT NULL
    [size=1em]) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    [size=1em]--
    [size=1em]-- 转存表中的数据 `adminsql`
    [size=1em]--
    
    [size=1em]INSERT INTO `adminsql` (`id`, `username`, `password`) VALUES
    [size=1em](1, 'aaaa', ''),
    [size=1em](1, 'aaaa', ''),
    [size=1em](1, 'aaaa', 'xss'),
    [size=1em](1, 'aaaa', 'xss'),
    [size=1em](1, 'csrf', 'csrf');
    
    [size=1em]/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
    [size=1em]/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
    [size=1em]/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
    
    [/align][/td][/tr]
    [/table]


    在mysql的SQL哪里 插入这些代码 然后执行即可
    0x04 进入正题:
    好了 有了环境 我们就更方便测试了 访问代码页: QQ截图20170624103734.png

    构建环境:
    ok  假设我现在是一枚网站管理员 现在localhost是我网站 localhost/php/xss/fanshexing.php 是我后台 现在我的同伴他说想帮我管理我的后台 我就把他创建了一个用户 用户名为(escape) 密码为(admin888)
    QQ图片20170312175346.png
    点击ok 提交数据
    QQ图片20170312175346.png OK 现在admin是我的号 而escape是我同伴的号 不过在此之前有一个黑客发现我的后台没有用token令牌 存在csrf漏洞 于是他就构造了一个html的文件
    代码如下:
    [HTML] 纯文本查看 复制代码
    <script>
    function s(){
            document.getElementById('fuck').submit();  //这里是javascript的代码(详情:[url]http://www.jquerycn.cn/a_10756[/url])
    }
    </script>
    <body onload=s()>
    <form action="http://localhost/php/xss/fanshexing.php" method="post" id="fuck">
    <input type='hidden' name="username" value="heike">
    <input type='hidden' name="password" value="888888">
    <input type='hidden' name="sub" value="123456">
    </form>
    </body>
    


    构建环境:
    攻击者视角:好 我现在的身份是一枚"非法用户" 我现在要去拿这个构造的页面发给笨蛋管理员 嘿嘿
    假设现在我发送QQ邮件给管理员发了个文件 就是我构造的页面 发给了他


    如果管理员打开了 就会自动提交
    <input type='hidden' name="username" value="heike">   用户
           <input type='hidden' name="password" value="888888">  密码
    OK  到了管理员视角:

    管理员:嘿 escape伙伴 快来瞧瞧 是一个html的文件 是一位叫构造者发给我们的 我们瞧瞧
    escape:OK瞧瞧看
    点击。。。
    QQ截图20170624103734.png 当然 这些用户是我从数据库取出来的 在项目中可不会这样 所以说 笨蛋管理员还不知道 我已经在他的后台构造了一个我的用户
    QQ截图20170624103734.png

    0x05 如何构造一个添加管理员的页面?(没安装burpsuite请看:https://bbs.ichunqiu.com/forum.p ... mp;page=1#pid284388):
    前面的构造页面太多的代码了 难道我需要全部背下来吗??当然不需要 下来我来教大家怎么构造一个CSRF的添加管理员页面
    1、打开burpsuite神器(https://bbs.ichunqiu.com/forum.p ... mp;page=1#pid284388
    QQ截图20170624103734.png
    OK 打开后要代理服务端才能收到请求的数据

    2、代理服务器
    在burpsuite的主页面中的proxy里的Options
    QQ截图20170624103734.png
    在浏览器这里设置代理服务器(详情:http://jingyan.baidu.com/article/f0e83a25da4d8222e591019d.html)
    我用的是2345浏览器在工具哪里可以设置代理服务器
    QQ截图20170624103734.png
    点击进入Internet后 点击连接
    QQ截图20170624103734.png
    局域网设置
    QQ截图20170624103734.png

    在我下面图画箭头的地方打钩

    点击确定即可

    3、开始构造
    打开我们的管理员后台

    查看后台现在有几个管理用户:
    QQ图片20170312175346.png 现在还有3个管理员

    环境构造:
    ok 现在我是一名"非法用户" 我发现了这个网站的后台登录地址 而且发现了木有存在token验证
    我首先打开了他们的管理员登录的人口地方
    QQ截图20170624103734.png
    user:test  pass:test   开启浏览器服务器代理
    QQ截图20170624103734.png

    开启burpsuite
    QQ截图20170624103734.png

    代理好了服务器 开启了burpsuite 就点击ok

    QQ截图20170624103734.png
    OK 接受到了 右击burpsuite界面  Engagement tooles 里面的 Generrate CSRFPoC
    QQ截图20170624103734.png
    可以看到 他已经自己给你构造了一个页面:
    QQ截图20170624103734.png
    复制代码 创建一个HTML文件
    QQ截图20170624103734.png
    如果想修改账号 就吧 <input type="hidden" name="username" value="test" />  value="账号在这里 可以随便修改其他的 这里我就修改为test1"
    OK了 Ctrl+s 就可以保存了
    查询一下 现在有用户:
    有三个用户 我们把这个文件发给管理员

    环境构造:我现在又是管理员了 我打开了这个文件 并且在我没有退出登录和销毁cookie的情况下 打开了这个文件



    QQ截图20170624103734.png 点击提交
    添加成功:
    QQ截图20170624103734.png
    QQ截图20170624103734.png

    根据以上流程 我写下了一个具体的流程图:
    php_512_black.png

    到了这里 恐怕有很多人会问我 怎么去看这些漏洞是否存在?
    答:你要是单单只是看看漏洞是否存在 可以看cookie或者post包中有没有token这种东西 如果存在token那就不能利用了 token就是个验证的玩意 只有服务器和后台有 所以你burpsuite是搜不到的

    0x06 CSRF的检测以及防御:CSRF出现的地方通常在权限控制的地方 如会员中心、后台管理、用户注册、发布帖子、用户后台处、交易管理处这几个地方
    防御就是开启token验证 token验证能干什么?你开启了token验证后 客服端请求的值必须和服务端的值相同 不能进行修改 这样你burpsuite就不能在改了 就彻底防御了这个漏洞

    也可以看看cookie或者post包中有没有token这种东西


    术语:
    感谢大家赏脸观看 谢谢 觉得好的可以打赏俺魔法币哦!不喜勿喷! 谢谢
    b3119313b07eca806af45c47992397dda0448398.jpg








    QQ截图20170624103734.png

    评分

    参与人数 5积分 +2 魔法币 +347 收起 理由
    Corrupt堕落 + 5 感谢你的分享,i春秋论坛有你更精彩!.
    春秋文阁负责人 + 200 额外奖励
    小爱_Joker + 100 感谢你的分享,i春秋论坛有你更精彩!.
    玄道 + 2 + 40 感谢你的分享,i春秋论坛有你更精彩!.
    Kin_ + 2 感谢你的分享,i春秋论坛有你更精彩!&lt;img .

    查看全部评分

    本帖被以下淘专辑推荐:

    你可以被打败,但不可以被打倒。
    发表于 2017-6-30 17:18:26
    文章奖励介绍及评分标准:http://bbs.ichunqiu.com/thread-7869-1-1.html,如有疑问请加QQ:286894635!
    奖金
    点评
    100
    配合了代码讲解,整体逻辑清晰具有教育性,不错。

    欢迎加入i春秋QQ群大家庭,每人只能任选加入一个群哦!投稿请加我QQ:286894635。
    i春秋白帽子军团:451217067
    i春秋-韩:556040588
    i春秋CTF交流学习群:234714762
    使用道具 举报 回复
    发表于 2017-6-26 15:25:24
    cwlohome 发表于 2017-6-26 06:29
    客观讲 挺好的啊。很基础啊,照顾了不少人吧,没事喷啥。

    这位仁兄说的对 对于某些人 我只想说 不喜欢可以 但不要当喷子!
    你可以被打败,但不可以被打倒。
    使用道具 举报 回复
    发表于 2017-7-5 11:44:00
    sqler 发表于 2017-7-3 02:38
    你这代码写的     有注入啊。。。

    表哥 测试代码而已 不用在乎。。。。
    你可以被打败,但不可以被打倒。
    使用道具 举报 回复
    发表于 2017-6-23 22:30:13
                  
    Holle,everybody! I am AuThor!请大家多多关注,同时也多多关照!(勿喷)
    使用道具 举报 回复
    发表于 2017-6-25 22:23:27
    一晓 发表于 2017-6-25 13:40
    真尼玛废话连篇的帖子

    有本事 自己也发个文章啊 在这里当喷子 有意思?
    你可以被打败,但不可以被打倒。
    使用道具 举报 回复
    管理员没有销毁cookie的前提下点击。。。。有点难度。谢谢大佬的思路分享~
    使用道具 举报 回复
    发表于 2017-6-24 12:48:17

    能发一下代码吗?
    你可以被打败,但不可以被打倒。
    使用道具 举报 回复
    发表于 2017-6-28 09:50:02

    你可以被打败,但不可以被打倒。
    使用道具 举报 回复
    发表于 2017-6-23 22:10:44
    以撸!
    使用道具 举报 回复
    感谢楼主分享
    使用道具 举报 回复
    发表于 2017-6-23 22:38:58
    <img src=# onerror=alert(/good/) />
    使用道具 举报 回复
    发表于 2017-6-24 12:33:34
    为何打不开 O$I1X0~)(VI]ESYM`PFMU.png
    使用道具 举报 回复
    发表于 2017-6-25 21:40:14
    真尼玛废话连篇的帖子
    使用道具 举报 回复
    发表于 2017-6-26 14:29:50
    客观讲 挺好的啊。很基础啊,照顾了不少人吧,没事喷啥。
    使用道具 举报 回复
    发表于 2017-6-26 18:22:38
    感谢楼主分享
    使用道具 举报 回复
    发表于 2017-6-27 09:26:56
    大牛带我飞~~~~~~~~~~~~~~
    欢迎关注玄道的公司公众号:安徽锋刃科技(ahfengren)可以围观web入门开始的教程哟~
    使用道具 举报 回复
    发表于 2017-6-28 08:50:17
    csrf + xss 指哪打哪
    使用道具 举报 回复
    12下一页
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册