Serang ke Halaman Github dengan intersepsi situs di domain Anda


Sebagian besar pengembang tahu dan menyukai halaman github. Jika Anda belum bertemu dengan mereka, layanan ini memungkinkan untuk membuat situs statis dari repositori Anda, yang akan tersedia di domain smth.imtqy.com. Ini sangat nyaman untuk statika sementara, dokumentasi, situs kecil sederhana dan sebagainya. Tidak perlu memikirkan semacam server web tambahan.


Ada juga kesempatan untuk mengikat domain Anda ke repositori - maka semuanya akan menjadi sangat indah. Bahkan ada dukungan SSL.


Setelah pengantar singkat ini, kita beralih ke topik artikel yang sebenarnya. Baru-baru ini (9 November) saya punya cerita yang menarik. Saya sarankan untuk tidak membacanya dalam satu tegukan, tetapi untuk berhenti secara berkala dan bertanya-tanya apa arti semua catatan pengantar yang diterima saat ini. Saya pikir latihan yang menarik akan keluar dari ini, meskipun plot detektif saya tidak terlalu lama dan bengkok.


Saya memutuskan untuk menambahkan alamat resume saya ke profil berikutnya. Ringkasannya hanya terletak di halaman github, karena mengapa tidak. Karena kebiasaan, dia mengklik untuk memeriksa apakah semuanya berfungsi ... Dan tiba-tiba saya menemukan sesuatu yang aneh di sana:



Saya sangat terkejut. Pergi ke pengaturan repositori. Saya melihat bahwa saat ini tidak terikat ke domain yang harus diikat. Saya mencoba membentak. Tiba-tiba mendapat kesalahan:


CNAME whois.jehy.ru sudah digunakan. Lihat https://help.github.com/articles/troubleshooting-custom-domains/#cname-already-taken untuk informasi lebih lanjut

Dia sedikit tegang dan terkejut. Setelah itu saya melihat lebih dekat pada halaman yang tiba-tiba ini. Seperti sebelumnya, saya hanya melihat templat standar tertentu, hak cipta dari 2013 dan tiba-tiba ada tautan ke peta situs. Sitemap berisi tanggal pembuatannya dari tanggal saat ini, serta dokumen html statis dengan judul dan konten yang sangat mengingatkan pada metode validasi google (nama googlef3e716e930ae1730 , konten google-site-verification: googlef3e716e930ae1730.html ). Di sini saya sudah tegang, berlari, mengubah catatan NS ke server saya, dan mulai berpikir apa yang salah.


Googling permukaan mengungkapkan hal berikut:


  • Tampaknya pembajakan domain adalah masalah yang berpotensi diketahui, dan sudah diselesaikan - cukup untuk mendaftarkan alamat repositori Anda di CNAME .
  • Meskipun demikian, dalam banyak instruksi tentang mengikat github ke domain (termasuk dari 10 pencarian teratas), IP ditulis secara langsung, atau cukup imtqy.com.

Kemudian saya berpikir bahwa saya mungkin memiliki catatan CNAME. Jadi saya mengubahnya ke yang benar, terkait dengan repositori saya. Sekarang entri tampak seperti ini:


 dig whois.jehy.ru +nostats +nocomments +nocmd ; <<>> DiG 9.11.3-1ubuntu1.2-Ubuntu <<>> whois.jehy.ru +nostats +nocomments +nocmd ;; global options: +cmd ;whois.jehy.ru. IN A whois.jehy.ru. 6984 IN CNAME jehy.github.io. jehy.github.io. 3384 IN A 185.199.108.153 jehy.github.io. 3384 IN A 185.199.110.153 jehy.github.io. 3384 IN A 185.199.109.153 jehy.github.io. 3384 IN A 185.199.111.153 

Dan apa yang mengejutkan saya ketika saya kembali melihat pendaratan “Coming Soon” yang luar biasa ini!


Untuk memeriksa, saya bahkan melakukan tes lain:


1) Memulai test record CNAME baru test.jehy.ru dan menunjukkan profil Ryan Dahl untuknya
2) Memulai repositori tes , menetapkan untuk itu domain kustom test.jehy.ru. Semuanya tampak benar, sesuai dengan instruksi, dan pengikatan tidak boleh bekerja. Namun sayang, hasilnya jelas .


Selanjutnya, saya menghubungi dukungan teknis github melalui formulir aneh di situs . Di sana mereka mengatakan kepada saya bahwa mereka bisa melepaskan repositori orang lain dari domain saya jika saya menambahkan catatan NS lain untuk saya sendiri. Saya melakukannya, menulisnya kembali, dan dari Jumat hingga Senin saya tidak menerima jawaban. Mungkin perlu menulis ulang dalam bentuk ini - tetapi itu sudah lebih tinggi dari kekuatan saya. Jadi saya baru saja meninggalkan situs statis saya di server saya.


Pada saat itu, saya memiliki tiga opsi untuk apa yang terjadi:


1) Seseorang secara tidak sengaja menuliskan alamat “whois.jehy.ru” di repositori mereka pada tahun 2018, saat meletakkan halaman arahan dengan “segera hadir” dari 2013, di mana karena alasan tertentu terletak html Google untuk memeriksa hak. Yah, hampir tidak.
2) Beberapa bug gila terjadi. Itu juga tidak mungkin. Dia mengulangi di situs tes kedua.
3) Fokus berbasis CNAME tidak pernah berhasil, atau rusak, dan penyerang menggunakan ini untuk menyerang. Sejauh ini, menurut saya ini pilihan yang paling mungkin.


Lalu saya ingat bahwa dalam kasus pengikatan domain, github sendiri membuat file bernama CNAME di repositori Anda. Dan dia pergi mencari siapa yang menambahkan domain saya. Dan - bingo!


Seorang penyerang ditemukan dalam pencarian:



Ini domain saya:



Dan di sini ada banyak yang lain:



Seperti yang Anda lihat, ini bukan kecelakaan sama sekali. Seseorang mencuri jumlah domain yang layak - termasuk tingkat kedua! Dan dia mendapat kendali penuh atas konten mereka, termasuk mengonfirmasi di Google hak untuk memiliki domain ini!


Ngomong-ngomong, Anda juga dapat menambahkan bahwa kadang-kadang seorang peretas tidak hanya mengganti konten situs, tetapi juga mengambil repositori asli, setelah itu menambahkan file verifikasi di sana. Dan itu sudah menyenangkan setidaknya selama sebulan (saya menemukan komitmen langsung dari 6 Oktober). Ya, pengikut serupa di sana.


Selanjutnya, asumsi saya tentang bagaimana serangan seperti itu terjadi, dan mengapa itu diperlukan.


1) Pertama, peretas menemukan situs yang memutuskan pada imtqy.com. Ini cukup mudah dilakukan.
2) Selanjutnya, itu menyaring mereka, hanya menyisakan yang mengembalikan kesalahan (tampaknya hanya ada 404 di sana). Mungkin ada banyak kasus di mana repositori tidak terikat - seseorang tidak mengkonfigurasi repositori, seseorang menghapusnya, seseorang mendapatkan pengaturan yang mengikat (menurut saya itu terjadi ketika saya mengubah cabang untuk halaman github).
3) Kemudian peretas hanya membuat repositori baru dengan konten yang dia butuhkan dan mengikatnya ke domain "bebas". Voila!
4) Maka semuanya hanya tergantung pada imajinasi peretas. Doorway, menempatkan tautan, memotong data, mengakses manajemen Google Apps melalui Google ... Ada banyak opsi.


Apa yang saya lakukan selanjutnya, dengan semua bukti penggunaan bindings berbahaya di tangan:


  • Dijelaskan dalam korespondensi dengan support@github.com semua detail;
  • Sekali lagi menulis ulang mereka dalam formulir kontak;
  • Menambahkan tiket ke hackerone.com . Saya harus mengatakan bahwa itu menyatakan bahwa githubpages.io tidak termasuk dalam program hadiah, tetapi tidak ada pilihan lain. Karena itu, saya harus mengabaikan peringatan ini, dan bahkan robot, yang dengan lembut menyarankan saya untuk tidak mengirim laporan ini karena alasan yang sama.

Sampai hari ini, mereka belum menjawab formulir kontak hingga hari ini, tetapi dua hari kemudian mereka menjawab saya di hackerone. Singkatnya, jawabannya adalah bahwa ini adalah fitur layanan yang diketahui, ini bukan kerentanan, dan tim spam terlibat dalam hal-hal seperti itu. Laporan ditutup sebagai "informatif", jadi saya menulis tentang semua yang terjadi dengan hati nurani yang jelas. Mereka juga memberi tahu saya bahwa akun yang saya indikasikan telah diblokir. Saya memeriksa - ya, dia tidak ada lagi. Pengikutnya menghilang beberapa hari kemudian (tidak jelas mengapa tidak segera).


Seseorang dapat mengakhiri ini dan mengatakan bahwa semuanya beres ... Tetapi pada kenyataannya, saya sangat malu dengan situasi ini:


  • Mengapa akun ini tidak dalam hitungan bulan? Ada konten yang identik, ada file validasi google di mana-mana, pada satu akun ada banyak situs seperti itu ... Tanda-tanda umum - kereta dan gerobak kecil.
  • Mengapa tim spam tidak memeriksa repositori terkait?
  • Mengapa Anda melihat ilusi keamanan dalam instruksi untuk mengikat domain, menyarankan agar Anda menetapkan nama repositori Anda di CNAME jika ini tidak memengaruhi apa pun?
  • Mengapa tidak ada mekanisme peringatan yang akan mengatakan bahwa domain yang sebelumnya ditautkan ke akun Anda sekarang ditautkan ke yang lain?
  • Mengapa di github tidak mungkin menjawab email dari dukungan? Atau mungkin saya jatuh di bawah semacam filter?

Tetapi pertanyaan utama yang menggangguku adalah mengapa github tidak memeriksa catatan NS dari domain yang terdaftar di halaman github untuk keberadaan repositori khusus CNAME di dalamnya? Ini adalah operasi paling sederhana yang dapat dilakukan ketika mengikat domain, dan tidak memakan waktu ... Selain itu, instruksi memberikan perasaan bahwa itu dimaksudkan untuk menjadi .... Jadi mengapa cek ini rusak?


Secara umum, saya menulis posting ini dengan harapan bahwa dalam beberapa bentuk akan mencapai github, dan para pria akan mengambil tindakan. Menjelang pertanyaan "mengapa membicarakannya, semua orang akan memanjat untuk melakukannya sekarang" - Saya akan menjawab bahwa lubang itu sudah terkenal dan secara aktif dieksploitasi. Dan sekarang jelas bahwa domain "terbengkalai" terus-menerus dipindai, sehingga beberapa peserta baru tidak akan mengubah gambar.


Biasanya saya tidak melakukannya, tetapi akan lebih baik jika Anda menepuk terjemahan dari artikel ini, yang saya tulis di media. Ya, saya tahu bahwa habr sekarang multibahasa, tetapi untuk semua waktu saya telah melihat satu setengah posting dalam bahasa Inggris, dan saya tidak berpikir bahwa ada orang yang dapat memperhatikan mereka. Dan di media, sering ada posting teknis yang bagus. Jadi akan sangat bagus jika Anda membantu memperhatikan lubang ini. Jika ada - saya tidak akan mendapatkan uang untuk ini, tidak ada kartu AS, bunganya murni altruistik.


Apa lagi yang bisa Anda pikirkan di akhir? Mungkin itu selalu layak diingat ketika Anda menempatkan sesuatu pada kapasitas pihak ketiga. Tentu saja, di Internet tidak ada yang pribadi sama sekali, dan semuanya adalah pihak ketiga - domain "Anda" milik registrar, server "Anda" milik Google, Amazon, atau orang lain ... Tidak dapat dikatakan bahwa github kurang dapat diandalkan daripada server "milik sendiri" ... Tapi server "Anda" entah bagaimana lebih dekat ke tubuh dan lebih mudah diprediksi. Secara umum, Anda selalu perlu mengingat tentang sumber daya Anda, tentang pentingnya sumber daya tersebut, potensi kerugian saat mencegatnya, dan bahwa dalam layanan pihak ketiga dapat terjadi kekhususan kerja yang sangat mendadak.


PS Terima kasih cavin untuk gambarnya dan pndpnd untuk menerjemahkan artikel ke dalam bahasa Inggris.

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


All Articles