
Ein einfaches Tool, um Datei-Upload-Beschränkungen zu umgehen.

Upload Bypass ist ein einfaches Tool, das Penetrationstestern und Bug Hunter bei der Prüfung von Datei-Upload-Mechanismen helfen soll. Es nutzt verschiedene Bug-Bounty-Techniken, um den Prozess der Identifizierung und Ausnutzung von Schwachstellen zu vereinfachen und eine gründliche Bewertung von Webanwendungen sicherzustellen.

Dieses Tool ist in der OSCP-Prüfung eingeschränkt!
Geeignet für reale Penetrationstests. Dieser Modus lädt harmlose Dateien hoch und versucht nicht, das Ziel auszunutzen.
Neu - Wenn ein Zielordner für die hochgeladenen Dateien angegeben wird, ermittelt das Programm, ob die hochgeladene Beispieldatei gerendert wird. Zum Beispiel: Wenn Sie PHP gewählt haben, versucht das Programm festzustellen, ob ein echo-Befehl ausgeführt und erfolgreich gerendert wird. Wenn ja, schlägt es vor, eine interaktive Shell zu öffnen.
Geeignet, wenn Sie das Ziel ausnutzen und eine interaktive Web-Shell hochladen möchten (falls ein Ziel-Upload-Verzeichnis angegeben ist). Die Datei wird dann mit einer zufälligen UUID hochgeladen, sodass sie für Fuzzer schwieriger zu erraten ist.
Geeignet für einen Anti-Malware-Präsenztest. Laden Sie eine Eicar-Datei (Anti-Malware-Testdatei) auf das System hoch. Wenn der Benutzer den Speicherort der hochgeladenen Datei angibt, prüft das Programm, ob die Datei erfolgreich hochgeladen wurde und im System existiert, um festzustellen, ob eine Anti-Malware auf dem System vorhanden ist.
Schauen Sie sich die config.py im lib-Verzeichnis an. Sie können neue Erweiterungen, MIME-Typen, Magic Bytes hinzufügen, die Verwendung von HTTP/HTTPS-Protokollen konfigurieren usw.
Um ein neues Modul hinzuzufügen, fügen Sie einfach eine Funktion mit Ihrer gewünschten Funktionalität in die modules.py ein und fügen Sie dann den Funktionsnamen zur Liste 'active_modules' in der config.py hinzu.
Um eine neue Dateierweiterung hinzuzufügen, fügen Sie eine sample.{ext}-Datei in assets/sample_files hinzu und fügen Sie dann die Erweiterung sowie ihren MIME-Typ/Magic Bytes in die config.py ein.
git clone https://github.com/sAjibuu/Upload_Bypass.git
pip install -r requirements.txt
sudo docker pull sajibuu/upload_bypass
sudo docker build -t sajibuu/upload_bypass .
sudo docker run -v $(pwd)/request:/Upload_Bypass/{your_request_file} -it sajibuu/upload_bypass -r request -s 'file was uploaded successfully' -E php -e
Stellen Sie sicher, dass Sie Port 8080 auf allen Schnittstellen abhören!
sudo docker run -v $(pwd)/request:/Upload_Bypass/{your_request_file} -it sajibuu/upload_bypass -r request -s 'file was uploaded successfully' -E php -e -p http://{docker_interface_IP}:8080
Das Tool funktioniert in folgenden Fällen nicht ordnungsgemäß:
Bitte beachten Sie, dass die Nutzung von Upload Bypass und alle damit verbundenen Handlungen ausschließlich auf eigenes Risiko erfolgen. Das Tool dient ausschließlich zu Bildungs- und Testzwecken. Der Entwickler von Upload Bypass übernimmt keine Verantwortung für Missbrauch, Schäden oder illegale Aktivitäten, die durch seine Nutzung verursacht werden.
Das Programm arbeitet nur mit Request-Dateien, die von Proxy-Tools wie Burp Suite und ZAP OWASP generiert wurden.
Bevor Sie die Request-Datei aus Ihrem Proxy (z. B. Burp Suite) speichern, ersetzen Sie die folgenden Parameterwerte durch die entsprechenden Markierungen:
Dateiinhalt: *data*
Dateiname: *filename*
Content-Type-Header: *mimetype*
How it should look like in a JSON request:

How it should look like in a multi-part data request:

Usage: Upload Bypass [OPTIONS]
Options:
-h, --help Print help (see more with '--help')
-U, --usage Print the how to save the request file instructions.
-v, --version Print version
Required Arguments:
-r, --request_file <REQUEST_FILE> Provide a request file to be proccessed
-E, --extension <EXTENSION> Forbidden extension to check (ex: php)
-A, --allowed <EXTENSION> Allowed extension (ex: jpeg) - Optional - if not set the program will auto-detect the extension
Choose only one from the options below:
-s, --success <MESSAGE> Provide a success message when a file is uploaded (ex: File was uploaded successfully)
-f, --failure <MESSAGE> Provide a failure message when a file is uploaded (ex: File is not allowed!)
-S, --status_code <STATUS_CODE> Provide a status code for a success upload (ex: 200)
Mode Settings:
-d, --detect Upload harmless sample files (Suitable for a real penetration test)
-e, --exploit Upload Web-Shells files when testing
-a, --anti_malware Upload Anti-Malware Test file (Eicar) when testing
I. If set with -E flag the program will test with the Eicar string along with the choosen extension
II. If set without the -E flag the program will test with Eicar string and a com extension
Modules Settings:
-l, --list List all modules
-i, --include_only <MODULES> Include only modules to test from (ex: extension_shuffle, double_extension)
-x, --exclude <MODULES> Exclude modules (ex: svg_xxe, svg_xss)
Request Settings:
--base64 Encode the file data with Base64 algorithm
--allow_redirects Follow redirects
-P, --put Use the HTTP PUT method for the requests (Default is POST)
-Pa, --patch Use the HTTP Patch method for the requests (Default is POST)
-R, --response Print the response to the screen
-c, --continue Continue testing all files, even if a few uploads encountered success
-t, --time_out <NUM> Set the request timeout (Default is 8)
-rl, --rate_limit <NUMBER> Set a rate-limit with a delay in milliseconds between each request
Proxy Settings:
-p, --proxy <PROXY> Proxy to use for requests (ex: http(s)://host:port, socks5(h)://host:port)
-k, --insecure Do not verify SSL certificates
--burp_http Set --proxy to 127.0.0.1:8080 and set --insecure to true (For HTTP requests)
--burp_https Set --proxy to 127.0.0.1:8080 and set --insecure to false (For HTTPs requests)
Optional Settings:
-D, --upload_dir <UPLOAD_DIR> Provide a remote path where the Web-Shell should be uploaded (ex: /uploads)
-o, --output <OUTPUT_PATH> Output file to write the results into - Default current directory (ex: ~/Desktop/results.txt)
--debug <NUM> Debug mode - Print the stack trace error to the screen and save it to a file (ex: --debug 1)
I. Level 1 - Saves only the stack trace error (default).
II. Level 2 - Saves the stack trace error and user's arguments along with the request file.
Resume settings:
--resume <STATE_FILE> State file from which to resume a partially complete scan
Update settings:
-u, --update Update the program to the latest version
python upload_bypass.py -r test -s 'File uploaded successfully' -E php -D /uploads --burp --detect
python upload_bypass.py -r test -s 'File uploaded successfully' -E php -D /uploads --burp --exploit
python upload_bypass.py -r test -s 'File uploaded successfully' -E php -D /uploads --burp --anti_malware
Wenn Sie auf ein Problem stoßen, verwenden Sie bitte den Debug-Modus mit dem Flag-Wert 2 und teilen Sie ihn mir mit (die Debug-Datei wird mit den vom Benutzer bereitgestellten Argumenten, der bereitgestellten Request-Datei und dem Stack-Trace-Fehler gespeichert). Falls die Datei vertrauliche Informationen enthält, können Sie den Flag-Wert 1 verwenden, der nur den Stack-Trace-Fehler in der Datei speichert.
Wenn Sie zu meinem Code beitragen möchten, geben Sie bitte genau an, was Sie dem Code hinzugefügt haben und warum, und stellen Sie sicher, dass Sie mehrere Tests durchführen, bevor Sie den Merge-Request einreichen.