Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Cara menghasilkan semula kerentanan RCE terhadap akses tanpa kebenaran kepada antara muka API XXL-JOB

Cara menghasilkan semula kerentanan RCE terhadap akses tanpa kebenaran kepada antara muka API XXL-JOB

WBOY
WBOYke hadapan
2023-05-12 09:37:055070semak imbas

XXL-JOB Penerangan

XXL-JOB ialah platform penjadualan tugas teragih yang ringan Matlamat reka bentuk terasnya ialah pembangunan pesat, pembelajaran mudah, ringan dan pengembangan yang mudah. Kod sumber kini dibuka dan disambungkan ke barisan produk dalam talian banyak syarikat, sedia untuk digunakan di luar kotak.

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

1. Butiran Kerentanan

Isu utama kerentanan ini ialah mod GLUE. XXL-JOB menyokong tugasan berbilang bahasa dan skrip melalui "mod GLUE". Ciri tugasan mod ini adalah seperti berikut:

● Sokongan berbilang bahasa: menyokong Java, Shell, Python, NodeJS, PHP, PowerShell...dsb.

● IDE Web: Tugasan dikekalkan di pusat penghantaran dalam bentuk kod sumber, dan pembangunan dan penyelenggaraan dalam talian disokong melalui IDE Web.

● Kesan dinamik: Kod tugas yang dibangunkan oleh pengguna dalam talian melalui IDE Web ditolak ke pelaksana dari jauh dan dimuatkan dalam masa nyata untuk pelaksanaan.

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

Seperti yang ditunjukkan dalam rajah di atas, jika anda menulis kod serangan dalam kod tugas mod GLUE dan menolaknya ke pelaksana untuk pelaksanaan, anda boleh menyebabkan serangan jauh .

[Perihalan Kerentanan]

Antara muka Restful API XXL-JOB atau antara muka RPC tidak dikonfigurasikan dengan langkah pengesahan Penyerang tanpa kebenaran boleh membina permintaan berniat jahat dan menyebabkan pelaksanaan jauh

[Penilaian kerentanan]

Risiko tinggi

[Versi terjejas]

XXL-JOB < ;= 2.2.0

2. Persediaan persekitaran

Idea keseluruhan: Muat turun kod sumber->Kebergantungan pemasangan Maven->Konfigurasi dan penggunaan "Pusat Penjadualan"- >Konfigurasikan dan gunakan "projek pelaksana" ->Selesaikan penggunaan

Persekitaran pembangunan setempat: Java8+Maven3.6

1 ://github.com/xuxueli/xxl-job/releases/tag/v2.2.0

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

2. Maven memuat turun dependensi yang diperlukan

Idea membuka kod sumber yang dinyahmampat dan secara automatik memasang kebergantungan yang berkaitan dalam pom Anda juga boleh menggunakan perintah maven dalam terminal untuk memuat turun kebergantungan yang diperlukan

3 >

Lokasi skrip SQL permulaan pangkalan data penjadualan ialah:

/xxl-job/doc/db/tables_xxl_job.sql

Oleh kerana Mysql tempatan tidak dipasang, jadi gunakan docker untuk memasangnya. 如何进行XXL-JOB API接口未授权访问RCE漏洞复现

a) docker pull mysql:5.7

b) sudo docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7Gunakan navicat untuk menyambung ke pangkalan data

Anda boleh klik pada sudut kiri bawah untuk melengkapkan ujian sambungan. Klik kanan pangkalan data yang diimport, pilih Jalankan fail SQL, dan klik Mula untuk melengkapkan import pangkalan data.

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

4 Konfigurasikan dan gunakan "Pusat Penjadualan"

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

Projek pusat penjadualan: xxl-job-admin

<.> Fungsi: Pengurusan bersatu penjadualan tugas pada platform penjadualan tugas, bertanggungjawab untuk mencetuskan pelaksanaan penjadualan dan menyediakan platform pengurusan tugas. Anda boleh mengubah suai konfigurasi pangkalan data dalam application.properties mengikut situasi sebenar

Laksanakan XxlJobAdminApplication untuk memulakan pusat penghantaran

Kami menggunakan yang disyorkan Springboot untuk menguruskan pelaksanaan Semak fail konfigurasi dengan 如何进行XXL-JOB API接口未授权访问RCE漏洞复现

dan cari parameter xxl.job.executor.logpath Kami boleh mencipta atau mengubah suai laluan untuk mengelakkan masalah dengan pelaksanaan program. Laluan data tidak wujud dalam sistem Mac baharu didapati bahawa menggunakan mkdir untuk mencipta laluan ini adalah kerana Sip dimatikan dalam sistem Mac. Jalankan XxlJobExecutorApplication untuk memulakan pelaksana. Buka //localhost:8080/ dalam penyemak imbas dan lihat antara muka log masuk Pastikan permulaan akaun log masuk lalai ialah "admin/123456"

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

Nota: 如何进行XXL-JOB API接口未授权访问RCE漏洞复现

Adalah disyorkan untuk mencipta /data/applogs/xxl-job dahulu, dan menggunakan laluan ini untuk banyak fail konfigurasi dalam program

如何进行XXL-JOB API接口未授权访问RCE漏洞复现Ubah suai konfigurasi pangkalan data pusat penghantaran

Linux/Unix boleh menggunakan lsof untuk menyemak penghunian port , untuk mengelakkan kegagalan permulaan

Pusat penghantaran dan pelaksana boleh digunakan secara berasingan mengikut situasi sebenar

3 Kerentanan berulang

Lihat dokumentasi rasmi dan anda boleh melihat tugasan. dicetuskan dalam huraian executor RESTful API Interface

如何进行XXL-JOB API接口未授权访问RCE漏洞复现Mod jalankan tugas adalah seperti berikut

如何进行XXL-JOB API接口未授权访问RCE漏洞复现Lihat kod sumber GulueTypeEnum

如何进行XXL-JOB API接口未授权访问RCE漏洞复现Jadi kami menggunakan Burpsuite untuk membina POC kami

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

Petua:

Apabila mengubah suai glueSource, jika pelaksanaan tidak berkuat kuasa, sila ubah suai jobId

Apabila memulakan semula projek, didapati port bermula secara tidak normal , sila tutup BurpSuite

Memandangkan versi rasmi XXL-JOB disertakan dengan komponen pengesahan asli, ia boleh memastikan keselamatan komunikasi asas sistem apabila dihidupkan. Pengarang XXL-JOB menyatakan bahawa dalam keadaan biasa, komunikasi asas antara pusat penghantaran dan pelaksana adalah selamat, dan tiada kelemahan arahan jauh. Walau bagaimanapun, jika token akses tidak didayakan pada pelaksana, permintaan penjadualan haram tidak boleh dikenal pasti dan dipintas. Peminta hasad boleh menggunakan mod GLUE untuk menolak kod serangan hasad untuk mencapai serangan jauh. Oleh itu, pengarang XXL-JOB percaya bahawa masalah ini bukan sifat "kelemahan" Versi laman web rasmi menyediakan komponen pengesahan, yang boleh dihidupkan untuk perlindungan.

4. Cadangan pembaikan

1 Hidupkan komponen pengesahan yang disertakan dengan XXL-JOB: Cari "xxl.job.accessToken" dalam dokumentasi rasmi dan. ikut arahan dokumentasi Hanya dayakannya.

2. Sekatan akses port: Dengan mengkonfigurasi sekatan kumpulan keselamatan, hanya IP tertentu boleh mengakses port

Atas ialah kandungan terperinci Cara menghasilkan semula kerentanan RCE terhadap akses tanpa kebenaran kepada antara muka API XXL-JOB. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam