Webshell 是黑客经常使用的一种恶意脚本,其目的是获得对服务器的执行操作权限,比如执行系统命令、窃取用户数据、删除 web 页面、修改主页等。黑客通常利用常见的漏洞,如 SQL 注入、远程文件包含 (RFI)、FTP,甚至使用跨站点脚本攻击 (XSS) 等方式作为社会工程攻击的一部分,最终达到控制网站服务器的目的。
黑客可以用 web 的方式,通过 asp 或 php 木马后门控制网站服务器,包括上传下载文件、查看数据库、执行任意程序命令等。
Webshell 可以嵌套在正常网页中运行,且不容易被查杀。它还可以穿越服务器防火墙,由于与被控制服务器或远程主机交互的数据都是通过 80 端口传递,因此不会被防火墙拦截,在没有记录流量的情况下,Webshell 使用 post 包发送,也不会被记录在系统日志中,只会在 Web 日志中记录一些数据提交的记录。
WebShell 的分类
①根据文件大小分类:大马和小马 (通常指的是一句话木马,能够使用菜刀这类工具去直接连接它)
②根据脚本名称分类:jsp、asp、aspx、php
一、WebShell 的利用
寻找页面上传点
写好一句话木马(上传木马),比如如下的 PHP 一句话木马的代码:
_POST['shell']); ?>
然后寻找上传后的文件位置(绝对路径),可以用蚁剑、中国菜刀等工具连接到主机进行接下来的操作,比如提权。
二、WebShell 有哪些特征?
持久化远程访问
Webshell 脚本通常会包含后门,黑客上传 Webshell 之后,就可以充分利用 Webshell 的后门实现远程访问并控制服务器,从而达到长期控制网站服务器的目的。此外,在上传完 Webshell 之后,黑客会选择自己修复漏洞,以确保没有其他人会利用该漏洞。通过这种方式,黑客就可以一种低调的姿态,避免与管理员进行任何交互,同时仍然获得相同的结果。
提权
在服务器没有配置错误的情况下,Webshell 将在 web 服务器的用户权限下运行,而用户权限是有限的。通过 Webshell,黑客可以利用系统上的本地漏洞来实现权限提升,从而获得 Root 权限,这样黑客基本上可以在系统上做任何事情,包括安装软件、更改权限、添加和删除用户、窃取密码、阅读电子邮件等等。
Webshell 可以嵌套在正常网页中运行,且不容易被查杀。它还可以穿越服务器防火墙,由于与被控制服务器或远程主机交互的数据都是通过 80 端口传递,因此不会被防火墙拦截,在没有记录流量的情况下,Webshell 使用 post 包发送,也不会被记录在系统日志中,只会在 Web 日志中记录一些数据提交的记录。
三、WebShell 常用的 PHP 函数
Webshell 几乎适用于所有 Web 编程语言。之所以关注 PHP,是因为它是 web 上使用最广泛的编程语言。下面是 PHP 中一些执行 shell 命令最常用的函数。
system()
system () 函数将命令作为参数,并输出结果。
下面的示例是在 Windows 操作系统上运行 dir 命令,然后返回 PHP 文件所在目录的目录列表。
<?php
echosystem('ls -al');
exec()
exec () 功能是将命令作为参数,但不输出结果。
如果指定了第二个可选参数,则返回结果为数组。否则,如果回显,只显示结果的最后一行。
<?php
echoexce('ls -al');
echoexce('ls -al',$array);
var_dump($array);
shell_exec()
shell_exec () 函数类似于 exec (),但是,其整个输出结果为字符串。
<?php
echoshell_exce('ls -al');
passthru()
passthru () 执行一个命令并返回原始格式的输出。
<?php
echopassthru('ls -al');
proc_open()
proc_open () 可以创建一个处理程序(流程),实现脚本和要运行的程序之间的通信。
倒引号
PHP 会首先执行 shell 命令中倒引号(`)内的内容