yaklang/arbitrary-write-to-rce

Playbook pour transformer une écriture arbitraire en exécution de code (RCE). À utiliser lorsque vous disposez d'une primitive d'écriture arbitraire (exploitation du tas, chaîne de format, écriture hors limites) et devez la convertir en exécution de code en ciblant GOT, hooks, _IO_FILE vtable, exit_funcs, TLS_dtor_list, modprobe_path, .fini_array ou les vtables C++.

Qu'est-ce que arbitrary-write-to-rce ?

Ce skill, yaklang/arbitrary-write-to-rce, est un playbook spécialisé destiné aux développeurs et experts en sécurité qui exploitent des vulnérabilités mémoire. Il guide la conversion d'une primitive d'écriture arbitraire (provenant d'attaques sur le tas, de chaînes de format ou d'écritures hors limites) en une exécution de code complète (RCE). Il couvre plusieurs cibles classiques comme la GOT (Global Offset Table), les hooks, la vtable _IO_FILE, exit_funcs, TLS_dtor_list, modprobe_path, .fini_array et les vtables C++. Le playbook fournit une méthodologie pas à pas, incluant les vérifications préalables, les techniques de ciblage et les exemples de code (en Python avec ctypes ou pwntools). Il est conçu pour être utilisé avec des LLM comme Claude Code, Cursor ou Codex, afin d'automatiser la génération de code d'exploitation adapté à l'environnement cible (Linux, glibc). L'approche est pragmatique et détaillée, facilitant la tâche même pour des développeurs moins expérimentés en exploitation binaire.

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

Installed? Explore more Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait arbitrary-write-to-rce ?

Playbook pour transformer une écriture arbitraire en exécution de code (RCE). À utiliser lorsque vous disposez d'une primitive d'écriture arbitraire (exploitation du tas, chaîne de format, écriture hors limites) et devez la convertir en exécution de code en ciblant GOT, hooks, _IO_FILE vtable, exit_funcs, TLS_dtor_list, modprobe_path, .fini_array ou les vtables C++.

Vue d'ensemble

Ce playbook fournit une méthodologie structurée pour exploiter une vulnérabilité d'écriture arbitraire. Il suppose que vous avez déjà identifié une primitive d'écriture arbitraire et que vous cherchez à obtenir une exécution de code.

Prérequis

  • Une primitive d'écriture arbitraire (ex : write(adresse, valeur))
  • Connaître l'architecture cible (x86, x64, ARM, etc.)
  • Comprendre les protections de l'exécutable (ASLR, NX, PIE, RELRO, Stack Canaries)
  • Avoir un environnement de débogage (GDB, pwntools, etc.)

Cibles principales

CibleConditionFacilitéRemarques
GOTRELRO partielÉlevéeClassique, surcharge de fonctions résolues
Hooks (e.g. __free_hook, __malloc_hook)GLIBC < 2.34ÉlevéePréféré pour libc
_IO_FILE vtableFichier maîtriséMoyenneExploitation via _IO_str_overflow ou _IO_wstr_overflow
exit_funcsGLIBCMoyenneAppelé lors de exit() ou retour de main
TLS_dtor_listGLIBCMoyenneExécution lors de __call_tls_dtors
modprobe_pathLinux kernelFaibleNécessite modprobe_path accessible
.fini_arrayExécutableFaibleAppelé lors de la terminaison du programme
C++ vtableObjet C++VariableSurcharge de la vtable d'un objet existant

Méthodologie générale

  1. Cartographie des cibles : Déterminez les cibles disponibles (adresses, protections, versions).
  2. Calcul des décalages : Calculez les offsets nécessaires pour chaque cible potentielle.
  3. Construction de la charge utile : Écrivez les valeurs souhaitées aux adresses cibles en utilisant votre primitive.
  4. Déclenchement : Provoquez l'exécution du code via le mécanisme ciblé (appel de fonction, exception, etc.).
  5. Vérification : Validez que l'exécution de code a réussi (shell, lecture de fichier, etc.).

Exemple de code (Python avec pwntools)

from pwn import *

# Connexion ou processus local
p = process('./vuln')

# Adresses (à adapter)
free_hook = 0x7f1234567890
system_addr = 0x7f0987654321

# Écriture arbitraire sur free_hook
write_arbitrary(free_hook, system_addr)

# Déclenchement via free
trigger_free()

# Interaction
p.interactive()

Dépannage

  • Segfault : Vérifiez l'alignement des adresses, la présence de canaris, ou les protections exécutables de la mémoire.
  • Pas d'exécution : Assurez-vous que la cible est bien déréférencée et que la valeur écrite est correcte (adresse de la fonction shell).
  • RELRO complet : Utilisez une autre technique (hooks, vtable, etc.).

Références

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.

Skills associés