One Article Review

Accueil - L'article:
Source Blog.webp SkullSecurity
Identifiant 8336177
Date de publication 2023-05-12 20:45:30 (vue: 2023-05-12 21:07:11)
Titre Off-Off: Trois façons de gérer les processus de fourniture
Fork off: Three ways to deal with forking processes
Texte Avez-vous déjà testé une application Linux qui se propage dans plusieurs processus? N'est-ce pas une douleur?Que vous déboguez, essayez de voir un procédé crash, ou Essayant d'écrire un exploit, il peut être très ennuyeux! En quelques jours, je donne une conférence à Northsec à Montréal.J'en ai demandé Des collègues pour revoir mes diapositives, et ils ont commenté que j'avais un peu Techniques pour gérer la forking, alors j'ai pensé que je partagerais un couple! Alerte de spoiler: Le dernier est le meilleur, donc vous pouvez simplement passer à cela.:) cibles J'ai écrit deux applications simples, une qui fourre et une qui ne fait pas.Je vais N'oubliez pas de modifier dans un repo github pour eux plus tard - et je l'ai fait!Tu peux saisir eux ici !J'ai inclus tout le reste J'utilise aussi pour ce blog. Pour consulter le projet et suivre, allez-y et clonez le repo: $ git clone https://github.com/iagox86/forktest.git Clonage dans \\ 'fourktest \' ... Remote: énumération des objets: 8, fait. Remote: comptage des objets: 100% (8/8), fait. Remote: compression des objets: 100% (8/8), fait. Remote: Total 8 (Delta 1), réutilisé 7 (Delta 0), pack-réutilisé 0 Recevoir des objets: 100% (8/8), fait. Résolution deltas: 100% (1/1), fait. $ CD Forktest i \\ 'a inclus des versions construites de tous les fichiers, mais ils ne sont pas conçus pour être Portable pour ne pas fonctionner proprement.Si vous avez besoin de les construire vous-même, J'ai inclus un makefile de base: $ make clean & amp; & amp;faire RM -F * .O FORKAPP NOFORKAPPonlyyoucanpreventforking.o patch gcc -g -wall -fno-stack-protector -o fourkapp fourkapp.c gcc -g -wall -fno-stack-protecteur -o noforkapp noforkapp.c gcc -shared -fpic -o onlyyoucanpreventforking.soonlyyoucanpreventforking.c NASM -O Patch Patch.asm Cela devrait fonctionner plus ou moins la même chose sur n'importe quel système Intel Linux 64 bits. Le problème Lorsque vous exécutez l'un ou l'autre application de test, il copie le premier argument dans une chaîne (dangereux) puis l'imprime à l'écran: $ ./ForkApp Test Vous avez entré: Tester Laissez \\ dire que vous souhaitez utiliser Strace pour afficher les appels système.Dans un processus qui Imprime une chaîne, vous vous attendez à voir un appel à écrire ou quelque chose de similaire, qui est l'appel système qui écrit, disons, STDOUT (votre terminal).Ici \\ s À quoi ça ressemble sans forking: $Strace ./noforkapp Test execve ("./ noforkapp", ["./noforkapp", "test"], 0x7fffd7acc8f8 / * 72 vars * /) = 0 [...] Écrire (1, "Vous êtes entré:Test \ n ", 18 ans entré: Test ) = 18 exit_group (0) =? +++ sorti avec 0 +++ Mais une fois que vous avez ajouté de la fourniture de l'équation, vous ne voyez plus le Write syscall dans Strace par défaut: $ strace ./forkapp test execve ("./ forkapp", ["./forkapp", "test"], 0x7ffd1b7f02c8 / * 52 vars * /) = 0 [...] clone (child_stack = nul
Envoyé Oui
Condensat #include +++ /forkapp /lib64/libthread /noforkapp /onlyyoucanpreventforking 00000000 00000005 000011a0: 000011b0: 000011c0: 00: 0x0 0x000000000040120f 0x1 0x4 0x7fa1dfd5ca20 0x7ffd1b7f02c8 0x7ffd203a57c0 0x7fffd7acc8f8 0x7ffff7dcb740 1/1 100 1034540 133314 133518 133741 133742 134979 135430 13:06:50 140097 18you 27the 401000+1000 401050 401070 401080 4011a6: 4011ab: 4011b0: 4011b5: 4011ba: 4011bd: 4011c1: 4011f5 509003 8/8 =18 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AUTO Address Bouncedary DEbuginfo DOWNLOADING Fish: Forkapp GDB Job Libthread PROGRAM:/Home/Ron/TMP/Forktest/Forkapp Run SUPPORTS Signal Sigsegv This Thread USing You aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaa… aaaaaaaaaaaaaa… about actual actually add address after again ahead alert: all along already also although always annoying any anymore app app: app; appear application applies apps are aren argc=2 argument argv=0x7fffffffd8a8 argv=0x7fffffffda88 argv=0x7fffffffda98 asked asm assemble assembly at&t attach attached attaching back basic basically because becomes: been before believe best better binary binary: bit bits blog both boundary build building built bunch but byte bytes c:27 call called calling calls can cannot case catch challenge challenges change check child chmod choices clean cleanly cleartid|clone clone cloning cmp code code=cld column com/iagox86/forktest comfortable command commented common compile compressing configuring convert copies core correctly counting couple course crash create creative ctf days deal debugging debuginfod default default: defines delta deltas: demo depend detached detaching devs did didn digits disabled disambiguate disassemble disassembler disassembling dmesg does doesn don done down” dumped duper dword each earlier easy eax edi edit editor either else emit empty enabled engineering ensure entered: enumerating environment environmental equation error error:0 ever everything exactly executable execve exit exited expect explaining exploit export fail familiar fan far fault favourite feedback ff*89 ff*e8 file files find fire first fish: five flags: flags=clone fno follow following forget fork forkapp forking forking: forks forktest format fpic freely from fun function functions fuzzing gcc gdb gdb: gdbinit general get ghidra git github giving globally going good grab great grep group handle handy happens has have help here hex hex: hexdump hopefully host how however https://github ida implement implementation implementations important included inferior insert instruction intel interesting ip:40120f isn it: janky jne job journalctl just kernel: kill killing kind know last later least left less let libraries library libthread like likewise linux list literally load loadit long longer look looked looking looks lots lwp machine main make makefile: many matter may me: means messing might miss mistake mode montreal more most mov much multiple naive nasm neat need never new newlypatched noforkapp nop northsec not note noted nothing nothing: now null objdump objects: off off: offset offsets often okay old once once; one only onlyyoucanpreventforking open optimization option options order original other out output overflow override own pack pain parent part pass patch patched patchedoptionally peril permanent pid pid=133314 pid=133742 pipe portable preload preload= prepared pretty printf prints probably problem problems process processes processes: program project promising protection protector ptr purposes quite rax rbp reading reasons: received receiving recognize redirect refuse relocations remember remote: remove replace replacing repo repo: requires resolving return returns reused reverse review robust ronlab rtfm run same say screen: search: second see seem segmentation set settid|sigchld settid|sigchldstrace: set
Tags
Stories
Notes ★★
Move


L'article ne semble pas avoir été repris aprés sa publication.


L'article ne semble pas avoir été repris sur un précédent.
My email: