www.blog.hr II

Sada malo detaljnije o sql injection propustu na www.blog.hr.

Kao što sam spomeno u predhodnom postu, pronašao sam 2 sql injekcje.
Prva je u session id (SID). Kada se loginujete, automatski se redirektuje na http://www.blog.hr/edit/?SID=990930d7e746b4d0b4b7cd3f85eb281b&cmd=blogeditor
Vrijednost SIDa (SID=990930d7e746b4d0b4b7cd3f85eb281b), blog.hr uzima ovakvog (SID) kakav je, bez ikakvog filtriranja, te ga ubacuje u sql query. Time daje nama mogućnost da ubacujemo svoj kod u sql query. Samo je problem što se u ovom slučaju izvršavaju dva sql querya, prvo SELECT pa onda UPDATE. Stoga nisam uspio exploitirati ovu grešku uspješno, a da mi ne javi grešku, tj da ne zakoči na UPDATE naredbi. Kako bilo, error poruka koju dobijemo nam daje korisnu informaciju. Pokretanjem urla http://www.blog.hr/edit/?SID=0’ poruka o grešci je
AdminMax V
ERROR [db]: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ”0”’ at line 1
SQL query: select *, UNIX_TIMESTAMP(sess_dt) AS sess_dt, UNIX_TIMESTAMP(exp_date) AS exp_date from users where sess_id='0”
Vrijedna informacija je da je naziv tabele sa podacima korisnika users.

Nakon daljnjeg istraživanja, naišao sam na još jedan sql injection bug.
U sekciji reportaže, svaka reportaža ima na slici link do detaljnjijeg izvješća, il već do čega. Primjer takvog jednog linka je http://www.blog.hr/jump/?f=1&id=397&url=http://petraijosipa.blog.hr/arhiva-2006-12.html#1621898537. Prvo upisuje u bazu broj klikova, tj dodaje jedan novi klik za trenutnu reportažu a onda napravi redirekciju na vrijednost parametra url. Sql inj bug je u parametru id, koji također nije filtriran. Primjer urla na koji dobijemo poruku o grešci je http://blog.hr/jump/?&id=0'&url=x. Poruka je
AdminMax V
ERROR [db]: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ”0” LIMIT 1’ at line 1
SQL query: update newsflash set hits=hits+1 where id='0” LIMIT 1
Ako parametar id daje tačnu vrijednost u sql queryu, desit će se redirekcija na vrijednost url parametra. Npr pokretanjem urla http://blog.hr/jump/?&id=’ OR 1=1/*&url=google.ba otvorit će se google.ba dok pokretanjem urla http://blog.hr/jump/?&id=’ OR 1=0/*&url=google.ba dobijemo error.
Sada postoji jedan problem. Ovaj drugi bug nekako i prolazi prilikom jednostavnog testiranja sa OR 1=1 i sličnim komandama. Ali da bi mogli dobiti informacije o korisnicima, md5 hash šifre naravno, potrebno je malo bolje znanje sqla. Pošto ovim bugom upravljamo sa sql queryem koji ne radi sa users tabelom, potrebo je navesti ime tabele users gdje god koristimo neko polje iz te tabele. Jer, opet ponavljam, sql query kojim upravljamo u originalnom obliku ne radi sa tom tabelom (šta god da radi).
Neću još pisati kako se tačno exploitiše ovaj bug, nit još planiram objavit exploit ovdje.

7 komentara

Komentariši