一、SSRF漏洞原理
SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,文档等等。SSRF漏洞通过篡改获取资源的请求发送给服务器(服务器并没有检测这个请求是否合法的),然后服务器以他的身份来访问服务器的其他资源。SSRF利用存在缺陷的Web应用作为代理攻击远程和本地的服务器。
PHP中下面函数的使用不当会导致SSRF:
file_get_contents()
fsockopen()
curl_exec()
伪协议
file://:从文件系统中获取文件内容,如,file:///etc/passwd
dict://:字典服务器协议,访问字典资源,如,dict:///ip:6739/info
gopher://:分布式文档传递服务,可使用gopherus生成payload。
挖掘SSRF漏洞
能够对外发起网络请求的地方,就可能存在SSRF漏洞。
从远程服务器请求资源(Upload from URL,Import &Export RSS feed) 数据库内置功能(Oracle[UTL_HTTP]、MongoDB、MSSQL、Postgres、CouchDB) Webmail 收取其它邮箱邮件(POP3/IMAP/SMTP) 文件处理,编码处理,属性信息处理(ffpmg,ImageMaic,DOCX,PDF,XML处理器)
利用技巧
利用条件:被攻击的服务等没有开启加密传输与鉴权。
端口扫描(扫描内网)
攻击内网存在漏洞的服务
攻击Web应用进行指纹识别及其中的漏洞
如果PHP安装了expect扩展,可以通过expect协议执行系统命令
dos攻击
file 协议暴力枚举敏感文件
二、实现
通过跳板机访问百度 其访问IP并不是我们的IP 而是跳板机 利用这一点可以做跳板攻击
访问内网服务器的文件
通过抓包来扫描端口开放情况