CSRF\SSRF面试题
一、CSRF、SSRF、重放攻击的区别
-
CSRF (跨站请求伪造):是攻击者借助用户已登录目标网站的身份(利用 Cookie 等身份凭证),在用户不知情时以其名义发起伪造请求的攻击方式。它不攻击服务器,而是冒充用户进行站内操作,多因服务端未严格过滤请求头(无 token/referer 限制)所致,可能导致密码重置、账号被盗等严重后果,与 XSS 不同,其不盗取用户权限而是借用户权限行事,常通过 XSS 或链接欺骗等让用户在本机发起未知请求,完成攻击需用户先登录可信网站且未登出时访问危险网站。
即CSRF 是跨站请求伪造攻击,由客户端发起。
-
SSRF(服务器端请求伪造):SSRF是一种由攻击者构造请求,由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。但是由于服务器请求天然的可以穿越防火墙,所以如果一台能被外网所访问的服务器A存在SSRF漏洞,这时攻击者可以借助服务器A来发起SSRF攻击,通过服务器A向内网某服务器发起请求,达到攻击内网的目的。
简单来说就是利用服务器漏洞以服务器的身份发送一条构造好的请求给服务器所在内网进行攻击。
- 重放攻击:重放攻击是将截获的数据包进行重放,达到身份认证等目的,是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的,主要用于身份认证过程,破坏认证的正确性。
总结:CSRF是跨站请求伪造攻击,由客户端发起 SSRF是服务器端请求伪造,由服务器发起 重放攻击是将截获的数据包进行重放,达到身份认证等目的。
二、防御CSRF都有哪些方法,token一定有用么?
防御CSRF有如下几种策略:
- 在HTTP请求中加入随机生成的Token,并在服务器验证Token的有效性。
- 开启同源策略检测,对Referer请求头字段进行校验
- 关键操作二次验证:比如敏感操作需短信/邮箱验证码确认。
Token的局限性
- 绕过条件
- 存在XSS漏洞导致Token泄露
- Token未绑定用户会话(如全局固定Token)
- 防御增强:动态Token + 绑定用户会话
三、SSRF漏洞的本质与修复
本质:利用服务器漏洞以服务器的身份发送一条构造好的请求给服务器所在内网进行攻击。
攻击原理
- 漏洞入口:服务端未过滤用户控制的URL参数(如
image=http://内网IP) - 利用方式
- 内网服务探测(Redis未授权访问)
- 本地文件读取(
file:///etc/passwd) - 反弹SHELL
修复方案:
1、禁止跳转
2、禁用除http和https外的协议,如:file://、gopher://、dict://等。
3、限制请求的端口为http常用的端口,如 80、443、8080。
4、统一错误信息,避免用户可以根据错误信息来判断远程服务器的端口状态。
5、对请求地址设置白名单或者限制内网IP,以防止对内网进行攻击。