⓬⁄₂ ⟦ OSCP ⬖ 研记 ⟧ Linux权限提升 ➱ Linux系统枚举-II

**郑重声明:**本文所涉安全技术仅限用于合法研究与学习目的,严禁任何形式的非法利用。因不当使用所导致的一切法律与经济责任,本人概不负责。任何形式的转载均须明确标注原文出处,且不得用于商业目的。

🔋 点赞 | 能量注入 ❤️ 关注 | 信号锁定 🔔 收藏 | 数据归档 ⭐️ 评论| 保持连接💬

🌌 立即前往 👉晖度丨安全视界🚀​

信息收集 ➢ Linux权限提升 ➢ Linux系统枚举-II 🔥🔥🔥

▶ 漏洞检测
初始立足点

▶ 权限提升
横向移动

▶ 报告/分析

▶ 教训/修复

目录

1.Linux权限提升

[1.2 Linux系统枚举](#1.2 Linux系统枚举)

[1.2.2 手动枚举Linux系统](#1.2.2 手动枚举Linux系统)

[1.2.2.4 枚举进程与服务](#1.2.2.4 枚举进程与服务)

1.侦查思维导图

2.进程枚举

3.目标筛选技巧

[1.2.2.5 枚举可用的网络接口、路由与端口](#1.2.2.5 枚举可用的网络接口、路由与端口)

1.网络接口探查

2.路由表分析

3.路由表的攻击者视角分析

4.开放端口与服务

[1.2.2.6 枚举防火墙规则](#1.2.2.6 枚举防火墙规则)

1.枚举防火墙的实际意义

2.Linux的多种防火墙种类

3.查看防火墙规则(需root权限)

4.查看iptables的NAT表规则(需root权限)

5.查看nftables(新一代防火墙)的完整规则集(需root权限)

[6. 配置文件侦查(无需root)](#6. 配置文件侦查(无需root))

7.搜索防火墙配置文件

8.防火墙规则漏洞场景总结

[欢迎❤️ 点赞 | 🔔 关注 | ⭐️ 收藏 | 💬 评论](#欢迎❤️ 点赞 | 🔔 关注 | ⭐️ 收藏 | 💬 评论)


1.Linux权限提升

本系列内容围绕以下四大部分展开,本文是第一部分:++Linux系统枚举++

攻击向量 核心概念 典型检查/利用方法 关键风险点
1. 系统枚举 全面侦查,像侦探一样收集一切可能指向弱点的线索。 - 检查系统配置、用户与组、历史命令。 - 枚举运行服务、网络连接、进程。 - 列出安装软件、内核版本、计划任务。 信息收集不全面,导致错过关键漏洞入口。
2. 暴露的机密信息 系统或应用中意外留存的可直接利用的敏感数据。 - 查找 配置文件中的硬编码密码。 - 搜索 日志文件中的敏感数据或错误信息。 - 检查环境变量中的密钥、令牌或密码。 访问凭证直接泄露,提供最直接的攻击突破口。
3. 不安全的文件权限 文件或目录的权限设置不当,允许低权限用户进行越权操作。 - 全局可写文件/目录 :任何用户可修改,用于注入恶意代码或替换文件。 - 不当所有权 :低权限用户拥有关键系统文件,可直接修改。 - SUID/SGID滥用:高权限程序存在漏洞或配置错误,可被利用来获取其权限。 通过文件系统层面的配置错误,绕过权限限制。
4. 利用系统组件 利用操作系统内核、系统服务或第三方应用程序中存在的漏洞。 - 脆弱服务 :攻击以高权限(如root)运行的未更新或配置不当的服务。 - 内核漏洞 :利用操作系统内核本身的漏洞直接提权。 - 软件漏洞:利用第三方应用(如编辑器、数据库)的漏洞执行高权限代码。 利用代码层面的漏洞,实现权限的实质性提升。

1.2 Linux系统枚举

1.2.2 手动枚举Linux系统

接前文。

1.2.2.4 枚举进程与服务

在权限提升过程中,分析正在运行的进程和服务是发现潜在漏洞的关键步骤。理想的目标进程通常具备以下特征:

  • 在特权账户(如 root)上下文中运行

  • 配置存在缺陷(如权限设置不当)

  • 允许非常规交互或注入

1.侦查思维导图

2.进程枚举
bash 复制代码
$ ps aux 

通过 ps aux 命令可以全面探查系统进程状态:

参数 作用 示例/说明
a 显示所有用户的进程(包括有TTY的进程) 打破用户隔离,查看全局进程视图
u 用户友好格式显示详细信息 清晰展示进程所有者、CPU/内存占用
x 显示所有进程(包括无TTY的进程) 揭露后台服务与守护进程

进程结果解析:

类型 特征 常见示例
有TTY进程 与终端会话绑定,通常由用户直接启动 交互式命令、Shell会话、用户程序
无TTY进程 无终端关联,通常在后台运行 系统服务、守护进程、计划任务

关键观察点:输出结果中需特别关注:

  • root 身份运行的进程(高价值目标):以 root 或 SYSTEM 身份运行的进程一旦存在漏洞,往往可直接导致权限提升

  • **当前用户(如 joe)拥有的进程:**用户通过终端启动的进程有时会继承更高权限(可能存在继承或配置问题)

  • 无TTY进程常被忽略:后台服务可能长期运行且维护不足,是理想的攻击目标

3.目标筛选技巧

通过管道命令快速过滤关键信息:

bash 复制代码
# 筛选特定用户(如root)的进程
$ ps aux | grep root

# 筛选当前用户进程
$ ps aux | grep joe

# 按CPU或内存占用排序查看
$ ps aux --sort=-%cpu | head -10

1.2.2.5 枚举可用的网络接口、路由与端口

对目标主机的网络环境进行全面侦查是渗透测试的关键步骤,能够识别跳板机会发现潜在攻击面评估网络隔离状态

1.网络接口探查

命令对比:

命令 功能 参数/特点 适用场景
ifconfig 显示接口统计信息 -a:显示所有接口 传统Linux系统
ip addr show 显示紧凑的接口信息 -a:显示所有信息 现代Linux发行版

🎯 侦查要点:

  • 识别多网络连接 :主机可能连接到多个网络(如内部管理网、DMZ区),可作为攻击跳板

  • 发现虚拟接口 :虚拟网络适配器可能提示存在虚拟化环境防病毒软件

  • 记录IP配置:包括IP地址、子网掩码、MAC地址等关键信息

2.路由表分析

使用route或routel显示网络路由表,具体取决于Linux发行版和版本。

bash 复制代码
# 查看系统路由表
$ route -n

# 替代命令(某些发行版)
$ routel

📊 路由信息关键字段

字段 说明 示例值
target 目标网络或主机 default192.168.1.0/24127.0.0.1
gateway 网关地址(下一跳) 192.168.1.1broadcastlocal
source 源IP地址(数据包来源) 192.168.1.5127.0.0.1
proto 路由来源协议 statickerneldhcp
scope 路由作用范围 linkhostglobal
dev 网络接口设备 eth0lowlan0
tbl 路由表标识 localmaindefault

🎯 关键字段深度解析

①target(目标网络)

  • default:默认路由,匹配所有未明确指定的目标

  • 192.168.1.0/24:CIDR格式的网段,表示该路由适用于整个子网

  • 特定IP :如 127.0.0.1 表示仅适用于该主机的路由

②gateway(网关)

  • 具体IP :如 192.168.1.1 → 数据包转发到此地址

  • broadcast:广播地址,用于本地网络广播

  • local:本地接口,数据包不离开本机

  • 留空:表示直接连接,无需网关(如直连网络)

③proto(路由协议类型)

类型 含义 说明
static 静态路由 管理员手动配置的路由
kernel 内核路由 系统自动添加的路由
dhcp DHCP分配 通过DHCP协议获取的路由
ra 路由器通告 IPv6中的路由器通告

④scope(作用域)

作用域 范围 典型用途
global 全局有效 可转发到外部网络的路由
link 链路本地 仅在同一物理网络有效
host 主机内部 仅用于本机通信

⑤dev(网络设备)

  • eth0:以太网接口

  • wlan0:无线网络接口

  • lo:回环接口(localhost)

  • tun0:VPN隧道接口

3.路由表的攻击者视角分析

①识别网络架构

bash 复制代码
# 查找默认网关(出口点)
target: default → gateway: 192.168.1.1

# 发现内部子网
target: 192.168.2.0/24 → 存在第二个网络!

②评估横向移动可能性

路由类型 利用方式
多网卡路由 跳板攻击,内网穿透
VPN隧道路由 访问隔离网络
本地路由 本地特权提升

③发现隐蔽通道

  • 异常网关:非常规IP地址可能指示代理或隧道

  • 多路由表rt字段显示不同路由表,可能用于策略路由

  • 虚拟接口路由 :如 tun0tap0 指示VPN或虚拟化环境

📊 路由信息与攻击关联表:

路由特征 渗透测试意义 下一步行动
多个默认路由 多出口点,可能绕过防火墙 测试每个出口点的连通性
大范围子网路由 内网规模大,目标多 进行内网主机发现
VPN隧道路由 访问隔离网络的机会 尝试通过VPN隧道进行横向移动
本地回环路由 本地服务暴露有限 检查本地服务提权可能性

4.开放端口与服务

端口扫描命令:

命令 参数组合 输出特点 推荐度
ss -anp -a:所有连接 -n:不解析名称 -p:显示进程 信息详细,性能好 ⭐⭐⭐⭐⭐
netstat -tulpn -t:TCP -u:UDP -l:监听 -p:进程 -n:不解析 传统命令,兼容性好 ⭐⭐⭐⭐

🎯 关键发现点

①特权服务分析

bash 复制代码
LISTEN    0    128    127.0.0.1:3306   0.0.0.0:*    users:(("mysqld",pid=1234,fd=14))
  • MySQL仅在回环地址监听 → 需本地访问权限

  • 以root身份运行 → 特权提升潜在目标

②网络连接状态

  • ESTABLISHED:活跃连接(如SSH会话)

  • LISTEN:监听端口(潜在服务入口)

  • CLOSE_WAIT:异常连接状态

③进程关联性

bash 复制代码
users:(("sshd",pid=567,fd=3))
  • 关联进程:确定服务对应的应用程序

  • 权限级别:查看运行用户(root vs 普通用户)

通过系统的网络侦查,攻击者能够构建完整的目标网络画像 ,识别最佳攻击路径,并最大化利用已获得的访问权限。🌐


1.2.2.6 枚举防火墙规则

在提权和横移过程中,防火墙规则分析 是发现隐蔽攻击面绕过网络限制 的关键步骤。因此,在系统渗透中常见的攻击路径是:

当防火墙阻止了外部攻击时,攻击者可以利用已获得的有限本地权限,通过"本地回环接口"这个后门,攻击那些只监听在本地的敏感服务,从而提升自己的系统权限。

1.枚举防火墙的实际意义
  • 防火墙(如NFTables/iptables)的常见规则 是:"允许外部访问Web服务(如80端口),但严格禁止外部访问数据库、管理后台等敏感服务(如3306、6379端口)"

  • 然而,为了系统内部组件能正常通信,防火墙通常不会限制"回环接口" 。这意味着,任何在本地运行的程序(或已登录到本地的用户)都可自由访问所有监听在 127.0.0.1localhost 上的服务,从而进行攻击实现提权或别的

举例:攻击者的机会

  • 假设攻击者已经通过某种方式(例如,利用了一个Web漏洞)在目标服务器上获得了一个低权限的立足点(比如一个Web Shell,或者能执行命令的受限用户)。

  • 从这个立足点,攻击者可以扫描本地开放了哪些端口和服务、以及查看防火墙策略 。他们很可能会发现,在本地可以访问到那些被防火墙保护、外部无法直接触碰的敏感服务,例如:

    • 数据库:MySQL (3306), PostgreSQL (5432), MongoDB (27017)

    • 缓存服务:Redis (6379), Memcached (11211)

    • 配置存储:Etcd (2379), Consul (8500)

    • 内部API和管理接口

"利用它们来提升权限"的逻辑:

这些本地服务之所以危险,是因为它们往往默认配置不安全管理疏忽,尤其是在"仅本地可访问"的假设下。攻击者可以尝试:

  • 利用弱口令或默认口令:很多服务在本地安装后使用默认密码,甚至无密码。

  • 利用服务本身的漏洞:运行一个本地Exploit。

  • 执行危险操作

    • Redis 中写入SSH公钥,从而获得SSH登录权限。

    • MySQL 中以高权限执行系统命令(如果配置了sys_exec等功能)。

    • 读取 Etcd 中的敏感配置和密钥。

    • 通过 Docker API 本地套接字逃逸到宿主机。

一个简单的攻击链示例:

  • 初始入侵 :攻击者通过网站漏洞上传了Webshell,拿到的身份是低权限的www-data用户。

  • 本地侦察 :攻击者在服务器上执行 netstat -tlnp,发现127.0.0.1:6379(Redis服务)正在监听,但外部无法连接。

  • 交互与利用 :攻击者通过Webshell连接到本地Redis。由于Redis通常无认证,他可以执行命令,利用Redis将数据写入文件的功能,在/root/.ssh/authorized_keys中写入自己的SSH公钥。

  • 权限提升 :攻击者现在可以直接用SSH密钥以root身份登录这台服务器,完成了从低权限Web用户到系统最高权限的提权。

2.Linux的多种防火墙种类
组件 作用 权限要求 配置文件位置
iptables 传统防火墙规则管理 root权限操作 /etc/iptables/
nftables 新一代防火墙框架 root权限操作 /etc/nftables.conf
firewalld 动态防火墙管理 root权限操作 /etc/firewalld/
3.查看防火墙规则(需root权限)

**查看 iptables(传统Linux防火墙)的filter表规则,**这是最常用的防火墙规则表。

bash 复制代码
$ sudo iptables -L -n -v

参数解释:

  • -L:列出规则

  • -n:以数字形式显示(不解析域名和端口名称)

  • -v:详细显示(包含数据包计数和字节计数)

典型输出示例:

字段含义:

  • Chain:规则链名称(INPUT-入站,FORWARD-转发,OUTPUT-出站)

  • policy:默认策略(DROP/ACCEPT),以及匹配的数据包统计

  • pkts/bytes :匹配该规则的数据包数量和字节数(-v参数显示)

  • target:匹配后的动作(ACCEPT-接受,DROP-丢弃,REJECT-拒绝并回复)

  • prot:协议(tcp/udp/icmp/all)

  • opt:选项

  • in/out:输入/输出接口

  • source/destination:源/目标IP地址

4.查看iptables的NAT表规则(需root权限)

NAT表专门用于网络地址转换。

bash 复制代码
$ sudo iptables -t nat -L -n

参数解释:

  • -t nat:指定操作nat表(iptables有多个表:filter、nat、mangle、raw)

  • -L -n:同上

  • 最后的条件:如tcp dpt:22表示目标端口22

典型输出示例:

关键链解释:

  • PREROUTING链:数据包进入后立即处理(DNAT目标地址转换)

    • DNAT ... to:192.168.1.100:8080:将访问203.0.113.1:80的流量转发到内网192.168.1.100:8080
  • POSTROUTING链:数据包发出前处理(SNAT/MASQUERADE源地址转换)

    • MASQUERADE:自动获取出口IP做源地址转换(适合动态IP)

    • SNAT to:203.0.113.1:将192.168.1.0/24网段的源IP改为203.0.113.1

  • OUTPUT链:处理本地产生的数据包的NAT

5.查看nftables (新一代防火墙)的完整规则集**(需root权限)**
bash 复制代码
$ sudo nft list ruleset

典型输出示例:

nftables结构特点:

  • 表(table):命名空间容器

    • table inet filter:同时处理IPv4/IPv6的filter表

    • table ip nat:仅IPv4的NAT表

    • table ip6 nat:仅IPv6的NAT表

  • 链(chain):规则集合

    • type filter/nat:链类型

    • hook input/forward/output/prerouting/postrouting:钩子点

    • priority:优先级数字决定执行顺序

  • 语法优势

    • 集合支持tcp dport {22, 80, 443} 一次匹配多个端口

    • 命名规则:可以给规则添加注释和名称

    • 统一格式:IPv4/IPv6可统一管理

6. 配置文件侦查(无需root)

核心发现: 某些防火墙配置文件可能全局可读,泄露完整规则!

📁 关键配置文件路径

配置文件 系统类型 典型权限 配置文件内容说明
/etc/iptables/rules.v4 Debian/Ubuntu -rw-r--r-- IPv4 iptables规则 ,使用iptables-save格式,包含filter、nat、mangle等表中所有IPv4规则。通常在系统启动时由iptables-restore加载。
/etc/iptables/rules.v6 Debian/Ubuntu -rw-r--r-- IPv6 iptables规则 ,使用ip6tables-save格式,包含filter、nat、mangle等表中所有IPv6规则。通常在系统启动时由ip6tables-restore加载。
/etc/sysconfig/iptables RHEL/CentOS -rw------- 传统iptables规则 ,主要是filter表的INPUT、FORWARD、OUTPUT链规则。通常由iptables-services包管理,内容较为简洁,不包含nat表规则(nat规则常存于其他文件)。
/etc/nftables.conf 现代发行版 -rw-r--r-- nftables完整规则集,使用nftables原生语法,可包含多个table(如inet filter、ip nat、ip6 nat)及其chains和rules。是nftables的主要配置文件。

详细内容说明:

bash 复制代码
# 检查配置文件是否存在及权限
$ ls -la /etc/iptables/

# 读取配置文件内容
$ cat /etc/iptables/rules.v4

🎯 规则分析与攻击面发现

bash 复制代码
# 发现的规则示例
-A INPUT -p tcp -m tcp --dport 1999 -j ACCEPT

**这条规则的作用:**允许所有进入本机、使用TCP协议并且目标端口为1999的流量通过,即:允许本机接收目标端口为1999的TCP数据包。

**注意:**这个配置细节很突出,应该记下来以供以后调查。

规则字段 含义 意义
-A INPUT 添加到INPUT链(入站流量) 标识入站控制点
-p tcp 仅匹配TCP协议 服务类型识别
-m tcp -m "match"(匹配),加载扩展匹配tcp模块 加载的模块类型
--dport 1999 目标端口1999 潜在服务入口
-j ACCEPT 允许通过 明确开放的端口
7.搜索防火墙配置文件

当在默认目录下找不到配置文件时,可以进行搜索。

bash 复制代码
# 在整个文件系统搜索iptables保存文件
$ find / -name "*iptables*" -type f 2>/dev/null

# 搜索防火墙相关配置文件
$ grep -r "iptables-save" /etc/ 2>/dev/null

# 查找防火墙规则备份文件
$ locate .rules .firewall iptables.save 2>/dev/null
8.防火墙规则漏洞场景总结
场景 漏洞类型 利用方法
过度宽松的本地规则 配置错误 本地端口扫描,发现隐藏服务
iptables配置文件全局可读 权限配置不当 直接读取规则,了解网络策略
缺少出站限制 安全策略缺失 建立反向Shell,数据外传
规则顺序错误 逻辑缺陷 绕过某些限制规则

通过系统化的防火墙规则侦查,攻击者能够识别网络访问模式发现隐蔽服务 ,并规划最小阻力的攻击路径,为后续的权限提升和横向移动奠定基础。🔥


欢迎❤️ 点赞 | 🔔 关注 | ⭐️ 收藏 | 💬 评论

每一份支持,都是我持续输出的光。

相关推荐
小白同学_C5 小时前
Lab4-Lab: traps && MIT6.1810操作系统工程【持续更新】 _
linux·c/c++·操作系统os
今天只学一颗糖5 小时前
1、《深入理解计算机系统》--计算机系统介绍
linux·笔记·学习·系统架构
不做无法实现的梦~7 小时前
ros2实现路径规划---nav2部分
linux·stm32·嵌入式硬件·机器人·自动驾驶
默|笙9 小时前
【Linux】fd_重定向本质
linux·运维·服务器
陈苏同学9 小时前
[已解决] Solving environment: failed with repodata from current_repodata.json (python其实已经被AutoDL装好了!)
linux·python·conda
“αβ”9 小时前
网络层协议 -- ICMP协议
linux·服务器·网络·网络协议·icmp·traceroute·ping
不爱学习的老登10 小时前
Windows客户端与Linux服务器配置ssh无密码登录
linux·服务器·windows
小王C语言11 小时前
进程状态和进程优先级
linux·运维·服务器
xlp666hub11 小时前
【字符设备驱动】:从基础到实战(下)
linux·面试
弹幕教练宇宙起源12 小时前
cmake文件介绍及用法
android·linux·c++