
CSRF & SSRF
本文最后更新于 2025-01-18,文章内容可能已经过时。
🕵️CSRF
CSRF(Cross-site request forgery)跨站请求伪造,也被称为「One Click Attack」或者 Session Riding。
通常缩写为 CSRF 或者 XSRF,是一种对网站的恶意利用。
区别:尽管听起来像跨站脚本(XSS),但它与 XSS 非常不同,XSS 利用站点内的信任用户,而 CSRF 则通过伪装来自受信任用户的请求来利用受信任的网站。与 XSS 攻击相比,CSRF 攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比 XSS 更具危险性。
CSRF 讲究一天时、地利、人和,成功率不高
CSRF 的攻击过程两个条件:
-
目标用户已经登录了网站,能够执行网站的功能。
-
目标用户访问了攻击者构造的 URL
🎈利用方式
💡验证 HTTP Referer 字段
根据 HTTP 协议,在 HTTP 头中有一个字段叫 Referer,它记录了该 HTTP 请求的来源地址。服务器会验证客户端的请求来源,如果本网站请求的则响应,否则不响应
💡加验证码验证
这种方式涉及到页面交互,在通常情况下,验证码能很好遏制 CSRF 攻击。但是出于用户体验考虑,网站不能给所有的操作都加上验证码。因此验证码只能作为一种辅助手段,不能作为主要解决方案。
💡使用随机 Token
Token 的值是随机的。由于 Token 的存在,攻击者无法再构造一个带有合法 Token 的请求实施 CSRF 攻击。另外使用 Token 时应注意 Token 的保密性,尽量把敏感操作由 GET 改为 POST,以 form 或 AJAX 形式提交,避免 Token 泄露。通常使用 Anti CSRF Token 来防御 CSRF 攻击,同时要注意 Token 的保密性和随机性。
个人认为 CSRF 可用于社会工程学攻击
🖨️SSRF
SSRF(Server-Side Request Forgery, 服务端请求伪造)利用漏洞可以发起网络请求来攻击内网服务。
利用 SSRF 能实现以下效果:
-
扫描内网(主机信息收集,Web 应用指纹识别)
-
根据所识别应用发送构造的 Payload 进行攻击
-
Denial of service(DoS,拒绝服务攻击)
💡利用方式
http://wsl:32771/ssrf/curl_exec.php?url=http://127.0.0.1:3306 内网端口 / 服务探测(bp)
http://wsl:32771/ssrf/curl_exec.php?url=file:///etc/passwd 任意文件读取