390rb situs web dengan folder .git terbuka

Pada bulan Juli, peneliti keamanan Vladimir Smitka memutuskan untuk memeriksa Internet untuk keberadaan folder .git terbuka setelah audit serupa baru-baru ini dilakukan untuk domain Internet di Republik Ceko dan Slovakia.


bocor


Seperti kata pepatah: "itu tidak pernah terjadi, dan ini dia lagi." Izinkan saya mengingatkan Anda, 9 tahun yang lalu, kisah yang persis sama dengan segmen Internet Rusia yang dipengaruhi oleh sindrom .svn terbuka. Berikut ini adalah hasil kerja keras seorang peneliti Ceko, alat dan metode.


Alasan Kerentanan


Seorang penyerang dapat menarik cukup banyak informasi penting untuk keamanan situs dari direktori .git . Seperti inilah bentuk pohon proyek yang khas.


 ├── HEAD ├── branches ├── config ├── description ├── hooks │ ├── pre-commit.sample │ ├── pre-push.sample │ └── ... ├── info │ └── exclude ├── objects │ ├── info │ └── pack └── refs ├── heads └── tags 

Kata sandi dan kunci akses ke berbagai API, basis data, dan layanan cloud dapat disimpan di sana.


Seringkali, sebagaimana mestinya, upaya untuk membuka folder .git melempar kesalahan HTTP 403, tetapi alasannya hanyalah kurangnya index.html / index.php dan hak untuk secara otomatis mengindeks folder, sementara masing-masing file masih tersedia . Untuk memastikan bahwa situs tersebut tidak rentan, Anda harus membuka halaman /.git/HEAD .


File ini berisi tautan ke cabang proyek saat ini.


 $ cat .git/HEAD ref: refs/heads/master 

Walaupun pengindeksan direktori otomatis dinonaktifkan, Anda dapat dengan mudah mengembalikan seluruh folder .git dengan mengunduh file individual dan menentukan dependensi oleh prosesor ekspresi reguler, karena struktur .git didefinisikan dengan jelas. Ada juga alat khusus - GitTools , yang secara otomatis melakukan semua tindakan yang diperlukan.


Sarana produksi


Terlepas dari kerumitan dan ambisi tugas, biaya dalam hal uang tidak banyak. Untuk semuanya, tentang segala hal butuh 250 dolar AS.


Server


Smithka menyewa untuk proyek 18 VPS dan 4 server fisik. Menurutnya, pilihannya tidak jatuh pada AWS dengan alasan bahwa biaya penuh dari layanan, dengan mempertimbangkan volume lalu lintas raksasa yang diharapkan, ruang disk yang signifikan dan beban CPU yang tinggi, tidak dapat dengan mudah dihitung. Harga VPS sewaan sudah diketahui sebelumnya.


Daftar domain


Daftar ini didasarkan pada log teks dari proyek OpenData Rapid7 dalam JSON .


Teruskan Skema Database DNS
 { "$id": "https://opendata.rapid7.com/sonar.fdns_v2/", "type": "object", "definitions": {}, "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "timestamp": { "$id": "/properties/timestamp", "type": "string", "description": "The time when this response was received in seconds since the epoch" }, "name": { "$id": "/properties/name", "type": "string", "description": "The record name" }, "type": { "$id": "/properties/type", "type": "string", "description": "The record type" }, "value": { "$id": "/properties/value", "type": "string", "description": "The response received for a record of the given name and type" } } } 

Setelah beberapa penyaringan TLD dan domain tingkat kedua, daftar masih memiliki lebih dari 230 juta entri .


Selanjutnya, basis data dibagi menjadi blok-blok 2 juta catatan dan beban didistribusikan di berbagai server menggunakan aplikasi PHP.


Perangkat lunak


Python tergantung dari perpustakaan komunikasi asyncio async dengan aiohttp sebagai pekerja keras . Upaya untuk menggunakan Permintaan dan Urlib3 untuk tujuan ini tidak berhasil, yang sebelumnya mungkin cocok, tetapi peneliti tidak memahami batas waktu dalam dokumentasi. Yang kedua tidak mengatasi pengalihan domain, dan karena ini segera kehabisan memori di server.


Untuk mengidentifikasi platform dan profil situs rentan, Smitha menggunakan utilitas WAD , berdasarkan pada basis data Wappalyzer , ekstensi untuk browser web yang memungkinkan Anda menentukan teknologi yang digunakan pada halaman.


Utilitas baris perintah sederhana seperti GNU Parallels juga digunakan untuk mempercepat waktu eksekusi handler dan mencegah skrip berhenti karena hang tunggal.


 cat sites.txt | parallel --bar --tmpdir ./wad --files wad -u {} -f csv 

Hasil


Pemindaian berlangsung 2 minggu, sebagai hasilnya, peneliti:


  • menemukan 390 ribu situs web yang rentan;
  • mengumpulkan 290 ribu alamat email;
  • diberitahu 90 ribu penerima kerentanan yang ditemukan.

Menanggapi upayanya, Smithka menerima:


  • 18 ribu kesalahan pengiriman pesan;
    • sekitar 2000 surat terima kasih;
    • 30 alarm palsu dengan sistem honeypot;
    • 1 ancaman untuk memanggil polisi Kanada;

platform


Bahasa pemrograman yang paling populer ternyata adalah PHP . Namun, jika Anda menormalkan hasil ke bagian relatif dari PL tertentu, maka PHP memberi jalan kepada pimpinan Python dan Node.js. Namun, tidak jelas seberapa dapat diandalkannya statistik tersebut untuk menentukan pangsa pasar dari bahasa pemrograman yang diberikan.


Apache berada di urutan teratas dalam daftar popularitas server web, dengan Nginx di tempat kedua, dan klon Cina Nginx Tengine tiba-tiba di tempat ketiga.


OS yang paling populer adalah Ubuntu , kemudian Debian, dan CentOS di tempat ketiga.


OS


Nominasi CMS hampir menjadi teater aktor tunggal, dan aktor ini adalah WordPress dengan 85% dari semua platform ditemukan.


Apa selanjutnya


Memperbaiki kerentanan itu mudah.


.htaccess


 RewriteRule "(^|/)\.(?!well-known\/)" - [F] 

.nginx


 location ~ /\.(?!well-known\/) { deny all; } 

apache22.conf


 <Directory ~ "/\.(?!well-known\/)"> Order deny,allow Deny from all </Directory> 

apache24.conf


 <Directory ~ "/\.(?!well-known\/)"> Require all denied </Directory> 

Caddyfile


 status 403 /blockdot rewrite { r /\.(?!well-known\/) to /blockdot } 

Source: https://habr.com/ru/post/id422725/


All Articles