Skip to content

ENH: auxiliary module for Flowise Authentication Bypass CVE-2025-58434 - #21757

Open
rmhowe425 wants to merge 1 commit into
rapid7:masterfrom
rmhowe425:dev/CVE-2025-58434
Open

ENH: auxiliary module for Flowise Authentication Bypass CVE-2025-58434#21757
rmhowe425 wants to merge 1 commit into
rapid7:masterfrom
rmhowe425:dev/CVE-2025-58434

Conversation

@rmhowe425

@rmhowe425 rmhowe425 commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

Description

This pull request adds a new auxiliary module that detects and exploits an authentication bypass vulnerability impacting Flowise versions up to and including 3.0.5

Related Issue:
Fixes #21756

Breaking Changes

None

Reviewer Notes

Verification Steps

  1. Install the application
  2. Start msfconsole
  3. Do: use exploit/multi/http/flowise_auth_bypass_cve-2025_58434
  4. Do: run lhost=<lhost> rhost=<rhost> email=<email> newpassword=<new password>
  5. You should get a status success message indicating that the new username and password have been stored to loot.

Test Evidence

Successful check and module run

image

Read data written by store_loot

image

Environment

Field Details
Operating System Ubuntu 22.04
Target Software/Hardware Flowise 3.0.4
Docker Image / Vagrant Setup flowiseai/flowise:3.0.4

AI Usage Disclosure

None

Pre-Submission Checklist

  • Included a corresponding documentation markdown file in documentation/modules (new modules only)
  • No sensitive information (IP addresses, credentials, API keys, hashes) in code or documentation
  • Tested on the target environment specified in the Environment section above
  • Included RSpec tests for library changes (encouraged for lib/ changes)
  • Read the CONTRIBUTING.md and module acceptance guidelines

@rmhowe425
rmhowe425 marked this pull request as ready for review August 7, 2026 01:10
},
'License' => MSF_LICENSE,
'Author' => [
'Richard howe <rhowe425>',

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would you mind giving credits to OG researchers? GHSA-wgpv-6j63-x5ph

'uri' => normalize_uri(target_uri.path, 'api/v1/version')
})

unless res && res.code == 200

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
unless res && res.code == 200
unless res&.code == 200

Comment on lines +66 to +70
unless Rex::Version.new(flow_version) <= Rex::Version.new('3.0.5')
return Exploit::CheckCode::Safe(
"Flowise version #{flow_version} is not vulnerable"
)
end

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just FYI, this is also possible:

Suggested change
unless Rex::Version.new(flow_version) <= Rex::Version.new('3.0.5')
return Exploit::CheckCode::Safe(
"Flowise version #{flow_version} is not vulnerable"
)
end
return Exploit::CheckCode::Safe("Flowise version #{flow_version} is not vulnerable" ) unless Rex::Version.new(flow_version) <= Rex::Version.new('3.0.5')

@rmhowe425 rmhowe425 Aug 7, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I initially had this but RuboCop is complaining, giving me the following: Style/MultilineIfModifier: Favor a normal unless-statement over a modifier clause in a multiline statement

😄

}
)

fail_with(Failure::Unknown, 'Unexpected server reply while requesting reset token.') unless res && res.code == 201

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
fail_with(Failure::Unknown, 'Unexpected server reply while requesting reset token.') unless res && res.code == 201
fail_with(Failure::Unknown, 'Unexpected server reply while requesting reset token.') unless res&.code == 201

)

fail_with(Failure::Unknown, 'Unexpected server reply while requesting reset token.') unless res && res.code == 201
res.get_json_document['user']['tempToken']

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just to be safe

Suggested change
res.get_json_document['user']['tempToken']
res.get_json_document.dig('user','tempToken')

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh sweet I didn't know you could do that in Ruby

}.to_json
}
)
fail_with(Failure::Unknown, 'Unexpected server reply while resetting password.') unless res && res.code == 201

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
fail_with(Failure::Unknown, 'Unexpected server reply while resetting password.') unless res && res.code == 201
fail_with(Failure::Unknown, 'Unexpected server reply while resetting password.') unless res&.code == 201

@rmhowe425
rmhowe425 requested a review from msutovsky-r7 August 7, 2026 12:14
@msutovsky-r7 msutovsky-r7 self-assigned this Aug 10, 2026
@rmhowe425

Copy link
Copy Markdown
Contributor Author

@msutovsky-r7 should be good to go for a 2nd round of review

Ran msftidy and msftidy_docs

Fixing issue with register_options

Fixing issue with register_options

Polishing up documentation and implementation

Fixing discrepancy in documentation

Updating implementation based on reviewer feedback

Updating implementation based on reviewer feedback

Updating documentation
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Todo

Development

Successfully merging this pull request may close these issues.

ENH: Auxiliary module for Flowise Authentication Bypass CVE-2025-58434

2 participants