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

Web应用安全测试-专项漏洞(一)

Web应用安全测试-专项漏洞(一)

专项漏洞部分注重测试方法论,每个专项仅列举一个例子。实际测试过程中,需视情况而定。

文章目录

  • Web应用安全测试-专项漏洞(一)
    • Web组件(SSL/WebDAV)漏洞
    • 中间件相关漏洞
    • 第三方应用相关漏洞
    • 第三方插件相关漏洞
    • 开发框架

Web组件(SSL/WebDAV)漏洞

漏洞描述: Web组件漏洞泛指Web组件存在的通用漏洞。

测试方法: 根据目标系统所使用的Web组件版本,查找其公开漏洞及其利用脚本。如目标使用了SSL协议,可测试是否存在SSL v3重协商漏洞、POODLE信息泄漏漏洞等。下面以SSL v3重协商漏洞为例进行说明:

  1. 通过web漏洞扫描工具进行检测。

  2. 通过利用SSLciphercheck软件,通过CMD下运行,检测命令:

sslciphercheck.exe -h ip地址或者域名 -p 443

风险分析:
SSL\TSL是位于一种可靠地网络层协议TCP协议之上的一个协议 ,该协议是为了在客户端和服务器之间生成一个安全的连接,这种连接是私密的、可靠的并且通信双方可以互相验证双方的身份 。所以SSI\TSI 协议应该具有机密性 、完整性和确定性。而对于重新协商,一个SSL协议一旦建立起来,客户端 (C )和服务器 (S)都可以再一次重新协商,也称为重新握手,这将会导致在加密的信道上进行一次握手,C 可以通过发送一个新的client Hello消息来创建一次重新协商。同样地,S可以发送一个Hello request消息,从而使C回应一个新的client Hello,以创建一个重新协商,建立重新协商的目的是更新密钥,增强所用密码组的保密性和从C到S的身份认证等等。

在中间人攻击中,攻击者会主动窃听,他将截获客户端和服务器之间的连接,并使他们认为他们是在直接通话,而实际上他们是通过攻击者的转接来通话的。要完成中间人攻击,中间人必须截获客户端和服务器间的所有通信信息,这样中间人可以选择有用的信息并且它可 以将新的信息随意的插入。

风险等级:

低危

修复方案:

  1. 关闭renegotiation协议或限制SSL重协商数,以防止TLS DOS攻击:在Apache 2.2.15以上版本中,可以通过在配置文件httpd.conf中,添加如下字串:SSLInsecureRenegotiation Off;如使用的Apache版本低于2.2.15,则可以通过限制SSL重协商的次数防止DOS攻击。
  2. 使用WEB应用防火墙防止中间人攻击:通过WEB应用防火墙,对HTTP Header请求头进行过滤和监控,舍弃嵌入式的HTTP请求行,以防止中间人攻击。

注意事项: 暂无

中间件相关漏洞

漏洞描述: 包括Apache、Nginx、IIS、Tomcat、Weblogic、Jboss以及其他的中间件的漏洞。

测试方法: 根据目标系统所使用的中间件版本,查找其公开漏洞及其利用脚本。如Tomcat/Weblogic/WebSphere管理控制台弱口令、java发序列化、IIS短文件名泄漏、JBoss远程代码执行等。下面以JBoss远程代码执行漏洞为例进行说明:

  1. 对于采用JBOSS的网站,首先判断其版本,如果版本为1.0.x版本,则可通过对其控制台的访问来判断,访问http://127.0.0.1:8080/jmx-console/,出现以下页面,则此漏洞可被利用:
    在这里插入图片描述

  2. 或者用工具jboss_exploit_fat.jar来判断是否存在漏洞,如图所示:

在这里插入图片描述

风险分析: JBOSS默认配置会有一个后台漏洞,漏洞发生在jboss.deployment命名空间,中的addURL()函数,该函数可以远程下载一个war压缩包并解压。 如果压缩包里含有webshell文件,是直接可以解析的。

风险等级:

高危

修复方案: 给jmx-console加上访问密码并且执行以下修复方式:

  1. ${jboss.server.home.dir}/deploy下面找到jmx-console.war目录编辑WEB-INF/web.xml文件去掉security-constraint块的注释,使其起作用。

  2. 编辑以下文件:

编辑 WEB-INF/classes/jmx-console-users.propertiesserver/default/conf/props/jmx-console-users.properties (version >=4.0.2)WEB-INF/classes/jmx-console-roles.propertiesserver/default/conf/props/jmx-console-roles.properties(version >=4.0.2) 添加用户名密码

  1. 编辑WEB-INF/jboss-web.xml去掉 security-domain块的注释,security-domain值的映射文件为login-config.xml(该文件定义了登录授权方式)。

  2. 对于invoker,采用以下方案:升级相关的JBOSS中间件到最新版本,或者删除$JBOSS_HOME/[server]/all/deploy$JBOSS_HOME/[server]/default/deploy下的Jmx-console.warWeb-console.war这两个.War文件来禁止对Jmx-consoleWeb-console的访问。

注意事项: 暂无

第三方应用相关漏洞

漏洞描述: Redis和Memcached等非关系型数据库,Zabbix等其他第三方应用存在的漏洞。

测试方法: 以Redis未授权访问为例:

  1. 使用RedisDesktopManager客户端工具连接Redis,如下图所示:
    在这里插入图片描述

  2. 使用nmap中script扫描,如下图所示:
    在这里插入图片描述

风险分析: Redis 默认情况下,会绑定在 0.0.0.0:6379,导致Redis服务暴露到公网上。

如果在没有开启认证并且在任意用户可以访问目标服务器的情况下,从而可以未授权访问Redis服务,进一步可进行数据增删改查,甚至获取服务器权限等恶意操作。

风险等级:

高危

修复方案:

  1. 禁止Redis服务对公网开放,可通过修改redis.conf配置文件中的#bind 127.0.0.1 ,去掉前面的#即可(Redis本来就是作为内存数据库,只要监听在本机即可);
  2. 设置密码访问认证,可通过修改redis.conf配置文件中的requirepass设置复杂密码 (需要重启Redis服务才能生效);
  3. 对访问源IP进行访问控制,可在防火墙限定指定源ip才可以连接Redis服务器;
  4. 修改Redis默认端口,将默认的6379端口修改为其他端口;
  5. 禁用config指令避免恶意操作,在Redis配置文件redis.conf中配置rename-command项RENAME_CONFIG,这样即使存在未授权访问,也能够给攻击者使用config 指令加大难度;
  6. Redis使用普通用户权限,禁止使用 root 权限启动Redis 服务,这样可以保证在存在漏洞的情况下攻击者也只能获取到普通用户权限,无法获取root权限;

注意事项: 暂无

第三方插件相关漏洞

漏洞描述: 第三方插件,如编辑器fckeditorewebeditor等存在的漏洞。

测试方法: 以ewebeditor上传漏洞为例:

通过网站目录扫描工具对网站进行扫描,扫到有ewebeditor的后台,尝试默认口令admin,admin进行登录,如下图所示:
在这里插入图片描述

修改样式管理添加媒体后缀asaspsp,然后上传asp webshell,如下图所示:
在这里插入图片描述

风险分析: 由于开发阶段使用了弱口令,导致正式上线后可通过扫描等方式获取到编辑器后台管理路径 ,通过弱口令进入后台管理,为攻击者提供进一步的攻击途径,可篡改网站页面内容甚至通过上传webshell获取服务器权限。

风险等级:

高危】:编辑器存在默认口令,可上传webshell。

修复方案:

  1. 修改编辑器后台默认路径;
  2. 为编辑器后台设置高复杂度口令。

注意事项: 暂无

开发框架

漏洞描述: 开发框架存在的漏洞,如Struts2框架漏洞。

测试方法:
以Struts2远程命令执行为例:

  1. 在了解网站所采用的结构框架后,除去伪静态页面,抓包或者读取页面源代码方式,查找到网站系统url为.do和.action结尾类型后,添加相应的远程命令执行代码进行判断。
  2. 例如用户可以在http://host.com/X.action?后添加相对应struts2 漏洞的远程命令执行代码,或者直接利用工具K8 Struts2 Exploit.exe进行检测。

风险分析:
Struts 2是在struts 和WebWork的技术基础上进行了合并的全新的框架。Struts2漏洞类型分为两种,一种是使用缩写的导航参数前缀时的远程代码执行漏洞,另一种是使用缩写的重定向参数前缀时的开放式重定向漏洞。Struts2远程命令执行,属于高危安全漏洞,可使黑客取得网站服务器的权限。这里我们重点描述相关远程命令执行漏洞。Struts2的DefaultActionMapper支持一种方法,可以使用action: redirect:, redirectAction:对输入信息进行处理,从而改变前缀参数,这样操作的目的是方便表单中的操作。在2.3.15.1版本以前的struts2中,没有对action:, redirect:, redirectAction:等进行处理,导致ongl表达式可以被执行,如s2-020的漏洞中,利用ognl的class.xx这种方式来遍历属性。

风险等级:

高危

修复方案: 建议及时更新struts2的版本到最新,如果暂时不方便更新,则提供以下方案进行修复:

  1. 除升级外:Struts2远程代码执行漏洞(S2-013) 的临时解决方案:

修改文件:org.apache.struts2.views.util.DefaultUrlHelper 的281–284行:

private String translateVariable(String input) { ValueStack valueStack = ServletActionContext.getContext().getValueStack(); 
return TextParseUtil.translateVariables(input, valueStack); 
}
修改成private String translateVariable(String input) { 
return input; 
}
  1. Struts2 s2-016/s2-017漏洞官网漏洞说明:

http://struts.apache.org/release/2.3.x/docs/s2-016.html,解决方案(以struts 2.1.8.1版本为例):

  1. 下载struts 2.1.8.1 源码struts-2.1.8.1-src.zip

  2. eclipse建立一个war项目

  3. struts-2.1.8.1-src.zip内的源码拖到项目的src目录下

  4. 找到对应struts-2.1.8.1xwork-core-2.1.6.jar放入war项目的WEB-INF/lib目录下此目的就是为了避免java文件带红叉

  5. 修改org.apache.struts2.dispatcher.mapper.DefaultActionMapper.java此时文件应该没有红叉。有红叉主要是缺乏servlet-api.jarxwork-core-2.1.6.jar在buildpath中改动如下:

    找到handleSpecialParameters方法,修改如下:

        public void handleSpecialParameters(HttpServletRequest request,ActionMapping mapping) {// handle special parameter prefixes.Set uniqueParameters = new HashSet();Map parameterMap = request.getParameterMap();for (Iterator iterator = parameterMap.keySet().iterator(); iterator.hasNext();) {String key = (String) iterator.next();// Strip off the image button location info, if foundif (key.endsWith(".x") || key.endsWith(".y")) {key = key.substring(0, key.length() - 2);}// -- jason.zhou 20130708 add start -- //if ((key.contains("redirect:")) || (key.contains("redirectAction:")) || (key.contains("action:"))) {return;}// -- jason.zhou 20130708 add end -- //// Ensure a parameter doesn't get processed twiceif (!uniqueParameters.contains(key)) {ParameterAction parameterAction = (ParameterAction) prefixTrie.get(key);if (parameterAction != null) {parameterAction.execute(key, mapping);uniqueParameters.add(key);break;}}}}
  6. 点中org.apache.struts2.dispatcher.mapper.DefaultActionMapper.java,右键,导出(export),导出为JAR file存盘为test.jar

  7. winrar打开test.jar,拷贝出org/apache/struts2/dispatcher/mapper/下的DefaultActionMapper类,一共有7个文件,如下:

    DefaultActionMapper$1.class
    DefaultActionMapper$2$1.class
    DefaultActionMapper$2$2.class
    DefaultActionMapper$2$3.class
    DefaultActionMapper$2$4.class
    DefaultActionMapper$2.class
    DefaultActionMapper.clas
  8. 用winrar打开struts2-core-2.1.8.1.jar进入org/apache/struts2/dispatcher/mapper/目录,将上面拷贝出的7个文件拷贝入,覆盖原来的同名文件。

  9. struts2-core-2.1.8.1.jar拷贝入你自己的项目,覆盖原来的struts2-core-2.1.8.1.jar

  10. 启动项目,重新测试s2-016漏洞,如果发现测试结果正常(不响应.do?action:,.do?redrect:,.do?redirectAction),则证明补丁已生效。

注意事项: 暂无

相关文章:

Web应用安全测试-专项漏洞(一)

Web应用安全测试-专项漏洞(一) 专项漏洞部分注重测试方法论,每个专项仅列举一个例子。实际测试过程中,需视情况而定。 文章目录 Web应用安全测试-专项漏洞(一)Web组件(SSL/WebDAV)漏…...

VMware ESXi 8.0U2c macOS Unlocker OEM BIOS Huawei (华为) FusionServer 定制版

VMware ESXi 8.0U2c macOS Unlocker & OEM BIOS Huawei (华为) FusionServer 定制版 ESXi 8.0U2 标准版,Dell (戴尔)、HPE (慧与)、Lenovo (联想)、Inspur (浪潮)、Cisco (思科)、Hitachi (日立)、Fujitsu (富士通)、NEC (日电)、Huawei (华为)、xFusion (超聚…...

python中的高阶函数介绍

在Python中,高阶函数是指那些可以接受函数作为参数或者返回函数作为结果的函数。这种特性使得函数式编程成为可能,并且可以编写出更加简洁和灵活的代码。以下是Python中一些常用的高阶函数: map() map() 函数接受一个函数和一个可迭代对象作为…...

华为OD机试 - 石头剪刀布游戏(Java 2024 D卷 200分)

华为OD机试 2024D卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(D卷C卷A卷B卷)》。 刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测…...

[开发|java] LocalDate转化为LocalDateTime

要将 java.time.LocalDate 转换为 java.time.LocalDateTime,你需要指定一天中的时间。因为 LocalDate 只包含日期部分(年、月、日),而 LocalDateTime 包含日期和时间(时、分、秒、纳秒),所以在转…...

介绍几种 MySQL 官方高可用方案

前言: MySQL 官方提供了多种高可用部署方案,从最基础的主从复制到组复制再到 InnoDB Cluster 等等。本篇文章以 MySQL 8.0 版本为准,介绍下不同高可用方案架构原理及使用场景。 1.MySQL Replication MySQL Replication 是官方提供的主从同…...

IMU坐标系与自定义坐标系转化

1.首先示例图为例&#xff1a; 虚线黑色角度为IMU的坐标系&#xff1b;实线为自定义坐标系&#xff1b; 矫正&#xff1a;&#xff08;默认angleyaw为IMU采的数据角度&#xff09; angleyaw_pt angleyaw-25;if(-180<angleyaw&&angleyaw<-155) // 角度跳变问…...

《STM32 HAL库》RCC 相关系列函数详尽解析—— HAL_RCC_OscConfig()

观前提示&#xff1a;函数完整代码在文末&#xff0c;本文梳理了函数HAL_RCC_OscConfig()的主要逻辑和实现方法f105时钟树详解图 HAL_RCC_OscConfig() 函数介绍&#xff1a; 此函数是一个用于初始化RCC&#xff08;Reset and Clock Control&#xff09;振荡器&#xff08;Osc…...

手动将jar包导入本地Maven仓库

1、进入存放jar包的目录&#xff0c;可以先放进仓库底下 2、cmd回车 3、执行命令&#xff0c;看到BUILD SUCCESS就是成功了 -DgroupId、-DartifactId、-Dversion、-Dfile记得换成自己对应的 mvn install:install-file -DgroupIdcom.github.03 -DartifactIdonvif -Dversion1.0…...

煤安防爆手机为什么能在煤矿井下使用

煤安防爆手机之所以能在煤矿井下使用&#xff0c;是因为它们经过特殊设计&#xff0c;符合严格的防爆安全标准&#xff0c;能够防止电火花引发爆炸&#xff0c;同时具备防尘防水、抗冲击等特性&#xff0c;确保在恶劣的煤矿环境中稳定可靠地运行&#xff0c;为工作人员提供安全…...

科普小课堂|不同版本USB接口详细解析

USB接口凭借其广泛的兼容性和高性能&#xff0c;已成为连接多样外设的主要接口&#xff0c;囊括了日常的键盘、鼠标等输入设备以及其他更多的领域。不仅如此&#xff0c;USB还展现了高度灵活性&#xff0c;能够便捷地转换为其他总线接口&#xff0c;例如实现USB到以太网或USB到…...

Spring Boot中的JSON解析优化

Spring Boot中的JSON解析优化 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将探讨在Spring Boot应用中如何优化JSON解析&#xff0c;以提升系统的性能…...

全彩屏负氧离子监测站

TH-FZ5在追求绿色生态、健康出行的今天&#xff0c;景区不仅仅是人们休闲游玩的好去处&#xff0c;更是人们体验大自然、感受清新空气的重要场所。为了进一步提升游客的游览体验&#xff0c;许多景区纷纷引入了全彩屏负氧离子监测站&#xff0c;这一创新举措不仅为景区增添了科…...

LeetCode 1207.独一无二的数

题目要求 给你一个整数数组 arr&#xff0c;请你帮忙统计数组中每个数的出现次数。如果每个数的出现次数都是独一无二的&#xff0c;就返回 true&#xff1b;否则返回 false。示例 1&#xff1a;输入&#xff1a;arr [1,2,2,1,1,3] 输出&#xff1a;true 解释&#xff1a;在该…...

自然语言处理——英文文本预处理

高质量数据的重要性 数据的质量直接影响模型的性能和准确性。高质量的数据可以显著提升模型的学习效果&#xff0c;帮助模型更准确地识别模式、进行预测和决策。具体原因包括以下几点&#xff1a; 噪音减少&#xff1a;高质量的数据经过清理&#xff0c;减少了无关或错误信息…...

2024年二级建造师机电工程专业历年考试题库精选答案解析。

1.根据《标准施工招标文件》&#xff0c;关于施工合同变更权和变更程序的说法&#xff0c;正确的是&#xff08;&#xff09;。 A.发包人可以直接向承包人发出变更意向书 B.承包人书面报告发包人后&#xff0c;可根据实际情况对工程进行变更 C.承包人根据合同约定&#xff0…...

Oracle 19C19.3 rac安装并RU升级到19.14

19C支持RU补丁安装。 下载好19.14的RU补丁 [rootrac1 soft]# ll total 9830404 -rw-r--r-- 1 grid oinstall 3059705302 Jun 18 15:26 LINUX.X64_193000_db_home.zip -rw-r--r-- 1 grid oinstall 2889184573 Jun 18 15:27 LINUX.X64_193000_grid_home.zip -rw-r--r-- 1 grid …...

1012:Joseph

网址如下&#xff1a; OpenJudge - 1012:Joseph 其中一个解法 只想到了一个快速找到下一位处决的人的方法&#xff0c;本质上还是遍历&#xff0c;暂时没想到更优的方法了 代码如下&#xff1a; #include<cstdio> int k;bool judge(int tt, int m, int r){if(tt k) …...

【高级篇】备份与恢复:守护数据的长城(十一)

引言 在上一章《性能优化》中,我们深入探讨了如何通过调整查询、优化索引和配置服务器参数等手段,提升MySQL的运行效率。然而,再高效的数据处理能力也无法抵御硬件故障、软件错误或人为失误带来的数据损失。因此,建立健全的备份与恢复机制是确保数据安全和业务连续性的关键…...

Docker构建多平台镜像

docker的多架构镜像构建 目前很多服务器都是基于arm架构的&#xff0c;而现在大多数的docker镜像都是基于x86架构的。一种情况就是同样的代码编译成业务包做成镜像需要部署在不同架构的服务器上&#xff0c;这个时候我们就可以使用docker的多平台构建了。 以下操作是在centos7.…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中&#xff0c;选择 环境 -> 常规 &#xff0c;将其中的颜色主题改成深色 点击确定&#xff0c;更改完成...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

企业如何增强终端安全?

在数字化转型加速的今天&#xff0c;企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机&#xff0c;到工厂里的物联网设备、智能传感器&#xff0c;这些终端构成了企业与外部世界连接的 “神经末梢”。然而&#xff0c;随着远程办公的常态化和设备接入的爆炸式…...

Pinocchio 库详解及其在足式机器人上的应用

Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库&#xff0c;专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性&#xff0c;并提供了一个通用的框架&…...

【分享】推荐一些办公小工具

1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由&#xff1a;大部分的转换软件需要收费&#xff0c;要么功能不齐全&#xff0c;而开会员又用不了几次浪费钱&#xff0c;借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...

掌握 HTTP 请求:理解 cURL GET 语法

cURL 是一个强大的命令行工具&#xff0c;用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中&#xff0c;cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...