yaklang/escrita-arbitraria-para-rce

Manual de como transformar uma primitiva de escrita arbitrária em execução remota de código. Use quando você tem uma escrita arbitrária (por exploração de heap, format string ou escrita fora dos limites) e precisa convertê-la em execução de código atacando GOT, hooks, _IO_FILE vtable, exit_funcs, TLS_dtor_list, modprobe_path, .fini_array ou vtables de C++.

O que é escrita-arbitraria-para-rce?

Este playbook, parte do ecossistema yaklang, fornece uma sequência sistemática de técnicas para converter uma primitiva de escrita arbitrária em execução remota de código (RCE), voltado para cenários de exploração de memória como heap exploitation, format string ou escrita fora dos limites (OOB). Ele abrange alvos comuns como GOT, hooks, vtables de _IO_FILE, exit_funcs, TLS_dtor_list, modprobe_path, .fini_array e vtables de C++, permitindo ao usuário escolher a abordagem mais adequada com base nas proteções do binário (ASLR, PIE, RELRO) e no contexto da aplicação. O manual detalha pré-requisitos, passos para preparação da escrita arbitrária, seleção de alvo, ajuste de offsets, verificação de integridade e execução do exploit. Suportado principalmente em ambientes Linux com binários ELF, é útil para engenheiros de segurança e desenvolvedores que trabalham com análise de vulnerabilidades e desenvolvimento de exploits, especialmente em sistemas com proteções parciais (RELRO parcial, sem CFI). A metodologia prioriza a confiabilidade e a adaptação dinâmica conforme as condições do alvo.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/yaklang/hack-skills/tree/main/skills/arbitrary-write-to-rce

Installed? Explore more Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

O que escrita-arbitraria-para-rce faz?

Manual de como transformar uma primitiva de escrita arbitrária em execução remota de código. Use quando você tem uma escrita arbitrária (por exploração de heap, format string ou escrita fora dos limites) e precisa convertê-la em execução de código atacando GOT, hooks, vtables de _IO_FILE, exit_funcs, TLS_dtor_list, modprobe_path, .fini_array ou vtables de C++.

Alvos comuns

  • GOT (tabela de deslocamento global)
  • Hooks (como __free_hook, __malloc_hook)
  • _IO_FILE vtable
  • exit_funcs
  • TLS_dtor_list
  • modprobe_path
  • .fini_array
  • vtables de C++

Pré-requisitos

  • Um binário ELF (Linux)
  • Primitiva de escrita arbitrária (por exemplo, em heap, format string ou OOB)
  • Conhecimento básico sobre as proteções do binário (ASLR, PIE, RELRO)

Passos

  1. Identificar o alvo: Escolha o alvo com base nas proteções disponíveis e no contexto do programa.
  2. Preparar a escrita: Use a primitiva para escrever o endereço desejado no local do alvo.
  3. Verificar a integridade: Garanta que a escrita não corrompa outros dados necessários.
  4. Executar o exploit: Acione o código injetado (por exemplo, chamando a função que usa o ponteiro alterado).

Técnicas

1. Ataque a GOT

  • Útil em binários com RELRO parcial.
  • Escreva o endereço da função desejada no slot da GOT.

2. Ataque a hooks (glibc < 2.34)

  • Alvos comuns: __free_hook, __malloc_hook.
  • Escreva o endereço de system ou outro gadget.

3. _IO_FILE vtable

  • Modifique o ponteiro vtable em uma estrutura _IO_FILE.
  • Use _IO_str_overflow ou _IO_wstr_overflow.

4. exit_funcs

  • Sobrescreva __exit_funcs para apontar para seu código.
  • Ativado quando o programa chama exit().

5. TLS_dtor_list

  • Modifique a lista de destruidores de thread local.
  • Útil em binários com thread.

6. modprobe_path

  • Escreva um caminho para um script malicioso.
  • Ativado ao executar um arquivo com formato binário desconhecido.

7. .fini_array

  • Sobrescreva entradas em .fini_array.
  • Executado antes do encerramento do programa.

8. vtables de C++

  • Modifique o ponteiro vtable de um objeto.
  • Útil em binários C++ sem CFI.

Considerações

  • Verifique o estado da memória antes e depois da escrita.
  • Ajuste offsets conforme necessário (por exemplo, devido a ASLR).
  • Teste em ambiente controlado antes de usar em produção.
  • Para glibc >= 2.34, hooks foram removidos; use outras técnicas como _IO_FILE vtable.

Exemplo (esquemático)

# Supondo primitiva: write(addr, data)
# Ataque a __free_hook com system
target = &__free_hook
write(target, system_addr)
# Agora free(ptr) executará system(ptr)

Referências

  • Documentação oficial do yaklang.
  • Artigos sobre exploração de heap e escrita arbitrária.
  • CVE relacionadas (ex: CVE-2023-...).

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

yaklang/401-403-bypass-techniques

401/403 bypass playbook. Use when encountering access-denied responses on admin panels, API endpoints, or restricted paths. Covers path manipulation, HTTP method tampering, header injection, protocol downgrade, and automated bypass tools.

yaklang/active-directory-acl-abuse

Active Directory ACL abuse playbook. Use when exploiting misconfigured AD permissions including GenericAll, WriteDACL, DCSync rights, shadow credentials, LAPS reading, GPO abuse, and BloodHound-guided attack paths.

yaklang/active-directory-certificate-services

AD Certificate Services attack playbook. Use when targeting misconfigured AD CS for privilege escalation via ESC1-ESC13 template abuse, NTLM relay to enrollment, CA officer abuse, and certificate-based persistence.

yaklang/active-directory-kerberos-attacks

Kerberos attack playbook for Active Directory. Use when targeting AD authentication via AS-REP roasting, Kerberoasting, golden/silver/diamond tickets, delegation abuse, or pass-the-ticket attacks.

yaklang/ai-ml-security

AI/ML security playbook. Use when assessing model supply chain attacks (pickle RCE, poisoned weights), adversarial examples, model poisoning, model stealing, data privacy attacks (membership inference, model inversion), and autonomous agent security risks.

yaklang/android-pentesting-tricks

Android pentesting playbook. Use when testing Android applications for SSL pinning bypass, exported component abuse, WebView vulnerabilities, intent redirection, root detection bypass, tapjacking, and backup extraction during authorized mobile security assessments.

yaklang/anti-debugging-techniques

Anti-debugging detection and bypass playbook. Use when reversing protected binaries that detect debuggers via ptrace, PEB flags, timing checks, or signal/exception handlers on Linux and Windows.

yaklang/api-auth-and-jwt-abuse

API authentication and JWT abuse playbook. Use when testing bearer tokens, API keys, claim trust, header spoofing, rate limits, and API auth boundary weaknesses.

yaklang/api-authorization-and-bola

API authorization and BOLA testing playbook. Use when APIs expose object identifiers, nested resources, hidden writable fields, or weak function-level authorization.

yaklang/api-recon-and-docs

API reconnaissance and documentation review playbook. Use when discovering endpoints, schemas, versions, OpenAPI specs, hidden docs, and surface area for API testing.

yaklang/api-sec

Entry P1 category router for API security. Use when choosing between API recon, authorization, token abuse, and hidden-parameter workflows before any deeper API topic skill.

yaklang/authbypass-authentication-flaws

Authentication bypass testing playbook. Use when assessing login flows, password reset logic, account recovery, MFA bypass, token predictability, brute-force resistance, and session boundary flaws.

yaklang/auth-sec

Entry P1 category router for authentication and authorization. Use when testing login flows, sessions, object authorization, JWT, OAuth, CORS, CSRF, and enterprise SSO weaknesses before any deeper auth topic skill.

yaklang/binary-protection-bypass

Binary protection bypass playbook. Use when identifying and bypassing ASLR, PIE, NX/DEP, stack canary, RELRO, FORTIFY_SOURCE, CET, and MTE protections in ELF binaries to enable exploitation.

yaklang/browser-exploitation-v8

Browser and V8 exploitation playbook. Use when exploiting JavaScript engine vulnerabilities including JIT type confusion, incorrect bounds elimination, and V8 sandbox bypass to achieve renderer RCE and sandbox escape in Chrome/Chromium.

yaklang/business-logic-vuln

Entry P1 category router for business logic testing. Use when workflow abuse, race conditions, pricing flaws, or multi-step state attacks matter more than parser-level input injection.

yaklang/business-logic-vulnerabilities

Business logic vulnerability playbook. Use when reasoning about workflows, race conditions, price manipulation, coupon abuse, state machines, and multi-step authorization gaps.

yaklang/classical-cipher-analysis

Classical cipher analysis playbook. Use when encountering substitution ciphers, Vigenere, transposition, XOR, or encoded text in CTF challenges that requires frequency analysis, Kasiski examination, or known-plaintext cryptanalysis.

yaklang/clickjacking

Clickjacking playbook. Use when testing whether target pages can be framed, whether X-Frame-Options or CSP frame-ancestors are properly configured, and whether UI redress attacks can trigger sensitive actions.

yaklang/cmdi-command-injection

Command injection playbook. Use when user input may reach shell commands, process execution, converters, import pipelines, or blind out-of-band command sinks.

Habilidades Relacionadas