7-SSRF漏洞
php curl 扩展:
获取网页资源,爬虫
webservice, 获取接口数据
FTP, 下载文件
php.ini extension=php_curl.dll
SSRF: Server-Side Request Forgery, 服务端请求伪造,由攻击者构造形成由服务端发起请求的一种安全漏洞。
危害:
- 扫描资产
- 获取敏感信息
- 绕过防火墙攻击内网服务器
- 访问大文件造成溢出
- 通过 Redis 写入 WebShell 或建立反弹连接
可能导致 SSRF 漏洞的函数:
curl_exec (): 执行 cURL 会话
file_get_contents (): 将整个文件读入为一个字符串
fsockopen (): 打开一个网络连接或一个 Unix 套接字连接
curl 协议
file: 查看文件,curl -v ‘file:///etc/passwd’
dict: 探测端口,http://localhost/ssrf/ssrf1.php?url=dict://127.0.0.1:3306
gopher: 反弹 shell
gopher 协议发送 POST 请求:
- 写好 POST 请求
- 进行一次 URL 编码
- 把%0A 全部替换为%0D%0A, 我也不知道为什么
- 再进行一次 URL 编码,因为服务器收到请求时会解码一次,curl 会再解码一次
- /?url=gopher://127.0.0.1:80/_POST%2520…
检测工具
SSRF-Testing
SSRFmap
Gopherus
ssrf_proxy
防御
禁用协议
限制请求端口
设置 URL 白名单
过滤返回信息
统一错误信息
Server Side Request Forgery, 服务端请求伪造,通过构造数据进而伪造服务端发起请求的漏洞。因为请求是由服务端内部发起的,所以一般情况下 SSRF 的目标往往是从外网无法访问的内部系统。
SSRF 漏洞形成的原理多是服务端提供了从外部服务获取数据的功能,但没有对目标的地址、协议等重要参数进行过滤和限制,从而导致可以自由构造参数,发起预期外的请求。


常见文件路径:
- /etc/passwd: 几乎所有 linux 发行版都包含的文件,可用于判断能否读取本地文件,同时保存了系统中有哪些用户
- /ect/apache2/*: apache2 的配置文件,可得知 web 目录,开放端口等信息
- /etc/issue: 一般表示该系统是什么 linux 发行版
- /proc: 存放系统运行的状态信息,其中含有以 pid 命名的文件夹,保存着这个进程的信息,还有一个 self 软连接指向当前运行的进程
- /proc/[pid]/cmdline: 程序运行的命令行
- /proc/[pid]/env: 程序运行的环境变量
- /proc/[pid]/fd/*: 程序打开的文件
- /proc/net: 系统的网络状态信息