第六次作业

一、CSRF和XSS区别

CSRF(跨站请求伪造)和XSS(跨站脚本攻击)是两种常见的Web安全漏洞,它们之间的主要区别如下:

### 1. 攻击方式


- **CSRF**: 利用用户的身份和权限,通过伪造请求,执行用户不愿意执行的操作。攻击者通过诱使用户在登录状态下访问一个恶意链接,导致用户在不知情的情况下向目标网站发出请求,从而执行操作(如更改密码、转账等)。
- **XSS**: 攻击者在网页中注入恶意脚本,当其他用户访问该网页时,恶意脚本在用户的浏览器中执行,从而窃取用户的敏感信息、劫持会话或执行任意操作。

### 2. 攻击目标


- **CSRF**: 目标是已经登录的用户,通过伪造请求滥用用户的权限。
- **XSS**: 目标是网页的其他用户,利用恶意脚本在受害者的浏览器中执行不受信任的代码。

### 3. 利用原理


- **CSRF**: 利用用户的信任,攻击者依靠用户已经登录的状态发送恶意请求。
- **XSS**: 利用网站对用户输入的信任,攻击者在网页中注入恶意脚本。

### 4. 防御方法


- **CSRF**: 主要通过使用CSRF令牌(每个请求附带一个唯一的令牌)、检查Referer头信息、增加验证码等方式来防御。
- **XSS**: 主要通过对用户输入进行严格的过滤和转义,使用内容安全策略(CSP)来防御。

### 5. 示例


- **CSRF**: 受害者在登录银行网站后,攻击者通过诱使受害者点击恶意链接,将受害者的资金转移到攻击者账户。
- **XSS**: 攻击者在评论区注入恶意JavaScript代码,当其他用户查看评论时,代码窃取用户的cookie并发送给攻击者。

总结来说,CSRF是通过伪造请求滥用用户身份,而XSS是通过注入脚本劫持用户会话或执行恶意操作。

二、CSRF攻击步骤

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

### 1. 受害者登录可信网站


用户在可信任的网站(如银行、社交媒体等)上进行登录,并且在浏览器中保持会话处于活跃状态。例如,用户登录后,浏览器会保存该网站的会话Cookie。

### 2. 攻击者构造恶意请求


攻击者通过分析目标网站,构造一个恶意请求。这些请求通常是用户在正常情况下执行的敏感操作,比如更改账户信息、转账、发送消息等。构造的请求包含用户的会话信息(如Cookie),因为这些信息是由浏览器自动附加的。

### 3. 诱导用户执行恶意请求


攻击者通过各种手段(如发送恶意链接、嵌入恶意图片、发送带恶意请求的邮件等)诱导用户点击恶意链接或加载恶意网页。该链接或网页包含攻击者构造的恶意请求,并在用户不知情的情况下发送到受信任的目标网站。

### 4. 用户浏览器发送请求


由于用户已经在目标网站登录,并且浏览器会自动附加相关的会话信息(如Cookie),用户的浏览器会在不经过用户确认的情况下发送这个恶意请求。

### 5. 目标网站接收并处理请求


目标网站接收到这个请求时,会认为是合法用户发出的请求,因为请求携带了合法的Cookie或其他认证信息。网站因此会执行请求中的操作,比如转账、修改信息等。

### 6. 攻击完成


目标网站执行了攻击者预期的操作,导致用户账户被篡改、资金被盗等后果,而用户通常对此毫无察觉。

### 示例说明:


1. **用户登录银行网站**:用户使用账号和密码登录银行网站,并在浏览器中保持登录状态。
2. **攻击者构造恶意请求**:攻击者知道银行网站的转账URL格式,构造了一个恶意链接,如 `http://bank.com/transfer?to=attacker&amount=1000`。
3. **攻击者诱导用户点击链接**:攻击者通过社交工程手段(例如伪装成一个有趣的视频链接)诱导用户点击这个恶意链接。
4. **用户浏览器发送请求**:用户在不知情的情况下点击了链接,浏览器自动附加了银行网站的Cookie,并发送了转账请求。
5. **银行网站处理请求**:银行网站认为这个请求是合法的,并执行转账操作,将1000元转到攻击者账户。

### 防御措施:


为防止CSRF攻击,网站开发者通常会采取以下措施:
- **CSRF令牌**:为每个敏感操作生成一个唯一的令牌,并在请求中进行验证。
- **检查Referer头**:验证请求的来源,确保请求来自合法的页面。
- **双重认证**:在执行敏感操作时要求用户再次输入密码或进行其他形式的身份验证。
 

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

要手工构造一个POST型的CSRF攻击页面,攻击者通常会创建一个HTML表单并利用JavaScript自动提交表单,以便在用户访问该页面时自动发送POST请求。以下是实现步骤:

### 1. 分析目标网站的POST请求


首先,攻击者需要分析目标网站的POST请求,确定请求的URL、表单字段以及所需的参数。这可以通过浏览器的开发者工具或网络嗅探工具完成。

### 2. 构造HTML表单


攻击者根据分析结果创建一个伪造的HTML表单,该表单的`action`属性设置为目标网站的URL,表单字段设置为目标网站需要的参数。

### 3. 自动提交表单


为了使攻击自动化,攻击者会使用JavaScript在页面加载时自动提交表单,用户不需要手动点击提交按钮。

### 4. 诱导用户访问页面


攻击者将构造好的页面通过各种方式(如邮件、聊天消息、社交媒体链接等)发送给受害者,诱导其访问。

### 示例代码


下面是一个简单的CSRF攻击页面示例:

```html
<!DOCTYPE html>
<html>
<head>
    <title>CSRF Attack</title>
</head>
<body οnlοad="document.forms[0].submit()">
    <form method="POST" action="http://target-website.com/transfer">
        <input type="hidden" name="to" value="attacker_account">
        <input type="hidden" name="amount" value="1000">
        <!-- 其他隐藏字段可以根据需要添加 -->
    </form>
</body>
</html>

四、token类CSRF利用方法

1. 令牌泄露攻击

如果应用程序在某些情况下不小心泄露了CSRF令牌(例如,通过URL或在不安全的地方输出),攻击者可以利用该令牌发起CSRF攻击。

攻击步骤:
  1. 获取CSRF令牌:攻击者可能通过以下方式获取到CSRF令牌:

    • 浏览器扩展或恶意脚本:XSS(Cross-Site Scripting)攻击可能获取到用户页面中的CSRF令牌。
    • URL泄露:如果CSRF令牌通过GET请求参数传递,攻击者可能通过Referer头或日志获取到该令牌。
  2. 构造恶意请求:攻击者将获取到的令牌嵌入到恶意表单中,并诱使用户提交该表单。

  3. 执行攻击:用户在已登录状态下访问攻击者构造的页面,自动发送包含合法CSRF令牌的请求,目标网站处理请求并执行相应操作。

2. 利用反射型XSS获取令牌

如果目标网站存在反射型XSS漏洞,攻击者可以利用该漏洞执行JavaScript代码来获取当前页面中的CSRF令牌,然后使用这个令牌发起CSRF攻击。

攻击步骤:
  1. 识别XSS漏洞:攻击者识别并利用目标网站上的反射型XSS漏洞。
  2. 获取CSRF令牌:利用XSS脚本获取页面中包含的CSRF令牌。
  3. 发送恶意请求:利用获取到的CSRF令牌构造并发送恶意请求

3. 登录跨站脚本与CSRF结合

攻击者可以先通过XSS漏洞在目标网站上执行恶意脚本,获取用户的CSRF令牌,随后利用该令牌发起CSRF攻击。

攻击步骤:
  1. 利用XSS注入脚本:攻击者在受害者访问的页面上注入恶意JavaScript。
  2. 获取并保存CSRF令牌:恶意脚本运行后,获取页面中的CSRF令牌。
  3. 构造并发送恶意请求:利用获取的令牌构造恶意POST请求,并自动提交。

五、SSRF常用伪协议

       1. file://

       2. dict://

       3. gopher://

       4. ftp://

       5. http/https

        6. ldap://

        7. php://

        8. mailto://

        9. jar://

        10. netdoc://

六、pikachu

1.

2.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值