GetShell的姿势

0x00 什么是WebShell

渗透测试工作的一个阶段性目标就是获取目标服务器的操作控制权限,于是WebShell便应运而生。Webshell中的WEB就是web服务,shell就是管理攻击者与操作系统之间的交互。Webshell被称为攻击者通过Web服务器端口对Web服务器有一定的操作权限,而webshell常以网页脚本的形式出现。常见的WebShell使用asp、jsp和php来编写,提供了如执行系统命令、文件上传下载、数据库管理等功能。

0x01 获取WebShell的方式

获取WebShell的动作又叫做GetShell,是渗透测试各项能力的综合体现,也是渗透测试一个重要的阶段性目标。 GetShell方式众多,常见如文件上传、SQL注入、命令执行、文件包含、解析漏洞等等。有时候一个漏洞即可GetShell,有时候则需要各种漏洞打一套组合拳方可。So,多交流,才能掌握更多GetShell骚姿势。

1.文件上传漏洞GetShell


 

通过利用任意文件上传漏洞可以最快获取WebShell,一般常见有三种情况:(1)直接上传木马文件到目标服务器;(2)绕过防护(以下不包括绕过WAF防护,以后有时间再介绍绕过WAF的姿势)限制上传木马文件;(3)CMS等的通用任意文件上传漏洞。在对目标进行渗透测试时,可从前后台头像修改、文件导入、图片上传等处寻找文件上传接口。
 

此外,还需要根据识别的站点指纹寻找是否存在文件上传漏洞。以下是针对不同情况下上传WebShell的方式。

(1) 站点没有任何防护,且上传点未做安全校验,则可直接上传WebShell文件。

(2) 站点存在简单防护:

  • 前端校验文件后缀时,可先传允许的文件类型,然后抓包修改文件后缀。
  • MIME校验时,抓包修改Conten-Type为允许MIME类型。

(3) 绕过黑名单的方式:

  • 利用特殊文件后缀。如.php3、.php5、.php7、.phtml;asa、cer、cdx、aspx;jspx、 jsw、jsv、jspf等,但不一定都能被解析。
  • 配合Windows/Linux特性使用特殊字符,如上传.php::$DATA、“.php空格”等后缀的文件到Windows服务器,由于Windows的文件后缀中不能包含一些特殊符号,使得这些文件在保存在Windows服务器上时后缀只剩下.php。
  • Apache 1.x、2.2.x版本文件解析漏洞,.php.xx。
  • 后缀大小写,如pHp。
  • 在数据包中使用双filename,如filename=“1.jsp”; filename=“1.php”。

(4)绕过白名单:

  • 00截断,要求PHP<5.3.4且magic_quotes_gpc为OFF状态。
  • 配合解析漏洞(见解析漏洞getshell)。
  • 文件包含图片马(见文件包含getshell)。
     

(5)绕过文件内容检测:

  • 使用文件头绕过,如图片中使用GIF89a。
  • 使用图片马,接着配合解析漏洞或者文件包含漏洞getshell。
  • 使用元数据编辑器在图片的EXIF信息中插入一句话木马。

(6)CMS、框架等的文件上传漏洞。

如禅道<=12.4.2后台任意文件上传漏洞;编辑器漏洞、中间件的也不容忽视,如CVE-2017-12615可直接使用put写入木马文件。当然,“老洞”IIS6开启WebDAV可直接put写入文件。
 

以下两张图是禅道<=12.4.2后台任意文件上传漏洞的利用截图:

2.命令(代码)执行漏洞GetShell
 

利用命令(代码)执行漏洞写入WebShell文件从而GetShell。在此列举了以下四种常见情况作为说明。
 

(1)利用CMS、框架通用漏洞,如thinkPHP命令执行漏洞,影响范围较广,如鲶鱼CMS、ThinkCMF、yunCMS 等。Struts2远程命令(代码)执行漏洞,如S2-059、S2-057……
(2)中间件、架构通用漏洞,如:Jboss远程命令执行、weblogic未授权命令执行CVE-2020-14882……
(3)应用程序命令执行漏洞,如Redis4.x/5.x命令执行漏洞、Zabbix远程命令执行CVE-2020-11800……
(4)命令注入漏洞写入WebShell,根据Linux和Windows的不同采用不同的注入方式。如:
 

3.解析漏洞GetShell

利用解析漏洞将图片马等文件解析为恶意脚本文件从而GetShell,本文主要介绍在IIS、Nginx、Apache的解析漏洞。一般,该漏洞会配合文件上传漏洞等来获取WebShell。

(1)IIS解析漏洞。

  • IIS 5.x/6.0解析漏洞,其中文件名解析漏洞利用形式为*.asp;.jpg;目录解析漏洞利用形式为/asp/1.jpg。
  • IIS 7.0/7.5解析漏洞。其实该漏洞为cgi.fix_pathinfo的配置不当引起的解析漏洞,利用形式为x.jpg%20\0.php。

(2) Nginx解析漏洞

  • Nginx漏洞版本0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7默认配置导致解析漏洞,利用形式为x.jpg/.php。
  • Nginx漏洞版本0.5.、0.6.、0.7 <= 0.7.65、0.8 <= 0.8.37,利用形式为x.jpg%00.php。
  • CVE-2013-4547,利用形式为x.jpg[非空编码]\0.php
  • PHPStudy v8.1.0.7默认Nginx配置解析漏洞,利用形式为x.jpg/.php。

(3) Apache解析漏洞

  • 文件后缀x.php.ss.ss2会被解析为php文件
  • 利用配置文件。上传.htaccess配置文件,就会将.jpg解析为PHP文件,内容如下:
     

或者

4.SQL注入漏洞GetShell

在MySQL注入中,可以利用SQL注入获取WebShell,要写入WebShell文件到服务器中,需要满足以下条件:

1.网站物理路径;

2.文件写入的权限;

3.secure_file_priv条件没有设置为NULL;
要求mysql数据库的配置中,没有将secure_file_priv条件没有设置为NULL,即secure_file_priv=NULL时,无法导入导出文件;而当设置为空时,即secure_file_priv=时,则导入导出文件不受限制;如果设置为某个文件路径,如secure_file_priv=/mysql/时,则导入导出必须要在跟文件目录下完成。利用形式如下。

(1) 直接使用into outfile
 

(2) 直接使用into dumpfile

(3) 意为将数据导出到文件shell.php时,每个数据以一句话木马作为分割符

而在写入时,也可以将分隔符,即一句话木马做hex编码如:
 

(4) 设置每行数据开头为一句话木马
 


 

(5) 在字段之间的以一句话木马作为分隔符。
 

举例如下图所示:
 

5.文件包含漏洞GetShell

利用文件包含漏洞GetShell,由于面比较大,主要介绍PHP文件包含,其分为本地文件包含和远程文件包含。本地文件包含中,需要PHP的配置文件项allow_url_include和allow_url_fopen均设置为On。一般配合文件上传等漏洞GetShell,最常见的如先传图片马,再包含之。
 

远程文件包含中,需要PHP的配置文件项allow_url_fopen设置为On,利用方式是在远程服务器上存在shell.txt,内容为webshell,然后远程包含这个文件即可。笔者在文章https://sec-in.com/article/80中已经对文件包含漏洞做了详细的介绍,读者可前往阅读。

6.其他方式GetShell

将其命名为“其他方式”是因为不便将其再分类,笔者便都将其归纳至此。
 

(1) 0day、nday GetShell

0day自己挖,如一些cms黑白盒渗透、代码审计等;Nday靠收集。

(2) 后台创建模板写入WebShell

创建、修改模板时写入webshell文件。
 

(3) 修改网站配置插入WebShell

在网站设置如“网站名称”中插入一句话,但需要注意闭合,稍有不慎会将网站插坏的。
 

(4) 后台数据库备份GetShell

数据库备份时修改备份文件后缀,在数据中插入一句话。
 

(5) PHPMyadmin GetShell

开启日志文件,将日志文件的路径设置为网站的物理路径,如:

最后在执行的SQL语句中带有一句话木马,这样,日志文件内容中就包含了webshell。
 

导出数据时,将webshell导出到文件中,详见前文SQL注入GetShell。
 

(6) 组合漏洞GetShell

如DedeCMS CSRF + 任意文件写入。

(7) 后台修改文件上传类型

添加上传文件类型,如白名单中添加PHP。

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

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

相关文章

AnimatedDrawings:让绘图动起来

老样子&#xff0c;先上图片和官网。这个项目是让绘制的动画图片动起来&#xff0c;还能绑定人体的运动进行行为定制。 快速开始 1. 下载代码并进入文件夹&#xff0c;启动一键安装 git clone https://github.com/facebookresearch/AnimatedDrawings.gitcd AnimatedDrawingspip…

python批量处理修改pdf内容

将PDF转换为Word&#xff1a; 使用pdf2docx库中的Converter类来进行PDF转换。convert_pdf_to_docx函数接受PDF文件路径和输出的Word文档路径作为参数。通过调用Converter对象的convert方法将PDF转换为Docx格式。最后调用close方法关闭Converter对象并保存转换后的文档。 将Word…

一文读懂RabbitMQ核心概念及架构

1. RabbitMQ简介 RabbitMQ是一个开源的消息代理软件&#xff0c;实现了高级消息队列协议&#xff08;AMQP&#xff09;。它是一个应用程序对应用程序的通信方法&#xff0c;基于消费-生产者模型。在RabbitMQ中&#xff0c;消息的生产者将消息发布到队列中&#xff0c;而消息的…

【zlm】针对单个设备的码率的设置

目录 代码修改 实验数据一 实验数据二 同时拉一路视频后 修改记录 使用方法 各库实操 代码修改 要被子类引用 &#xff0c;所以放在protected 不能放private 下面的结论&#xff0c;可以在下面的实验数据里引用。“同时拉一路视频后” 实验数据一 https://10.60.3.45:1…

共话 AI for Science | 北京大学王超名:BrainPy,迈向数字化大脑的计算基础设施

导读&#xff1a; 2023 和鲸社区年度科研闭门会以“对话 AI for Science 先行者&#xff0c;如何抓住科研范式新机遇”为主题&#xff0c;邀请了多个领域的专家学者共同探讨人工智能在各自领域的发展现状与未来趋势。 在脑科学领域&#xff0c;数字化大脑通过数学模型和计算机…

Matplotlib Mastery: 从基础到高级的数据可视化指南【第30篇—python:数据可视化】

文章目录 Matplotlib: 强大的数据可视化工具1. 基础1.1 安装Matplotlib1.2 创建第一个简单的图表1.3 图表的基本组件&#xff1a;标题、轴标签、图例 2. 常见图表类型2.1 折线图2.2 散点图2.3 条形图2.4 直方图 3. 图表样式与定制3.1 颜色、线型、标记的定制3.2 背景样式与颜色…

【JavaEE进阶】 MyBatis使用XML实现增删改查

文章目录 &#x1f38d;前言&#x1f340;配置连接字符串和MyBatis&#x1f343;写持久层代码&#x1f6a9;添加mapper接⼝&#x1f6a9;添加UserInfoXMLMapper.xml&#x1f6a9;单元测试 &#x1f334;增(Insert&#xff09;&#x1f6a9;返回⾃增id &#x1f38b;删(Delete)&…

JAVA_LinkedList添加元素源码分析(jdk17)

目录 先看一些重要的源码&#xff1a; 开始分析&#xff1a; 底层数据结构是双链表&#xff0c;查询慢&#xff0c;首尾操作是极快的&#xff0c;所以多了很多首尾操作的特有 Api&#xff1a; addlast 和 add 一样元素默认添加到末尾&#xff0c;了解即可。 先看一些重要的源…

vue3源码(二)reactiveeffect

一.reactive与effect功能 reactive方法会将对象变成proxy对象&#xff0c; effect中使用reactive对象时会进行依赖收集&#xff0c;稍后属性变化时会重新执行effect函数。 <div id"app"></div><script type"module">import {reactive,…

web开发学习笔记(14.mybatis基于xml配置)

1.基本介绍 2.基本使用 在mapper中定义 在xml中定义&#xff0c;id为方法名&#xff0c;resultType为实体类的路径 在测试类中写 3. 动态sql&#xff0c;if和where关键字 动态sql添加<where>关键字可以自动产生where和过滤and或者or关键字 where关键字可以动态生成whe…

C++面试:跳表

目录 跳表介绍 跳表的特点&#xff1a; 跳表的应用场景&#xff1a; C 代码示例&#xff1a; 跳表的特性 跳表示例 总结 跳表&#xff08;Skip List&#xff09;是一种支持快速搜索、插入和删除的数据结构&#xff0c;具有相对简单的实现和较高的查询性能。下面是跳表…

常用芯片学习——HC244芯片

HC573 三态输出八路缓冲器|线路驱动器 使用说明 SNx4HC244 八路缓冲器和线路驱动器专门设计用于提高三态存储器地址驱动器、时钟驱动器以及总线导向接收器和发送器的性能和密度。SNx4HC244 器件配备两个具有独立输出使能 (OE) 输入的 4 位缓冲器和驱动器。当 OE 为低电平时&a…

【AI视野·今日NLP 自然语言处理论文速览 第七十五期】Thu, 11 Jan 2024

AI视野今日CS.NLP 自然语言处理论文速览 Thu, 11 Jan 2024 Totally 36 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers Leveraging Print Debugging to Improve Code Generation in Large Language Models Authors Xueyu Hu, Kun K…

php基础学习之代码框架

一&#xff0c;标记 脚本标记&#xff08;已弃用&#xff09;&#xff1a;<script language"php"> php代码 </script> 标准标记&#xff1a;<?php php代码 ?> 二&#xff0c;基础输出语句 不是函数&#xff0c;…

行业分析|中国人工智能发展的优势与差距

​人工智能&#xff0c;被誉为第四次工业革命的催化剂&#xff0c;吸引着发达国家和众多科技公司大举投入研发。我国积极构筑人工智能发展的先发优势&#xff0c;党的二十大报告提出推动战略性新兴产业集群&#xff0c;构建一系列新的增长引擎&#xff0c;包括信息技术、人工智…

QT发送request请求

时间记录&#xff1a;2024/1/23 一、使用步骤 &#xff08;1&#xff09;pro文件中添加network模块 &#xff08;2&#xff09;创建QNetworkAccessManager网络管理类对象 &#xff08;3&#xff09;创建QNetworkRequest网络请求对象&#xff0c;使用setUrl方法设置请求url&am…

MySQL 8.3 发布, 它带来哪些新变化?

1月16号 MySQL 官方发布 8.3 创新版 和 8.0.36 长期支持版本 (该版本 没有新增功能&#xff0c;更多是修复bug )&#xff0c;本文基于 官方文档 说一下 8.3 版本带来的变化。 一 增加的特性 1.1 GTID_NEXT 支持增加 TAG 选项。 之前的版本中 GTID_NEXTUUID:number &#xff…

scrapy框架核心知识Spider,Middleware,Item Pipeline,scrapy项目创建与启动,Scrapy-redis与分布式

scrapy项目创建与启动 创建项目 在你的工作目录下直接使用命令: scrapy startproject scrapytutorial运行后创建了一个名为scrapytutorial的爬虫工程 创建spider 在爬虫工程文件内&#xff0c;运行以下命令&#xff1a; scrapy genspider quotes创建了名为quotes的爬虫 …

超融合系统疑难故障定位与解决实践 3 例(含信创技术栈)

当 IT 系统出现故障&#xff0c;问题定位往往是运维人员最头疼的环节。尤其是超融合系统&#xff0c;由于整体涉及的技术栈比较复杂&#xff0c;且有越来越多的用户基于信创环境进行部署&#xff0c;非常考验厂商和技术人员的专业能力&#xff1a;厂商研发和售后工程师不仅应能…

【C/C++】C/C++编程——C++ 开发环境搭建

C的开发环境种类繁多&#xff0c;以下是一些常见的C 集成开发环境&#xff1a; AppCode &#xff1a;构建与JetBrains’ IntelliJ IDEA 平台上的用于Objective-C&#xff0c;C,C&#xff0c;Java和Java开发的集成开发环境CLion&#xff1a;来自JetBrains的跨平台的C/C的集成开…