SSRF(Server-Side Request Forgery:服务器端请求伪造)是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF是要目标网站的内部系统。(因为他是从内部系统访问的,所有可以通过它攻击外网无法访问的内部系统,也就是把目标网站当中间人)
SSRF形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,文档,等等。
n 能够对外发起网络请求的地方,就可能存在SSRF漏洞
n 从远程服务器请求资源(Upload from URL,Import & Export RSS feed)
n 数据库内置功能(Oracle、MongoDB、MSSQL、Postgres、CouchDB)
n Webmail收取其他邮箱邮件(POP3/IMAP/SMTP)
n 文件处理,编码处理,属性信息处理(ffpmg,ImageMaic,DOCX,PDF,XML处理)
n 可以对外网、服务器所在内网、本地进行端口扫描,获取一些服务的banner信息;
n 攻击运行在内网或本地的应用程序(比如溢出);
n 对内网web应用进行指纹识别,通过访问默认文件实现;
n 攻击内外网的web应用,主要是使用get参数就可以实现的攻击(比如struts2,sqli等);
n 利用file协议读取本地文件等。
(1)使用地址白名单
(2)对返回内容进行识别
(3)需要使用互联网资源(比如贴吧使用网络图片)而无法使用白名单的情况:
首先禁用CURLOPT_FOLLOWLOCATION;然后通过域名获取目标ip,并过滤内部ip;最后识别返回的内容是否与假定内容一致
挖掘技巧
从URL关键字中寻找:share、wap、url、link、src、source、target、u、3g、display、sourceURl、imageURL、domain
像这类功能点比较容易爆出SSRF漏洞
SSRF的一些绕过技巧