小技巧 - 文件读取漏洞原来也这么严重

admin 2025年2月7日15:10:17评论17 views字数 3780阅读12分36秒阅读模式
 

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安全团队):小技巧 - 文件读取漏洞原来也这么严重

 

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年2月7日15:10:17
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   小技巧 - 文件读取漏洞原来也这么严重http://cn-sec.com/archives/3708317.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息