黑客常提到的“webshell”究竟是什么?

栏目: 后端 · 发布时间: 6年前

内容简介:最近在我的黑客攻防视频教程里多次提到了"webshell"这个名词,很多朋友就私信问我"webshell" 究竟是什么啊?为什么很多黑客技术资料里都有提及它?今天我们就以本篇文章内容给大家详细介绍一下"webshell技术“!webshell,顾名思义:"web" - 显然需要服务器开放,"shell" - 取得对服务器某种程度上操作权限。webshell就是就是web的一个管理工具,可以对web服务器进行操作的权限,也叫webadmin。

最近在我的黑客攻防视频教程里多次提到了"webshell"这个名词,很多朋友就私信问我"webshell" 究竟是什么啊?为什么很多黑客技术资料里都有提及它?

今天我们就以本篇文章内容给大家详细介绍一下"webshell技术“!

一、 什么是webshell

1. 简介

webshell,顾名思义:"web" - 显然需要服务器开放,"shell" - 取得对服务器某种程度上操作权限。webshell就是就是web的一个管理工具,可以对web服务器进行操作的权限,也叫webadmin。

webshell是以asp、 php 、jsp等网页文件形式存在的一种命令执行环境,也称其为一种网页后门。一般说来,当Hacker入侵一个网站后,会把这些asp、php木马的后门文件放在该网站的web目录中,和正常的网页文件混杂,其命名可能和正常的文件命名很类似,让人无法第一眼通过文件名判断其为后门文件。然后呢,他就可以利用web请求的方式,用asp或者php木马后门控制网站服务器,包括上传下载文件、查看数据库、执行任意程序命令等一系列操作。

黑客常提到的“webshell”究竟是什么?

2. 基本分类

黑客常提到的“webshell”究竟是什么?

webshell根据脚本可以分为PHP脚本木马,ASP脚本木马,也有基于.NET的脚本木马和JSP脚本木马。

根据功能分为大马与小马,小马通常指的一句话木马,例如:通常把这句话写入一个文档里面,然后文件名改成xx.asp。然后传到服务器上面。这里eval方法将request("pass")转换成代码执行,request函数的作用是应用外部文件。这相当于一句话木马的客户端配置。服务器配置(即本机配置):

黑客常提到的“webshell”究竟是什么?

这里通过提交表单的方式,将木马提交上去,具体的做法是将定义一个对象IP,然后以文本方式写入newvalue里面的内容(newvalue的内容在textarea定义),写入以覆盖的方式产生ASP文件,然后执行这个脚本。其中客户端中的value代表的是表单的名字,必须跟服务端(本机)的post提交中的表单名一样,所以这里的value可以为任意字符,相当于一个密码之类的东西,但是这个'密码'是明文的,可以截取下来。PHP的一句话原理跟以上的原理差不多,就是语言的差别导致语法不同。这就是小马的基本工作原理。

大马的工作模式简单的多,他没有客户端与服务端的区别,就是一些脚本大牛直接把一句话木马的服务端整合到了一起,通过上传漏洞将大马上传,然后复制该大马的url地址直接访问,在页面上执行对web服务器的渗透工作。但是有些网站对上传文件做了严格的限制,因为大马的功能较多,所以体积相对较大,很有可能超出了网站上传限制,但是小马的体积可以控制(比如把代码复制很多遍,或者在一个乱码文件中夹入代码),但是小马操作起来比较繁琐,可以先上传小马拿到webshell,然后通过小马的连接上传大马拿到服务器。

3. 基本原理

可执行脚本:

  • HTTP数据包($_GET、$_POST、$_COOKIES、$_SERVER[args]等)

数据传递

执行传递的数据:

  • 直接执行(eval、system、passthru等)
  • 文件包含执行(include、require等)
  • 动态函数执行($a="phpinfo";$a();)
  • Curly Syntax执行(${'ls'})
  • preg_replace(第一个参数存在'/e')
  • ob_start函数
  • 回调函数(array_map等)
  • 反序列化(unserialize等)

二、 webshell常见获取方式

1. 上传漏洞获取WebShell

首先说我们最常见的,已经讲过的上传漏洞,通过上传一句话木马等,获得服务器的执行权利。

文件上传漏洞主要有以下几种情况:

  • MIME类型绕过漏洞
  • 文件扩展名绕过漏洞
  • 文件内容检测绕过类上传漏洞
  • 空字节截断目录路径检测绕过类上传漏洞
  • 我们可以将Request包的Content-type修改,就可以成功绕过了服务端MIME类型检测,像这种服务端检测http包的Content-type都可以用这种类似方法来绕过

检测解析导致的文件上传漏洞:

  • IIS6.0站上的目录路径检测解析绕过上传漏洞
  • Apache站上的解析缺陷绕过上传漏洞
  • htaccess文件上传解析漏洞

这其中的技术点主要是使用Bp修改一些请求的参数,包括使用00截断操作文件名,更改类型,当然还有二进制连接等手段。

还有一些编辑器存在漏洞导致的文件上传,比如FCK编辑器。

2. sql注入获取webshell

一直以来,都以为 sql 注入都是用来暴露和查询关键信息的,其实对于数据库操作来说,SQL注入攻击可以获取WebShell其实就是在向服务器写文件。(注意:这里我们需要得到网站的绝对路径)所有常用的关系数据库管理系统(RDBMS)均包含内置的向服务器文件系统写文件的功能。

MySQL:

select into outfile(dumpfile) //MySQL写文件命令  
# 例如:  
select "<?php echo 'test'; ?>" into outfile "F:\www\test.php"; 

黑客常提到的“webshell”究竟是什么?

黑客常提到的“webshell”究竟是什么?

那么其它关系数据库管理系统同样的原理写文件,就不在过多介绍了。

3. 数据库备份获取WebShell

对于这个方法,我遇见过得就是拿到管理员账号和密码之后是可以登录后台的,虽然存在上传的地方,但是只能是jpg图像,这个时候必须还得将它改成.asp后缀。这里可以用到网站中的数据库备份漏洞。在后台的"系统管理"中提供了"数据库备份"功能,我们可以将上传上去的图片文件作为要备份的数据库,然后利用可以指定备份文件名的漏洞,把备份后的文件改名成.asp后缀。具体操作如下图所示。

黑客常提到的“webshell”究竟是什么?

成功备份之后,记下已更名的webshell文件的路径wwwrootadmin.adminwebshell.asp。

这里就成功地将webshell上传到了网站,输入URL:我们就可以访问这个网页了,由于他这个是个大马所以可以这样,我们一般的一句话木马没有任何内容,一般是使用中国菜刀进行连接。

黑客常提到的“webshell”究竟是什么?

4. CMS获取WebShell

(1) 什么是CMS?

CMS是Content Management System的缩写,意为"内容管理系统"。 内容管理系统是企业信息化建设和电子政务的新宠,也是一个相对较新的市场。对于内容管理,业界还没有一个统一的定义,不同的机构有不同的理解。

(2) 常见的CMS有哪些?

asp平台:动易CMS、创力CMS、科汛CMS、新云CMS;

php平台:phpcms、织梦CMS、帝国CMS、php168 CMS;

ASP.NET平台:Zoomla!逐浪CMS、动易CMS、风讯CMS、We7 CMS;

(3) CMS获取WebShell方法

公开漏洞途径:以PHPCMS为例:

我们可以利用搜索引擎来查找互联网上公开的通用漏洞,如果目标站点并没有进行修复,即可轻松获取WebShell。

黑客常提到的“webshell”究竟是什么?

代码审计途径:

有很多CMS其实是开源的,我们可以在官网下载到源码,然后进行代码审计,自己挖掘漏洞, 来获取WebShell。

三、如何上传webshell

1. 解析漏洞上传

现在对于不同的web服务器系统对应的有不同的web服务端程序,windows端主流的有iis,linux端主流的有nginx。这些服务对搭建web服务器提供了很大的帮助,同样也对服务器带来隐患,这些服务器上都存在一些漏洞,很容易被黑客利用。

(1) iis目录解析漏洞

比如:/xx.asp/xx.jpg

虽然上传的是JPG文件,但是如果该文件在xx.asp文件夹下,那个iis会把这个图片文件当成xx.asp解析,这个漏洞存在于iis5.x/6.0版本。

(2) 文件解析漏洞

比如:xx.asp;.jpg。在网页上传的时候识别的是jpg文件,但是上传之后iis不会解析;之后的字符,同样会把该文件解析成asp文件,这个漏洞存在于iis5.x/6.0版本。

(3) 文件名解析

比如:xx.cer/xx.cdx/xx.asa。在iis6.0下,cer文件,cdx文件,asa文件都会被当成可执行文件,里面的asp代码也同样会执行。(其中asa文件是asp特有的配置文件,cer为证书文件)。

(4) fast-CGI解析漏洞

在web服务器开启fast-CGI的时候,上传图片xx.jpg。内容为:

1   <?php fputs(fopen('shell.php','w'),'<?php eval($_POST[shell])?>');?> 

这里使用的fput创建一个shell.php文件,并写入一句话。访问路径xx.jpg/.php,就会在该路径下生成一个一句话木马shell.php。这个漏洞在IIS 7.0/7.5,Nginx 8.03以下版本存在。语言环境:PHP,prel,Bourne Shell,C等语言。

*注:fast-CGI是CGI的升级版,CGI指的是在服务器上提供人机交互的接口,fast-CGI是一种常驻型的CGI。因为CGI每次执行时候,都需要用fork启用一个进程,但是fast-CGI属于激活后就一直执行,不需要每次请求都fork一个进程。比普通的CGI占的内存少。

(5) apache解析漏洞

apache解析的方式是从右向左解析,如果不能解析成功,就会想左移动一个,但是后台上传通常是看上传文件的最右的一个后缀,所以根据这个,可以将马命名为xx.php.rar,因为apache解析不了rar,所以将其解析为php,但是后台上传点就将其解析为rar,这样就绕过了上传文件后缀限制

2. 截断上传

在上传图片的时候,比如命名1.asp .jpg(asp后面有个空格),在上传的时候,用NC或者抓到表单,将上传名asp后面加上%00(在burpsuite里面可以直接编辑HEX值,空格的HEX值为20,将20改为00),如果HEX为00的时候表示截断,20表示空格,如果表示截断的时候就为无视脚本中的JPG验证语句,直接上传ASP。

3. 后台数据库备份

在一些企业的后台管理系统中,里面有一项功能是备份数据库(比如南方cms里面就有备份数据库的功能)。可以上传一张图片,图片里面含有一句话木马,或者将大马改成jpg格式,然后用数据库备份功能,将这张图片备份为asp等其他内容可以被解析为脚本语句的格式,然后再通过web访问就可以执行木马了,但是这种方法很老了,现在大多数的cms已经把这种备份的功能取消了,或者禁用了。

4. 利用数据库语句上传

(1) mysql数据库into outfile

这种方式的前提必须是该网站有相应的注入点,而且当前用户必须要有上传的权限,而且必须有当前网页在服务器下的绝对路径。方法是用联合查询,将一句话木马导入到网站下边的一个php文件中去,然后使用服务端连接该网站。但是上述方法条件过于苛刻,一般遇到的情况很少。

(2)建立新表写入木马

一些开源cms或者自制的webshell会有数据库管理功能,在数据库管理功能里面有sql查询功能,先使用create table shell(codetext);创建一个名字叫做 shell 的表,表里面有列明叫做code,类型为text。然后使用insert into shell(code) values('一句话马'),这里讲shell表中的code列赋值为一句话的马,然后通过自定义备份,将该表备份为x.php;x然后就被解析成为php然后执行了,这里不是x.php;x就一定能够解析为php,不同的web服务器上面的服务程序不同,然后过滤规则也不同,可能会使用其他的方式。

(3)phpMyadmin设置错误

phpMyadmin用来管理网站数据库的一个工具,其中config.inc.php为其配置文件,在查看的该文件的时候,如果$cfg['Servers'][$i]['auth_type']参数的值设置没有设置(默认为config)说明在登陆数据库的时候没有做相应的验证,可以直接连入数据库,而且在 Mysql 在一些版本下面默认登陆都是以root用户进行登陆(即管理员),所以登陆进去为最大权限。但是root一般只能本地登陆,所以必须创建一个远程登陆用户。用远程登陆用户登陆之后,创建一个表,然后再将一句话木马写入。

四、webshell的防范措施

了解了webshell的基本原理之后,最关键的防止器植入asp、php、jsp等木马程序文件,使用webshell一般不会在系统日志中 留下记录,只会在网站的web日志中留下一些数据提交记录,没有经验的管理员是很难看出入侵痕迹的。我们一般可以从以下几方面对安全性进行处理:

1. Web软件开发的安全

  • 程序中存在文件上载的,攻击者利用漏洞上载木马程序文件。
  • 防sql注入、防暴库、防COOKIES欺骗、防跨站脚本攻击。

2. 服务器的安全和web服务器的安全

  • 服务器做好各项安全设置,病毒和木马检测软件的安装(注:webshell的木马程序不能被该类软件检测到),启动防火墙并关闭不需要的端口和服务。
  • 提升web服务器的安全设置
  • 对以下命令进行权限控制(以windows为例):
cmd.exe net.exe net1.exe ping.exe netstat.exe ftp.exe tftp.exe telnet.exe 

3. ftp文件上载安全

设置好ftp服务器,防止攻击者直接使用ftp上传木马程序文件到web程序的目录中

4. 文件系统的存储权限

设置好web程序目录及系统其它目录的权限,相关目录的写权限只赋予给超级用户,部分目录写权限赋予给系统用户。

将web应用和上传的任何文件(包括)分开,保持web应用的纯净,而文件的读取可以采用分静态文件解析服务器和web服务器两种服务器分 别读取(Apache/Nginx加tomcat等web服务器),或者图片的读取,有程序直接读文件,以流的形式返回到客户端。

5. 不要使用超级用户运行web服务

对于apache、tomcat等web服务器,安装后要以系统用户或指定权限的用户运行,如果系统中被植入了asp、php、等木马程序文件,以超级用户身份运行,webshell提权后获得超级用户的权限进而控制整个和计算机。

6. 利用安全 工具 进行检测

D盾:

黑客常提到的“webshell”究竟是什么?


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Definitive Guide to MongoDB

The Definitive Guide to MongoDB

Peter Membrey、Wouter Thielen / Apress / 2010-08-26 / USD 44.99

MongoDB, a cross-platform NoSQL database, is the fastest-growing new database in the world. MongoDB provides a rich document orientated structure with dynamic queries that you’ll recognize from RDMBS ......一起来看看 《The Definitive Guide to MongoDB》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具