IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 2021-09-29 -> 正文阅读

[PHP知识库]2021-09-29

简介

SSRF (server-site request forgery,服务端请求伪造) 是一种构造请求, 由服务端发起请求的安全漏洞。

一般情况下,攻击者无法直接访问到内网资源,但如果服务器存在SSRF漏洞,攻击者就可以利用SSRF攻击访问外网无法访问的内网资源。

SSRF漏洞形成的原因是服务端提供了从其他服务器获取数据的功能,比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等,但没有对内网目标地址做过滤与限制。

SSRF通常被用来进行端口扫描,所以这个漏洞也叫XSPA,全称cross site port attack,跨站点端口攻击。

正常用户:输入A网站URL --> A服务器接受请求(没有过滤),并处理 -->返回
攻击者:输入A网站URL(包含伪造请求B) --> A服务器接受请求并请求B服务 -->返回
在这里插入图片描述

漏洞危害

1、 读取或更新内部资源,造成本地文件泄露;
2、 扫描内网主机端口并获取服务器上运行的服务版本,攻击相应应用,如redis、JBoss、Weblogic、Zabbix、mongoDB、mysql、fastcgi、memcache、discuz……
3、 将含有漏洞主机用作代理/跳板攻击内网主机,绕过防火墙

SSRF漏洞相关的函数和协议

Php中产生ssrf漏洞的函数

1、 file_get_contents() 函数从用户指定的url获取内容,然后指定一个文件名j进行保存,并展示给用户
2、 fsockopen() 函数实现对用户指定url数据的获取,该函数使用socket(端口)跟服务器建立tcp连接,传输数据
3、 curl_exec() 执行指定的CURL会话
4、 fopen()
5、 readfile()

前三种比较多见,后续我们主要讨论第三种 curl_exec() 导致的漏洞

curl_exec漏洞代码示例

<?php   
if (isset($_POST['url'])){  
    $link = $_POST['url'];  
    $curlobj = curl_init();// 创建新的 cURL 资源  
    curl_setopt($curlobj, CURLOPT_POST, 0);  
    curl_setopt($curlobj,CURLOPT_URL,$link);  
    curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);// 设置 URL 和相应的选项  
    $result=curl_exec($curlobj);// 抓取 URL 并把它传递给浏览器  
    curl_close($curlobj);// 关闭 cURL 资源,并且释放系统资源  
<span class="nv">$filename</span> <span class="o">=</span> <span class="s1">'./curled/'</span><span class="o">.</span><span class="nb">rand</span><span class="p">()</span><span class="o">.</span><span class="s1">'.txt'</span><span class="p">;</span>  
<span class="nb">file_put_contents</span><span class="p">(</span><span class="nv">$filename</span><span class="p">,</span> <span class="nv">$result</span><span class="p">);</span>   
<span class="k">echo</span> <span class="nv">$result</span><span class="p">;</span>  
}  
?> 

Curl可利用协议与漏洞

  • dict (操作 Redis)
  • file (任意文件读取)
  • ftp、ftps (FTP 爆破)
  • tftp(UDP 协议扩展)
  • gopher (操作 Redis、Memcached)
  • imap/imaps/pop3/pop3s/smtp/smtps(爆破邮件用户名密码)
  • rtsp
  • smb/smbs (连接 SMB)
  • telnet - 连接 SSH/Telnet
  • http、https - 内网服务探测:
    网络服务探测
    ShellShock 命令执行
    JBOSS 远程 Invoker war 命令执行
    Java 调试接口命令执行
    axis2-admin 部署 Server 命令执行
    Jenkins Scripts 接口命令执行
    Confluence SSRF
    Struts2 一堆命令执行
    counchdb WEB API 远程命令执行
    mongodb SSRF
    docker API 远程命令执行
    php_fpm/fastcgi 命令执行
    tomcat 命令执行
    Elasticsearch 引擎 Groovy 脚本命令执行
    WebDav PUT 上传任意文件
    WebSphere Admin 可部署 war 间接命令执行
    Apache Hadoop 远程命令执行
    zentoPMS 远程命令执行
    HFS 远程命令执行
    glassfish 任意文件读取和 war 文件部署间接命令执行

这里面比较常用的协议有http、file、gopher、dict

SSRF漏洞定位

判断漏洞存在的方法

判定目标网站的后端程序 是否可以被控制用于向外界发送请求
1. 页面回显(常见)
2. 延时:
对比访问不同 IP/域名的访问时长,比如对百度与 Google(国内访问受限)的访问时间,访问百度的时间通常比Google快,若是则可能存在漏洞
3. 伪造dns请求到外面的dns服务器,查日志:
利用我们手中的域名和dns服务器,让目标站点尝试向该域名发送请求,如果能发送请求,必然会先进行dns查询,将域名转化为ip,那么我们的dns服务器上就可以收到该dns查询请求。(可以利用ceye.io)
4. 伪造请求的到自己监听的公网服务,查日志
我们自己的主机上开放一个tcp端口(可以直接利用nc或者自己写一个服务端程序)让目标主机尝试向我们自己的主机发送请求,如果我们的tcp端口收到了连接请求,那么就证明目标主机存在ssrf漏洞。

容易出现SSRF的地方

凡是能够对外发起网络请求的地方,且地址可被用户可控的,都有可能存在 SSRF 漏洞。

  1. RSS 订阅
  2. 字幕下载
  3. 收取第三方邮箱邮件
  4. 转码服务
  5. 在线翻译
  6. 图片加载与下载(通过URL地址加载或下载图片)
  7. 图片、文章收藏功能
  8. 网站采集、网页抓取的地方
  9. 头像的地方(远程加载头像)
  10. 文件处理:处理音视频的 ffmpeg、图片的 ImageMagic、Office,PDF 文档解析、 XML 解析器
  11. 一切要你输入网址的地方和可以输入ip的地方
  12. 抓包分析:从URL关键字中寻找:share、wap、url、link、src、source、target、u、3g、display、sourceURl、imageURL、domain、site

参考:
https://blog.csdn.net/bylfsj/article/details/105083164
https://blog.csdn.net/Fly_hps/article/details/83046613
https://www.jianshu.com/p/c4dc22699a42
https://www.leavesongs.com/PENETRATION/fastcgi-and-php-fpm.html
https://www.jianshu.com/p/612c010e588e
http://blog.leanote.com/post/snowming/e2c24cf057a4

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-09-30 11:43:35  更:2021-09-30 11:43:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/29 3:34:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计