Struts2-057 dua versi analisis contoh kerentanan RCE

WBOY
Lepaskan: 2023-05-15 18:46:06
ke hadapan
1529 orang telah melayarinya

Kata Pengantar

Pada 22 Ogos 2018, Apache Strust2 mengeluarkan buletin keselamatan terbaharu Apache Struts2 mempunyai kerentanan pelaksanaan kod jauh berisiko tinggi (S2-057/CVE-2018-11776). Kerentanan ini Ditemui oleh penyelidik keselamatan Man YueMo dari pasukan Penyelidikan Keselamatan Semmle.

Kerentanan ini disebabkan oleh fakta bahawa apabila menggunakan fungsi ruang nama untuk menentukan konfigurasi XML dalam rangka kerja pembangunan Struts2, nilai ruang nama tidak ditetapkan dan tidak ditetapkan dalam konfigurasi tindakan lapisan atas ( Konfigurasi Tindakan) atau ruang nama kad bebas digunakan, yang mungkin menyebabkan pelaksanaan kod Jauh. Dengan cara yang sama, apabila nilai dan nilai tindakan tidak ditetapkan dalam teg url dan tindakan lapisan atas tidak ditetapkan atau ruang nama kad bebas digunakan, ia juga boleh membawa kepada pelaksanaan kod jauh Selepas pengarang sendiri. persekitaran yang dibina, kerentanan berjaya dihasilkan semula dan gema arahan boleh dilaksanakan Pada akhir artikel, anda mempunyai perkara yang anda mahukan !

Eksploitasi Kerentanan

Persekitaran yang digunakan oleh pengarang. ialah Strust2 versi 2.3.20 dan Strust2 2.3.34 versi Terdapat kira-kira tiga cara untuk mengeksploitasi kerentanan: pengiraan berangka, kalkulator pop timbul, gema arahan.

2.1 Pengiraan berangka

Pengiraan berangka agak mudah %{100+200} pada URL untuk melompat dan mendapatkan hasil yang dikira


Struts2-057 两个版本RCE漏洞实例分析.

2.2 Kalkulator Pop Timbul

POC versi 2.3.20 adalah seperti berikut:

Struts2-057 两个版本RCE漏洞实例分析Struts2-057 两个版本RCE漏洞实例分析

Versi 2.3.3 4 POC rujukan adalah seperti berikut:


Struts2-057 两个版本RCE漏洞实例分析Struts2-057 两个版本RCE漏洞实例分析

2.3 Command echo

Kedua-dua versi menggunakan com.opensymphony.xwork2 . dispatcher.HttpServletResponse objek untuk mencetak data gema selepas pelaksanaan arahan

POC versi 2.3.20 adalah seperti berikut:

Struts2-057 两个版本RCE漏洞实例分析POC versi 2.3.34 adalah seperti berikut:

Struts2-057 两个版本RCE漏洞实例分析Kesan selepas serangan adalah seperti yang ditunjukkan di bawah

Struts2-057 两个版本RCE漏洞实例分析

Analisis Kerentanan

Sebelum menganalisis kelemahan , anda perlu mengkonfigurasi fail struts.xml ini ialah fail konfigurasi teras bagi struts2 Selalunya, anda perlu mengawal pertambahan atau penurunan konfigurasi; 🎜>Terdapat dua perkara yang perlu diberi perhatian Yang pertama mesti dikonfigurasikan dengan pemeta.alwaysSelectFullNamespace = benar, jika tidak, kelemahan tidak boleh dicetuskan slash; jenis yang dikembalikan oleh teg hasil kedua memilih "redirectAction or chain", hanya ini Nilai dua pilihan konfigurasi boleh memajukan atau mengubah hala tindakan; sila rujuk rajah di bawah

Struts2-057 两个版本RCE漏洞实例分析


Selepas selesai konfigurasi, mulakan analisis dinamik . Kerentanan terletak dalam

Struts2-057 两个版本RCE漏洞实例分析struts2-core.jar!/org/apache/struts2/dispatcher/ServletActionRedirectResult.class

Nilai ahli this.namespace berasal daripada getNamespace( ) kaedah, dan kemudian Kembalikan rentetan URI melalui getUriFromActionMapping();

Nilai yang diperoleh melalui getUriFromActionMapping diberikan kepada pembolehubah tmpLocation, dan kemudian ungkapan memasuki kaedah setLocation Struts2-057 两个版本RCE漏洞实例分析

Struts2-057 两个版本RCE漏洞实例分析
Kemudian ServletActionResult dipanggil melalui kaedah super.execute, dan kaedah conditionalParse diikuti dalam badan kaedah execute Dalam kaedah ini, kaedah utama pelaksanaan ONGL, translateVariables , dipanggil. Nilai param yang diperolehi oleh

Struts2-057 两个版本RCE漏洞实例分析

dihantar ke dalam kaedah translateVariables(), yang akhirnya menyebabkan ungkapan OGNL dilaksanakan dalam OnglTextPaser.


Struts2-057 两个版本RCE漏洞实例分析

Struts2-057 两个版本RCE漏洞实例分析Selepas muncul kalkulator, nilai lastFinalLocation yang diperoleh ialah pemegang selepas pelaksanaan semasa Nilai ini digunakan sebagai alamat tindakan lompatan respons, iaitu URI yang muncul dalam bar alamat selepas muncul naik kalkulator dalam pelayar

Struts2-057 两个版本RCE漏洞实例分析Analisis kalkulator pop timbul berakhir di sini Seterusnya, mari kita lihat analisis berdasarkan hasil gema pelaksanaan arahan sama seperti di atas, satu-satunya perbezaan ialah nilai yang dikembalikan oleh lastFinalLocation ialah NULL, yang bermaksud bahawa tiada lompatan 302 selepas penyerahan, ia masih tindakan semasa, dan nilai yang dikembalikan ialah 200

Struts2-057 两个版本RCE漏洞实例分析Struts2-057 两个版本RCE漏洞实例分析Setelah mengetahui prinsipnya, rakan sekerja saya Skrip pengesanan exp dilaksanakan dalam ular sawa Skrip ini adalah untuk pembelajaran dan penyelidikan sahaja; Langkah-langkah

1. Tukar versi rangka kerja Naik taraf kepada versi rasmi terbaharu Struts2-057 两个版本RCE漏洞实例分析

2 3. Untuk tahap peraturan IDS, pengiraan berangka dan kalkulator bullet kembali Kod status semuanya 302, dan medan lompat Lokasi mengandungi rentetan pemegang ciri jika ia adalah kod status 200 yang dikembalikan oleh gema arahan, dan terdapat arahan hasil keluaran;

Atas ialah kandungan terperinci Struts2-057 dua versi analisis contoh kerentanan RCE. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!