SQL Injection via POST method

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik werk in security en ben met SQL injection bezig in een training lab.

Ik zit een beetje vast nu, omdat ik tegen een POST method ben aangelopen.

Ik heb 3 parameters (via tamper data):

username: wronguser' or 1=1;#
password: "blank"
submit: Log+In

Daarmee log ik successvol in en ben ik site admin. Hartstikke leuk. Maar daar heb ik verder geen SQL injection mogelijkheden. Ik moet het met dit ene username field doen. Hoe krijg ik hier iets aan geplakt? Zodra ik met UNION, extra ; etcetera ga werken, gaat het inloggen mis...(gaat weer terug naar de login pagina alsof de username niet bestaat)

Ik heb me het apenzuur gezocht op het net en alles wijst naar sqlmap of naar het puur inloggen en daarna met get aan de slag... er moet toch een manier zijn om via het username field of tamper data wat meer te kunnen dan alleen inloggen?

Acties:
  • 0 Henk 'm!

  • Onbekend
  • Registratie: Juni 2005
  • Laatst online: 21:24

Onbekend

...

Met het ;-teken kun je meerdere query's achter elkaar draaien.
Je moet in de username box de tekst zo maken dat de eerste query en de laatste query klopt. En daar tussenin de query's invullen zoals jij ze wilt hebben.

Speel ook Balls Connect en Repeat


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Onbekend schreef op zondag 23 augustus 2015 @ 13:27:
Met het ;-teken kun je meerdere query's achter elkaar draaien.
Je moet in de username box de tekst zo maken dat de eerste query en de laatste query klopt. En daar tussenin de query's invullen zoals jij ze wilt hebben.
Dan zou je dus zoiets krijgen:

wronguser' or 1=1; union select 1,'test',3,4 into outfile '/var/www/test.txt' ;#

Maar test.txt bestaat niet en het login scherm laadt alleen maar opnieuw.

(ik heb ook variaties geprobeerd. Zonder toegang to /var/www zou ik toch op z'n minst wat terug moeten krijgen?

Acties:
  • 0 Henk 'm!

  • emnich
  • Registratie: November 2012
  • Niet online

emnich

kom je hier vaker?

Het makkelijkste kan je zorgen dat de eerste query juist niets teruggeeft. Anders moet je weten hoe die eerste er uit ziet (hoeveel velden hij opvraagt) omdat het aantal velden gelijk moet zijn.

Acties:
  • 0 Henk 'm!

  • Onbekend
  • Registratie: Juni 2005
  • Laatst online: 21:24

Onbekend

...

Verwijderd schreef op zondag 23 augustus 2015 @ 13:34:
[...]
wronguser' or 1=1; union select 1,'test',3,4 into outfile '/var/www/test.txt' ;#
Hier heb je union achter de ;-teken staan en dat gaat niet werken.
Daarnaast probeer je iets naar een text-file weg te schrijven waarvan je niet weet dat je daarop schrijfrechten hebt.

Je kunt het beste zelf lokaal oefenen met query's, voordat je een extra moeilijkheidsgraad met sql-injection er bij gaat gebruiken.

Speel ook Balls Connect en Repeat


Acties:
  • 0 Henk 'm!

  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
Verwijderd schreef op zondag 23 augustus 2015 @ 13:34:
[...]


Dan zou je dus zoiets krijgen:

wronguser' or 1=1; union select 1,'test',3,4 into outfile '/var/www/test.txt' ;#

Maar test.txt bestaat niet en het login scherm laadt alleen maar opnieuw.

(ik heb ook variaties geprobeerd. Zonder toegang to /var/www zou ik toch op z'n minst wat terug moeten krijgen?
voor de union mag geen ; staan... en je tweede select moet exact evenveel velden selecteren als de hoofdquery doet. Als je niet weet hoeveel de hoofdquery er doet kan dat alleen door trial en error

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
emnich schreef op zondag 23 augustus 2015 @ 13:38:
Het makkelijkste kan je zorgen dat de eerste query juist niets teruggeeft. Anders moet je weten hoe die eerste er uit ziet (hoeveel velden hij opvraagt) omdat het aantal velden gelijk moet zijn.
Ik moet alleen inloggen om toegang te krijgen tot de queries?

Dan moet ik op de een of andere manier de injectie username and mijn query samenvoegen?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ok thanks guys:

You are logged in as: wronguser' or 1=1 union select 1,2,3,4,5,6;#

nu kan ik hiermee verder spelen

Acties:
  • 0 Henk 'm!

  • emnich
  • Registratie: November 2012
  • Niet online

emnich

kom je hier vaker?

Verwijderd schreef op zondag 23 augustus 2015 @ 13:43:
[...]


Ik moet alleen inloggen om toegang te krijgen tot de queries?

Dan moet ik op de een of andere manier de injectie username and mijn query samenvoegen?
Die eerste query wordt natuurlijk hoe dan ook uitgevoerd, ook al geef je geen goede un/pw op.

Ik weet niet wat je nog meer uit het systeem wilt halen, misschien zijn er wel betere queries waarmee je dat kan doen dan de inlog query. Daarnaast kan je een hoop informatie halen uit de eventuele foutmeldingen.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
emnich schreef op zondag 23 augustus 2015 @ 13:47:
[...]

Die eerste query wordt natuurlijk hoe dan ook uitgevoerd, ook al geef je geen goede un/pw op.

Ik weet niet wat je nog meer uit het systeem wilt halen, misschien zijn er wel betere queries waarmee je dat kan doen dan de inlog query. Daarnaast kan je een hoop informatie halen uit de eventuele foutmeldingen.
Alleen de username query schijnt injectable the zijn...

beetje jammer... Ik had eindelijk success met :

wronguser' or 1=1 union select 1,2,3,4,5,6 ;#

Ik krijg de overzichtspagina te zien. Verder geen velden met mijn query response want die zijn er niet (alleen 4 links)

Zodra ik afwijkende dingen ga gebruiken, werkt ie weer niet (geen login en geen info):

wronguser' or 1=1 union select 1,2,3,4,5,6 INTO OUTFILE '/tmp/result.txt';#

wronguser' or 1=1 union select 1,file_priv,3,4,5,6 ;#

wronguser' or 1=1 union select 1,load_file(/etc/passwd),3,4,5,6 ;#

wronguser' or 1=1 union select 1,test,3,4,5,6 ;#

Dit is duidelijk niet mijn ding... Ik ga een boek bestellen:

http://www.bookdepository...-Mike-Shema/9781597499514

Acties:
  • 0 Henk 'm!

  • emnich
  • Registratie: November 2012
  • Niet online

emnich

kom je hier vaker?

Verwijderd schreef op zondag 23 augustus 2015 @ 14:24:
[...]


Alleen de username query schijnt injectable the zijn...
Heb je niet een linkje zodat we zelf even kunnen kijken?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
emnich schreef op zondag 23 augustus 2015 @ 14:27:
[...]

Heb je niet een linkje zodat we zelf even kunnen kijken?
Nope, is een test omgeving... Ben niet bezig met het hacken van een online, zimbabwaanse shoenenhandel :)

Dit is de webapp:

http://www.securityfocus.com/bid/38639/discuss

Acties:
  • 0 Henk 'm!

  • emnich
  • Registratie: November 2012
  • Niet online

emnich

kom je hier vaker?

Verwijderd schreef op zondag 23 augustus 2015 @ 14:37:
[...]


Nope, is een test omgeving... Ben niet bezig met het hacken van een online, zimbabwaanse shoenenhandel :)
En wat is de verdere bedoeling dan? Je bent nu in het systeem en je kan een willekeurige SQL uit laten voeren.

Je kan eventueel kijken of je een nieuwe mysql user aan kan maken:
code:
1
CREATE USER 'befrankt' IDENTIFIED BY 'secret';

en daarna iets als
code:
1
GRANT ALL PRIVILEGES ON *.* TO befrankt@’%';


Dan kan je kijken of je een gewone verbinding kan maken met de database.

Als je op een andere manier gegevens uit de database wilt krijgen dan zal je moeten kijken welke informatie nu getoond wordt op het scherm. Bijvoorbeeld de username en dan kijken of je (bijv met CONCAT) daar informatie aan toe kan voegen.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Ik heb geen idee waarom je zo vasthoudt aan die union, die slaat namelijk nergens op. Een union gebruik je om de resultaten van twee verschillende selects die hetzelfde type data teruggeven aan elkaar te koppelen zodat je één resultaatset overhoudt. Het is vooral (vrijwel alleen) handig wanneer het resultaat van de query die de injectie-kwetsbaarheid heeft daadwerkelijk afgedrukt wordt op de pagina, want zonder echo-code kun je selecten wat je wil, je krijgt het niet te zien. Unions kunnen dus heel handig zijn bij SQL-injectie maar het is niet het enige truukje.

Als domweg dumpen niet lukt kun je nog proberen in te loggen als admin. Meestal is dat namelijk user-ID 1, dus je query zo aanpassen dat je als die user in wil loggen zou genoeg moeten zijn. Volledige databasetoegang is leuk, maar root-toegang tot de app zelf kan ook heel interessant zijn.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • sh4d0wman
  • Registratie: April 2002
  • Laatst online: 17:01

sh4d0wman

Attack | Exploit | Pwn

Aangezien je boek waarschijnlijk nog onderweg is, misschien heb je wat aan deze video (let niet te veel op de titel): YouTube: Joe McCray - Hack a bank basics (Advanced SQL Injection.)

This signature has been taken down by the Dutch police in the course of an international lawenforcement operation.


Acties:
  • 0 Henk 'm!

  • Barryvdh
  • Registratie: Juni 2003
  • Laatst online: 12:49
Maar het resultaat wordt toch afgedrukt op het scherm? je kreeg te zien: You are logged in as..
Dus als je andere data selecteert met je union als je username veld, krijg je toch die output te zien?

Acties:
  • 0 Henk 'm!

  • Douweegbertje
  • Registratie: Mei 2008
  • Laatst online: 08-09 15:03

Douweegbertje

Wat kinderachtig.. godverdomme

Verwijderd schreef op zondag 23 augustus 2015 @ 14:24:
[...]


Alleen de username query schijnt injectable the zijn...

beetje jammer... Ik had eindelijk success met :

wronguser' or 1=1 union select 1,2,3,4,5,6 ;#

Ik krijg de overzichtspagina te zien. Verder geen velden met mijn query response want die zijn er niet (alleen 4 links)

Zodra ik afwijkende dingen ga gebruiken, werkt ie weer niet (geen login en geen info):

wronguser' or 1=1 union select 1,2,3,4,5,6 INTO OUTFILE '/tmp/result.txt';#

wronguser' or 1=1 union select 1,file_priv,3,4,5,6 ;#

wronguser' or 1=1 union select 1,load_file(/etc/passwd),3,4,5,6 ;#

wronguser' or 1=1 union select 1,test,3,4,5,6 ;#

Dit is duidelijk niet mijn ding... Ik ga een boek bestellen:

http://www.bookdepository...-Mike-Shema/9781597499514
Alleen is dit onderwerp juist niet geschikt om te leren via een boekje. Prima als je al vergaande kennis hebt om vervolgens boeken te lezen over extra "ideeën" e.d. maar zolang je geen achterliggende kennis hebt van de daadwerkelijke programmeertaal, dan ga je ook niets hacken.

Iedereen kan random injections proberen, hell dat kan zelfs geautomatiseerd.. maar daar schiet je niets mee op. Aan je voorbeelden te zien insert je gewoon random data gevonden via google op "injection cheat sheet" :p Zelfs de statements kloppen niet. Als je een SELECT doet, moet je wel weten waarop je hem select, middels "FROM".

Niet om heel lullig te doen, maar wat wil je uiteindelijk bereiken?

Acties:
  • 0 Henk 'm!

  • Johnsel
  • Registratie: Februari 2004
  • Laatst online: 08-03 21:07
@befrankt:
Ja, je kunt meer met die parameter. Als je bijvoorbeeld het daadwerkelijke wachtwoord wilt proberen te achterhalen van de admin user kun je dit dmv Blind SQL injection doen. Het probleem waar je nu tegenaan hikt is namelijk dat je geen terugkoppeling krijgt over je input, i.e. je logt in of je doet dat niet.

Door middel van "time based blind SQL injectie" kun je een query uitvoeren die indien iets true is x sec pauzeert. Door deze conditioneel aan de substring(0,1) van password == "a" te hangen kun je checken of de eerste karakter van het password `a` is. Door zo elke karakter af te gaan kun je uiteindelijk het wachtwoord achterhalen. Success!

Verder referentie:
https://www.owasp.org/index.php/Blind_SQL_Injection

[ Voor 5% gewijzigd door Johnsel op 24-08-2015 04:33 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Douweegbertje schreef op maandag 24 augustus 2015 @ 02:03:
[...]


Alleen is dit onderwerp juist niet geschikt om te leren via een boekje. Prima als je al vergaande kennis hebt om vervolgens boeken te lezen over extra "ideeën" e.d. maar zolang je geen achterliggende kennis hebt van de daadwerkelijke programmeertaal, dan ga je ook niets hacken.

Iedereen kan random injections proberen, hell dat kan zelfs geautomatiseerd.. maar daar schiet je niets mee op. Aan je voorbeelden te zien insert je gewoon random data gevonden via google op "injection cheat sheet" :p Zelfs de statements kloppen niet. Als je een SELECT doet, moet je wel weten waarop je hem select, middels "FROM".

Niet om heel lullig te doen, maar wat wil je uiteindelijk bereiken?
Ik werk in security en ben bezig mijn zwakke punten aan te scherpen. Ik ben met het OSCP lab bezig dit jaar en daarin is SQL injection mijn zwakte (zoals je ziet :) )
Er zijn inderdaad miljoenen sql injection cheatsheets op internet te vinden en een hele hoop 3 pagina SQL injection tutorials, maar ik zoek iets diepers. Iets wat laat zien hoe de databases werken en hoe dat uit te buiten is. Dit boek schijnt daar sterk in te zijn. Een volledige database administration carriere van 10 jaar is wat buiten mijn vakgebied :)

En thanks Johnsel. Ik log in met full admin rights en maak dus gewoon voor mezelf een nieuwe admin account (met wachtwoord naar keuze) aan. Ik wil uiteindelijk een shell naar de server krijgen. Het zou via een INTO OUTFILE(shell.php) moeten kunnen schat ik zo in. Daarna open je de shell.php via de browser. Dat is de theorie in elk geval.

[ Voor 11% gewijzigd door Verwijderd op 24-08-2015 05:58 ]


Acties:
  • 0 Henk 'm!

  • BlueZero
  • Registratie: Mei 2007
  • Laatst online: 10-09 15:45
Je grootste probleem lijkt me dat je geen output heb welke je kan uitlezen, echter de gebruikersnaam wordt waarschijnlijk wel ergens getoond op het scherm (U bent ingelogd als: ....). Of de informatie wordt in een niet versleutelde sessie opgeslagen.

Dit kan je doen met bijvoorbeeld een UNION en een SELECT ... AS `username`

Wachtwoorden lijken niet gehashed opgeslagen in de software dus die zou je alvast kunnen ophalen. Verder is er volgens mij ook een backup functionaliteit in de software die een niet versleutelde dump maakt op de schijf.
Pagina: 1