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知识库 -> SSRF漏洞 -> 正文阅读

[PHP知识库]SSRF漏洞

一、漏洞简介

1、SSRF概述

SSRF服务端请求伪造(Server-Side Request Forget)。

场景:Hack利用服务器发起伪造请求,已达到访问内网的数据,进行内网信息探测或者内网漏洞利用的目的。

形成原因:应用程序(服务端)存在可以从其他服务器获取数据的功能,但是对服务器的地址并没有做严格的过滤,导致应用程序可以访问任意的URL链接。

目的:Hack利用构造URL链接,利用SSRF漏洞进行以下攻击。

??????? (1)通过服务器获取内网主机,端口和banner信息。

??????? (2)对内网的应用程序进行攻击,例如Redis,JBoss等。

??????? (3)利用file://伪协议读取文件。

??????? (4)可以攻击内网程序,造成缓冲区溢出。

2、Curl库

2.1、简介

用法:可以使用url的语法模拟浏览器来传输数据。支持多种网络协议。

PHP使用最多的是模拟get和post请求。

2.2、用法

(1)通过用phpinfo()查看是否开启Curl,若出现则开启,没有开启可以在配置文件php.ini中找到extension=php_curl.dll,把前面的‘;’去掉。

2.3、常用函数

curl_close — 关闭一个cURL会话
curl_copy_handle — 复制一个cURL句柄和它的所有选项
curl_errno — 返回最后一次的错误号
curl_error — 返回一个保护当前会话最近一次错误的字符串
curl_escape — 使用 URL 编码给定的字符串
curl_exec — 执行一个cURL会话
curl_file_create — 创建一个 CURLFile 对象
curl_getinfo — 获取一个cURL连接资源句柄的信息

curl_init — 初始化一个cURL会话
curl_multi_add_handle — 向curl批处理会话中添加单独的curl句柄
curl_multi_close — 关闭一组cURL句柄
curl_multi_exec — 运行当前 cURL 句柄的子连接
curl_multi_getcontent — 如果设置了CURLOPT_RETURNTRANSFER,则返回获取的输出的文本流
curl_multi_info_read — 获取当前解析的cURL的相关传输信息
curl_multi_init — 返回一个新cURL批处理句柄
curl_multi_remove_handle — 移除curl批处理句柄资源中的某个句柄资源
curl_multi_select — 等待所有cURL批处理中的活动连接
curl_multi_setopt — 为 cURL 并行处理设置一个选项
curl_multi_strerror — Return string describing error code
curl_pause — Pause and unpause a connection
curl_reset — 重置一个 libcurl 会话句柄的所有的选项
curl_setopt_array — 为cURL传输会话批量设置选项
curl_setopt — 设置一个cURL传输选项
curl_share_close — Close a cURL share handle
curl_share_init — Initialize a cURL share handle
curl_share_setopt — Set an option for a cURL share handle.
curl_strerror — Return string describing the given error code
curl_unescape — 解码给定的 URL 编码的字符串
curl_version — 获取cURL版本信息

3、导致漏洞出现的常见函数

(1)file_get_contents()?????

file_get_contents(path,include_path,context,start,max_length)

???????? path:必需。规定要读取的文件。
i????????nclude_path:可选。如果也想在 include_path 中搜寻文件的话,可以将该参数设为 “1”。
????????context:可选。规定文件句柄的环境。context 是一套可以修改流的行为的选项。? 若使用 null,则忽略。
????????start :可选。规定在文件中开始读取的位置。该参数是 PHP 5.1 新加的。
????????max_length:可选。规定读取的字节数。该参数是 PHP 5.1 新加的。   1,此函数可以用来打开一个网络地址 可以实现简单的网页抓取   2.此函数可以读取本地的文件   3.此函数可以模拟post请求。

作用:一般用file_get_contents函数读取url的时候会创建一个$http_response_header变量保存HTTP响应的报头,使用fopen等函数打开的数据流信息可以用stream_get_meta_data获取。

(2)fsockopen()?????

作用:打开一个网络连接或一个套接字连接。

使用fsockopen方法和使用CURL方法的实质都是去模拟HTTP协议,所以重点在于如果去构造HTTP协议。

注意:要使用此函数的功能,需要在PHP.ini文件中打开allow_url_open

(3)curl_exec()

语法:curl_exec(resource,$ch)

说明:

??????? 执行给定的cURL会话。

??????? 这个函数应该在初始化一个cURL会话并且全部的选项都被设置后调用。

ch : 由curl_init()返回的句柄。

二、漏洞代码示例分析

PS:代码来源pikachu靶场

if(isset($_GET['url']) && $_GET['url'] != null){

    //接收前端URL没问题,但是要做好过滤,如果不做过滤,就会导致SSRF
    $URL = $_GET['url'];
    $CH = curl_init($URL);
    curl_setopt($CH, CURLOPT_HEADER, FALSE);
    curl_setopt($CH, CURLOPT_SSL_VERIFYPEER, FALSE);
    $RES = curl_exec($CH);
    curl_close($CH) ;
    echo $RES;
}

以上代码通过curl_exec函数对访问传入的URL数据进行请求,并返回请求的结果。

正常情况下,URL参数传入http://127.0.0.1/pikachu/vul/ssrf/ssrf_info/info1.php,curl_exec会访问该PHP页面的信息,并返回结果,如图2.1所示。

图2.1 正常URL请求的返回结果

?2.1、端口探测

url参数没有经过严格过滤,因此攻击者就可以构造任意的URL以利用SSRF漏洞。例如,输入http://127.0.0.1:3306来探测服务器是否开启3306端口。

?图2.2 利用SSRF探测3306端口是否开启

?2.2、读取文件

通过file://伪协议来尝试获取服务端常见的文件。

?2.3、内网应用攻击步骤。

(1)信息探测:利用SSRF端口信息探测的方法,通过内网扫描存在的主机或开启的服务。

(2)访问服务(访问控制台)

(3)部署木马

(4)获得webshell:利用SSRF漏洞发起payload攻击。

(5)执行命令:利用上传的木马文件,执行可操作性命令。

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-10-03 16:53:35  更:2021-10-03 16:53:43 
 
开发: 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年11日历 -2024/11/15 1:13:56-

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