WEB通用漏洞-CSRF-SSRF
WEB通用漏洞-CSRF-SSRF
CSRF/XSRF原理
CSRF/XSRF即跨站请求伪造,是一种对网站的恶意利用。举个生活中的例子:就是某个人点了个奇怪的链接,自己什么也没输,但自己的QQ号或其他的数据就被盗了,即该攻击可以在受害者不知情的情况下以受害者身份伪造请求,执行恶意操作。(换句话说:在受害者不知情的情况下,利用受害者的身份,执行了恶意操作)
CSRF/XSRF利用条件
- 目标用户已经登录了网站,能够执行网站的功能。
- 这个登录的用户,权限要足够。
- 正是因为该用户已经登录了网站,攻击者才可以利用该用户的身份去执行恶意操作。
- 攻击者构造恶意数据包(利用目标用户的身份执行恶意操作)(工具:csrfTest),形成恶意HTML页面和URL。
- 目标用户访问了攻击者构造的URL。(可与XSS相结合)
小案例
如何从黑盒/白盒测试判断CSRF/XSRF?/修复/防御
- 看验证来源(是否满足同源策略)?
- 同源策略:https://blog.csdn.net/csdssdn/article/details/125344813
- 举一个简单的例子:每一个数据包都会有一个Referer字段,这个字段标识这个数据包从哪个站点来。
- 为了防止CSRF攻击,我们需要验证每一个数据包的来源,如果数据包的来源和当前数据包访问的站点是同源的,那么就可以处理该数据包,否则就不可以。
- 但是呢,这种验证也是不可靠的。因为,Referer字段可以通过抓包来伪造。
- 看凭据有无token
- 当用户登录执行操作时,有的站点会在数据包的Cookie字段处添加token,标识这个操作是该用户完成的。如果用户无意识访问了攻击者构造的恶意url的话,那么恶意数据包中Cookie字段中的token就不是该用户,所以服务器在处理的时候,由于token不对,那么就会阻止该操作。
- 因此,token字段是可以防止CSRF攻击的。
- 用户每执行一次操作,token都会变化。
- 看关键操作有无验证
- 假设,用户在访问恶意URL时,被修改了账号的密码。那么,我们可以添加验证来解决该问题。
- 具体来讲,在修改密码的操作上添加验证。(诸如:手机验证码等)(该验证使得:用户从不知情->知情,从而防止了CSRF攻击)
- 当然,验证有严格有稀疏,如果验证不严密,那么就会存在绕过的风险。
CSRF代码审计的思路
CSRF由于漏洞特性的原因,它的挖掘和审计思路与其他的漏洞不同。
其他漏洞(SQL注入、文件上传、XSS等)
主要根据关键函数和应用功能来进行挖掘。
CSRF漏洞挖掘/审计思路
直接复现有没有(复现出跟目标机器一样的网络应用出来,在本地进行测试)
- 成功->有漏洞
- 失败->看代码->过滤函数存在缺陷(可以绕过)-> 有漏洞
- 失败->看代码->过滤函数完整过滤->没有漏洞
如果目标网站存在来源检测(绕过思路):
- 伪造-需要在数据包文件中通过代码/抓包固定来源(Referer)
- 尝试在网站上寻找可上传的地方,上传数据包文件(一般是html文件),此时取得当前同域名的访问地址。
SSRF原理(解决了攻击者无法访问内网的情况)
SSRF(服务端请求伪造)是一种由攻击者构造形成由服务端发起请求的一个安全漏洞,一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统)SSRF形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤和限制。比如从指定URL中获取网页文本内容,加载指定地址的图片,下载等等。
换句话说,攻击者通过某种方式(服务器需要接收攻击者的输入),导致服务器自己请求自己内网的资源呈现给攻击者。(攻击者利用服务器的身份来请求服务器内网的资源)
原理图
一篇文章:https://www.t00ls.com/articles-41070.html
一个案例(SSRF漏洞)
假设服务器有一个上传图片功能:
- 本地用户将自己的图片上传到服务器
- 远程加载图片地址上传服务器
远程加载图片地址上传服务器的流程?
- 访问图片地址(服务器访问)
- 下载图片,并上传该服务器
此时,攻击者在远程加载的图片地址中写上http://127.0.0.1,那么这个地址就意味着服务器自己请求自己内网的资源,进行上传。
攻击者正好可以利用这一点,来非法获取服务器上的资产。
具体可以做到:
注:不同语言支持的伪协议不同,有些语言支持file协议读取本地文件,但是有些语言就不可以。
注:SSRF漏洞不止可以做到这些,具体可以做什么,需要具体问题具体分析
注:攻击者一般都会将SSRF漏洞和内网中其他服务的漏洞结合起来进行攻击。如果内网中其他服务是不存在漏洞的,那么SSRF漏洞一般只可以做一些信息搜集的工作。如果内网中存在诸如防火墙、堡垒机这样的安全设备,GG。
利用条件
当前功能应用点利用服务器解析你提交的资源。
如何从黑盒测试判断SSRF?(重点找:服务器自身请求某些资源,并呈现给用户的功能)
如何从白盒测试判断SSRF?
- 功能点抓包指向代码块审计
- 功能点函数定位代码块审计
SSRF修复
- 禁用不需要的协议(例如:file协议,防止非法读内网的文件)
- 固定或限制资源地址(对地址做出过滤,禁止访问127.0.0.1)
- 错误信息统一信息处理(对于所有报错的信息,统一进行处理,给与同样的反馈。防止攻击方针对不同的错误进行不同的处理。防止报错导致信息泄露)
致谢
https://www.bilibili.com/video/BV1pQ4y1s7kH/?spm_id_from=333.1007.top_right_bar_window_custom_collection.content.click
免责声明
本博客中的内容仅供学习之用,不用于商业用途,也不可以用于任何非法用途,否则后果自负,本人不承担任何责任!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现