
Exploit baseado em Python para CVE-2023-1671 com funções de teste e exploração. Testa a vulnerabilidade via ping DNS e, em seguida, executa comandos arbitrários em servidores vulneráveis através de injeção de comando.
/opt/ws/bin/ftsblistpack é um script Perl que chama /opt/ws/bin/sblistpack, que é outro script Perl.
Os argumentos do comando shell nele são colocados entre aspas simples:
$rc += system("$sblistpack '$uri' '$user' '$filetype' '$filein' '$fileout'");
Isso será importante no futuro; será uma daquelas coisas que levarão a uma vulnerabilidade.
Em seguida, /opt/ui/apache/htdocs/controllers/UsrBlocked.php passa o comando shell para ftsblistpack com parâmetros fornecidos pelo usuário : args_reason, url, filetypeser, user_encoded.
A entrada do usuário ainda é tratada pela função PHP escapeshellarg(), que adiciona aspas simples ao redor da string ou de quaisquer aspas simples existentes.
Isso permite que você passe a string diretamente para a função shell e a processe junto com os parâmetros do usuário.
Você pode ver o que resulta disso:
Se digitarmos:
';echo 1 #
Então temos:
'shell user' ' ';echo 1 #'
E isso nos permite causar algum dano ao sistema neste comando. Adicionamos nosso valor codificado a user_encoded.
UsrBlocked.php é redirecionado via /index.php?c=blocked, e então os parâmetros GET e POST necessários são inseridos. Como o parâmetro user_encoded é codificado em Base64, é ideal para injeção.
https://github.com/ohnonoyesyes/CVE-2023-1671 - exploit de shell
https://vulncheck.com/blog/cve-2023-1671-analysis - pos cve-2023-1671
https://nvd.nist.gov/vuln/detail/CVE-2023-1671 - informações do NIST sobre cve-2023-1671
Então, existe uma função de teste e uma de exploit.
O teste envia uma solicitação de ping para o domínio dnslog(http://www.dnslog.cn) a partir do site vulnerável. Se o ping funcionar, a vulnerabilidade existe; se não, cve-2023-1671 está ausente.
A função de exploit, por outro lado, envia uma solicitação com o seu comando para o servidor.
-h
Obter parâmetros de uso
--exploit
Chama a função para explorar cve-2023-1671.
Isso executará seu comando arbitrário sem verificar se existe uma vulnerabilidade.
--test
Chama a função de teste de vulnerabilidade.
Isso é feito enviando ping para o domínio dnslog, a partir do servidor vulnerável.
Se o ping ocorrer, a vulnerabilidade cve-2023-1671 está presente.
-u
Este é o IP ou URL do seu site.
Observe o formato 192.168.0.1 ou site.com
-p
A porta do site vulnerável. Este é um parâmetro obrigatório, mesmo que você tenha https://site.ocm, você deve especificar -u site.com -p 443
-c
O parâmetro da função --exploit
Este é qualquer comando arbitrário que você queira executar para explorar o site.
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 foi escrito para fins educacionais e não sou responsável por suas ações
Use este exploit apenas com o objetivo de testar e proteger o seu sistema.