7-SSRF渗透与防御
1、SSRF漏洞(上)
1.1 SSRF是什么
主要函数:curl_exec()可以执行http的请求
curl作用:
1、获取网页资源-爬虫
2、webservice-获取接口数据
3、FTP-下载文件
实现站内,请求站外资源
在服务器文件发起的请求,访问本机或其他机器的操作
SSRF (Server-Side Request Forgery)服务器端请求伪造
是一种有攻击者构造形成的由服务端请求的一个安全漏洞。
1.2 可能引发SSRF漏洞的其他PHP函数
1.3 CURL其他协议
dict协议:原本是用于搭建在线字典服务
gppher协议:原本是一种信息查找系统,只支持文本,不支持图像,已被HTTP替代
1.4 危害(利用方式)
1、扫描资产
2、获取敏感信息
3、攻击内网服务器(由于是从服务端发起的请求)
4、访问大文件,造成溢出
5、通过Redis写入WebShell或建立反弹链接
2、SSRF漏洞(中)
2.1 SSRF 常见场景
社会化分享功能(分享)
转码服务(浏览网页时不适配,自动转码)
在线翻译(输入网址时,会把整个网页翻译成中文)
在线图片加载、下载功能(上传or读取远程图片连接时)
图片、文章收藏功能
网站采集、网站抓取
允许在本站,访问并解析外站的资源
2.2 实际案例
1、Wordpress 3.5.1以下版本 xmlrpc.php pingback的缺陷与SSRF
2、discuz!的SSRF(利用php的header函数来绕过,其实就是302跳转实现协议转换)
3、weblogic的SSRF
3、SSRF漏洞(下)
3.1 如何发现SSRF漏洞
思路:爬取地址(或抓取通信数据),然后查看是否请求了其他资源
也可以用Google语法:inurl:share(分享)、wap(转码)、url、link、src、source、target、u、3g、display、sourceURL、imageURL、domain
工具
https://github.com/cujanovic/SSRF-Testing
https://github.com/tarunkant/Gopherus
https://github.com/swisskyrepo/SSRFmap
https://github.com/bcoles/ssrf_proxy
3.2 靶场实例(pikachu)
3.2.1 SSRF(curl)
累了来读一首诗吧!
但是发现url地址中,明显访问了其它地址的资源
探测端口:?url=dict://127.0.0.1:3306、url=dict://127.0.0.1:80
读取文件:?url=file://c:\windows\system32\drivers\etc\hosts
3.2.2 SSRF(file_get_content)
读取文件:?file=file://c:\windows\system32\drivers\etc\hosts
读取本地项目的php文件(并进行base64编码):?file=php://filter/read=convert.base64-encode/resource=ssrf.php
3.3 如何防御SSRF漏洞
1、禁用协议
2、限制请求端口
3、设置URL白名单
4、过滤返回信息
5、统一错误信息