1. 任意文件读取漏洞介绍
任意文件读取漏洞(Arbitrary File Read Vulnerability)是指攻击者可以通过某些漏洞,绕过应用程序的限制,直接读取应用程序之外的文件。这种漏洞通常是由于应用程序没有对用户输入进行充分的验证和过滤而导致的。攻击者可以通过构造恶意的请求来利用该漏洞,从而读取他们本来无权访问的文件,如密码、私钥、证书等,这会增加被入侵的风险。
1. 读取配置及历史命令文件Tips
1.1 历史文件Tips
由于对方是Linux,我们可以通过读取history文件查看是否有可利用的敏感信息。
.bash_history
通过读取 .bash_history
我们可以看到管理员对系统操作的一些信息,网上利用这种方法获取shell的也很多。我这边没有环境,找到一个公众号之前发布的内容,这边引入一下:
原文地址:https://mp.weixin.qq.com/s/SKVr8qRSQZ0HzKSfOsvFcA
继续翻历史命令找到一个比较奇怪的sh文件,深入查看后找到mysql密码:
/home/appuser/workdir/scripts/slave2_mysql.sh
继续通过文件读取,获取到服务器密码:
su rootrYxxxxxxx
1.2 /etc/shadow
/etc/shadow 是类 Unix 系统中的一个关键文件,用于存储用户账户的加密密码以及与密码相关的各种信息。
文件位置:
/etc/shadow
这个的情况比较特殊,而且不太常见,但是并不是没有可能,这边也找到了一个例子:
beinan:$1$VE.Mq2Xf$2c9Qi7EQ9JP8GKF8gH7PB1:13072:0:99999:7:::linuxsir:$1$IPDvUhXP$8R6J/VtPXvLyXxhLWPrnt/:13072:0:99999:7::13108:
如果读取的/etc/shadow
中,存在 $1$IPDvUhXP$8R6J/VtPXvLyXxhLWPrnt/
这样的密码,我们可以直接在cmd5中进行解密,解密方法为:md5(salt)
.
1.3. 定时任务
Linux 系统中,定时任务(Cron Jobs)通常存储在 /etc/crontab
文件中,或者在 /etc/cron.d/
目录下的文件中。此外,每个用户还可以有自己的定时任务,这些任务存储在 crontab
文件中,但这些文件通常不是直接访问的,而是通过 crontab
命令来管理。
文件位置:
/etc/crontab
这是我2022年曾经机缘巧合下碰到的一个实战案例,在其中,找到了一个藏得很深的.sh文件,里面记录数据库和密码的文件,导致我们直接拿到了数据库权限通过日志写shell的方式,拿到了网站的权限。
2. 特定命令文件Tips
2.1 /proc/net/arp
包含 ARP 缓存可用于枚举 LAN 上的机器。
cat /proc/net/arp
2.2 /proc/net/dev
含网络设备状态信息和基本统计信息。它由 ifconfig 程序使用。可用于枚举网络接口。
cat /proc/net/dev
2.3 /proc/net/route
包含路由表。IP 地址采用十六进制格式。
cat /proc/net/route
2.4 /proc/net/tcp
包含 TCP 套接字表。可用于枚举网络连接和侦听端口。uid 字段保存套接字创建者的有效 UID。IP 地址和端口以十六进制格式显示。如果“rem_address”为空,“local_address”表示侦听套接字。在这种情况下,机器侦听 0100007F:0FA0(等于 127.0.0.1:4000)。地址采用小端序。
cat /proc/net/tcp
2.5 /proc/[pid]/status
保存有关进程名称、状态、PPID、UID、GID 和补充组列表的信息。
如果我们不知道PID,可以使用Burp的爆破功能来遍历!
cat /proc/5956/status
2.6 /proc/[pid]/cmdline
保存具有给定 PID 的进程的完整命令行。参数由一个空字节分隔,这就是为什么在打印时它们看起来是连在一起的。
这边以python举例
python3 -m http.server 8080 &cat /proc/97965/cmdline
如果想在其他位置使用这个技巧: 可以编写一个脚本,通过读取/proc/[pid]/cmdline 中的一系列 PID(例如从 1 到 30000 或更多)来枚举系统上的进程。以下是此类脚本的示例,它通过 tftp 枚举进程:
#!/bin/bashfor i in {1..30000}do tftp 192.168.0.1 2>&1 >/dev/null 2>/dev/null << EOF get /proc/$i/cmdline quit EOFif ! [ -z "$(cat cmdline)" ]; then cat cmdline && echofidone
2.7 /proc/sched_debug
可用于列出每个 CPU 上正在运行的进程
2.8 /proc/version
老朋友了,查看的是内核版本
cat /proc/version
3. 其他
还有一些就不举例了,可以收藏我们的文章,在实战时,需要那个用那个即可!
最后我想请问一句,如果可以读取到这些,那么任意文件读取漏洞的评级应该时什么呢?大家留言决定!
/root/.bashrc - 每次打开交互式 shell(终端)时执行。/root/.profile - 每次用户登录时执行。/root/.bash_profile - 每次用户登录时执行。/root/.bash_history - 终端中执行的 bash 命令的历史记录。/root/.ssh/id_rsa - root 用户的私有 rsa 密钥。/root/.ssh/authorized_keys - 允许以 root 用户身份通过 ssh 登录的计算机的公钥。/root/.ssh/known_hosts - root 用户通过 ssh 连接的主机。/home/[用户名]/.bashrc - 每次打开交互式 shell(终端)时执行。/home/[username]/.profile - 每次用户登录时执行。/home/[username]/.bash_profile - 每次用户登录时执行。/home/[username]/.bash_history - 终端中执行的 bash 命令的历史记录。/home/[username]/.ssh/id_rsa - 用户的私有 rsa 密钥。/home/[username]/.ssh/authorized_keys - 允许以用户身份通过 ssh 登录的计算机的公钥。/home/[username]/.ssh/known_hosts - 用户通过 ssh 连接的主机。/etc/ssh/sshd_config - ssh 服务器配置/etc/ssh/ssh_host_rsa_key - ssh 服务器的私有 rsa 密钥/etc/ssh/ssh_host_rsa_key.pub - ssh 服务器的公共 rsa 密钥/etc/fstab - 系统挂载的文件系统/etc/passwd - 可用于枚举用户和服务/etc/shadow - 包含用户的哈希密码/etc/group - 保存系统上现有的组和组成员身份/etc/hosts - 主机名的静态 DNS 表查找/etc/hostname - 机器的主机名/etc/issue - Linux 发行版/etc/lsb-release - Linux 发行版和版本信息/etc/resolv.conf - 配置的 DNS 名称服务器/etc/network/interfaces - 静态网络接口配置/etc/crontab - 系统 crontab/var/spool/cron/crontabs/[username] - 用户 crontab/var/log/apt/history.log - 安装/删除的 apt 包的日志。可用于枚举已安装的程序。/etc/apache2/apache2.conf - apache2 配置/etc/apache2/ports.conf - apache2 使用的监听端口的配置/etc/apache2/sites-enabled/000-default.conf - 虚拟主机配置/etc/apache2/sites-available/000-default.conf - 虚拟主机配置/usr/local/apache2/ - 如果从源代码安装 apache,则默认配置文件位于此目录下。/etc/squid/squid.conf - squid proxy configuration file/etc/nginx/nginx.conf - nginx configuration/etc/nginx/sites-available/default - virtual host configuration/etc/nginx/sites-enabled/default - virtual host configuration/etc/php/[version]/cli/php.ini - php configuration file
原文始发于微信公众号(SecretTeam安全团队):小技巧 - 文件读取漏洞原来也这么严重
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论