个人笔记-渗透测试-SSRF漏洞
·
SSRF是什么
-
kali中自带的工具:
curl,获取对应url数据,它是在命令行中工作的文件传输工具,支持FTP、TELNET、HTTP、HTTPS、POP3等协议 -
php curl扩展
- 获取网页资源——爬虫
- webservice——获取接口数据
- FTP——下载文件
// curl的使用 <?php // 创建一个cURL资源 $ch = curl_init(); // 设置URL和相应的选项 curl_setopt($ch, CURLOPT_URL, "http://www.w3cschool.cc/"); curl_setopt($ch, CURLOPT_HEADER, 0); // 抓取URL并把它传递给浏览器 curl_exec($ch); // 关闭cURL资源,并且释放系统资源 curl_close($ch); ?>
-
SSRF(Server-Side Request Forgery) 服务器端请求伪造
- 一种由攻击者构造形成,从服务端发起请求的安全漏洞。原因:服务端提供了一个从其他服务器读取数据的功能,并且没有对请求地址做过滤。
- 漏洞从服务端发起,所以可以访问到内网其他的内容
- PHP中可能会引起SSRF漏洞的函数:
- curl_exec()——执行cURL会话
- file_get_contents()——将整个文件读入一个字符串中
- fsockopen()——打开一个网络连接或者一个Unix套接字连接
-
CURL支持的其他协议
协议 作用 payload file 查看文件 curl -v ‘file:///etc/passwd’ dict 探测端口 http://localhost/ssrf/ssrf1.php?url=dict://127.0.0.1:3306 gopher 反弹shell curl -v “此处省略一大堆代码” -
补充
- dict协议:用于搭建在线字典服务(类似英汉大字典之类的)、能强行读取一些tcp内容
- gopher协议:是一种信息查找系统,只支持文本,不支持图像,已被HTTP替代
-
危害
- 扫描资产
- 获取敏感信息
- 攻击内网服务器(绕过防火墙)
- 访问大文件、造成溢出
- 通过Redis写入WebShell或建立反弹连接
SSRF常见场景
-
社会化分享功能

-
转码服务

-
在线翻译

-
图片加载,下载功能

-
图片,文章收藏功能

-
网站采集、网站抓取

实际案例
- Wordpress 3.5.1以下版本xmlrpc.php pingback的缺陷与SSFR
- discuz!的SSRF(利用php的header函数来绕过,其实就是302跳转实现协议转换)
- weblogic的SSRF
SSRF的发现和利用
- 爬取地址
- 查看是否请求了其他资源
- 用Google语法搜索关键字:share\wap\url\link\src\source\target\u\3g\display\sourceURL\imageURL\domain
- 各种编程语言的请求函数
工具:
靶场练习(pikachu)
- 点击SSRF-curl页面下的链接,观察到url中可能存在SSRF,手动修改url测试漏洞存在性。

👇 在url=后面修改为http://www.baidu.com页面有回显
👇 再试试dict协议dict://127.0.0.1:3306

👇 接着试用file协议file:///D:/files/tv.txt读取文件

- 再换用SSRF-file_get_content,点击链接,观察url

👇 该函数可以使用file协议、http协议、php协议。只有dict协议出错。测试php协议:php://filter/read=convert.base64-encode/resource=ssrf.php
或者php://filter/read=convert.base64-encode/resource=../../../test.php
SSRF的防御措施
- 禁用协议
- 限制请求端口
- 设置URL白名单
- 过滤返回信息
- 统一错误信息
更多推荐
所有评论(0)