小技巧 – 文件读取漏洞原来也这么严重
小技巧 – 文件读取漏洞原来也这么严重
原创 Vipersec SecretTeam安全团队 2025-02-07 01:42
朋友们现在只对常读和星标的公众号才展示大图推送,建议大家把
SecretTeam安全团队
“设为星标
”,
否则可能就看不到了啦!
免责声明
“本文档所提供的信息旨在帮助网络安全专业人员更好地理解并维护他们负责的网站和服务器等系统。我们鼓励在获得适当授权的情况下使用这些信息。请注意,任何未经授权的使用或由此产生的直接或间接后果和损失,均由使用者自行承担。我们提供的资源和工具仅供学习和研究之用,我们不鼓励也不支持任何非法活动。”
“我们创建这个社区是为了促进技术交流和知识分享。我们希望每位成员都能在遵守法律法规的前提下参与讨论和学习。如果使用本文档中的信息导致任何直接或间接的后果和损失,我们提醒您,这将由您个人承担。我们不承担由此产生的任何责任。如果有任何内容侵犯了您的权益,请随时告知我们,我们将立即采取行动并表示诚挚的歉意。我们感谢您的理解和支持。”
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 EOF if ! [ -z "$(cat cmdline)" ]; then cat cmdline && echo fidone
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
推荐历史文章阅读
加入纷传
掌握免杀艺术,深入内网核心。
我们是您网络安全技能提升的加速器,专注于免杀技术和内网渗透的深度培训。在这里,您将学习如何无声无息地穿透防御,掌握网络安全的高级技巧。
– 免杀专精
:学会如何在不触发警报的情况下进行有效渗透。
-
内网精通
:深入网络的心脏地带,学习如何识别和利用关键漏洞。 -
实战演练
:通过模拟真实攻击场景,提升您的应对策略。
加入我们,让免杀和内网渗透成为您网络安全职业生涯的利器。
Tips:
每周不定时纷传小子都会开启公开课!
二开CobaltStrike:
免杀剪切板读取工具【支持图片、KeepPass密码抓取】
免杀Fscan:
免杀Mimikatz:
Defender专用Lsass转储工具
各种免杀工具
最新版本火绒6.0内存绕过方法
SecretTeam安全团队初衷
我们的目标是:
– 知识普及
:让更多人了解网络安全的基础知识和最新动态。
-
技能提升
:为网络安全从业者和爱好者提供实战技能的提升。 -
案例分析
:深入剖析国内外网络安全事件,提炼经验教训。 -
攻防演练
:模拟攻击与防御场景,提高应对网络威胁的能力。
我们的内容涵盖:
– 攻击队常用的网络攻击技术与工具。
-
网络攻防演练的策略与实战案例。
-
系统漏洞分析与防御措施。
-
网络安全法律法规与伦理道德。
-
网络安全行业动态与未来趋势。
加入我们,您将获得:
– 专业的网络安全知识分享。
-
与行业专家的互动交流机会。
-
网络安全防护的实用技巧。
-
网络安全事件的深度解析。
安全第一,技术先行。
我们相信,通过不断的学习和实践,我们能够共同构建一个更加安全、稳定的网络环境。
关注我们,一起探索网络安全的奥秘,成为网络世界的守护者!
添加作者微信发送:进群,邀请你加入学习交流群