Instructeur: In deze
lezing wil ik jullie laten zien hoe we SQL-injecties kunnen gebruiken
om elk bestand op de server te lezen, dus zelfs
als het bestand buiten de www root bestaat, kunnen we het lezen, net
als een kwetsbaarheid voor het openbaar
maken van bestanden, en we zullen ook zien hoe we het
kunnen gebruiken om bestanden te schrijven
en te uploaden naar het systeem, net als een kwetsbaarheid
voor het uploaden van bestanden.
Dus het eerste wat we gaan bekijken is
het lezen van het bestand.
En ik ga alles op nul zetten.
Dus ik heb mijn verklaring hier
en ik ga nummer één selecteren, en ik
laat nummer twee staan
omdat ik daar dingen mee ga doen.
En we gaan hier nog drie nullen doen.
Dus nul,
nul, nul.
Dus we hebben select null iets null, null, null.
Dus vijf omdat we vijf records hebben
toen we de bestelling deden.
En in plaats van iets te selecteren, denk
eraan, in de derde video,
selecteerden we bijvoorbeeld database, en het toont ons
de huidige database.
Wat ik nu wil doen
is een andere functie doen en die
functie heet load_file.
En hier ga ik het bestand instellen
dat ik wil laden en ik ga hetzelfde bestand
gebruiken dat
we bekeken bij de bestandsinsluiting
en dat was etc/passwd.
Dus we proberen dat bestand te
lezen en onze verklaring is unie selecteert dat bestand en dat is het.
Dus ik ga dit kopiëren.
En ik ga het hier injecteren
en ik ga mijn %23 toevoegen wat
mijn commando is.
En zoals u kunt zien,
hebben we alle informatie, alle inhoud
van etc/passwd kunnen lezen, ook al staat die niet
in de web root.
Dus het is opgeslagen in etc/passwd.
We kunnen dus alles in de server lezen van andere
websites, van andere
bestanden overal in de server, we kunnen
het lezen door het
volledige pad van dat bestand op te geven.
Het volgende wat ik wil laten
zien is het schrijven naar de server.
We gaan dus eigenlijk dingen schrijven
naar de server en dit is erg handig
omdat je dan elke code kunt schrijven die je wilt, dus bijvoorbeeld
de code voor een PHP script, je kunt een code schrijven van
een shell, een virus of een PHP code om andere verbindingen
naar je toe te halen.
Dus het is eigenlijk een kwetsbaarheid
voor het uploaden van bestanden.
En om dat te doen,
ga ik de code schrijven die ik hier
wil doen en ik noem dat, bijvoorbeeld,
gewoon een voorbeeld.
En we gaan een functie gebruiken die outfile heet, dus we
doen into outfile en dan geven
we aan waar we dat bestand
willen opslaan.
In het beste geval kun je naar
je web root schrijven en dat betekent dat
je het bestand via de browser kunt openen
en uitvoeren, dus je kunt een Weevely-bestand
uploaden en er dan verbinding mee maken en dat soort dingen doen.
Dus laten we dat eerst proberen.
Dus we doen het in var/www en dat is onze web root, zodat
we er toegang toe hebben of je
kunt het zelfs in
var/www zetten en dan mutillidae erachter
zetten om het daar op
te slaan.
Dus het commando is heel eenvoudig.
Weer vakbond selecteren.
Zorg ervoor dat je alles
op nul zet, zodat niets naar het bestand wordt
geschreven behalve wat
je hier zet en ik zet voorbeeld voorbeeld
en het wordt opgeslagen in ons bestand
in var/www/mutillidae en herinner dat
voorbeeld. txt.
Laten we proberen dit uit te voeren en kijken of het werkt.
Dit werkte niet.
En als je hier naar beneden
komt, zul je zien dat SQL of MySQL geen toestemming heeft om deze directory
aan te maken of ernaar te schrijven.
Dus het probleem is dat we niet, de
permissies die we hebben staan
ons niet toe om naar deze specifieke locatie te schrijven.
Dus om deze exploit te testen,
ga ik deze locatie veranderen in tmp wat de temp is en je zult zien
dat je daadwerkelijk
kunt schrijven naar temp dus in het echte leven in
scenario's, het hangt ervan af, kun
je het proberen en zien of je dingen kunt schrijven
of niet.
In dit geval proberen we te schrijven
naar temp en als
we temp inlezen, als
we dat wissen en dan ls en /tmp zien we dat we iets hebben
dat voorbeeld heet en als
je dat probeert te lezen,
zie je dat het de inhoud bevat van wat we eerder
deden en dat was de normale selectie
die je zou zien.
Dus wat je ziet voor het plaatsen van de spullen voor admin en dan
liet het ons zien wat er in zit, wat
een voorbeeld is wat we naar
het bestand wilden schrijven.
Nu kun je natuurlijk de admin en
de adminpass wegwerken door
gewoon een verkeerde gebruikersnaam
in te voeren en er zal hier niets worden
weergegeven, dus het enige wat je zult zien
is de uitvoer, wat een voorbeeld is.
Maar nogmaals, dit is alleen nuttig
als je naar je webserver kunt schrijven, zodat
je toegang hebt en dan je shell
kunt gebruiken of je
payload en het systeem verder kunt exploiteren.