[WIP] Module for CVE-2019-11510 - Pulse Secure File Disclosure#12220
[WIP] Module for CVE-2019-11510 - Pulse Secure File Disclosure#122200xDezzy wants to merge 7 commits intorapid7:masterfrom
Conversation
|
This can be leveraged to gain clear text credentials by grabbing I'm working on an updated version that will allow you to grab this binary file, parse it, and show the credentials but this is also my first Metasploit module. |
|
Please use two spaces instead of tabs for indentation. It would also be a good idea to run Additionally, you may want to use |
|
Thanks! I'll go ahead and do that! |
|
Presumably files other than Additionally,
|
| @@ -0,0 +1,73 @@ | |||
| # Quick hackish exploit for the CVE-2019-11510 | |||
There was a problem hiding this comment.
Presuming that you wish to license this module for use in Metasploit, please use the standard comment header here.
| data = res.body | ||
| current_host = datastore['RHOST'] | ||
| filename = "msf_sslwebsession_"+current_host+".bin" | ||
| File.delete(filename) if File.exist?(filename) |
There was a problem hiding this comment.
Please use store_loot rather than rolling your own file storage functionality.
| end | ||
| end | ||
| end | ||
| def parse() |
There was a problem hiding this comment.
I'm not really sure what this does, but I'm fairly sure it won't work as intended, especially if the retrieved file is not ASCII.
I presume you're trying to extract the file contents from the HTTP response? Are there any delimiters you can use? This parsing looks brittle.
|
I think the sanity testing failures are unrelated to this PR: |
|
A bit late now, however, for future reference, you can use |
|
I was deleting it because I rewrote the entire thing. I will be committing it to the proper directory as well. I will keep that in mind though. Never really made a PR before so forgive me for the mistakes. |
|
@0xDezzy no worries. The only people who have never screwed up git are people who have never used git. Do you still want this PR open? |
|
Yeah, I'm going to push another commit with an updated version |
| @@ -0,0 +1,112 @@ | |||
| ## | |||
| # This module requires Metasploit: https://Metasploit.com/download | |||
There was a problem hiding this comment.
##
# This module requires Metasploit: https://metasploit.com/download
# Current source: https://github.com/rapid7/metasploit-framework
##| 'uri' => uri | ||
| }) | ||
|
|
||
| unless res && res.code ==200 |
There was a problem hiding this comment.
It might be a good idea to perform some content checking of res.body here, as there are numerous instances where a web server may return 200 OK.
There was a problem hiding this comment.
With this exploit, If the file is unable to be accessed or an invalid filepath, it will return a 4xx error. If the content is actually returned, it will return a 200 OK.
I'm looking in how to parse the raw data and grab the specific entries of interest (Cleartext Credentials, Session ID's, hashes, etc) and store those in the loot.
| { | ||
| 'method' => 'GET', | ||
| 'uri' => uri + payload, | ||
| },1395) |
There was a problem hiding this comment.
1395 is an awfully long timeout ...
There was a problem hiding this comment.
I'm still trying to figure out how to download this large file in chunks
| data = res.body | ||
| current_host = datastore['RHOST'] | ||
| filename = "msf_sslwebsession_"+current_host+".bin" | ||
| File.delete(filename) if File.exist?(filename) |
There was a problem hiding this comment.
Working on it. Trying to figure out how to implement it.
Co-Authored-By: bcoles <bcoles@gmail.com>
Co-Authored-By: bcoles <bcoles@gmail.com>
Co-Authored-By: bcoles <bcoles@gmail.com>
|
Could you add the function that it can parse the |
|
Hi, @0xDezzy! Are you still working on this module? Let me know if you'd like any help. We have access to a target now. |
|
@msjenkins-r7 test this please. |
|
Closing this particular PR due to inactivity. I have a rewritten module that I'll PR tonight. It should address outstanding issues and work nicely with the RCE module I wrote. Everyone will be credited for their contributions. Thank you! |
|
Note that the long timeout (1395 seconds) waiting for the server to finish sending data (it never seems to finish) will be obsoleted by an enhancement to |

This is a work in progress exploit for CVE-2019-11510
It grabs /etc/passwd and displays it to the terminal
Verification
List the steps needed to make sure this thing works
msfconsoleuse exploit/linux/http/pulse_secure_file_leakset RHOSTS [Pulse secure instance]runExecution