
CVE-2025-47812 Prova di concetto
Questa è una Proof of Concept (PoC) dell'exploit di Wing FTP Server (CVE-2025-47812)
Le versioni di Wing FTP Server precedenti alla 7.4.4 presentavano una vulnerabilità di Remote Code Execution (RCE) dovuta al trattamento non sicuro del parametro username. Quando è consentito effettuare il login nella pagina /loginok.html, è possibile iniettare un byte nullo %00
seguito da codice Lua per ottenere una RCE.
Quando inviamo una richiesta POST alla pagina loginok.html, la funzione c_CheckUser() (quella che valida nome utente e password corretti) usa strlen(). Il problema è che la funzione in questione è vulnerabile al troncamento dei byte nulli.
Ciò significa che se inviamo il %00 dopo il nome utente, c_CheckUser() validerà solo la parte della stringa prima del byte nullo: "anonymous%00........." --> "anonymous".
Successivamente, l'applicazione crea una variabile SESSION, che viene scritta su un file. Tuttavia, questo file contiene non solo il nome utente, ma l'intera stringa, incluso il byte nullo e il codice successivo. Poiché il file è un file Lua, è possibile iniettare codice Lua, con conseguente RCE.
Ipotizziamo che il login anonimo sia consentito. Se inviamo una richiesta POST con questa struttura: avremo iniettato il comando dopo i byte nulli utilizzando codice Lua. Una volta fatto questo, dobbiamo copiare l'UID della risposta e inviare una richiesta GET a qualsiasi pagina autenticata, ad esempio la pagina , usando lo stesso UID.
username=anonymous%00]]%0dlocal+h+%3d+io.popen("whoami")%0dlocal+r+%3d+h%3aread(\"*a\")%0dh%3aclose()%0dprint(r)%0d--&password=&username_val=anonymous&password_val=whoamiLo script CVE-2025-47812.py esegue il processo per noi.