实训作业day06

一、CSRF和XSS区别

  • XSS 允许攻击者在受害者的浏览器上执行 js 代码,而 CSRF 不行。

  • XSS 通过窃取受害者的 cookie 来实现账号接管,如果目标站点使用了httponly 这就行不通了;CSRF 通过浏览器发起请求,自动携带受害者的cookie信息,即使有 httponly 也不影响 CSRF 攻击的实现。

  • XSS 的危害更大。攻击者如果成功实现了 XSS 攻击,那通常意味着他可以使用受害者在这个网站的所有功能,而 CSRF 只限于特定的存在漏洞的功能。

  • CSRF 无法让攻击者获取到服务器返回的数据。由于请求是由受害者的浏览器发起的,那么服务器的响应最后还是给到了受害者那里,攻击者是拿不到这部分数据的。所以对于一些查询类功能,即便没有做任何防御 CSRF 的措施,它也几乎是没有利用价值的;而 XSS 由于可以执行js代码,这也就使得攻击者可以将它想要的数据发送到自己的服务器上,比如回传 cookie。

二、CSRF攻击步骤

在这里插入图片描述

如图,攻击步骤:

  1. 发现CSRF

    • 有两种情况:
      • 抓取一个请求的数据包,如果这个接口的请求包中没有设置referer和token字段该网站可能存在CSRF漏洞。
      • 抓取一个请求的数据包,如果这个接口的请求包中设置了referder和token字段删除字段和仍可正常访问,该网站可能存在CSRF漏洞。
  2. 伪造页面

    • 攻击者利用存在CSRF漏洞的网站构建的恶意网站,将链接发给受害者。
  3. 诱导点击

    • 攻击者通过社会工程学等方式诱导受害者。当受害者访问了这个有害界面时,其利用页面中的恶意代码强制用户向某个具有CSRF漏洞的服务器发送请求。这个请求因为是从受害者端发出的,因此会自动带上受害者的Cookie。服务器接收到这个请求后,认为是合法用户的请求进而执行,使得攻击者的计谋得逞。

三、CSRF手工构造POST型页面方法

  • 由于不能直接发给用户一个网站从而修改其用户信息,必须要通过表单提交的信息才行,所以设计一个钓鱼页面(新建后缀为html的文件)。

  • 按照html的基本语法写好框架。

    <html>
      <head> 
        <title>标题</title> <!--标题自拟-->
        <meta charset="UTF-8">
     </head> 
     <body> 
        <form action="url " method="post"> <!--url是修改用户信息页面的url -->
    
     <!--待写的输入框的代码-->
    
        </form> 
        <script>history.pushState('','','/')</script>
     <!--在浏览器的历史记录(history)中添加⼀个新的记录,⽽不会导致⻚⾯重新加载。⽤于实现⻚⾯的⽆刷新跳转或更新URL⽽不重新加载⻚⾯的效果。-->
      </body> 
    </html>
    
  • 填好url和标题信息后,将网页每个需要填写的信息作为一个含input标签(标签类型为”hidden”)的元素并输入属性。

  • 最后还需要一个类型为“submit”的input标签用于提交表单。

四、token类CSRF利用方法

token验证

服务器会在cookie中保存一个csrf_token_key, 用作钥匙。 服务器会在页面生成时,获取csrf_token_key这个钥匙,
生成一个随机的csrf_token令牌,当表单提交时,获取到csrf_token 通过
csrf_token_key解密比较是否一致。所有的HTTP 请求中以参数的形式加入一个随机产生的
token,并在服务器端建立一个栏截器来验证这个 token,如果请求中没有 token 或者 token 内容不正确,则认为可能是
CSRF 攻击而拒绝该请求。

token类CSRF防御原理

csrf利用方式为利用from表单提交参数给被攻击站,参数必存在于from表单中token传递为被攻击站点击站内按钮,激活站内post传递参数,参数中存在token。而且token不会像cookie一样被自动添加,必须激活站内按钮进行post传递csrf无法让被攻击站模拟出按钮点击动作。

token类CSRF攻击步骤

  • 以pikachu上的关卡为例,在burpsuite上安装CSRF Token Tracker插件,且在Burp extention中启用。
    在这里插入图片描述
    在这里插入图片描述

  • 登录kobe账号,进入修改信息界面,点击“submit”。
    在这里插入图片描述

  • 返回burbsuite查看抓到的包,发送给重放器后,开启跟随重定向。
    在这里插入图片描述

  • 在 CSRF Token Tracker 模块中填写 Host 地址(可以参考数据包中的 Host 值)及 Token 的参数名称(也是参考数据包)然后勾选两个选项。
    在这里插入图片描述

  • 在重放模块中更改参数sex为“man”,点击“Send”。
    在这里插入图片描述

  • 回到pikachu界面,发现信息已修改。
    在这里插入图片描述

五、SSRF常用伪协议

  • 伪协议 (也称为非标准协议或假协议)指的是网络应用程序中支持的协议类型,通常被用于绕过防御措施或利用SSRF 攻击。攻击者利用这些伪协议,通过服务器端请求来访问敏感数据或执行意外行为。
  • SSRF常用伪协议有:
    • file协议:主要用于访问本地计算机中的文件。在有回显的情况下,利用file协议可以读取任意文件的内容。如:ssrf.php?url=file:///etc/passwd,通过此请求可以读取服务器上的/etc/passwd文件。
    • http/https协议:用于访问网络资源,如网页、图片等。http协议通常用于GET请求,而https是http的安全版本,增加了数据加密。如:ssrf.php?url=http://192.168.25.203,通过此请求可以访问内网中的某个IP地址上的资源。
    • dict(字典服务器协议):访问字典资源,如,dict:///ip:6739/info。
    • sftp(SSH 文件传输协议或安全文件传输协议): Linux 中,Windows 不存在。
    • ldap(轻量级目录访问协议)
    • tftp(简单文件传输协议)
    • gopher(分布式文档传递服务):可使用 gopherus (工具) 生成 payload。由于有部分协议 http 这类不支持,可以 gopher 来进行通讯(mysql、redis 等)。

六、SSRF pikachu靶场通关

  • SSRF(curl)

    • 修改URL为:http://www.baidu.com 访问百度页面。
      在这里插入图片描述

    • 修改URL为:file:///E:/homework/xinyue/BurpSuite/BurpSuiteCommunity/1.txt访问本地文件1.txt。
      在这里插入图片描述

  • SSRF(file_get_content)

    • 与SSRF(curl)操作相似,在“file=”后修改相应的url,访问百度页面。
      在这里插入图片描述

    • 访问本地文件1.txt。
      在这里插入图片描述

七、根据源代码说明SSRF漏洞成因

  • SSRF(curl)

    • URL参数未验证:

      if(isset($_GET['url']) && $_GET['url'] != null){
          $URL = $_GET['url'];
          $CH = curl_init($URL);
      
      • 代码从用户输入的$_GET[‘url’]参数中直接获取URL并用于curl_init函数,未对输入进行有效的验证或过滤。这允许攻击者提供恶意的URL。
    • 未限制请求目标:

      curl_setopt($CH, CURLOPT_HEADER, FALSE);
      curl_setopt($CH, CURLOPT_SSL_VERIFYPEER, FALSE);
      
      • curl_setopt配置允许请求任何指定的URL,包括内部服务或本地网络上的服务。这使得攻击者可以利用该请求来扫描内部网络、访问内部API,或者获取内部系统的信息。
    • 敏感信息泄露:

      • 由于未进行响应处理,恶意请求可能会返回敏感的系统信息。如果内部服务的响应被返回给攻击者,可能会暴露重要信息。
  • SSRF(file_get_content)

    • 用户输入未经过滤:

      $filename = $_GET['file'];
      
      • $_GET[‘file’] 直接用于 file_get_contents() 函数,没有进行任何过滤或验证。这允许攻击者通过在 file 参数中提供恶意输入来读取任意服务器上的文件。
    • 路径控制不严格:

      $RD = explode('/',$FILEDIR)[1];
      
      • 虽然使用了 explode() 函数来处理路径,但如果攻击者能够提供特殊的路径参数(如本地文件或内网资源),仍然可以访问不应该公开的文件。
  • 21
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值