La primera lección del estudio en profundidad de la seguridad de la red: vulnerabilidades del marco popular (ejecución de código RCE)


1. Descripción general de la ejecución del código

Definición de ejecución de código:
------ Cuando la aplicación llama a algunas funciones que pueden convertir una cadena en código (como eval en PHP), no considera si el usuario controla la cadena, lo que provocará una vulnerabilidad de ejecución de código. La ejecución remota de código en realidad consiste en llamar al código del sitio web del servidor para su ejecución.

------ La vulnerabilidad de ejecución de código significa que la aplicación en sí no está estrictamente filtrada y los usuarios pueden inyectar código en la aplicación a través de solicitudes de ejecución.


2. Funciones relacionadas con la ejecución de código

  • PHP: evaluar, afirmar
  • Javascript: evaluación
  • Vbscript: ejecutar, evaluar
  • Python: ejecutivo
  • Java: no existe una función en Java que pueda convertir directamente cadenas en ejecución de código, similar a la función eval en PHP, sin embargo, existe un mecanismo de reflexión y existen varios motores de expresión basados ​​​​en mecanismos de reflexión, como: OGNL, SpEL. , MVEL, etc. Estos pueden causar vulnerabilidades de ejecución de código.

1、evaluar

Para ejecutar una cadena como función, es necesario pasar una declaración completa, que debe terminar con punto y coma. Las funciones más utilizadas son:

<?php eval('echo "hello";'); ?>

2 、 afirmar

Determine si es una cadena; de ser así, se ejecutará como código.
在php7.0.29之后的版本不支持动态调用

低版本
<?php  assert($_POST['a']); ?>

7.0.29之后
<?php
	$a = 'assert';
	$a(phpinfo());
?>

3. ${ } ejecutar código

Se analizará el código php intermedio.

${
    
    phpinfo()};

3. La diferencia entre ejecución de comandos y ejecución de código.

  1. Las funciones involucradas son diferentes.

  2. Los métodos de ejecución son diferentes:
    Ejecución de comandos: generalmente se refiere a
    远程la ejecución del código de comando del sistema operativo: generalmente se refiere al código de script


Supongo que te gusta

Origin blog.csdn.net/p36273/article/details/132919905
Recomendado
Clasificación