Added some CWE links.
This commit is contained in:
parent
394e3be54d
commit
21ee05cecd
14 changed files with 55 additions and 55 deletions
|
|
@ -188,10 +188,10 @@ Technik nichts lehren. Entfernt.
|
|||
|
||||
| # | Bug | CWE | Hinweis |
|
||||
|---|-----|-----|------|
|
||||
| 1 | `read(fd, buf, 512)` in einen 64-Byte-Stack-Puffer | CWE-120 | der Overflow: 448 Bytes über `buf` hinaus, gespeicherte RIP bei +88 |
|
||||
| 2 | nur `snprintf(line, …, "%.*s", …)`; aber Angreifer-`%` im Echo-Pfad | CWE-134 | das Leak ist hier der eigentliche Payload; ein `%n` in einem *root*-Prozess wäre write-what-where als root |
|
||||
| 3 | Kinder behalten root, während sie unvertrauenswürdige Eingaben behandeln | CWE-271 | das korrekte `drop_privs()` (setgroups→setgid→setuid, in dieser Reihenfolge, mit Verifikation) steht in der Datei, kommentiert, *bewusst nie aufgerufen* |
|
||||
| 4 | `ids=`, `stack=`, `libc=`, `BUF=` an jeden Client offengelegt | CWE-200 | ohne diese Leaks könnten Shellcode- und ret2libc-Techniken keine Adressen berechnen (ASLR würde sie schlagen) |
|
||||
| 1 | `read(fd, buf, 512)` in einen 64-Byte-Stack-Puffer | [CWE-120](https://cwe.mitre.org/data/definitions/120.html) | der Overflow: 448 Bytes über `buf` hinaus, gespeicherte RIP bei +88 |
|
||||
| 2 | nur `snprintf(line, …, "%.*s", …)`; aber Angreifer-`%` im Echo-Pfad | [CWE-134](https://cwe.mitre.org/data/definitions/134.html) | das Leak ist hier der eigentliche Payload; ein `%n` in einem *root*-Prozess wäre write-what-where als root |
|
||||
| 3 | Kinder behalten root, während sie unvertrauenswürdige Eingaben behandeln | [CWE-271](https://cwe.mitre.org/data/definitions/271.html) | das korrekte `drop_privs()` (setgroups→setgid→setuid, in dieser Reihenfolge, mit Verifikation) steht in der Datei, kommentiert, *bewusst nie aufgerufen* |
|
||||
| 4 | `ids=`, `stack=`, `libc=`, `BUF=` an jeden Client offengelegt | [CWE-200](https://cwe.mitre.org/data/definitions/200.html) | ohne diese Leaks könnten Shellcode- und ret2libc-Techniken keine Adressen berechnen (ASLR würde sie schlagen) |
|
||||
|
||||
Der Handler hat exakt dieselbe `buf[64]`/`read(512)`-Form wie die beiden
|
||||
anderen Labore, sodass die geteilte objdump-basierte Erkennungspipeline
|
||||
|
|
@ -322,4 +322,4 @@ Makefile build / run / run-root / run-root-ns / test /
|
|||
Schwester-Labore: `../food.c`/`../fooc.c` (User-Level-Baseline, Port 2342) und
|
||||
`../suid/` (SUID-Root-Daemon `foosd`/`foosc`, Port 2343). Die Ports sind
|
||||
bewusst verschieden — du kannst alle drei gleichzeitig laufen lassen und ihre
|
||||
`ids=`-Zeilen im Banner gegeneinander prüfen.
|
||||
`ids=`-Zeilen im Banner gegeneinander prüfen.
|
||||
|
|
|
|||
|
|
@ -178,10 +178,10 @@ rydde, så den ekstra funktion og teknik ville ikke lære noget. Fjernet.
|
|||
|
||||
| # | fejl | CWE | note |
|
||||
|---|-----|-----|------|
|
||||
| 1 | `read(fd, buf, 512)` ind i et 64-byte stack-buffer | CWE-120 | overløbet: 448 bytes forbi `buf`, gemt RIP ved +88 |
|
||||
| 2 | kun `snprintf(line, …, "%.*s", …)`; men angriber-`%` i echo-stien | CWE-134 | leaket er her den reelle payload; et `%n` i en *root*-proces ville være write-what-where som root |
|
||||
| 3 | børn beholder root, mens de håndterer utroverdige inputs | CWE-271 | det korrekte `drop_privs()` (setgroups→setgid→setuid, i den rækkefølge, med verifikation) står i filen, kommenteret, *bevidst aldrig kaldt* |
|
||||
| 4 | `ids=`, `stack=`, `libc=`, `BUF=` afsløret til enhver klient | CWE-200 | uden disse leaks kunne shellcode- og ret2libc-teknikkerne ikke beregne adresser (ASLR ville besejre dem) |
|
||||
| 1 | `read(fd, buf, 512)` ind i et 64-byte stack-buffer | [CWE-120](https://cwe.mitre.org/data/definitions/120.html) | overløbet: 448 bytes forbi `buf`, gemt RIP ved +88 |
|
||||
| 2 | kun `snprintf(line, …, "%.*s", …)`; men angriber-`%` i echo-stien | [CWE-134](https://cwe.mitre.org/data/definitions/134.html) | leaket er her den reelle payload; et `%n` i en *root*-proces ville være write-what-where som root |
|
||||
| 3 | børn beholder root, mens de håndterer utroverdige inputs | [CWE-271](https://cwe.mitre.org/data/definitions/271.html) | det korrekte `drop_privs()` (setgroups→setgid→setuid, i den rækkefølge, med verifikation) står i filen, kommenteret, *bevidst aldrig kaldt* |
|
||||
| 4 | `ids=`, `stack=`, `libc=`, `BUF=` afsløret til enhver klient | [CWE-200](https://cwe.mitre.org/data/definitions/200.html) | uden disse leaks kunne shellcode- og ret2libc-teknikkerne ikke beregne adresser (ASLR ville besejre dem) |
|
||||
|
||||
Handleren har præcis samme `buf[64]`/`read(512)`-form som de to andre
|
||||
laboratorier, så den fælles objdump-baserede erkendelsespipeline virker
|
||||
|
|
@ -306,4 +306,4 @@ Makefile build / run / run-root / run-root-ns / test /
|
|||
Søster-laboratorier: `../food.c`/`../fooc.c` (user-level-baseline, port 2342)
|
||||
og `../suid/` (SUID-root-daemon `foosd`/`foosc`, port 2343). Portene er bevidst
|
||||
forskellige — du kan køre alle tre på én gang og krydstjekke deres `ids=`-linjer
|
||||
i banneret.
|
||||
i banneret.
|
||||
|
|
|
|||
|
|
@ -184,10 +184,10 @@ Eliminada.
|
|||
|
||||
| # | error | CWE | nota |
|
||||
|---|-----|-----|------|
|
||||
| 1 | `read(fd, buf, 512)` en un búfer de pila de 64 bytes | CWE-120 | el desbordamiento: 448 bytes más allá de `buf`, RIP guardada en +88 |
|
||||
| 2 | solo `snprintf(line, …, "%.*s", …)`; pero `%` del atacante en el camino de eco | CWE-134 | la fuga es aquí el payload real; un `%n` en un proceso *root* sería write-what-where como root |
|
||||
| 3 | los hijos conservan root mientras manejan entradas no confiables | CWE-271 | el `drop_privs()` correcto (setgroups→setgid→setuid, en ese orden, con verificación) está en el archivo, comentado, *deliberadamente nunca llamado* |
|
||||
| 4 | `ids=`, `stack=`, `libc=`, `BUF=` revelados a cualquier cliente | CWE-200 | sin estas fugas, las técnicas de shellcode y ret2libc no podrían calcular direcciones (ASLR las vencería) |
|
||||
| 1 | `read(fd, buf, 512)` en un búfer de pila de 64 bytes | [CWE-120](https://cwe.mitre.org/data/definitions/120.html) | el desbordamiento: 448 bytes más allá de `buf`, RIP guardada en +88 |
|
||||
| 2 | solo `snprintf(line, …, "%.*s", …)`; pero `%` del atacante en el camino de eco | [CWE-134](https://cwe.mitre.org/data/definitions/134.html) | la fuga es aquí el payload real; un `%n` en un proceso *root* sería write-what-where como root |
|
||||
| 3 | los hijos conservan root mientras manejan entradas no confiables | [CWE-271](https://cwe.mitre.org/data/definitions/271.html) | el `drop_privs()` correcto (setgroups→setgid→setuid, en ese orden, con verificación) está en el archivo, comentado, *deliberadamente nunca llamado* |
|
||||
| 4 | `ids=`, `stack=`, `libc=`, `BUF=` revelados a cualquier cliente | [CWE-200](https://cwe.mitre.org/data/definitions/200.html) | sin estas fugas, las técnicas de shellcode y ret2libc no podrían calcular direcciones (ASLR las vencería) |
|
||||
|
||||
El handler tiene exactamente la misma forma `buf[64]`/`read(512)` que los otros
|
||||
dos laboratorios, así que el pipeline común de reconocimiento basado en objdump
|
||||
|
|
@ -315,4 +315,4 @@ Makefile build / run / run-root / run-root-ns / test /
|
|||
Laboratorios hermanos: `../food.c`/`../fooc.c` (referencia user-level, puerto
|
||||
2342) y `../suid/` (demonio root SUID `foosd`/`foosc`, puerto 2343). Los
|
||||
puertos son deliberadamente distintos — puedes ejecutar los tres a la vez y
|
||||
cruzar sus líneas `ids=` en el banner.
|
||||
cruzar sus líneas `ids=` en el banner.
|
||||
|
|
|
|||
|
|
@ -185,10 +185,10 @@ n'auraient rien appris. Supprimé.
|
|||
|
||||
| # | bug | CWE | note |
|
||||
|---|-----|-----|------|
|
||||
| 1 | `read(fd, buf, 512)` dans un tampon de pile de 64 octets | CWE-120 | le débordement : 448 octets au-delà de `buf`, RIP sauvegardée à +88 |
|
||||
| 2 | seulement `snprintf(line, …, "%.*s", …)` ; mais `%` de l'attaquant dans le chemin d'echo | CWE-134 | la fuite est ici la vraie payload ; un `%n` dans un processus *root* serait un write-what-where en root |
|
||||
| 3 | les enfants gardent root en traitant des entrées non fiables | CWE-271 | le `drop_privs()` correct (setgroups→setgid→setuid, dans cet ordre, avec vérification) est dans le fichier, commenté, *délibérément jamais appelé* |
|
||||
| 4 | `ids=`, `stack=`, `libc=`, `BUF=` révélés à n'importe quel client | CWE-200 | sans ces fuites, les techniques shellcode et ret2libc ne pourraient pas calculer d'adresses (ASLR les vaincrait) |
|
||||
| 1 | `read(fd, buf, 512)` dans un tampon de pile de 64 octets | [CWE-120](https://cwe.mitre.org/data/definitions/120.html) | le débordement : 448 octets au-delà de `buf`, RIP sauvegardée à +88 |
|
||||
| 2 | seulement `snprintf(line, …, "%.*s", …)` ; mais `%` de l'attaquant dans le chemin d'echo | [CWE-134](https://cwe.mitre.org/data/definitions/134.html) | la fuite est ici la vraie payload ; un `%n` dans un processus *root* serait un write-what-where en root |
|
||||
| 3 | les enfants gardent root en traitant des entrées non fiables | [CWE-271](https://cwe.mitre.org/data/definitions/271.html) | le `drop_privs()` correct (setgroups→setgid→setuid, dans cet ordre, avec vérification) est dans le fichier, commenté, *délibérément jamais appelé* |
|
||||
| 4 | `ids=`, `stack=`, `libc=`, `BUF=` révélés à n'importe quel client | [CWE-200](https://cwe.mitre.org/data/definitions/200.html)) | sans ces fuites, les techniques shellcode et ret2libc ne pourraient pas calculer d'adresses (ASLR les vaincrait) |
|
||||
|
||||
Le handler a exactement la même forme `buf[64]`/`read(512)` que les deux autres
|
||||
labs, donc le pipeline commun de reconnaissance par objdump fonctionne sans
|
||||
|
|
@ -319,4 +319,4 @@ Makefile build / run / run-root / run-root-ns / test /
|
|||
Labs frères : `../food.c`/`../fooc.c` (baseline user-level, port 2342) et
|
||||
`../suid/` (démon root SUID `foosd`/`foosc`, port 2343). Les ports sont
|
||||
délibérément différents — vous pouvez faire tourner les trois en même temps et
|
||||
croiser leurs lignes `ids=` dans le banner.
|
||||
croiser leurs lignes `ids=` dans le banner.
|
||||
|
|
|
|||
|
|
@ -179,10 +179,10 @@ dus de extra functie en techniek zouden niets leren. Verwijderd.
|
|||
|
||||
| # | bug | CWE | notitie |
|
||||
|---|-----|-----|------|
|
||||
| 1 | `read(fd, buf, 512)` in een 64-byte stack-buffer | CWE-120 | de overloop: 448 bytes voorbij `buf`, opgeslagen RIP op +88 |
|
||||
| 2 | alleen `snprintf(line, …, "%.*s", …)`; maar aanvaller-`%` in het echo-pad | CWE-134 | het lek is hier de echte payload; een `%n` in een *root*-proces zou write-what-where als root zijn |
|
||||
| 3 | kinderen behouden root terwijl ze onbetrouwbare input afhandelen | CWE-271 | de correcte `drop_privs()` (setgroups→setgid→setuid, in die volgorde, met verificatie) staat in het bestand, gecommentarieerd, *bewust nooit aangeroepen* |
|
||||
| 4 | `ids=`, `stack=`, `libc=`, `BUF=` onthuld aan elke client | CWE-200 | zonder deze leaks konden de shellcode- en ret2libc-technieken geen adressen berekenen (ASLR zou ze verslaan) |
|
||||
| 1 | `read(fd, buf, 512)` in een 64-byte stack-buffer | [CWE-120](https://cwe.mitre.org/data/definitions/120.html) | de overloop: 448 bytes voorbij `buf`, opgeslagen RIP op +88 |
|
||||
| 2 | alleen `snprintf(line, …, "%.*s", …)`; maar aanvaller-`%` in het echo-pad | [CWE-134](https://cwe.mitre.org/data/definitions/134.html) | het lek is hier de echte payload; een `%n` in een *root*-proces zou write-what-where als root zijn |
|
||||
| 3 | kinderen behouden root terwijl ze onbetrouwbare input afhandelen | [CWE-271](https://cwe.mitre.org/data/definitions/271.html) | de correcte `drop_privs()` (setgroups→setgid→setuid, in die volgorde, met verificatie) staat in het bestand, gecommentarieerd, *bewust nooit aangeroepen* |
|
||||
| 4 | `ids=`, `stack=`, `libc=`, `BUF=` onthuld aan elke client | [CWE-200](https://cwe.mitre.org/data/definitions/200.html) | zonder deze leaks konden de shellcode- en ret2libc-technieken geen adressen berekenen (ASLR zou ze verslaan) |
|
||||
|
||||
De handler heeft precies dezelfde `buf[64]`/`read(512)`-vorm als de twee andere
|
||||
labs, dus de gedeelde objdump-gebaseerde herkenningspipeline werkt ongewijzigd.
|
||||
|
|
@ -308,4 +308,4 @@ Makefile build / run / run-root / run-root-ns / test /
|
|||
Zuster-labs: `../food.c`/`../fooc.c` (user-level-baseline, poort 2342) en
|
||||
`../suid/` (SUID-root-daemon `foosd`/`foosc`, poort 2343). De poorten zijn
|
||||
bewust verschillend — je kunt alle drie tegelijk draaien en hun `ids=`-regels
|
||||
in het banner kruislings controleren.
|
||||
in het banner kruislings controleren.
|
||||
|
|
|
|||
|
|
@ -179,10 +179,10 @@ rydde, så den ekstra funksjonen og teknikken ville ikke lært noe. Fjernet.
|
|||
|
||||
| # | feil | CWE | notat |
|
||||
|---|-----|-----|------|
|
||||
| 1 | `read(fd, buf, 512)` inn i et 64-byte stack-buffer | CWE-120 | overløpet: 448 bytes forbi `buf`, lagret RIP ved +88 |
|
||||
| 2 | bare `snprintf(line, …, "%.*s", …)`; men angriper-`%` i ekko-stien | CWE-134 | leaket er her den reelle payloaden; et `%n` i en *root*-prosess ville vært write-what-where som root |
|
||||
| 3 | barn beholder root mens de håndterer upålitelige inputs | CWE-271 | det korrekte `drop_privs()` (setgroups→setgid→setuid, i den rekkefølgen, med verifikasjon) står i filen, kommentert, *bevisst aldri kalt* |
|
||||
| 4 | `ids=`, `stack=`, `libc=`, `BUF=` avslørt til enhver klient | CWE-200 | uten disse leaks kunne ikke shellcode- og ret2libc-teknikkene beregne adresser (ASLR ville beseiret dem) |
|
||||
| 1 | `read(fd, buf, 512)` inn i et 64-byte stack-buffer | [CWE-120](https://cwe.mitre.org/data/definitions/120.html) | overløpet: 448 bytes forbi `buf`, lagret RIP ved +88 |
|
||||
| 2 | bare `snprintf(line, …, "%.*s", …)`; men angriper-`%` i ekko-stien | [CWE-134](https://cwe.mitre.org/data/definitions/134.html) | leaket er her den reelle payloaden; et `%n` i en *root*-prosess ville vært write-what-where som root |
|
||||
| 3 | barn beholder root mens de håndterer upålitelige inputs | [CWE-271](https://cwe.mitre.org/data/definitions/271.html) | det korrekte `drop_privs()` (setgroups→setgid→setuid, i den rekkefølgen, med verifikasjon) står i filen, kommentert, *bevisst aldri kalt* |
|
||||
| 4 | `ids=`, `stack=`, `libc=`, `BUF=` avslørt til enhver klient | [CWE-120](https://cwe.mitre.org/data/definitions/120.html) | uten disse leaks kunne ikke shellcode- og ret2libc-teknikkene beregne adresser (ASLR ville beseiret dem) |
|
||||
|
||||
Handleren har nøyaktig samme `buf[64]`/`read(512)`-form som de to andre
|
||||
laboratoriene, så den felles objdump-baserte oppdagelsespipelinen virker
|
||||
|
|
@ -306,4 +306,4 @@ Makefile build / run / run-root / run-root-ns / test /
|
|||
Søster-laboratorier: `../food.c`/`../fooc.c` (user-level-baseline, port 2342)
|
||||
og `../suid/` (SUID-root-daemon `foosd`/`foosc`, port 2343). Portene er bevisst
|
||||
forskjellige — du kan kjøre alle tre samtidig og kryssjekke `ids=`-linjene
|
||||
deres i banneret.
|
||||
deres i banneret.
|
||||
|
|
|
|||
|
|
@ -176,10 +176,10 @@ Removed.
|
|||
|
||||
| # | bug | CWE | note |
|
||||
|---|-----|-----|------|
|
||||
| 1 | `read(fd, buf, 512)` into a 64-byte stack buffer | CWE-120 | the overflow: 448 bytes past `buf`, saved RIP at +88 |
|
||||
| 2 | `snprintf(line, …, "%.*s", …)` only; but attacker `%` in the echo path | CWE-134 | the leak is the real payload here; a `%n` in a *root* process would be write-what-where as root |
|
||||
| 3 | children keep root while handling untrusted input | CWE-271 | the correct `drop_privs()` (setgroups→setgid→setuid, in that order, with a verify) sits in the file, commented, *deliberately uncalled* |
|
||||
| 4 | `ids=`, `stack=`, `libc=`, `BUF=` disclosed to every client | CWE-200 | without these leaks the shellcode and ret2libc techniques could not compute addresses (ASLR would defeat them) |
|
||||
| 1 | `read(fd, buf, 512)` into a 64-byte stack buffer | [CWE-120](https://cwe.mitre.org/data/definitions/120.html) | the overflow: 448 bytes past `buf`, saved RIP at +88 |
|
||||
| 2 | `snprintf(line, …, "%.*s", …)` only; but attacker `%` in the echo path | [CWE-134](https://cwe.mitre.org/data/definitions/134.html) | the leak is the real payload here; a `%n` in a *root* process would be write-what-where as root |
|
||||
| 3 | children keep root while handling untrusted input | [CWE-271](https://cwe.mitre.org/data/definitions/271.html) | the correct `drop_privs()` (setgroups→setgid→setuid, in that order, with a verify) sits in the file, commented, *deliberately uncalled* |
|
||||
| 4 | `ids=`, `stack=`, `libc=`, `BUF=` disclosed to every client | [CWE-200](https://cwe.mitre.org/data/definitions/200.html) | without these leaks the shellcode and ret2libc techniques could not compute addresses (ASLR would defeat them) |
|
||||
|
||||
The handler is exactly the same `buf[64]`/`read(512)` shape as the other two
|
||||
labs, so the shared objdump-based discovery pipeline works unchanged.
|
||||
|
|
@ -302,4 +302,4 @@ Makefile build / run / run-root / run-root-ns / test /
|
|||
Sibling labs: `../food.c`/`../fooc.c` (user-level baseline, port 2342) and
|
||||
`../suid/` (SUID-root daemon `foosd`/`foosc`, port 2343). Ports are distinct
|
||||
on purpose — you can run all three at once and cross-check their banners'
|
||||
`ids=` lines.
|
||||
`ids=` lines.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue