漏洞简述

文件上传是Web应用的必备功能之一,比如上传头像显示个性化、上传附件 共享文件、上传脚本、更新网站等。如果服务器配置不当或者没有进行足够的过滤,Web用户就可以上传任意文件,包括恶意脚本文件、exe程序等,这就造成了文件上传漏洞。

漏洞成因

  • 服务器配置不当会导致任意文件上传;
  • Web应用开放了文件上传功能,并且对上传的文件没有进行足够的限制;
  • 程序开发部署时候,没有考虑到系统特性和验证和过滤不严格而导致限制被绕过,上传任意文件。

漏洞危害

  • 上传漏洞最直接的威胁就是上传任意文件,包括恶意脚本、程序等;
  • 如果Web服务器所保存,上传文件的可写目录具有执行权限,那么就可以直接上传后门文件,导致网站沦陷;
  • 如果攻击者通过其他漏洞进行提权操作,拿到系统管理权限,那么直接导致服务器沦陷。同服务器下的其他网站无一幸免,均会被攻击者控制。

通过上传漏洞获得的网站后门即WebShell。

WebShell

概述

Shell

Shell:在计算机科学中,Shell 俗称壳(用来区别于“核"),是指“为使用者提供操作界面”的软件(命令解释器)。 类似于windows系统给的cmd.exe或者linux下bash等,虽然这些系统上的命令解释器不止一种。

WebShell:webshell就是以asp、php、jsp或者aspx等网页文件形式存在的一种代码执行环境,由于webshell其大多是以动态脚本的形式出现,所以也将其称做为一种网页后门;它也是一个命令解释器,不过是以Web方式(HTTP 协议)通信(传递命令消息),继承了Web用户的权限。

WebShell本质上是在服务器端可运行的那些脚本文件,也就是说WebShell接收来自于Web用户的命令,然后再服务器端执行。

hacker在入侵了一个网站后,通常会将后门文件与网站服务器WEB目录下正常的网页文件混在一起,然后就可以使用浏览器来访问asp或者php后门,得到一个命令执行环境,以达到控制网站服务器的目的。

顾名思义,“web”的含义是显然需要服务器开放web服务,“shell”的含义是取得对服务器某种程度上操作权限。webshell常常被称为入侵者通过网站端口对网站服务器的某种程度上操作的权限。

大马

WebShell也可以是大马,也是网站木马。有一类WebShell之所以叫大马,是因为与小马(一句话木马)区分开,并且代码比较大,但是功能比较丰富。同样,大马有很多种脚本格式,其功能基本相同。每个团队都有自己的定制大马。

以下是一个简单的php大马的例子。
输入密码(密码一般直接写在木马文件中),在大马中我们可以进行文件管理,执行系统命令等,还有一些其他定制功能。

如下方大马:

https://www.lanzous.com/i28s8vc

请输入图片描述

默认密码:admin

小马

概述

小马就是一句话木马,因为其代码量比较小,就是一句简单的代码。

一句话木马示例:

# php一句话木马
<?php @eval($_POST[value]); ?>

# asp一句话木马
<%eval request ("value")%> 
<% execute(request("value")) %>  
 
# aspx一句话木马
<%@ Page Language="Jscript" %> <% eval(Request.Item["value"]) %>

一句话木马短小精悍,功能强大,但是需要配合中国菜刀或者中国蚁剑客户端使用,中国菜刀是一句话木马的管理器,也是命令
操作接口。中国菜刀在连接一句话木马的时候需要填写密码(实际上就是变量名)。

中国菜刀与一句话木马配合实现了三大基本功能:

文件管理
在中国菜刀页面继承Web用户权限可以实现文件管理,包括文件查看、上传、下载、修改、删除甚至运行exe程序等。

虚拟终端
在中国菜刀下可以获得类似于cmd和bash的命令行接口,可以执行相关命令。

数据库管理
我们可以使用中国菜刀进行数据库管理,此时需要知道连接数据库的账密。

一句话木马+中国蚁剑

<?php
@eval($_REQUEST[777]);
?>

1、创建连接

2、文件管理

3、虚拟终端

4、数据操作

文件上传漏洞

GetShell

GetShell就是获取Web的过程和结果。当然任意文件上传是GetShell的主要方式,但并不是唯一途径。

利用的条件

  • Web服务器要开启文件上传功能,并且上传api (接口) 对外 “开放” (Web 用户可以访问) ;
  • Web用户对目标目录具有可写权限,甚至具有执行权限,一般情况下,Web目录都有执行权限;
  • 要想完美利用文件上传漏洞,就是上传的文件可以执行,也就是Web容器可以解析我们上传的脚本,无论脚本以什么样的形式存在;
  • 无视以上条件的情况就是服务器配置不当,开启了PUT方法(允许向服务器直接写入文件)。

防御 | 绕过 | 利用

文件上传的防御、绕过、利用,总是分不开的。攻防交替。

黑白名单策略

黑白名单是最常用的安全策略之一。在计算机安全中,黑白名单类似于一个列表,列表中写了一些条件或规则,如果“客体”在黑名单中,一律“禁止”,如果“客体"在白名单中,一律“允许”。类似于手机号码的黑白名单。

如Chrome浏览器的黑白名单策略。

|政策|说明|
|-|-|
|URLBlacklist(黑名单)|禁止用户访问您已阻止的网址。不过,用户可以访问黑名单之外的所有网址。
不设置此政策:用户将可以自由访问所有网址。|
|URLWhitelist(白名单)|将此政策与URLBlacklist政策搭配使用,可将特定网址设为黑名单的例外网址并允许用户访问。
白名单的优先级高于黑名单。您至少要在黑名单中添加一个条目,才能正常使用此政策。
不设置此政策:网址黑名单将没有例外网址。|

华为收集安装软件黑白名单策略

白名单模式,检查只能安装的软件。

  • 只允许终端主机安装软件白名单中的软件,安装其他软件则属于违规行为。
  • 对于白名单中的软件,该软件属于必须安装类软件,而终端主机未安装该软件,则属于违规行为。
  • 对于白名单中的软件,该软件不属于必须安装类软件,而终端主机未安装该软件,则不属于违规行为。

白名单+黑名单模式,检查必须安装的软件和禁止安装的软件。

  • 如果终端主机未安装白名单中的任意一款软件,则属于违规行为。
  • 如果终端主机已经安装黑名单中的任意一款软件,则属于违规行为。
  • 如果终端主机已经安装白名单中的所有软件,并且没有安装黑名单中的任意一款软件,则不属于违规行为。

PUT方法上传文件

HTTP请求方法之一,允许想服务器直接写入文件

telnet模拟http请求

Apache开启PUT方法,telnet模拟http请求上传文件。

查看HTTP开启的方法:默认没有开启

telnet 服务器IP:80

OPTIONS / HTTP/1.1
HOST:服务器IP

Apache开启服务器PUT方法

  1. 在服务器的httpd.conf配置文件中,开启模块(搜索dav)

  1. 并启用模块

  1. 开启文件锁,在文首添加:DavLockDB c:\phpstudy\www\DavLock

  1. 在此文件目录下创建此文件DavLock

上传文件

PUT /文件名 HTTP/1.1
HOST:服务器IP
Content-Length:文件内容的长度

文件内容 
最后修改:2021 年 05 月 20 日
如果觉得我的文章对你有用,请随意赞赏