Rumah >Operasi dan penyelenggaraan >Keselamatan >Analisis contoh kerentanan log masuk pengguna sewenang-wenangnya Gogs
Gogs ialah sistem pengurusan fail/kod sumber terbuka (berdasarkan Git) yang serupa dengan GitHub Matlamat Gogs adalah untuk mencipta cara termudah, terpantas dan termudah untuk membina diri. perkhidmatan Git Serve. Dibangunkan dalam bahasa Go, Gogs boleh diedarkan sebagai binari kendiri dan menyokong semua platform yang disokong oleh bahasa Go, termasuk platform Linux, Mac OS X, Windows dan ARM.
gogs ialah platform perkhidmatan Git layan diri yang mudah dibina Ia mempunyai ciri-ciri pemasangan yang mudah, platform merentas, ringan dan ramai pengguna. Dalam versi 0.11.66 dan sebelumnya, (pustaka go-macaron/session) tidak mengesahkan sessionid Penyerang boleh menggunakan sessionid berniat jahat untuk membaca mana-mana fail, mengawal kandungan sesi dengan mengawal kandungan fail, dan kemudian log masuk ke. mana-mana akaun.
Versi yang terjejas adalah seperti berikut:
Gogs 0.11.66 dan versi sebelumnya
(2) Jalankan arahan berikut untuk memulakan gog: docker-compose up -d
(3) Selepas persekitaran dimulakan, akses http ://192.168.49.103:3000/install, anda boleh melihat halaman pemasangan. Semasa pemasangan, pilih pangkalan data sqlite dan dayakan fungsi pendaftaran.
(4) Gunakan siri Gob untuk menjana data fail sesi.
(5) Kemudian daftar akaun pengguna biasa, buat projek dan muat naik fail sesi yang baru dijana pada halaman "Versi Keluaran".
(6) Melalui URL lampiran ini, nama fail fail ini diketahui: ./attachments/2eb7f1a2-b5ec-482e-a297-15b625d24a10. Kemudian, bina Cookie: i_like_gogits=../attachments/2/e/2eb7f1a2-b5ec-482e-a297-15b625d24a10 Selepas mengakses, anda boleh mencari pengguna yang telah berjaya log masuk dengan id=1 (iaitu pentadbir akar)
5. Analisis Kerentanan dan Eksploitasi
Pertama sekali, untuk setiap pengguna, kami boleh membuat gudang dan memuat naik mana-mana fail dengan kandungan yang boleh dikawal melalui fungsi keluaran, dengan itu memalsukan sesi untuk kami Fail menyediakan syarat.Melalui fungsi explore, kami boleh menemui banyak gudang pengguna Memasuki halaman maklumat pengguna, kami boleh mendapatkan semua maklumat (uid, nama pengguna) yang diperlukan untuk bina sesi pengguna.Melalui kod file.go di atas, kami mendapati bahawa kandungan fail sesi ialah pengekodan Gob, menggunakan muatan untuk menjana sesi yang ditulis oleh P Niu.
Daripada ini, kami boleh menjana sesi, dan melalui fungsi muat naik keluaran yang tersedia untuk setiap pengguna, kami memuat naik sesi palsu kami ke pelayan.
Struktur direktori bagi gog yang dikonfigurasikan lalai dan fail keluaran ialah lampiran/fid[0]/fid[1]/fid. Struktur direktori tempat sesi disimpan ialah sessions/sid[0]/sid[1]/sid. Selain itu, folder sesi dan lampiran disimpan dalam folder data yang sama.Kerana gog akan membahagikan sesi dan membinanya ke laluan terakhir sebelum membacanya. Lampiran dan sesi berada dalam folder yang sama baru sahaja dimuat naik. Laluan fail, iaitu ../attachments/1/7/17f4120b-1a0d-416a-b0b0-def4342ded5b, fungsi yang membaca sesi menyelesaikan laluan ke sesi/././../attachments/ 1/7/17f4120b -1a0d-416a-b0b0-def4342ded5b ialah fail yang kami muat naik dan akhirnya melengkapkan log masuk mana-mana pengguna.
6. Cadangan pembaikanGogs boleh dimuat turun dan disusun daripada Github dalam cawangan yang dibangunkan, di mana kelemahan ini telah diperbaiki, atau anda boleh meningkatkan kepada versi terkini Gogs.Atas ialah kandungan terperinci Analisis contoh kerentanan log masuk pengguna sewenang-wenangnya Gogs. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!