Struts2 S2-016, S2-017 vulnerabilidad de ejecución remota de código resuelto, reparación



cliente reciente llamado a decir antes de la existencia de un proyecto Struts2 S2-016 lagunas , Fijemos actualizar tan pronto como sea posible . Sin embargo boca voló por los puntales exploits (PASS: be60) se pusieron a prueba , y por supuesto la existencia de esta vulnerabilidad ( código de vulnerabilidad de ejecución remota S2-016 ).

Sitio oficial describe como sigue :

http://struts.apache.org/release/2.3.x/docs/s2-016.html

¿Cómo resolverlo ?

  1. De acuerdo a la página oficial dijo que la actualización a 2.3.15 en el futuro , por lo que puede ser producido un error desconocido , debido a que la versión anterior es 2.1.6.

  2. Procesada en la versión original , modificar el código fuente .

Aquí para hablar de soluciones : (puntales versión 2.1.6)

  1. En primer lugar, descargar el struts2 2.1.6 código fuente (struts-2.1.6-all.zip) y deshacer las maletas

  2. Entonces IDE para crear una java de proyectos y \ \ src \ núcleo src \ principales \ puntales-2.1.6 java archivo más a Kaoru src directorio

  3. Modificar org \ apache \ struts2 \ despachador \ asignador \ DefaultActionMapper.java este archivo handleSpecialParameters método , añada el siguiente código rojo en el método :

<span style="font-size:14px;">public void handleSpecialParameters(HttpServletRequest request,

            ActionMapping mapping) {

        // handle special parameter prefixes.

        Set<String> uniqueParameters = new HashSet<String>();

        Map parameterMap = request.getParameterMap();

        for (Iterator iterator = parameterMap.keySet().iterator(); iterator

                .hasNext();) {

            String key = (String) iterator.next();

 

            // Strip off the image button location info, if found

           <span style="color:#ff0000;"> <span style="color:#000000;">if (key.endsWith(".x") || key.endsWith(".y")) {</span>
</span>
                key = key.substring(0, key.length() - 2);

            }

            

            <span style="color:#ff0000;">// 增加对action、redirect、redirectAction参数的过滤

            if ((key.contains("action:")) || (key.contains("redirect:")) || (key.contains("redirectAction:"))) {

                return;

            }
</span>
 

            // Ensure a parameter doesn't get processed twice

            if (!uniqueParameters.contains(key)) {

                ParameterAction parameterAction = (ParameterAction) prefixTrie

                        .get(key);

                if (parameterAction != null) {

                    parameterAction.execute(key, mapping);

                    uniqueParameters.add(key);

                    break;

                }

            }

        }

}
</span>

Esto solucionará S2-016 y S2-17 vulnerabilidades .

4. Modificar la finalización del proyecto será exportado en frasco de paquete , este tiempo debe tenerse en cuenta que , debido a esta clase no ha encontrado algunas referencias , cruz roja , por lo que este paquete fallará , necesidad de XWork-core-2.1.6. tarro y servlet-api.jar dos tarro paquetes a unirse al proyecto , en este momento de la desaparición de la cruz roja , a continuación, exportar el tarro de paquete .

            DefaultActionMapper.java rojo derivado cruz tarro paquete como este :

           

             DefaultActionMapper.java añadió frasco después de que el paquete es tal que ninguna cruz roja :

            

5. botón secundario tarro de paquete utilizando la herramienta Extract para abrir el frasco de paquete , la caja roja seleccionado 7 archivo de copia este archivo para reemplazar los siete proyectos .     

6. Para resolver este vulnerabilidad a la completa , utilizando puntales explota sin S2-016 y S2-017 vulnerabilidades.

7. Modificar bien después struts2-Core-2.1.6 (Pass: 0182) archivos.

Publicado 90 artículos originales · ganado elogios 21 · vistas 470 000 +

Supongo que te gusta

Origin blog.csdn.net/yx13649017813/article/details/44646809
Recomendado
Clasificación