Sec24 – Command Execution – Command Execution Basic
Av: Oscar Andersson, Sec24, 2013-05-25
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 och nu är ansluten till denna. Vet du inte hur du gör är det bara att följa denna guide. Sätta upp en testmiljö.
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.
Gå nu in i fliken Command Execution och skriv in en IP-adress att pinga. (Från Wikipedia: Ping är ett datornätverksverktyg för IP-nätverk (till exempel Internet). Det används för att undersöka om en viss värddator är åtkomlig via nätverket. Det ger även information om vilken tid det tar för paket att ta sig fram till värden, vilket är ett mått på latensen i överföringen. Programmet skickar, enligt protokollet ICMP, ett paket av typen ekoförfrågan (echo request) till den dator som skall undersökas, och väntar sedan på motsvarande svar. Ping är inbyggt i de flesta operativsystem som Mac OS, Linux och Windows.)
Kör du lokalt kan du skriva in IP-adressen från din egen dator. Jag skriver in IP-adressen jag fått från Kali. Webbläsaren jag använder är Iceweasel.
Skriv din IP i det tomma fältet och klicka på submit. I mitt fall 192.168.1.9.
Vi försöker nu skicka ett kommando till servern. Exempelvis: cat /etc/password
Det returnerar ett tomt resultat eller “ERROR: You have entered an invalid IP”
Nu provar vi att skicka båda kommandona samtidigt till servern. Detta genom att skilja dem med ett semikolon.
192.168.1.9; cat /etc/passwd
Vi får nu fram innehållet i /etc/passwd filen.
För att förstå varför klickar vi på knappen “View Source” längre ner på sidan.
Kollar vi på källkoden ser vi att det körs två stycken “shell_exec”.
Vilken som körs avgörs av vilket operativsystem som används. I ett Unix/Linux-kommando kan du köra flera kommandon som är separerade av ett semikolon.
Vi ser även att koden inte kontrollerar att indatan motsvarar en IP-adress. En kontroll skulle kunna vara: \d+.\d+.\d+.\d+, där “\d+” representerar ett nummer med flera siffror, exempelvis 192.168.1.9.
Koden tillåter att kommandon körs bakom en IP-adress.