Apache 文件解析漏洞SSRF漏洞原理介绍及代码
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漏洞原理介绍及代码相关推荐
- 光场相机重聚焦原理介绍及代码解析
光场相机重聚焦原理介绍及代码解析 光场相机重聚焦–焦点堆栈深度估计法 全部代码下载地址: https://download.csdn.net/download/weixin_38285131/1044 ...
- 合并bn层到conv或FC层原理介绍及代码实现
原 合并bn层到conv或FC层原理介绍及代码实现 2017年11月09日 17:38:27 crazy-ye 阅读数:5932更多 <div class="tags-box spac ...
- Decawave官方双边测距(一对一)原理介绍及代码实现
Decawave官方双边测距(一对一)原理介绍及代码实现 一.运行平台 运行软件平台:Keil5 运行硬件平台:STM32 开发板型号:UWB-S1学习板 开发板淘宝链接:https://item.t ...
- cad dwg文件在线展示平台源代码cad格式 dwg文件解析,在线展示平台,全套代码
cad dwg文件在线展示平台源代码cad格式 dwg文件解析,在线展示平台,全套代码 支持windows,linux,mac,支持导入2004,2007,2010,2013版本dwg文件,图层控制, ...
- Apache文件解析漏洞
我最为熟悉的便是Apache了,先来研究它的文件解析漏洞.百度许久,又谷歌一番,最终发觉,Apache关于文件解析,似乎只有三种"漏洞".之所以打引号是因为我觉得这三种" ...
- Web漏洞-SSRF漏洞(详细)
SSRF漏洞 介绍: SSRF(Server-Side Request Forgery):服务器端请求伪造,该漏洞通常由攻击者构造的请求传递给服务端,服务器端对传回的请求未作特殊处理直接执行而造成的. ...
- 机器翻译评价指标之BLEU原理介绍及代码实现
欢迎关注知乎: 世界是我改变的 知乎上的原文链接 一. 原理介绍 BLEU(Bilingual Evaluation Understudy),即双语评估替补.所谓替补就是代替人类来评估机器翻译的每一个 ...
- linux中soft文件不好写,SoftMaker TextMaker TMW文件解析整数溢出漏洞
发布日期:2013-11-06 更新日期:2013-11-08 受影响系统: SoftMaker TextMaker 2012.4.15.679 描述: ----------------------- ...
- 解密android日志xlog,mars的xlog日志文件解析以及日志查看工具介绍
文章背景 有时候轮岗或者测试反馈bug时,执行python脚本不能快速的解析腾讯mars库的xlog文件,如果能像普通txt文件一样鼠标右键就可以打开就好了,因此本文介绍的主题之一就是如何快速执行解密 ...
最新文章
- 业界丨2018年人工智能和机器学习路在何方? 看看美国公司准备怎么做
- 深度理解springboot集成cache缓存之源码解析
- Kotlin实战指南十四:协程启动模式
- Context node attribute expand trouble shooting guide
- puppet应用原理及安装部署
- linux基础知识——创建进程
- Java查询图书信息
- 小程序 - 数组追加兼本地存储
- Mycat安全_监控平台简介---MyCat分布式数据库集群架构工作笔记0035
- jQuery EasyUI API 中文文档 - 菜单按钮(MenuButton)
- 导出所有DB2存储过程的四种方法
- 入门python之前,应该先了解这些
- linux gnu ld,GNU LD用法
- [转]通过生日获取星座Python源码
- 如何获取CSDN积分
- DiskGenius是一款硬盘分区及数据恢复软件
- 程序员博客是否应该晒代码(由摄影而感)
- 建时间维度表(oracle)
- neu计算机硕士,BC省可直接移民的硕士专业-NEU-Align计算机硕士
- Ruby ERB注入反序列化