越来越多的企业采用Java语言构建企业Web应用程序,基于Java主流的框架和技术及可能存在的风险,成为被关注的重点。

本文从黑盒渗透的角度,总结下Java Web应用所知道的一些可能被利用的入侵点。

一、中间件漏洞

基于Java的Web项目部署会涉及一些中间件,一旦中间件配置不当或存在高危漏洞,就会严重影响到整个系统的安全。

1. Web中间件

Weblogic系列漏洞:

  • 弱口令 && 后台getshell
  • SSRF漏洞
  • 反序列化RCE漏洞

Jboss系列漏洞:

  • 未授权访问Getshell
  • 反序列化RCE漏洞

Tomcat系列漏洞:

  • 弱口令&&后台getshell
  • Tomcat PUT方法任意写文件漏洞

Websphere系列漏洞:

  • 弱口令&&后台getshell
  • XXE漏洞
  • 远程代码执行漏洞

Coldfusion系列漏洞:

  • 文件读取漏洞
  • 反序列化RCE漏洞

GlassFish系列漏洞:

  • 弱口令&&后台getshell
  • 任意文件读取漏洞

Resin系列漏洞:

  • 弱口令&&后台getshell
  • 任意文件读取漏洞

2. 缓存/消息/搜索/分布式中间件

Redis系列漏洞:

  • 未授权访问getshell
  • 主从复制RCE

ActiveMQ系列漏洞:

  • ActiveMQ任意文件写入漏洞
  • ActiveMQ反序列化漏洞

Kafka系列漏洞:

  • 未授权访问漏洞
  • 反序列化漏洞

Elasticsearch系列漏洞:

  • 命令执行漏洞
  • 写入webshell漏洞

ZooKeeper系列漏洞:

  • 未授权访问漏洞
  • 框架及组件漏洞

二、框架及组件漏洞

基于Java开发的Web应用,会使用到各种开发框架和第三方组件,而随着时间推移,这些框架和组件可能早已不再安全了。

1. 开发框架

Struts2 系列漏洞:

  • S2-001 到 S2-061漏洞
  • 安全公告:https://cwiki.apache.org/confluence/display/WW/Security+Bulletins

Spring 系列漏洞:

  • Spring Security OAuth2远程命令执行漏洞
  • Spring WebFlow远程代码执行漏洞
  • Spring Data Rest远程命令执行漏洞
  • Spring Messaging远程命令执行漏洞
  • Spring Data Commons远程命令执行漏洞

SpringCloud 系列漏洞:

  • Spring Boot Actuator 未授权访问
  • Springt Boot 相关漏洞:https://github.com/LandGrey/SpringBootVulExploit

Dubbo 系列漏洞:

  • Dubbo 反序列化漏洞
  • Dubbo 远程代码执行漏洞

2. 第三方组件

Shiro 系列漏洞:

  • Shiro 默认密钥致命令执行漏洞
  • Shiro rememberMe 反序列化漏洞(Shiro-550)
  • Shiro Padding Oracle Attack(Shiro-721)

Fastjson 系列漏洞:

  • Fastjson反序列化RCE
  • Fastjson远程命令执行

Jackson系列漏洞:

  • 反序列化RCE漏洞

Solr系列漏洞:

  • XML实体注入漏洞
  • 文件读取与SSRF漏洞
  • 远程命令执行漏洞

JWT漏洞:

  • 敏感信息泄露
  • 伪造token
  • 暴力破解密钥

3. API 接口漏洞

基于前后端分离的开发模式,都需要通过调用后端提供的接口来进行业务交互,api接口安全测试是一项非常重要的任务。

API Security:

  1. OWASP API Security-Top 10:https://owasp.org/www-project-api-security/
  2. API-Security-Checklist:https://github.com/shieldfy/API-Security-Checklist/

常见API相关漏洞:

  • 逻辑越权
  • 信息泄露
  • 接口滥用
  • 输入输出控制
  • 安全错误配置

如何攻击Java Web应用的更多相关文章

  1. ref:一种新的攻击方法——Java Web表达式注入

    ref:https://blog.csdn.net/kk_gods/article/details/51840683 一种新的攻击方法——Java Web表达式注入 2016年07月06日 17:01 ...

  2. Java Web使用过滤器防止Xss攻击,解决Xss漏洞

    转: Java Web使用过滤器防止Xss攻击,解决Xss漏洞 2018年11月11日 10:41:27 我欲乘风,直上九天 阅读数:2687   版权声明:本文为博主原创文章,转载请注明出处!有时候 ...

  3. kpvalidate开辟验证组件,通用Java Web请求服务器端数据验证组件

    小菜利用工作之余编写了一款Java小插件,主要是用来验证Web请求的数据,是在服务器端进行验证,不是简单的浏览器端验证. 小菜编写的仅仅是一款非常初级的组件而已,但小菜为它写了详细的说明文档. 简单介 ...

  4. java web sql注入测试(1)---概念概述

    在进行java web 测试时,经常会忽略的测试种类就是sql注入测试,这类缺陷造成的原因是开发技术在这方面欠缺的表现,虽然不常见,但一旦有这类缺陷,就很因此对运营的数据造成很多不必要的损失,所以,还 ...

  5. Java Web表达式注入

    原文:http://netsecurity.51cto.com/art/201407/444548.htm 0×00 引言 在2014年6月18日@终极修炼师曾发布这样一条微博: 链接的内容是一个名为 ...

  6. Java Web开发 - 持久型/存储型XSS漏洞

    Java Web开发 - 持久型/存储型XSS漏洞 1.什么是XSS漏洞攻击? XSS是跨站脚本攻击(Cross Site Scripting)的简称,之所以叫XSS而不是CSS相比大家都能明白了吧, ...

  7. Java Web安全之程序逻辑缺陷

    Java Web程序逻辑缺陷本质是由于程序设计和开发者设计的程序执行逻辑存在某种缺陷而导致的安全隐患.企业的代码审查和渗透测试通常主要针对的大多是诸如xss攻击和sql注入和跨站点脚本这些头条式漏洞, ...

  8. java Web工程师面试题集绵

    一.Java 基础 1.JDK .JRE 和JVM关系是什么? 答:A. JDK(Java Development Kit)即Java开发工具包,包含编写Java程序所必须的编译.运行等开发工具以及J ...

  9. Java Web 学习与总结(三)会话跟踪

    何为会话跟踪?举个简单的例子,比如登陆到某购物网站后,在一定时间内无论你在这个网站中切换到任意的网页,只要不执行退出操作,一直保持着你账号的登录状态. 那么在Java Web中我们应当如何去实现这一操 ...

随机推荐

  1. odoo12里面的RPC【远程过程调用】

    odoo的RPC有两种:RPC API:1.xml-rpc                                                      2.json-rpc 案例   x ...

  2. C++第四十六篇 -- C++将int转换成宽字符串

    int rate = 60; int score = 80 TCHAR Temp[64] = TEXT(""); _stprintf_s(Temp, TEXT("pass ...

  3. 选择排序(selection_sort)——Python实现

      # 选择排序 # 作用:对给出的n个顺序不定的数进行排序 # 输入:任意数组A # 输出:按顺序排列的数组A # 时间复杂度 (n(n-1))/2 # 选择排序 # 第一趟:选择第一个元素,依次与 ...

  4. 创建型-单例模式 SingletonPattern

    单例模式 Singleton 保证一个类只有一个实例的实现方法 给其他类提供一个全局的访问点. 由自己创建自己的唯一实例 实现 实现方法分为饿汉式(线程安全).懒汉式(线程不安全).懒汉式(lock+ ...

  5. Calcite(一):javacc语法框架及使用

    是一个动态数据管理框架. 它包含许多组成典型数据库管理系统的部分,但省略了存储原语.它提供了行业标准的SQL解析器和验证器,具有可插入规则和成本函数的可自定义优化器,逻辑和物理代数运算符,从SQL到代 ...

  6. Upload-labs 文件上传靶场通关攻略(上)

    Upload-labs 文件上传靶场通关攻略(上) 文件上传是Web网页中常见的功能之一,通常情况下恶意的文件上传,会形成漏洞. 逻辑是这样的:用户通过上传点上传了恶意文件,通过服务器的校验后保存到指 ...

  7. Golang语言系列-04-运算符

    运算符 Go语言内置的运算符有 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 算术运算符 package main import "fmt" func main() { ...

  8. 模拟退火 Simulated annealing

    模拟退火 Simulated annealing 看看有空把图片完善一下好了 模拟退火算法的一些背景 既然要说模拟退火算法,就应该说一下模拟退火算法的背景,模拟退火算法是局部搜索算法的一种扩展,该算法 ...

  9. 构建工具之Maven的使用(一)

    一.前言 对于开发一个Java项目,上线之前会通过编译,测试,打包,部署这几个构建过程,如果文件较少,我们可以使用java-->javac-->jar这些命令去完成上述的构建流程.但是当工 ...

  10. Dubbo系列讲解之扩展点实现原理分析【2万字分享】

    Apache Dubbo 是一款微服务开发框架,它提供了 RPC通信 与 微服务治理 两大关键能力.这意味着,使用 Dubbo 开发的微服务,将具备相互之间的远程发现与通信能力, 同时利用 Dubbo ...