【文件上传绕过】——解析漏洞_IIS7.0 | IIS7.5 | Nginx的解析漏洞_iis7.0解析漏洞_剑客 getshell的博客-程序员宝宝

技术标签: iis  nginx  渗透测试  php  网络安全  

一、实验目的:

1、通过本次实验学习漏洞产生的成因。
2、通过搭建漏洞环境,学习绕过技巧。

二、工具:

火狐/谷歌浏览器

三、实验环境:

靶 机: windows Sever 2008 R2 x64虚拟机:192.168.15.142
      xampp-win32-5.6.28-1-VC11-installer集成环境
      IIS7.0服务器

攻击机: 物理机
点我下载XAMPP安装包提取码:jake

四、漏洞说明:

1.  nginx解析漏洞(实验环境:Nginx1.4.6 ):

1.1 原理:

  Nginx拿到文件路径(更专业的说法是URI/test.jpg/test.php后,一看后缀是.php,便认为该文件是php文件,转交给php去处理。php一看/test.jpg/test.php不存在,便删去最后的/test.php,又看/test.jpg存在,便把/test.jpg当成要执行的文件了,又因为后缀为.jpgphp认为这不是php文件,于是返回Access denied
  这其中涉及到php的一个选项:cgi.fix_pathinfo,该值默认为1,表示开启。开启这一选项PHP可以对文件路径进行修理
  举个例子,当php遇到文件路径/1.jpg/2.txt/3.php时,若/1.jpg/2.txt/3.php不存在,则会去掉最后的/3.php,然后判断/1.jpg/2.txt是否存在,若存在,则把/1.jpg/2.txt当做文件/1.jpg/2.txt/3.php,若/1.jpg/2.txt仍不存在,则继续去掉/2.txt,以此类推。

1.2 漏洞形式:

www.xxxxx.com/UploadFiles/image/1.jpg/1.php

1.3 另外两种解析漏洞:

www.xxxxx.com/UploadFiles/image/1.jpg%00.php
www.xxxxx.com/UploadFiles/image/1.jpg/%20\0.php

2. IIS7.0 | 7.5解析漏洞:

2.1 原理:

IIS7.5 IIS7.0的漏洞与nginx的类似,都是由于php配置文件中,开启了cai.fix_pathinfo,而这并不是nginx或者IIS7.0 | 7.5本身的漏洞

2.2 漏洞形式:

www.xxxxx.com/UploadFiles/image/1.jpg/1.php

五、环境准备:

1. 安装 XAMPP环境:

安装XAMPP环境原因:
主要是为了能够在IIS服务器里面使用它的php模块。

1、双击安装包,进行安装,后面安装按照图片操作即可:

这里默认安装在C:/盘,可自定义:

点击Next后,会弹出浏览器,关闭即可:

2、安装图中操作即可:

3、在这个页面等待安装完毕,安装完成退出即可:

4、出现这个页面,会让我们选择安装环境语言,默认英语即可:

5、出现下面情况,按照图中操作即可

6、出现下面弹窗,退出即可,至此安装完毕:

2. 安装IIS服务器:

2.1 安装步骤:

1、点击任务栏的"服务器管理"进入以下页面,安装下图操作即可:

2、这里需要选择安装的服务器,根据自己需要进行安装,这里只安装IIS服务器,接着按照下图操作即可:

3、选择安装网站的一些功能服务,安装下图操作即可:

4、出现以下页面,等待安装结束后,选择关闭即可,至此IIS服务器安装完毕:


5、查看网站主目录位置:

2.2 验证安装成功与否:

1、验证安装成功与否,查看ip:

2、访问服务器,出现以下页面说明安装完成,可以正常访问:

2.3 验证能否正常执行asp的脚本文件:

1、删除原有的文件及目录:

2、给wwwroot目录进行授权,操作如下即可:

3、按照下图操作即可,然后一直确定退出:

4、在网站主目录下,创建一个1.asp的脚本文件:

内容:

<%=now()%>

5、在物理机里面访问这个页面,可以正常执行:

3. 环境配置:

3.1 配置:

1、给IIS服务器添加PHP模块,让它可以正常执行PHP脚本,操作步骤如下:

2、后退,进入主页面,设置FastCGI模块


3、选中PHP配置文件:


4、确定,退出即可,至此,IIS服务器已经可以正常执行PHP脚本文件:

3.2 验证PHP脚本能否执行:

1、创建一个1.php脚本文件:
内容:

<?php phpinfo(); ?>


2、访问1.php页面,可以正常解析为php脚本文件:

3、通过以上操作,就是为了让网站在遇到php脚本文件时,服务器把php脚本交给fastcgi模块处理,找到xmapp中的php模块,让网站能够正常解析php代码。

六、实验步骤:

1、在网站主目录放一个图片马我a.jpg
内容:

<?php phpinfo(); ?>

2、正常访问,默认以图片查看器的方式进行打开,没有解析为php脚本

3、在后面随便添加一个/*.php,这里是加了一个/qwer.php,被解析为了php脚本文件:

IIS服务器解析漏洞处理过程:
IIS服务器遇到文件路径/a.jpg/qwer.php时,若/a.jpg/qwer.php不存在,则会去掉最后的/qwer.php,然后判断/a.jpg是否存在,该目录下/a.jpg存在,由于服务器配置不当,造成了服务器把a.jpg当做 了php脚本执行了。

七、漏洞防御:

1、通过下面设置,进行防御IIS7.0 IIS7.5 的解析漏洞:

2、通过上面设置,再次访问,发现已经不能再解析了:

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_45588247/article/details/118889668

智能推荐

python列表中字典指定value的中文按照首字母拼音排序,数字在后_小片清风的博客-程序员宝宝

情况说明排序这种东西,极其常见了,一般的字典排序,列表中字典排序,都很常见。前面也写过了。今儿遇见一个有趣的,要将列表中字典的中文进行首字母排序。实验情况现有一个数据如下:data = [{'songname': '孤芳自赏', 'singer': '杨小壮', 'songid': 7588840, 'song_value': 0, 'headimg': '', 'n...

车载OS - POSIX,PSE51_何以解忧唯有写!的博客-程序员宝宝

POSIX与OS有关,不论OS用在何处。POSIX是Portable OS Interface的简称。POSIX的目的,是统一UNIX-like 的OS对外的接口,方便OS之上的应用在各种OS上移植运行。POSIX 是Portable OperatingSystem Interface for Computer Environments 的缩写,它是ISO C的延伸,...

error C2065: 'DEBUG_NEW' : undeclared identifier?_PerfectToday的博客-程序员宝宝

删除 .cpp 文件中的#ifdef _DEBUG#undef THIS_FILEstatic char THIS_FILE[]=__FILE__;#define new DEBUG_NEW#endif  

使用SQL存储过程有什么好处 用视图有什么好处_apinghappy的博客-程序员宝宝

随便胡乱说几点,大家补充一下。1。预编译,已优化,效率较高。避免了SQL语句在网络中传输然后再解释的低效率。2。如果公司有专门的DBA,写存储过程可以他来做,程序员只要按他提供的接口调用就好了。这样分开来做,比较清楚。3。修改方便。嵌入在程序中的SQL语句修改比较麻烦,而且经常不能肯定该改的是不是都改了。SQLSERVER上的存储过程修改就比较方便,直接改掉该存储过程,调用它的程序基本不用动,除非

jbpm4.4 mysql_jBPM4.4 no jBPM DB schema:_weixin_39625258的博客-程序员宝宝

错误信息:jBPM4.4nojBPMDBschema:noJBPM4_EXECUTIONtable.Runthecreate.jbpm.schematargetfirstintheinstalltool.解析:JBPM初始化建树表格时create语句错误,如下:createtableJBPM4_DEPLOYMENT(DBID_bigintnotnull,...

iOS开发:字符串设置指定内容的文字颜色、文字大小、文字字体类型_三掌柜666的博客-程序员宝宝

在iOS开发过程中,会有一些为了提高APP的视觉效果而设置的特别一点的效果,比如一行文字需要自定义不同的颜色和文字大小,这就用到通过富文本来设置字符串的颜色、大小和文字类型。这篇博文我打算只介绍怎么设置指定内容的一些文字属性设置,如果之前看过我写的博文,就会发现有一篇类似介绍通过富文本来设置字符串内容的博文,但是那篇是综合性的,包括介绍button的,以及UItextfield的设置,所以在这里我

随便推点

python读取txt文件乱码-python文件乱码_weixin_37988176的博客-程序员宝宝

广告关闭腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元!原文地址:http:www.zisexinghen.cnlikeshare322.html一、问题:python读取文件时会遇到乱码的问题? 二、解决方法:1、已utf-8格式打开文档f =open(re:pythonliaotian.txt,r,encoding=utf-8)f.se...

vim全部复制到系统剪切板_vim quanxuan jianqieban_xxZkj的博客-程序员宝宝

vim全部复制全部选择,按esc退到命令模式,输入ddvG,dd表示回到第一行,v表示可视模式,G表示到最后一行。复制到剪贴板,首先要看下是否安装vim-gnome,否则就要sudo apt-get install vim-gnome输入ddvG全部选择后,直接输入"+y即可...

学习笔记:KD-TREE_kd树时间复杂度_星辰大少主的博客-程序员宝宝

前言一个感觉特别单一的数据结构啊,Po大爷才写两个这个题呢。然后仔细研究了一下KD-TREE为什么要这样做,发现其中的每一个操作都是很巧妙的。原理简述(瞎逼逼)KD-Tree确实应该算是计算几何的一种东西了吧,可以看作线段树的高维推广还自带离散功能。KD-Tree也是一个二叉树,并且除了叶子结点外,每个结点都代表了一堆点,叶子结点则代表了一个,和线段树是很像的。每个点我...

Oracle SQL in 超过1000的解决方案_chimei5917的博客-程序员宝宝

起因: 代码程序由于设计问题,采用了效率不太高的oracle 的in语句,当条件超过1000之后oracle会抛出ora-01795; 经过: 1,oracle中如果非要用in作为条件的话,超过1000条可以用col in() or col in()的方式来处理 2,...

SQL Server replication requires the actual server name to make a connection to the server_actualserver_哋岼線的博客-程序员宝宝

SQL Server 2005/2008 配置 Transactional  Replication 过程中,出现如下异常信息。异常信息: Replication.Utilities——————————SQL Server 复制需要有实际的服务器名称才能连接到服务器。不支持通过服务器别名、IP 地址或任何其他备用名称进行连接。请指定实际的服务器名称“xxxxxxx”。SQL Ser

Pro SQL Server 2005 Replication_topmvp的博客-程序员宝宝

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出版、作者信息和本声明。否则将追究法律责任。http://blog.csdn.net/topmvp - topmvpReplication is a way of copying and updating information in a database. This allows all users to see the same

推荐文章

热门文章

相关标签