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),则证明补丁已生效。

注意事项: 暂无

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

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

相关文章

vue3爷孙组件通信——provide和inject

父组件中提供数据&#xff0c;并在子组件中注入这些数据&#xff0c;从而实现了组件之间的数据传递。可用于兄弟组件通信&#xff0c;爷孙组件通信&#xff0c;父子通信。 provide( ‘注入名’, 注入值" ) 和 inject(‘注入名’) 第一代组件&#xff1a; <template>…

2024十大首码地推拉新app平台,一手首码对接平台!

到了2024年&#xff0c;地推新应用的接单平台成为创业者们关注的焦点。对于地推行业的从业人员而言&#xff0c;选择一家拥有一手单资源的平台至关重要&#xff0c;因为这直接关系到他们的利益。 2024年如果想要进行app地推活动&#xff0c;却没有人脉渠道的困扰&#xff0c;建…

Jmeter+InfluxDB+Grafana性能测试数据展示

JmeterInfluxDBGrafana提供了一种更好的对Jmeter压测结果的实时监控展示。可以理解为数据源产生的数据加上时间记录并存储&#xff0c;然后使用各种开源图表组件进行展示。实现jmeter报告的更好的可视化展示 1&#xff09;方便测试结果数据落地以及更好的分析 2&#xff09;将…

【数据集管理】使用 Fiftyone 管理数据集,大型数据集也不在话下!

【数据集管理】使用 Fiftyone 管理数据集&#xff0c;大型数据集也不在话下&#xff01; 1. Fiftyone 安装2. 数据集的加载与导出2.1 本地数据集操作2.1.1 创建 session2.1.2 加载数据集2.1.2.1 加载 YOLO 格式的数据集2.1.2.2 加载本地数据库中的数据集2.1.2.3 同时加载数据集…

2024《汽车出海全产业数据安全合规发展白皮书》下载

随着中国制造向中国智造目标的迈进&#xff0c;中国汽车正以前所未有的速度和质量&#xff0c;在全球市场上开疆拓土。不过&#xff0c;在中国汽车加快出海步伐的过程中&#xff0c;数据安全合规风险管理成为车企不容忽视的课题。 6月25日&#xff0c;在中国&#xff08;上海&…

从万里长城防御体系看软件安全体系建设@安全历史03

长城&#xff0c;是中华民族的一张重要名片&#xff0c;是中华民族坚韧不屈、自强不息的精神象征&#xff0c;被联合国教科文组织列入世界文化遗产名录。那么在古代&#xff0c;长城是如何以其复杂的防御体系&#xff0c;一次次抵御外族入侵&#xff0c;而这些防御体系又能给软…

上海高考志愿填报小程序开发的主要功能

6月毕业季&#xff0c;高考学子刚经历了激烈的高考角逐&#xff0c;又迎来了志愿填报的大关。面对影响一生的高考志愿&#xff0c;如何填报显得尤为重要&#xff0c;面对广大学子的填报需求&#xff0c;上海高考志愿填报小程序为高考学子带来了福音。 一&#xff0e; 上海高考…

端到端图像分类算法开发实战:从 Arm 虚拟硬件到 Grove Vision AI Module V2 物理硬件

端到端图像分类算法开发实战&#xff1a;从 Arm 虚拟硬件到 Grove Vision AI Module V2 物理硬件 文章目录 1. 写在前面2. 产品简介2.1 Arm 虚拟硬件镜像产品简介2.2 Grove - Vision AI V2 产品简介 3. 实验前准备4. 实验步骤4.1 模型训练4.2 Arm 虚拟硬件镜像上的部署测试4.2…

OpenAI 开启买买买模式:接连收购 Rockset 与 Multi,科技巨头创新布局

引言 最近&#xff0c;OpenAI 在科技领域引起了广泛关注&#xff0c;通过接连收购两家初创公司 Rockset 和 Multi&#xff0c;开启了所谓的“买买买模式”。这一战略举措不仅展现了 OpenAI 对于技术发展的深远布局&#xff0c;也预示着未来更多创新产品的推出。本文将详细探讨…

Linux通用系统高危漏洞(CVE-2024-1086)修复案例

一、漏洞描述 2024年3月28日&#xff0c; Linux kernel权限提升漏洞&#xff08;CVE-2024-1086&#xff09;的PoC/EXP在互联网上公开&#xff0c;该漏洞的CVSS评分为7.8&#xff0c;目前漏洞细节已经公开披露&#xff0c;美国网络安全与基础设施安全局&#xff08;CISA&#x…

测试:MyBatisDemo

MyBatis Demo 先创建一个 Maven 项目&#xff0c;名称为 MyBatis01。 之后创建并连接 MySQL 数据库&#xff0c;然后执行 sql 脚本&#xff1a; CREATE DATABASE mybatis;USE mybatis;DROP TABLE IF EXISTS user;CREATE TABLE user ( id int(20) NOT NULL, name varchar(30)…

ABB机器人控制柜各模块指示灯状态说明

ABB机器人控制柜各模块指示灯状态说明 主计算机模块位于控制柜的正前方,负责机器人的各种运算处理,安全模块主要负责安全相关的信号处理,驱动单元模块用于接收上位机指令,驱动机器人运动,轴计算机模块用于接收主计算机的运动指令和串

入门JavaWeb之 Response 验证码和重定向

Response 写验证码&#xff1a; package com.demo.response;import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse…

浏览器页面打不开(网络连接正常的情况下)

目录 一、代理被打开 二、DNS被篡改 三、网络配置出现问题 四、浏览器配置问题 一、代理被打开 1. 右击Wifi图标 2.点击“打开网络和internet设置” 3. 点击代理&#xff0c;把该窗口所有的东西都关闭&#xff0c;尤其是代理服务器 二、DNS被篡改 如果第一个方法不行&am…

浅谈逻辑控制器之仅一次控制器

浅谈逻辑控制器之仅一次控制器 “仅一次控制器”(Once Only Controller) 是一个非常实用的组件&#xff0c;它允许用户控制测试计划中的某些操作仅执行一次&#xff0c;无论其所在的线程组或父级控制器设置了多少次循环。本指南将详细介绍“仅一次控制器”的功能、使用场景及配…

HarmonyOS ArkUi Tabs+TabContent+List实现tab吸顶功能

Demo效果 Entry Component struct StickyNestedScroll {State message: string Hello WorldState arr: number[] []scroller new Scroller()StyleslistCard() {.backgroundColor(Color.White).height(72).width("100%").borderRadius(12)}build() {Scroll(this.sc…

医药研发项目管理系统:适合CRO/CDMO企业使用的项目管理系统有哪些?

近日&#xff0c;北京民康百草医药科技有限公司&#xff08;以下简称“民康百草”&#xff09;与北京瑞杰智能科技有限公司&#xff08;以下简称“瑞杰科技”&#xff09;宣布达成战略合作&#xff0c;双方将共同打造一套符合民康百草企业特色的研发项目管理系统。该系统将基于…

postGreSQL关系数据库介绍

什么是postGreSQL关系数据库&#xff1f; PostgreSQL 是一个强大的、开源的对象关系型数据库管理系统&#xff08;ORDBMS&#xff09;。它基于POSTQUEL查询语言的继承&#xff0c;提供了对SQL标准的广泛支持&#xff0c;并扩展了许多高级功能&#xff0c;如事务处理、多版本并…

使用 Webmin 中模块注意事项

一、 Docker中Webmin忘记密码解决方法 Webmin忘记Web登陆时候的密码&#xff0c;无法登陆&#xff0c;可以通过changepass.pl 文件修改密码来进行解决。但在 Docker 中这一方法很难&#xff0c;因为不知道changepass.pl 在那里&#xff1f; 我是通过如下方法来解决的&#xff…

JAVA医院绩效考核系统源码:优化绩效考核的必要性 系统技术架构:java+springboot、mybaits +avue +MySQL

JAVA医院绩效考核系统源码&#xff1a;优化绩效考核的必要性 系统技术架构&#xff1a;javaspringboot、mybaits avue MySQL 医院绩效考核系统&#xff0c;建立以医院发展目标为导向&#xff0c;以医务人员劳动价值、工作量为评价基础&#xff0c;统筹效率、质量、成本的绩效管…