J2EEScan: Expanding Burp Suite’s Java Vulnerability Coverage with 80+ Enterprise-Specific Checks
Hook
Burp Suite’s default scanner found 12 vulnerabilities in your Spring application. J2EEScan found 31 more—including three RCE vectors in Struts components you didn’t know existed.
Context
Enterprise Java applications built on frameworks like Spring, Struts, JBoss, and Oracle WebLogic have a fundamentally different attack surface than typical web applications. They’re built on layers of abstraction—servlet containers, application servers, expression language interpreters, serialization frameworks—each introducing framework-specific vulnerabilities that general-purpose security scanners weren’t designed to detect.
Traditional web application scanners excel at finding OWASP Top 10 issues like SQL injection and XSS, but they’re largely blind to J2EE-specific attack vectors: Expression Language injection in JSF templates, deserialization flaws in JBoss remoting, path traversal through Spring’s resource handlers, or SSRF through Weblogic’s UDDI explorer. Penetration testers working on enterprise Java stacks needed to manually craft requests to test for these issues, or cobble together multiple specialized tools. J2EEScan emerged to bridge this gap by embedding deep J2EE security expertise directly into Burp Suite’s workflow, treating enterprise Java vulnerabilities as first-class scanner checks rather than edge cases requiring manual intervention.
Technical Insight
J2EEScan operates as a Burp Suite Extender plugin that integrates into Burp’s scanner engines, adding over 80 unique security test cases that execute during normal Burp scanning operations. This architectural approach means you don’t interact with J2EEScan as a separate tool—it enhances Burp’s existing scanner with J2EE-aware test cases that appear as native findings in the Scanner results.
The plugin’s strength lies in its comprehensive coverage of framework-specific vulnerabilities. Rather than generic fuzzing, J2EEScan implements targeted detection strategies for known J2EE attack patterns. For Expression Language injection, it includes EL3-specific vectors and framework-specific contexts for Spring, JSF, and other templating engines. The LFI module includes UTF-8 encoding bypass techniques specifically effective against Java servlet filters. The deserialization checks target Jackson (CVE-2017-7525) and Fastjson with payloads crafted for Java object serialization contexts.
The installation process is straightforward but requires one critical configuration step. After loading the J2EEScan JAR through Burp’s Extender tab, you must navigate to Options > Sessions > Cookie Jar and explicitly enable the Scanner and Extender checkboxes. Without this, the plugin loads but its checks won’t fire during scans. The README emphasizes this step, noting it’s a non-obvious Burp Suite configuration requirement.
The plugin’s detection strategy for specific CVEs demonstrates its practical value. The Apache Tomcat GhostCat vulnerability (CVE-2020-1938) check includes dedicated AJP service identification and GhostCat-specific probes. For Spring Cloud’s path traversal (CVE-2020-5410), it tests resource endpoints with directory traversal sequences that account for Spring’s URL normalization behavior.
The Struts coverage is particularly extensive. J2EEScan checks for S2-023, S2-032, S2-043, and S2-052, plus detects the Apache Struts Showcase and OGNL Console—administrative interfaces that should never be exposed in production. Each check implements the specific exploitation technique for that CVE.
For enterprise environments, J2EEScan includes weak credential checks against JBoss management consoles, Weblogic admin interfaces, and other J2EE application server control panels. It also detects end-of-life software versions for Tomcat, Jetty, and Oracle Application Server.
Gotcha
J2EEScan’s most significant limitation is its dependency on Burp Suite Pro for scanner functionality. The Burp Extender API that plugins use to register scanner checks is only available in the commercial version, not the free Community Edition. If you’re working with Burp Free, the plugin will load without errors but won’t perform any scanning.
The maintenance timeline raises concerns about current vulnerability coverage. The last release shown in the README was version 2.0.0beta.2 (date not specified but includes 2020 CVEs), adding GhostCat and Spring Cloud CVE-2020-5410 detection. Since 2020, numerous critical Java vulnerabilities have emerged that are not mentioned in the README—suggesting J2EEScan may not detect these newer issues, creating a potential gap in coverage if you’re relying on it exclusively.
Performance is another consideration. Adding 80+ custom checks to every scan may increase scan duration, especially on large applications. Each check fires additional HTTP requests—the EL injection module tests multiple payload variations across different contexts. The plugin requires at least Java 1.7 to run.
Verdict
Use J2EEScan if you’re performing penetration tests on enterprise Java applications built with Spring, Struts, JBoss, Weblogic, or other J2EE frameworks, and you already have a Burp Suite Pro license. The specialized vulnerability coverage for framework-specific attack vectors—Expression Language injection, Java deserialization, AJP exploitation, and dozens of J2EE CVEs—provides significantly deeper testing than Burp’s default scanner alone. It’s particularly valuable during time-boxed assessments where manually testing for 80+ J2EE-specific issues isn’t feasible. Skip it if you’re testing non-Java applications, you only have Burp Suite Community Edition (it won’t work), or you need current coverage for post-2020 Java vulnerabilities. The release history in the README shows coverage through 2020 CVEs, so you may need to supplement with additional testing for newer vulnerabilities.