
Exploit para cve-2023-1671. Así que hay una función de prueba y de explotación. La prueba envía una solicitud ping al dominio dnslog desde el sitio vulnerable. Si el ping pasa, la vulnerabilidad existe; si no, entonces falta cve-2023-1671. La función de explotación, por otro lado, envía una solicitud con tu comando al servidor.
/opt/ws/bin/ftsblistpack es un script de Perl que llama a /opt/ws/bin/sblistpack, que es otro script de Perl.
Los argumentos del comando shell en él están encerrados entre comillas simples:
$rc += system("$sblistpack '$uri' '$user' '$filetype' '$filein' '$fileout'");
Esto será importante en el futuro, será una de esas cosas que conducirán a una vulnerabilidad.
Luego, /opt/ui/apache/htdocs/controllers/UsrBlocked.php pasa el comando shell a ftsblistpack con parámetros proporcionados por el usuario: args_reason, url, filetypeser, user_encoded.
La entrada del usuario todavía es manejada por la función de PHP escapeshellarg(), que añade comillas simples alrededor de la cadena o de cualquier comilla simple existente.
Esto le permite pasar la cadena directamente a la función shell y procesarla junto con los parámetros del usuario.
Puede ver lo que resulta de esto:
Si escribimos:
';echo 1 #
Entonces tenemos:
'shell user' ' ';echo 1 #'
Y esto nos permite causar algo de daño al sistema con este comando. Añadimos nuestro valor codificado a user_encoded.
UsrBlocked.php se redirige a través de /index.php?c=blocked, y luego se introducen los parámetros GET y POST necesarios. Dado que el parámetro user_encoded está codificado en Base64, es ideal para la inyección.
https://github.com/ohnonoyesyes/CVE-2023-1671 - exploit de shell
https://vulncheck.com/blog/cve-2023-1671-analysis - análisis de cve-2023-1671
https://nvd.nist.gov/vuln/detail/CVE-2023-1671 - información de cve-2023-1671 en NIST
Por lo tanto, hay una función de prueba y una de exploit.
La prueba envía una solicitud de ping al dominio de dnslog(http://www.dnslog.cn) desde el sitio vulnerable. Si el ping se completa, la vulnerabilidad existe; si no, cve-2023-1671 no está presente.
La función de exploit, por otro lado, envía una solicitud con su comando al servidor.
-h
Obtener los parámetros de uso
--exploit
Llama a la función para explotar cve-2023-1671.
Esto ejecutará su comando arbitrario sin verificar si existe una vulnerabilidad.
--test
Llama a la función de prueba de vulnerabilidad.
Esto se hace haciendo ping al dominio de dnslog desde el servidor vulnerable.
Si se recibe el ping, la vulnerabilidad cve-2023-1671 está presente.
-u
Esta es la IP o URL de su sitio.
Tenga en cuenta el formato 192.168.0.1 o site.com
-p
El puerto del sitio vulnerable. Este es un parámetro obligatorio; incluso si tiene https://site.ocm debe especificar -u site.com -p 443
-c
El parámetro de la función --exploit
Este es cualquier comando arbitrario que desee ejecutar para explotar el sitio.
Formato -c 'echo cve'
python cve-2023-1671.py --exploit -u 192.168.0.1 -p 443 -c 'echo 1'
python cve-2023-1671.py --test -u 192.168.0.1 -p 443
Este exploit está escrito con fines educativos y no soy responsable de sus acciones
Use este exploit solo con el propósito de probar y proteger su sistema.