CSRF与SSRF

一.CSRF

1.概念

CSRF (Cross-site request forgery,跨站请求伪造)也被称为One Click Attack或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装成受信任用户请求受信任的网站。

2.过程

进行一次的CSRF攻击必须有2个操作:登录信任网站,并生成本地cookie;在不登出信任网站的前提下,登录不信任网站

3.分类

(1)GET类型的CSRF
(2)POST类型的CSRF

4.CSRF的危害

(1)数据泄露:攻击者可以利用CSRF攻击窃取用户的敏感信息,如账户密码、信用卡信息等,造成用户的隐私泄露和财产损失。

(2)非法操作:攻击者可以通过CSRF攻击对受信任的网站进行非法操作,如篡改数据、发布虚假信息等,给企业或个人带来损失。

(3)拒绝服务:攻击者可以利用大量的伪造请求对服务器进行攻击,导致服务器瘫痪,使合法用户无法正常访问。

(4)传播CSRF蠕虫:例如某个社交网站爆出的漏洞,让某个用户查看恶意页面后,给他所有好友发送短信,短信中又包含了这个恶意页面; 好友点击的话,又会给他的好友发送短信,这样就开始了传播,受感染的人也将越来越多。

4.CSRF漏洞的挖掘

(1)最简单的方法就是抓取一个正常请求的数据包,如果没有Referer字段和token,那么极有可能存在CSRF漏洞。

(2)如果有Referer字段,但是去掉Referer字段后再重新提交,如果该提交还有效,那么基本上可以确定存在CSRF漏洞。

(3)随着对CSRF漏洞研究的不断深入,不断涌现出一些专门针对CSRF漏洞进行检测的工具

5.CSRF的防御

(1)验证码(最有效的防御CSRF漏洞的方法)

CSRF攻击的过程,往往是在用户不知情的情况下构造了网络请求。而验证码,则强制用户必须与应用进行交互,才能完成最终请求。因此在通常情况下,验证码能够很好地遏制CSRF攻击。

但是验证码并非万能。很多时候,出于用户体验考虑,网站不能给所有的操作都加上验证码。因此,验证码只能作为防御CSRF的一种辅助手段,而不能作为最主要的解决方案。

(2)在请求地址中加入token

CSRF 攻击之所以能够成功,是因为黑客可以完全伪造用户的请求,该请求中所有的用户验证信息都是存在于 cookie 中,因此黑客可以在不知道这些验证信息的情况下直接利用用户自己的 cookie 来通过安全验证。

要抵御 CSRF关键在于在请求中放入黑客所不能伪造的信息,并且该信息不存在于 cookie 之中。

可以在 HTTP 请求中以参数的形式加入一个随机产生的 token,并在服务器端建立一个拦截器来验证这token,如果请求中没有 token 或者 token 内容不正确,则认为可能是 CSRF 攻击而拒绝该请求。

(3)验证HTTP Referer 字段

根据 HTTP 协议,在 HTTP 头中有一个字段叫Referer,它记录了该 HTTP 请求的来源地址。在通常情况下,访问一个安全受限页面的请求来自于同一个网站

6.dvwa靶场练习

7.pikachu靶场练习

二.SSRF

1.概念

SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。

一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统)

2.原理

SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。

3.漏洞挖掘

(1) 根SSRF漏洞特征,挖掘方法有二:
  • 数据层面需要关注的关键字段是URL、IP地址、链接等,关键字有:share、wap、url、link、src、source、target、u、3g、display、sourceURl、imageURL、domain……
  • 业务层面需关注任何通过URL进行资源调用(入)或向外发起网络请求(出)的功能,如通过url文件上传下载处是存在SSRF最多的场景。其他具体业务场景包括:内容展示、社交分享、在线翻译、收藏功能、WebMail邮箱、各种处理工具(FFpmg)等
(2)探测是否存在漏洞,方法有二:
  • 请求包中将参数更改为不同的IP / DNS或TCP端口,观察返回包长度、返回码、返回信息及响应时间,不同则可能存在SSRF漏洞;
  • 请求自己的公网服务器(或CEYE),使用nc –lvp监听请求。

4.SSRF的危害

(1)可以对外网、服务器所在内网、本地进行端口扫描,获取一些服务的banner信息;

(2)攻击运行在内网或本地的应用程序(比如溢出);

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

(4)攻击内外网的web应用,主要是使用get参数就可以实现的攻击(比如struts2,sqli等);

(5)利用file协议读取本地文件等。.

(6)各个协议调用探针:http,file,dict,ftp,gopher等

5.防御措施

通常有以下5个思路:

(1)过滤返回信息,验证远程服务器对请求的响应是比较容易的方法。如果web应用是去获取某一种类型的文件。那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。

(2)统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态。

(3)限制请求的端口为http常用的端口,比如,80,443,8080,8090。

(4)黑名单内网ip。避免应用被用来获取获取内网数据,攻击内网。

  (5)禁用不需要的协议。仅仅允许http和https请求。可以防止类似于file:///,gopher://,ftp:// 等引起的问题。

6.pikachu靶场练习

三 .CSRF与SSRF的区别

CSRF(Cross-Site Request Forgery,跨站请求伪造)与SSRF(Server-Side Request Forgery,服务器端请求伪造)是两种不同类型的网络安全漏洞,它们在攻击方式、目标以及防御策略上均存在显著差异。以下是对两者区别的详细探讨:

1、定义与原理

CSRF

  • 定义:CSRF是一种由攻击者构造形成,利用用户在已登录的网站中提交非法请求的行为。攻击者通过伪造用户提交的请求,将恶意请求发送至受信任的网站,导致用户在不知情的情况下执行恶意操作。
  • 原理:CSRF攻击利用了网站对用户网页浏览器的信任。攻击者通过诱使用户访问一个恶意网页(通常是通过邮件、消息或恶意网站链接),该网页中包含了一个指向受信任网站的恶意请求。由于用户的浏览器在访问该网站时已经处于登录状态,因此这个恶意请求会携带用户的认证信息(如Cookie),从而被受信任的网站信任并执行。

SSRF

  • 定义:SSRF是一种服务器端请求伪造的安全漏洞。攻击者通过构造特定的URL地址,利用服务端对用户提供的可控URL地址的过于信任,让服务端发起对内部或外部资源的请求,从而可能泄露敏感信息或攻击内网。
  • 原理:SSRF攻击利用了服务端应用对外部输入(如URL)的不严格验证。当服务端提供了从其他服务器获取数据的功能(如从指定URL地址获取网页文本内容、加载指定地址的图片、下载等),且没有对目标地址做过滤与限制时,攻击者就可以通过构造恶意的URL地址,让服务端应用发起对这些地址的请求,进而实现攻击目的。

2、区别

CSRFSSRF
攻击发起者用户端浏览器服务端应用
攻击目标诱使用户在已登录的Web应用中执行非预期操作迫使服务端应用发起对内部或外部资源的请求
利用的信任关系网站对用户浏览器的信任服务端应用对用户输入URL的信任
常见攻击方式通过恶意网页诱导用户访问,伪造用户请求通过构造恶意URL地址,让服务端发起请求
影响范围可能影响用户的账户安全、隐私泄露等可能泄露敏感信息、攻击内网资源等

3、防御策略

CSRF防御

(1)使用CSRF令牌:在表单提交或重要的请求中使用CSRF令牌(也称为anti-CSRF令牌),确保每个请求都是用户明确意图的结果。

(2)验证HTTP请求的Referer头部:验证请求的来源是否可信。

(3)设置Cookie的SameSite属性:限制Cookie在跨站请求中的发送,如设置为SameSite=Strict可防止Cookie在跨站请求中使用。

(4)在Ajax请求中使用自定义HTTP头:由于跨站请求通常不能设置自定义头,这增加了安全性。

SSRF防御

(1)对请求地址设置白名单:只允许请求白名单内的地址。

(2)禁用不安全的协议:如file://、gopher://、ftp://等。

(3)限制请求的端口:如仅允许请求HTTP和HTTPS常用的端口(80、443等)。

(4)对用户提供的数据进行严格的验证和过滤:特别是那些用于指定资源位置(如URLs)的输入。

(5)适当管理错误响应:以防泄露关于内部网络结构的信息。

综上所述,CSRF和SSRF在定义、原理、攻击方式和防御策略上均存在明显的区别。了解这些区别有助于我们更好地识别和防御这两种网络安全漏洞。

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Smile灬凉城666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值