浅谈CSRF与SSRF

本文探讨了CSRF(跨站请求伪造)和SSRF(服务端请求伪造)的区别与联系。CSRF利用用户浏览器对已登录网站的信任发起恶意操作,而SSRF则通过滥用web应用获取远程或内网服务器的数据。文中提到了它们的发生条件、危害及常见的防御措施,如验证码机制、验证referer、使用Token和过滤返回信息等。
部署运行你感兴趣的模型镜像

今天看在看《XSS跨站脚本攻击剖析与防御》的时候,里边提到了CSRF与SSRF,在网络查询了这部分的资料后,简单总结了下二者的关系与不同

CSRF

又称跨站请求伪造,XSS就是CSRF中的一种。二者区别,XSS利用的是用户对指定网站的信任,CSRF利用是网站对用户浏览器的信任。

发生条件

当用户在安全网站A登录后保持登录的状态,并在此时浏览了保存有恶意代码的另一个网站B。此时B站劫持用户的浏览器并以用户以登录的状态对A站发送非用户本人的操作。

当服务端没有对这次请求验证的情况下,将这次操作作为可信任的用户的操作。

发生地点

攻击者可以将恶意网址或者代码藏在论坛博客等任何用户生成内容的网站中。这意味着如果服务端没有适合的防御措施的话,用户即使访问熟悉的可信网站也有受攻击的危险。

类似于XSS一些html标签可以发送HTTP GET类型请求 像<img>,浏览器渲染img标签的时候,并不知道标签中src属性的值,是否为一个图片,浏览器发起一个HTTP GET请求

,并携带当前受害者当前浏览器在网站的cookie,获取返回结果。

对于很多网站来说,即使是一些重要的操作使用POST来提交请求,但是服务器再接收请求的时候并没有严格区分POST和GET。在PHP中滥用$_REQUEST就是例子。

如果服务端已经区分了GET,POST只用POST请求数据,可以通过制造一个隐藏的表单,并通过js代码自动提交伪造的表单。

GET伪造

POST伪造

防御

增加验证码机制,增加带有大量噪点的验证码,杜绝代码能够识别的简单验证码,当然了也经常被绕过

验证referer,采用同源政策,referer记录着数据包的来源地址,来判断请求的合法性,但是这个可以伪造

使用Token,令牌是一种将表单value的加密算法生成不同的加密结果,在服务器端进行验证。

在访问登录过一个网站,点击退出账户。



SSRF

又名服务端请求伪造攻击

有的大型网站在web应用上提供了从其他服务器获取数据的功能。使用户指定的URL web应用获取图片,下载文件,读取文件内容。攻击者利用有缺陷的web应用作为代理攻击远程和内网的服务器(跳板)



危害:

可对外网,服务器所在内网,受控服务器进行端口扫描,获取一些banner

对内网web应用进行指纹识别,通过访问默认文件实现

攻击内外网web应用,主要是使用get参数就可以实现分攻击

利用file协议读取本地文件

该漏洞存在的条件是对curl函数的滥用

比如:

if(isset($_POST['commit'])){

    $link = $_POST['url'];

    $filename = './curled/'.rand().'txt';

    $curlobj = curl_init($link);     //初始化连接

    $fp = fopen($filename,"w");

    curl_setopt($curlobj, CURLOPT_FILE, $fp);   //设置输出文件,默认为STDOUT (浏览器)。

    curl_setopt($curlobj, CURLOPT_HEADER, 0);  //设置为0表示不返回HTTP头部信息。

    curl_exec($curlobj);     //执行curl请求

    curl_close($curlobj);    //关闭curl连接

    fclose($fp);

    $fp = fopen($filename,"r");

    $result = fread($fp, filesize($filename)); 

    fclose($fp);     //关闭文件

    echo $result;

}

并为对输入的命令进行过滤,导致服务器遭到攻击


修复方案:

过滤返回信息,如果web应用数去获取某一类型文件,在把结果返回给用户之前先验证信息是否符合标准。

例如:当攻击者利用"识别图片"下的该漏洞远程包含一个文件,可以通过在服务器上验证返回数据是否是纯像素,来进行过滤。

统一错误页

限制请求端口为http常用端口 80,443,8080,8090

内网IP黑名单,避免应用被用来获取内网数据,攻击内网

您可能感兴趣的与本文相关的镜像

GPT-SoVITS

GPT-SoVITS

AI应用

GPT-SoVITS 是一个开源的文本到语音(TTS)和语音转换模型,它结合了 GPT 的生成能力和 SoVITS 的语音转换技术。该项目以其强大的声音克隆能力而闻名,仅需少量语音样本(如5秒)即可实现高质量的即时语音合成,也可通过更长的音频(如1分钟)进行微调以获得更逼真的效果

<think>好的,用户问的是CSRFSSRF是不是同一个东西。首先,我需要确认这两个术语的定义区别。 CSRF,跨站请求伪造,攻击者诱使用户在已认证的情况下执行非本意的操作。比如,用户登录了银行网站,攻击者诱导用户点击链接,导致用户 unknowingly 发起转账请求。这通常涉及用户的浏览器向目标网站发送恶意请求。 SSRF,服务器端请求伪造,攻击者让服务器向内部或外部资源发送恶意请求。例如,利用有缺陷的Web应用,让服务器访问内部系统,可能泄露敏感信息或者攻击内网服务。这里的关键是服务器作为请求的发起者,而不是用户的浏览器。 接下来,用户可能混淆这两个缩写,因为都有SRF。我需要明确它们的攻击目标场景不同。CSRF针对的是用户的会话,而SSRF针对的是服务器端的资源访问。同时,防御方法也不同:CSRF通常用Token验证,检查Referer,SameSite Cookie;SSRF则需要过滤输入,限制服务器请求的范围。 还要注意用户可能的背景,可能对网络安全概念不太熟悉,所以需要举例说明,避免技术术语过于复杂。确保回答结构清晰,分点对比,帮助用户逐步理解两者的区别。最后总结它们不是同一个概念,强调关键差异,这样用户能明确区分。</think>CSRF(跨站请求伪造)SSRF(服务器端请求伪造)是两种完全不同的网络安全攻击类型,以下是具体对比分析: ### 一、定义对比 **CSRF (Cross-Site Request Forgery)** - 攻击对象:已认证用户的浏览器 - 攻击原理:诱导用户在已登录状态下执行非预期操作 - 示例场景: ```markdown 用户登录银行网站后访问恶意网站 → 恶意网站自动提交转账请求 → 浏览器携带银行Cookie完成转账 ``` **SSRF (Server-Side Request Forgery)** - 攻击对象:服务端应用程序 - 攻击原理:利用服务端发起非预期网络请求 - 示例场景: ```markdown 攻击者构造特殊请求 → 服务端访问内部元数据接口(如AWS 169.254.169.254) → 泄露云服务器敏感信息 ``` ### 二、攻击流程对比 | 特征 | CSRF | SSRF | |-------------|-------------------------------|-------------------------------| | 请求发起方 | 用户浏览器 | 服务器 | | 利用凭证 | 用户的会话Cookie | 服务器的网络权限 | | 攻击目标 | 用户已认证的Web应用功能 | 内部系统/云元数据/第三方服务 | | 危害范围 | 用户账户级操作 | 系统级数据泄露/内网渗透 | ### 三、防御方案对比 **CSRF防御:** 1. 同步令牌验证(Anti-CSRF Token) $$ X-CSRF-Token: \text{RANDOM_128BIT_STRING} $$ 2. SameSite Cookie属性设置 3. 关键操作二次认证(如短信验证) **SSRF防御:** 1. 输入校验白名单(协议/域名/IP) ```python if not url.startswith('https://api.trusted.com/'): raise ValidationError ``` 2. 禁用危险协议(file://, gopher://, ftp://) 3. 网络隔离(将服务器部署在独立DMZ区) ### 四、历史案例分析 - **CSRF经典案例**:2007年Gmail邮件过滤器漏洞,攻击者可远程修改用户邮件规则 - **SSRF重大事件**:2021年Capital One数据泄露(攻击者通过SSRF访问AWS元数据获取密钥) ### 五、检测方法差异 - **CSRF检测**: - 检查请求是否缺少Token - 验证Referer头来源 - **SSRF检测**: - 使用DNS重绑定技术测试 - 尝试访问`http://169.254.169.254/latest/meta-data/` ### 总结 二者核心区别在于: $$ \text{CSRF} \subseteq \text{客户端安全} \quad vs \quad \text{SSRF} \subseteq \text{服务端安全} $$ 虽然名称相似,但属于完全不同的安全领域,防御时需采取针对性措施。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值