两者区别:
CSRF:浏览器因为js偷偷发送了数据包,核心是让客户端的浏览器去访问。
SSRF:服务器因为你传参偷偷发送了数据包,核心是让服务器去访问。
CSRF与XSS的区别
csrf伪造请求,xss为跨站脚本攻击,一个为伪造cookie等验证信息,一个则是使用一个脚本攻击。
XSS 核心是操作目标网站的HTML代码 窃取Cookie 。
CSRF 核心是在非目标网站的HTML代码做手脚 让受害者浏览器偷偷的去访问目标网站
CSRF:跨站请求伪造
实现CSRF的关键:
- 找到一个xss的漏洞,将恶意代码植入到页面中去
- 构造出一个url,将参数设置好,将url贴在网络上骗用户访问这个url
危害:
- 攻击者盗用了你的身份证,以你的名义发送恶意请求
- 发送钓鱼邮箱
- 盗用用户账号,网银账号
防御措施:
- 检查referer字段(referer用来标明请求源属于哪个地址)
- 添加校验token
- 增加二次校验
SSRF:服务端请求伪造
攻击者能够从易受攻击的web程序,发送精心设计的请求的对其他网站进行攻击,即利用一个可发起网络请求服务器当做跳板来攻击其他服务器
SSRF的作用:
- 探测内网端口及信息,查看文件,甚至可以getshell
- 攻击内外网的web应用
SSRF一般存在的地方
- 能够对外发起网络请求的地方,可能存在SSRF
- 从远程服务器请求资源处
- 转码服务,在线翻译,通过URL地址加载或下载图片,通过url地址分享网页内容
- 从url关键字查找,比如url,link,target,sourceURL,imageURL
ssrf支持哪些协议
dict:// 查看端口,版本信息这些,向服务器端口请求curl命令
file:// 可以在文件系统中读取文件,有的时候会被禁用
gopher:// 可以用这个协议发送各种格式的请求包
sftp://
ftp://
http://
SSRF如何getshell
内网有些服务或者有些web页面存在漏洞,可以利用这些
SSRF如何防御
- 统一错误信息
- 限制请求的端口
- 过滤返回的信息
- 黑名单内网ip
- 禁用其他协议,允许http,https
- 禁用函数( file_get_contents()、fsockopen()、curl_exec()三个函数(PHP)防止SSRF)
- 限制内网Ip传参
- 开启内部访问也需要身份认证
SSRF漏洞的核心是什么
第一点:进入了内网,绕过了很多防火墙机制,因为防御大部分对外不对内
第二点:可以去访问存在漏洞机器上面的内部开放端口。可以触发漏洞(redis之类的)
第三点:可以通过file协议读取敏感信息
gopher协议(扩展):
和http协议相识,不过没有默认的端口,需要特殊指定,而且需要指定post方法回车换行需要使用%0d%0a,post参数之间的&分隔符也需要url编码
在SSRF中,Gopher协议可以对FTP、Telnet、Redis、Memcache、mysql进行攻击,也可以发送GET、POST 请求。
基本结构格式:
gopher://<host>:<post>/<gopher-path>_后接tcp数据流
gopher可以做Redis未授权访问攻击