Add exploit (CVE-2026-2329) and auxiliary modules for the Grandstream GXP1600 series#20983
Conversation
| elsif item == :rand4 | ||
| item = Rex::Text.rand_text_hex(pointer_size).unpack('V').first | ||
| elsif item == :rand4highnull | ||
| item = Rex::Text.rand_text_hex(pointer_size).unpack('V').first & 0x00FFFFFF |
There was a problem hiding this comment.
Why zero the two high bytes?
There was a problem hiding this comment.
I assume this is because this is LE and we need to have a null terminator at the end?
@sfewer-r7?
There was a problem hiding this comment.
ya this was to null terminate it (force a colon to be placed in the last byte of the rop chain). that gadget is missing on older firmware versions, the more recent ones have the gadget available and will have a null byte explicitly in the VA used
| info, | ||
| 'Name' => 'GrandStream GXP1600 proxy SIP traffic', | ||
| 'Description' => %q{ | ||
| This capture module works against Grandstream GXP1600 series VoIP devices and can reconfigure hte device to use an |
There was a problem hiding this comment.
| This capture module works against Grandstream GXP1600 series VoIP devices and can reconfigure hte device to use an | |
| This capture module works against Grandstream GXP1600 series VoIP devices and can reconfigure the device to use an |
| 'Stability' => [ | ||
| # The phone service will not crash as we are only reconfiguring the phone. | ||
| CRASH_SAFE, | ||
| # If we don't revert the config changes after we proxy a SIP account, that SIP account cant operate if |
There was a problem hiding this comment.
| # If we don't revert the config changes after we proxy a SIP account, that SIP account cant operate if | |
| # If we don't revert the config changes after we proxy a SIP account, that SIP account can't operate if |
…igional config before making any changes
|
Unclear why the |
|
|
Release NotesAdds three new modules: one exploit and two post modules, all targeting the Grandstream GXP1600 series of VoIP devices. The exploit module uses CVE-2026-2329 to gain a root session, and the post modules leverage that access to perform credential stealing and packet capture. |
Overview
This pull request adds three new modules, all targeting the Grandstream GXP1600 series of VoIP devices. This is the accompanying work to our disclosure for CVE-2026-2329. The three modules are:
exploit/linux/http/grandstream_gxp1600_unauth_rce- Exploits the stack-based buffer overflow CVE-2026-2329, for unauthenticated RCE on a target device.post/linux/gather/grandstream_gxp1600_creds- Post module to gather credentials from a target device.post/linux/capture/grandstream_gxp1600_sip- Post module to reconfigure a target device to use a SIP proxy in order to capture SIP traffic.You can read our disclosure for a technical analysis of CVE-2026-2329.
Example (
exploit/linux/http/grandstream_gxp1600_unauth_rce)This example shows the exploit module getting a root Meterpreter session on a target GXP1630 device.
Example (
post/linux/gather/grandstream_gxp1600_creds)This example shows the post module, leveraging the session we established via the exploit module, to gather all available HTTP, SIP, and TR-069 credentials from the device.
NOTE: All credential information below has been redacted via
*characters.Example (
post/linux/capture/grandstream_gxp1600_sip)This example shows the post module, leveraging the session we established via the exploit module, to reconfigure the device to use a SIP proxy (running on a separate host) to capture SIP traffic.
NOTE: A suitable SIP proxy is not part of MSF (although it can be at a future date), and the MSF user can bring whatever SIP proxy they want. For research and testing, a suitable SIP proxy (written in Ruby so we can bring it into MSF if we want) is available here.
NOTE: Only SIP UDP transports are supported. Future work would can add TCP and TCP/TLS transport support.