Apache 文件解析漏洞 SSRF漏洞原理介绍及代码

1. Apache 环境简介

2. Apache 解析漏洞介绍

3. 解析漏洞利用演示

4.利用场景介绍

1. Apache 环境简介

​ Apache 和 PHP 采用 module 的方式结合(Apache2.2)

2. Apache解析漏洞介绍

​ Apache 认为一个文件夹可以拥有多个扩展名,哪怕没有文件名,也可以拥有多个扩展名。 Apache 认为应该从右边到左开始判断解析方法的。如果最右侧的拓展名为不可识别的,就继续向左判断,知道判断到文件名为止。

官方解释:http://httpd.apache.org/docs/current/mod/directive-dict.html

并不是 Apache 直接解析,而是 Apache 直接调用 PHP 进行解析。

3. 解析漏洞利用

​ 在站点跟目录下新建一个 1.php.xxxx 文件, xxxx文件后缀名为无法识别的后缀名。其中内容为 phpinfo();

     ###                 4.利用场景介绍

​ 在 Web 程序中存在文件上传,但是有黑名单验证时,利用该解析漏洞可以上传对应的 Webshell 到目标服务器随后蚁剑连接

SSRF漏洞

1、SSRF 漏洞原理介绍

1.1、SSRF 漏洞定义

1.2、SSRF 漏洞原理

1.3、SSRF 漏洞代码分析

1.4、SSRF 漏洞利用

2、产生 SSRF 漏洞的代码

2.1、产生 SSRF 漏洞的 php 函数

2.2、file_get_contents

2.3、fsockpoen()

2.4、curl_exec()

1.1、SSRF 漏洞定义:

​ SSRF (服务器请求伪造)是一种构造请求,有服务端发起请求的安全漏洞。

1.2、SSRF 漏洞原理

​ SSRF 形成原因:服务端提供了从其他服务器获取数据的功能,但没有对内网目标地址做过滤与限制

​ 主要方式:

​ 1、 对外网、服务器所在内网、本地进行端口扫描,获取Banner信息

​ 2、测试运行在内网或本地的应用程序

​ 3、利用 file 协议读取本地文件等

1.3 SSRF 漏洞代码分析

​ 存在 SSRF 漏洞代码

<?phpfunction curl($url){                             ## curl函数用来发送请求 通过url来获取发送请求$ch=curl_init();                     ##利用curl库发送请求curl_setopt($ch,CURLOPT_URL,$url);       ##利用参数设置一个url地址curl_setopt($ch,CURLOPT_HEADER,0);       ## 将结果输出curl_exec($ch);                       ##执行对应的访问curl_close($ch);                   ##关闭创建的对象,释放对应的资源}
$url=$_GET["url"];                                     ##通过GET函数,获取对应的目标地址
curl($url);                                          ## 构造url进行内网访问
?>

1.4、SSRF漏洞利用

​ 利用 SSRF 进行文件读取,

url=file:///.....................................       #目录读取

2.1、产生 SSRF 漏洞的PHP函数

​ 很多 Web 应用都提供了从其他的服务器上获取数据的功能。使用用户指定的 URL ,Web 应用可以获取图片,下载文件,读取文件内容等。这个功能如果被恶意使用,可以利用存在缺陷 Web 应用作为代理攻击远程和本地的服务器。这种形式的攻击称为服务器请求伪造攻击(Sever-side Request Forgery)。

​ SSRF 攻击可能存在任何语言编写的应用,下将展示可能存在 SSRF 漏洞的函数

file_get_content()        fsockopen()      curl_exec()

2.2、file_get_contents

​ 使用 file_get_contents 函数从用户指定的 url 获取图片。然后把他用一个随机文件名保存在硬盘上,并展示给用户

<?php
if(isset($_POST['url']))                     #获取用户提交的 url
{ $content=file_get_contents($_POST['url']); #使用 file_get_contents 获取远程url内容,保存concent中$filename='./images/'.rand().';img1.jpg'; #使用filename新建.rand随机获取文件名保存在目录中file_put_contents($filename,$content);       #将concent内容写入到filename中echo $_POST['url'];                          #测试输出 url$img="<img src=\"".$filename."\"/>";       #使用img变量保存一个字符串,src设置文件类型
}
echo $img;                                   #当前网页输出文件内容
?>

2.3、fsockopen()

​ 使用 fsockopen 函数实现获取用户指定 url 的数据(文件或者 html)。这个函数会使用 socket 跟服务器建立 tcp连接,传输原始数据。

<?php
function GetFile($host,$port,$link)                            #定义了 ip,端口,位置
{
$fp=fsockopen($host,inval($port),$errno,$errstr,30);         #打开主机及对应端口,延时。
if(!$fp){
echo "$errstr (error number $errno) \n";                   #打开失败,连接失败超时
}else{
$out="GET $link HTTP/1.1\r\n";                               #成功
$out.="Host:$host\r\n";
$out.="Connection:Close\r\n\r\n";
$out.="\r\n";                                               #创建一个 HTTP 请求
fwrite($fp,$out);                                          #写到fsockopen中
$contents='';                                               #获取内容
while(!feof($fp)){                                         #当feof为true时 读取完毕
$contents.=fgets($fp,1024);                                    #通过 fgets 每次获取1024个数据拼接
}
fclose($fp);                                               #关闭套接字
return $contents;                                          #返回主体内容
}
?>

2.4、curl_exec()

​ 使用 curl 发送请求获取数据

<?php
if (isset($_POST['url']))                     #获取用户提交的url
{
$link=$_POST['url'];                        #将提交内容存在link中
$curlobj=curl_init();                         #初始化curl 设置它对应的选项
curl_setopt($curlobj,CURLOPT_POST,0);           #不使用POST提交,使用GET提交
curl_setopt($curlobj,CURLOPT_RETURNTRANSFER,TURE);#TRUE将curl_exec()获取的信息以字符串返回,而不是直接输出
$result=curl_exec($curlobj);                  #接收返回的字符串
curl_close($curlobj);                         #关闭初始化的curl选项
$filename='./curled'.rand().'.txt';
file_put_contents($filename,$result);           #将接收到的字符串,存储到上创建的文件内
echo $result;
}
?>

SSRF漏洞的利用 - 内网资源探测

1、SSRF 漏洞代码分析

2、实验环境搭建

3、利用 SSRF 进行内网资源访问

4、利用 SSRF 进行端口扫描

1、SSRF 漏洞代码分析

分析下列代码的 SSRF 漏洞:

<?phpif (isset($_GET['url']))                           #判断是否提交参数{$link=$_GET['url'];                            #赋值给link$curlobj=curl_init($link);                 curl_setopt($curlobj,CURLOPT_HEADER,0);         #设置curl选项curl_setopt($curlobj,CURLOPT_RETURNTRANSFER,1);  #设置返回结果字符串$result=curl_exec($curlobj);                   #返回result字符串}
?>

3.3、使用SSEF进行内网资源访问

​ 一般情况下将 Web 应用程序暴露在互联网可以通过 Web 浏览器进行访问。但是会将内网资源封闭起来,避免与外部接触。那么如果网站存在 SSRF 漏洞,利用 SSRF 进行内网资源访问。

对目标地址的302重定向,使用:
http://www.xxx.com/xxx.x?url=http://xxx.xxx.x.x/../../../
对相应内网进行访问
3.4、利用 SSRF 进行端口扫描

​ 提交对应参数 url 包含 IP 地址:端口号,测试端口状态。

http://xxx.x.x.x/xxxx/xxx.x?url=http://xxx.x.x.x:(端口号)
21号端口:文件传输协议 - 控制端口
22号端口:SSH (Secure Shell)- 远程登录协议
23号端口:Telnet 终端仿真协议 - 未加密文本通信
25号端口:SMTP (简单邮件传输协议)
80号端口:超文本传输协议 - 用于传输网页
443号端口:超文本传输安全协议 - 超文本传输协议 over TLS/SSL (加密传输)
445号端口:SMB文件共享
3306号端口:MySQL 数据库系统
3389号端口:远程桌面协议(RDP)

21号端口:文件传输协议 - 控制端口
22号端口:SSH (Secure Shell)- 远程登录协议
23号端口:Telnet 终端仿真协议 - 未加密文本通信
25号端口:SMTP (简单邮件传输协议)
80号端口:超文本传输协议 - 用于传输网页
443号端口:超文本传输安全协议 - 超文本传输协议 over TLS/SSL (加密传输)
445号端口:SMB文件共享
3306号端口:MySQL 数据库系统
3389号端口:远程桌面协议(RDP)

Apache 文件解析漏洞SSRF漏洞原理介绍及代码相关推荐

  1. 光场相机重聚焦原理介绍及代码解析

    光场相机重聚焦原理介绍及代码解析 光场相机重聚焦–焦点堆栈深度估计法 全部代码下载地址: https://download.csdn.net/download/weixin_38285131/1044 ...

  2. 合并bn层到conv或FC层原理介绍及代码实现

    原 合并bn层到conv或FC层原理介绍及代码实现 2017年11月09日 17:38:27 crazy-ye 阅读数:5932更多 <div class="tags-box spac ...

  3. Decawave官方双边测距(一对一)原理介绍及代码实现

    Decawave官方双边测距(一对一)原理介绍及代码实现 一.运行平台 运行软件平台:Keil5 运行硬件平台:STM32 开发板型号:UWB-S1学习板 开发板淘宝链接:https://item.t ...

  4. cad dwg文件在线展示平台源代码cad格式 dwg文件解析,在线展示平台,全套代码

    cad dwg文件在线展示平台源代码cad格式 dwg文件解析,在线展示平台,全套代码 支持windows,linux,mac,支持导入2004,2007,2010,2013版本dwg文件,图层控制, ...

  5. Apache文件解析漏洞

    我最为熟悉的便是Apache了,先来研究它的文件解析漏洞.百度许久,又谷歌一番,最终发觉,Apache关于文件解析,似乎只有三种"漏洞".之所以打引号是因为我觉得这三种" ...

  6. Web漏洞-SSRF漏洞(详细)

    SSRF漏洞 介绍: SSRF(Server-Side Request Forgery):服务器端请求伪造,该漏洞通常由攻击者构造的请求传递给服务端,服务器端对传回的请求未作特殊处理直接执行而造成的. ...

  7. 机器翻译评价指标之BLEU原理介绍及代码实现

    欢迎关注知乎: 世界是我改变的 知乎上的原文链接 一. 原理介绍 BLEU(Bilingual Evaluation Understudy),即双语评估替补.所谓替补就是代替人类来评估机器翻译的每一个 ...

  8. linux中soft文件不好写,SoftMaker TextMaker TMW文件解析整数溢出漏洞

    发布日期:2013-11-06 更新日期:2013-11-08 受影响系统: SoftMaker TextMaker 2012.4.15.679 描述: ----------------------- ...

  9. 解密android日志xlog,mars的xlog日志文件解析以及日志查看工具介绍

    文章背景 有时候轮岗或者测试反馈bug时,执行python脚本不能快速的解析腾讯mars库的xlog文件,如果能像普通txt文件一样鼠标右键就可以打开就好了,因此本文介绍的主题之一就是如何快速执行解密 ...

最新文章

  1. 业界丨2018年人工智能和机器学习路在何方? 看看美国公司准备怎么做
  2. 深度理解springboot集成cache缓存之源码解析
  3. Kotlin实战指南十四:协程启动模式
  4. Context node attribute expand trouble shooting guide
  5. puppet应用原理及安装部署
  6. linux基础知识——创建进程
  7. Java查询图书信息
  8. 小程序 - 数组追加兼本地存储
  9. Mycat安全_监控平台简介---MyCat分布式数据库集群架构工作笔记0035
  10. jQuery EasyUI API 中文文档 - 菜单按钮(MenuButton)
  11. 导出所有DB2存储过程的四种方法
  12. 入门python之前,应该先了解这些
  13. linux gnu ld,GNU LD用法
  14. [转]通过生日获取星座Python源码
  15. 如何获取CSDN积分
  16. DiskGenius是一款硬盘分区及数据恢复软件
  17. 程序员博客是否应该晒代码(由摄影而感)
  18. 建时间维度表(oracle)
  19. neu计算机硕士,BC省可直接移民的硕士专业-NEU-Align计算机硕士
  20. Ruby ERB注入反序列化

热门文章

  1. WinForm隐藏窗口控制最大化最小化按钮
  2. python 播放本地音乐_实战项目—python实现本地音乐播放器
  3. C#获取QQ旋风的下载记录
  4. Android 实现最新版QQ图像裁剪功能
  5. Thinkpad x1 carbon 2022,2021 各个版本CPU性能对比
  6. 使用微信API给微信用户发文本消息
  7. 效率为王!11款最高效的团队协作工具
  8. 电影类别中HD和DVD版本的不同
  9. 如何配置DirectX开发环境
  10. python爬虫——用Scrapy框架爬取阳光电影的所有电影