组件安全以及漏洞复现
组件安全
1. 概述
A9:2017-使⽤含有已知漏洞的组件
A06:2021-Vulnerable and Outdated Components
组件(例如:库、框架和其他软件模块)拥有和应用程序相同的权限。如果应用程序中含有已知漏洞的组件被攻击者利用,可能会造成严重的数据丢失或服务器接管。同时,使用含有已知漏洞的组件的应用程序和API 可能会破坏应用程序防御、造成各种攻击并产生严重影响。
1.1 常见组件
1.1.1 操作系统
操作系统 |
---|
Windows Linux Mac OS X |
1.1.2 Web 容器
我们简单的认为,只要能够提供Web 服务的应用,就是Web 容器。
Web 容器 |
---|
Apache HTTPD Nginx IIS Tomcat uwsgi |
1.1.3 中间件
我们简单的认为,编程语言就是中间件。
中间件 |
---|
PHP Java ASP.NET(ASPX) Python Perl JavaScript Go |
1.1.4 数据库
关系型数据库 | 非关系型数据库 |
---|---|
MySQL Orcale SQL Server Access | Redis MongoDB |
1.1.5 开发框架
JAVA | PHP | Python | JS |
---|---|---|---|
struts2 spring springboot JBoss Weblogic | wordpress|wp drupal joomla thinkphp|tp dedecms|织梦 discuz|dz metinfo | Flask Django | vue.js |
1.1.6 OA 系统
OA 系统 |
---|
通达OA 泛微e-office 致远OA |
可以利用OA利用工具Releases · cseroad/Exp-Tools (github.com)
proxychains git clone https://github.com/LittleBear4/OA-EXPTOOL.git
将此工具下载,然后cd到工具目录,安装依赖
python3 -m pip install -r requirements.txt
安装依赖后在工具目录下开启工具
python3 scan.py
输入?
1.1.7 其他组件
-
phpStudy
-
宝塔
-
xampp
1.2 漏洞复现
1.2.1 漏洞复现模板
编写渗透测试报告的主要内容:
* 组件_版本_漏洞名称* 漏洞描述* 漏洞评级* 影响版本* 漏洞复现* 漏洞扫描* 漏洞验证* 深度利用* 命令执行* GetShell* EXP 编写* 漏洞挖掘* 指纹信息* 修复建议
1.2.2 漏洞名称参考
pocsuite3 漏洞命名规范 类似msf的工具
seebug 漏洞类型规范
1.2.3 漏洞库
exploit-db
seebug 漏洞库
2. Apache
2.1 Apache HTTPD
漏洞名称 | 原理 | 案例 |
---|---|---|
未知后缀名解析漏洞 | yjh.php.ajest | upload-labs/Pass-07 |
多后缀名解析漏洞 | yjh.php.png | Vulhub - httpd 多后缀名解析 |
换行解析漏洞 CVE-2017-15715 | yjh.php%0a | Vulhub - httpd - CVE-2017-15715 |
Vulhub - Apache 2.4.49 路径穿越
Vulhub - Apache 2.4.50 路径穿越
2.1.1 未知后缀名解析
2.1.1.1 环境搭建
打开部署了upload-labs-env的服务器,将upload-labs-env服务打开
2.1.1.2 过程
使用bp浏览器访问部署了upload-labs-env的服务器的IP,
上传1.php文件,使用bp进行抓包,发送重发器
修改文件类型
修改文件后缀名为png,上传成功,修改为xj依旧还是上传成功,由此可知,php源代码中使用的是黑名单。
修改文件内容为phpinfo()和后缀名改为php.xj,
访问上传的文件,phpinfo执行了,因为在低版本的apache中检测处理文件时,会从前到后找后缀名。找到后缀名后从后往前找,首先找到了xj,apache不认识,又往前找找到了php,然后就会将文件内容读取出来交给php执行
2.1.2 多后缀名解析实例
2.1.2.1 环境搭建
2.1.2.2 过程
访问本机IP,上传文件1.php使用bp抓包
结果显示不支持上传文件格式,修改类型然后点击发送
结果还是不支持文件类型,修改后缀名,上传成功,证明php源代码使用的是白名单
文件上传成功,是因为配置问题,产生不安全配置的问题是AddHandler application/x-http-php .php这个配置的意思为,只要文件名中有.php就会当作php文件执行。访问上传文件,使用蚁剑连接
2.1.3 换行解析漏洞
2.1.3.1 环境搭建
因为使用的是bp的浏览器,8080端口被占用,将环境的端口改为80
启动环境
2.1.3.2 过程
上传1.php文件,使用bp抓包,将数据包发送重发器
查看数据包,有文件名,文件类型,文件内容,并且还给了一个evil.php的文件名,
修改文件类型,将evil.php修改为1.php.然后修改十六进制编码形式,将1.php.的右侧的点改为0a,然后点击上传,上传成功
访问上传文件
漏洞原因:1.php\x0a被按照php后缀进行解析,导致绕过一些服务器的安全策略。
2.1.4 apache 路径穿越漏洞
2.1.4.1 环境搭建
2.1.4.2 过程
使用bp自带浏览器访问ip,抓包
访问
icons/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd
读到了passwd文件
执行命令
cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/bin/bash
漏洞原因:是apache2.4.49本身组件的问题,还可以执行命令,相当于shell;2.4.50依然还有这个漏洞,访问
icons/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/etc/passwd
就能读出passwd
2.2 Apache Shiro
漏洞名称 | 原理 | 案例 |
---|---|---|
CVE-2016-4437 | 反序列化 | vulhub/shiro/CVE-2016-4437/ 挖 矿木⻢ ShiroExploit |
2.3 Apache Tomcat
漏洞名称 | 原理 | 案例 |
---|---|---|
弱口令 | 配置错误 | vulhub/tomcat/tomcat8/ |
本地文件包含 CVE-2020-1938 | – | vulhub/tomcat/CVE-2020-1938/ 工具CNVD-2020-10487-Tomcat-Ajp-lfi |
Vulhub - Tomcat-PUT任意写文件漏洞
2.3.1 弱口令
2.3.1.1 环境搭建
2.3.1.2 过程
点击manager app进行登录,tomcat、tomcat
docs是整个web应用的说明书,可以通过web控制台可以对整个tomcat下的web服务做服务管理
将大马war上传
访问上传的war
2.3.2 本地文件包含
2.3.2.1 环境搭建
2.3.2.2 过程
使用tomcat工具CNVD-2020-10487-Tomcat-Ajp-lfi.py扫描
python2 CNVD-2020-10487-Tomcat-Ajp-lfi.py 容器IP -p 8009 -f WEB-INF/web.xml
工具缺点:只能读取ROOT目录下的文件
2.3.3 PUT方法任意写文件漏洞
2.3.3.1 环境搭建
2.3.3.2 过程
使用nuclei扫描漏洞
sudo ./nuclei -u 192.168.16.176
访问扫描工具对应漏洞给出链接,读出passwd
3. Nginx
3.1 Nginx 解析漏洞
特定情况下,可以将图片解析成PHP,为图片木马提供出路。
漏洞名称 | 原理 | 案例 |
---|---|---|
空字节漏洞 | yjh.png%00.php | nginx_0.7.65 解析漏洞复现 |
文件路径解析漏洞 CVE-2013-4547 | yjh.png[0x20][0x00].php | vulhub/nginx/CVE-2013-4547/ |
(背锅) 解析漏洞 | cgi.fix_path=1 yjh.png/.php | nginx_parsing_vulnerability/ |
3.1.1 空字节漏洞
3.1.1.1 环境搭建
将压缩包加压至c盘下
在nginx_0.7.65目录下打开命令行
3.1.1.2 过程
访问Nginx
访问info.png,使用bp抓包,发送重发器
该漏洞叫00截断
php是以C语言写的,C语言字符串结束是00。当Nginx找文件时,看到后缀名是php就会交给php执行。当php解释引擎从前往后扫描文件,当扫描到00结束,读到的文件是info.png文件,但是info.png文件以php方式执行的
3.1.2 背锅解析漏洞
3.1.2.1 环境搭建
3.1.2.2 过程
上传1.php文件,使用bp抓包,发送重发器
修改文件类型、后缀名和文件内容
访问上传文件
漏洞产生原因:php的安全选项有关(cgi-fcgi)
3.2 Nginx 配置缺陷
漏洞名称 | 原理 | 案例 |
---|---|---|
Nginx 目录遍历漏洞 | location /files { alias /home/; } | vulhub/nginx/insecure-configuration/ |
4. IIS
4.1 IIS 6.0
漏洞名称 | 原理 | 案例 |
---|---|---|
文件路径截断解析漏洞 | time.asp;.jpg | FCKeditor 2.6.6 ASP GetShell |
目录名解析错误 | /1.asp/time.rar |
4.2 IIS 7.0/7.5
IIS 能够解析PHP 脚本。IIS <----FASTCGI----> PHP
漏洞名称 | 原理 | 案例 |
---|---|---|
IIS 7.0/7.5 解析漏洞 | cgi.fix_path=1 ajest.png/.php |
IIS 解析漏洞现存与IIS 7.0/7.5版本中,即Windows server 2008和Windows7中
4.2.1 环境搭建
以IIS10.0打开php
php解释是由php引擎和php解释器进行的
点击IIS管理器
4.2.2 漏洞
请求限制在7.0/7.5中默认是不勾选的
重现访问png,在png后加上/.php
4.2.3 漏洞原因
相关文章:
组件安全以及漏洞复现
组件安全 1. 概述 A9:2017-使⽤含有已知漏洞的组件 A06:2021-Vulnerable and Outdated Components 组件(例如:库、框架和其他软件模块)拥有和应用程序相同的权限。如果应用程序中含有已知漏洞的组件被攻击者利用,可能会造成…...
人工智能安全-4-小样本问题
0 提纲 小样本学习问题数据增强基于模型的小样本学习基于算法的小样本学习相关资源1 小样本学习问题 在小样本监督分类中,通常将问题表述为 N-way-K-shot分类, 当K = 1,称为one-shot learning;当K = 0时,成为zero-shot learning(ZSL)。ZSL就要求学习的问题具备充足的先…...
iOS 17中的Safari配置文件改变了游戏规则,那么如何设置呢
Safari在iOS 17中最大的升级是浏览配置文件——能够在一个应用程序中创建单独的选项卡和书签组。这些也可以跟随你的iPad和Mac,但在本指南中,我们将向你展示如何使用运行iOS 17的iPhone。 你可能有点困惑,为什么Safari中没有明显的位置可以添…...
AC自动机小结
AC自动机是一种多模匹配算法。 常见操作 查询一个串的子串 任何一个串的子串都可以表示成他的一个前缀的后缀 他的前缀可以在Trie树上查询 后缀相当于其在fail树上的所有祖先 例1 : HDU4117 接上。首先AC自动机要学会离线。 对于每个点查询祖先复杂度很大。…...
【C++】构造函数分类 ③ ( 调用有参构造函数的方法 | 括号法 | 等号法 )
文章目录 一、在不同的内存中创建类的实例对象1、括号法调用构造函数2、等号法调用构造函数 二、完整代码示例 一、在不同的内存中创建类的实例对象 在上一篇博客 【C】构造函数分类 ② ( 在不同的内存中创建类的实例对象 | 栈内存中创建实例对象 | new 关键字创建对象 ) 中 , …...
uni-app 之 uni.request 网络请求API接口
uni-app 之 uni.request 网络请求API接口 image.png <template><!-- vue2的<template>里必须要有一个盒子,不能有两个,这里的盒子就是 view--><view>--- uni.request 网络请求API接口 ---<view><!-- 免费的测试接口 --…...
代码随想录33|509. 斐波那契数,70. 爬楼梯,746. 使用最小花费爬楼梯, 34. 在排序数组中查找元素的第一个和最后一个位置
509. 斐波那契数 链接地址 class Solution { public:int fib(int n) {if (n < 1) return n;vector<int> dp(n 1);dp[0] 0;dp[1] 1;for (int i 2; i < n 1; i) {dp[i] dp[i - 1] dp[i - 2];}return dp[n];} };70. 爬楼梯 链接地址 class Solution { public…...
什么是Executors框架?
Executors 是 Java 标准库中的一个工具类,位于 java.util.concurrent 包中,用于创建和管理线程池。它提供了一组静态工厂方法,用于快速创建不同类型的线程池。Executors 框架的目标是使线程池的创建和管理更加简单和方便。 以下是一些 Executors 框架的常用工厂方法和线程池…...
【kafka】kafka单节点/集群搭建
概述 本章节将分享不同版本的kafka单节点模式和集群模式搭建。 在kafka2.8版本之前,需要依赖zookeeper服务,而在kafka2.8版本(包括)之后,可以不在依赖zookeeper服务。本章节将分kafka2.8版本之前的版本和之后的版本分…...
如何进行机器学习
进行机器学习主要包含以下步骤: 获取数据:首先需要获取用于学习的数据,数据的质量和数量都会影响机器学习的效果。如果自己的数据量较少,可以尝试在网上寻找公开数据集进行训练,然后使用自己的数据进行微调。另一种方…...
Vue项目使用axios配置请求拦截和响应拦截以及判断请求超时处理提示
哈喽大家好啊,最近做Vue项目看到axios axios官网:起步 | Axios 中文文档 | Axios 中文网 (axios-http.cn) 重要点: axios是基于Promise封装的 axios能拦截请求和响应 axios能自动转换成json数据 等等 安装: $ npm i…...
《DevOps实践指南》- 读书笔记(四)
DevOps实践指南 Part 3 第一步 :流动的技术实践11. 应用和实践持续集成11.1 小批量开发与大批量合并11.2 应用基于主干的开发实践11.3 小结 12. 自动化和低风险发布12.1 自动化部署流程12.1.1 应用自动化的自助式部署12.1.2 在部署流水线中集成代码部署 12.2 将部署…...
盲打键盘的正确指法指南
简介 很多打字初学者,并不了解打字的正确指法规范,很容易出现只用两根手指交替按压键盘的“二指禅”情况。虽然这样也能实现打字,但是效率极低。本文将简单介绍盲打键盘的正确指法,以便大家在后续的学习和工作中能够提高工作效率…...
【MySQL】索引 详解
索引 详解 一. 概念二. 作用三. 使用场景四. 操作五. 索引背后的数据结构B-树B树聚簇索引与非聚簇索引 一. 概念 索引是一种特殊的文件,包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引,并指定索引的类型,各类索引有各…...
怎么通过ip地址连接共享打印机
在现代办公环境中,共享打印机已成为一种常见的需求。通过共享打印机,多个用户可以在网络上共享同一台打印机,从而提高工作效率并减少设备成本。下面虎观代理小二二将介绍如何通过IP地址连接共享打印机。 确定打印机的IP地址 首先࿰…...
迅为i.MX8mm小尺寸商业级/工业级核心板
尺寸: 50mm*50mm CPU: NXP i.MX8M Mini 主频: 1.8GHz 架构: 四核Cortex-A53,单核Cortex-M4 PMIC: PCA9450A电源管理PCA9450A电源管理NXP全新研制配,iMX8M的电源管理芯片有六个降压稳压器、五…...
vue中v-for循环数组使用方法中splice删除数组元素(错误:每次都删掉点击的下面的一项)
总结:平常使用v-for的key都是使用index,这里vue官方文档也不推荐,这个时候就出问题了,我们需要key为唯一标识,这里我使用了时间戳(new Date().getTime())处理比较复杂的情况, 本文章…...
Python用GAN生成对抗性神经网络判别模型拟合多维数组、分类识别手写数字图像可视化...
全文链接:https://tecdat.cn/?p33566 生成对抗网络(GAN)是一种神经网络,可以生成类似于人类产生的材料,如图像、音乐、语音或文本(点击文末“阅读原文”获取完整代码数据)。 相关视频 最近我们…...
嵌入式Linux驱动开发(LCD屏幕专题)(一)
一、LCD简介 总的分辨率是 yres*xres。 1.1、像素颜色的表示 以下三种方式表示颜色 1.2、如何将颜色数据发送给屏幕 每个屏幕都有一个内存(framebuffer)如下图,内存中每块数据对用屏幕上的一个像素点,设置好LCD后ÿ…...
uniapp搜索功能
假设下方数据是我们从接口中获取到的,我们需要通过name来搜索,好我们看下一步。 data: [{"id": 30,"category_id": 3,"name": "日常家居名称","goods_num": 20,"integral_num": 20,&q…...
iframe 实现跨域,两页面之间的通信
一、 背景 一个项目为vue2,一个项目为vue3,两个不同的项目实现iframe嵌入,并实现通信 二、方案 iframe跨域时,iframe组件之间常用的通信,主要是H5的possmessage方法 三、案例代码 父页面-vue2(端口号为…...
DevOps到底是什么意思?
前言: 当我们谈到 DevOps 时,可能讨论的是:流程和管理,运维和自动化,架构和服务,以及文化和组织等等概念。那么,到底什么是"DevOps"呢? 那么,DevOps是什么呢? 有人说它是一种方法,也有人说它是一种工具,还有人说它是一种思想。更有甚者,说它是一种哲学…...
03JVM_类加载
一、类加载与字节码技术 1.类文件结构 2.字节码指令 3.编译期处理 4.类加载阶段 5.类加载器 6.运行期优化 1.类文件结构 类文件结构 1.1 魔数magic 介绍 每个java class文件的前4个字节是魔数:0x CAFEBABE。魔数作用在于分辨出java class文件和非java clas…...
Mysql如何对null进行排序(mysql中null排序)
来源:Mysql如何对null进行排序(mysql中null排序) Mysql如何对null进行排序 Mysql是一种开源的关系型数据库管理系统,经常被用于Web开发和应用程序中。在使用Mysql进行数据处理的过程中,很多时候都会遇到需要对null进行…...
【基础计算机网络1】认识计算机网络体系结构,了解计算机网络的大致模型(下)
前言 在上一篇我们主要介绍了有关计算机网络概述的内容,下面这一篇我们将来介绍有关计算机网络体系结构与参考模型的内容。这一篇博客紧紧联系上一篇博客。 这一篇博客主要内容是:计算机网络体系结构与参考模型,主要是计算机网络分层结构、协…...
vscode 画流程图
文章目录 1、安装插件 draw2、新建文件3、开始画图4、另存为图片 vscode可以画流程图了,只需要安装插件就可以了。 1、安装插件 draw 2、新建文件 3、开始画图 4、另存为图片...
uniapp-一些实用的api接口
唤起导航 调用后可以跳转到地图页 uni.openLocation({latitude: res.data.data.latitude, //到达的纬度longitude: res.data.data.longitude, //到达的经度name: res.data.data.address, // 到达的名字scale: 12, // 缩放倍数success() { // 成功回调console.log(success) }…...
合宙Air724UG LuatOS-Air LVGL API控件-表格(Table)
表格(Table) 示例代码 --创建表格Table1 lvgl.table_create(lvgl.scr_act(),nil)--设置表格为4行5列lvgl.table_set_row_cnt(Table1,4)lvgl.table_set_col_cnt(Table1,5)--给每个单元格赋值lvgl.table_set_cell_value(Table1, 0, 0, "选手")l…...
前缀和思想
何为前缀和 有一个数组a, 为 ...... 前缀和 ...... 有两个问题: 1.如何求? 只需要从前往后遍历,令 就可以了,最开始是 ,定义 0 2. 有什么用? 能够快速地求出原数组中某一段的和,预处理的…...
Llama2-Chinese项目:1-项目介绍和模型推理
Atom-7B与Llama2间的关系:Atom-7B是基于Llama2进行中文预训练的开源大模型。为什么叫原子呢?因为原子生万物,Llama中文社区希望原子大模型未来可以成为构建AI世界的基础单位。目前社区发布了6个模型,如下所示: FlagAl…...
2008 iis asp配置网站/seo站长网
在plsql开发中,会涉及到一些大数据量表的数据处理,如将某记录数超亿的表的记录经过处理转换插入到另外一张或几张表。常规的操作方法固然可以实现,但时间、磁盘IO、redo日志等等都非常大。Oracle 提供了一种高级函数,可以将这种数…...
wordpress 文字编辑/微信营销的优势
官网https://code.visualstudio.com/Download下载最新版 一、下载与安装 注:解压到非系统盘,文件夹最好不要出现中文和空格,解压后直接运行code.exe即可 二、将vscode修改为中文环境 1.下载安装中文语言包 点击左侧工具栏的extensions&a…...
石家庄网站建设推广/汕头网站关键词推广
环境:DB: mysql 5.7.xxOS: windows server 2012 r2CPU: E3 1220-V5内存: 4G。数据库配置(基本上是默认配置):join_buffer_size 128Msort_buffer_size 2Mread_rnd_buffer_size 2Minnodb_buffer_pool_size 128M表现:有个表service_log&…...
大连手机自适应网站建设/seo模拟点击软件源码
POWER(2,3) 返回 2 的 3 次幂, SQUARE 返回给定表达式的平方。 语法 SQUARE ( float_expression ) SQRT 返回给定表达式的平方根。 语法 SQRT ( float_expression ) 顺便说 Access 的开方函数是 SQR ( float_expression )...
苏州服务器托管哪家好/站长工具的使用seo综合查询排名
01 下载 macOS 系统安装程序的方法 本文来自: https://discussionschinese.apple.com/docs/DOC-250004259 简介 Mac 用户时不时会需要下载 macOS 的安装程序,目的不同,或者升级或者降级,或者研究或者收藏。为了方便不同用户,除…...
佛山网站搭建费用/点点站长工具
Q:A1 A2 A3 A4 A5五名研究人员有可能报名化学比赛,根据下列条件判断那些人参加了比赛: 1. A1参加时,A2也参加; 2. A2和A3只有一个人参加; 3. A3和A4或者都参加,或者都不参加; 4. A4和…...