Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
TwoMillion-Machine-Writeup — De desofuscando code.js até root, CVE-2023-0386 | Kitploit
Ferramentas/GitHubGitHub/anxs3c/twomillion-machine-writeup
Escalada de PrivilégiosReconhecimentoExploraçãoMovimento LateralEngenharia ReversaExploração de Aplicações WebCTFTestes de PenetraçãoAprendizado e EducaçãoLabs e Prática
GitHubanxs3c/twomillion-machine-writeup
17há 3 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

TwoMillion-Machine-Writeup

De desofuscando code.js até root, CVE-2023-0386

Ver Repositório

Sobre a Máquina

TwoMillion é uma máquina Linux de dificuldade Fácil que foi lançada para comemorar a marca de 2 milhões de usuários no HackTheBox. A máquina apresenta uma versão antiga da plataforma HackTheBox que inclui o antigo código de convite hackeável. Depois de hackear o código de convite, uma conta pode ser criada na plataforma. A conta pode ser usada para enumerar vários endpoints de API, um dos quais pode ser usado para elevar o usuário a Administrador. Com acesso administrativo, o usuário pode realizar uma injeção de comando no endpoint de geração de VPN do admin, obtendo assim um shell de sistema. Um arquivo .env é encontrado contendo credenciais de banco de dados e, devido à reutilização de senhas, os atacantes podem entrar como usuário admin na máquina. O kernel do sistema está desatualizado e o CVE-2023-0386 pode ser usado para obter um shell root.

Resultados da Varredura

portservicedetails
22/tcpsshsyn-ack ttl 63 OpenSSH 8.9p1 Ubuntu 3ubuntu0.1 (Ubuntu Linux; protocol 2.0)
80/tcphttpsyn-ack ttl 63 nginx 2million.htb

Configuração do host

Adicionei 2million.htb ao meu arquivo /etc/hots


Descoberta de Caminhos

Realizei uma descoberta de caminhos em 2million.htb usando gobuster

Durante a enumeração, descobri o endpoint /invite


Após navegar para a página /invite


Ao inspecionar a página, notei que ela carregava um arquivo JavaScript chamado inviteapi.min.js contendo código ofuscado:

eval(function(p,a,c,k,e,d){e=function(c){return c.toString(36)};if(!''.replace(/^/,String)){while(c--){d[c.toString(a)]=k[c]||c.toString(a)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('1 i(4){h 8={"4":4};$.9({a:"7",5:"6",g:8,b:\'/d/e/n\',c:1(0){3.2(0)},f:1(0){3.2(0)}})}1 j(){$.9({a:"7",5:"6",b:\'/d/e/k/l/m\',c:1(0){3.2(0)},f:1(0){3.2(0)}})}',24,24,'response|function|log|console|code|dataType|json|POST|formData|ajax|type|url|success|api/v1|invite|error|data|var|verifyInviteCode|makeInviteCode|how|to|generate|verify'.split('|'),0,{}))

Desofuscação

Desofusquei o código usando de4js, que produziu o seguinte JavaScript legível:


function verifyInviteCode(code) {
    var formData = {
        "code": code
    };
    $.ajax({
        type: "POST",
        dataType: "json",
        data: formData,
        url: '/api/v1/invite/verify',
        success: function (response) {
            console.log(response)
        },
        error: function (response) {
            console.log(response)
        }
    })
}

function makeInviteCode() {
    $.ajax({
        type: "POST",
        dataType: "json",
        url: '/api/v1/invite/how/to/generate',
        success: function (response) {
            console.log(response)
        },
        error: function (response) {
            console.log(response)
        }
    })
}

makeInviteCode() : gera um novo código de convite
verefyInviteCode(code) : verifica se um código é válido

e, para entender mais, interceptei a solicitação de verificação:


a API usa respostas JSON


Gerando o código de convite e descriptografia ROT13

Fui ao console do navegador e executei makeInviteCode()


Percebi que os dados estavam criptografados com a cifra ROT13


Após a descriptografia, encontrei o endpoint /api/v1/invite/generate; então gerei o código de convite


Descriptografia Base64

Chave
A chave 2F4BN-YI8OH-B0SCL-L8OE6 foi inserida e aceita com sucesso

Registro

Página Inicial

Página de Acesso
Poucas páginas deste site funcionam corretamente; a página de acesso é onde as coisas ficam interessantes

Enumeração de Endpoints da API
Fiz upload do arquivo VPN clicando no botão connection pack e interceptei a requisição GET


Em seguida, executei uma requisição curl com as opções verbose e silent para enumerar API endpoints disponíveis



O servidor respondeu com uma lista JSON de API endpoints

O admin tinha 3 endpoints de API com métodos GET, POST e PUT

Quando tentei gerar a chave de admin com o endpoint /api/v1/admin/vpn/generate, a chave não foi gerada porque eu não era o admin, e o primeiro endpoint /api/v1/admin/auth confirmou isso





Escalação Vertical de Privilégio na Aplicação Web: elevar o usuário padrão atual a administrador


Depois de descobrir o formato correto da requisição PUT com Content-Type: application/json e os parâmetros necessários, elevei meu usuário a administrador com sucesso

Baixar ferramenta