**郑重声明:**本文所涉安全技术仅限用于合法研究与学习目的,严禁任何形式的非法利用。因不当使用所导致的一切法律与经济责任,本人概不负责。任何形式的转载均须明确标注原文出处,且不得用于商业目的。
🔋 点赞 | 能量注入 ❤️ 关注 | 信号锁定 🔔 收藏 | 数据归档 ⭐️ 评论| 保持连接💬
🌌 立即前往 👉晖度丨安全视界🚀
▶信息收集 ➢ Linux权限提升 ➢ Linux系统枚举-II 🔥🔥🔥
▶ 漏洞检测
▶ 初始立足点▶ 权限提升
▶ 横向移动▶ 报告/分析
▶ 教训/修复
目录
[1.2 Linux系统枚举](#1.2 Linux系统枚举)
[1.2.2 手动枚举Linux系统](#1.2.2 手动枚举Linux系统)
[1.2.2.4 枚举进程与服务](#1.2.2.4 枚举进程与服务)
[1.2.2.5 枚举可用的网络接口、路由与端口](#1.2.2.5 枚举可用的网络接口、路由与端口)
[1.2.2.6 枚举防火墙规则](#1.2.2.6 枚举防火墙规则)
5.查看nftables(新一代防火墙)的完整规则集(需root权限)
[6. 配置文件侦查(无需root)](#6. 配置文件侦查(无需root))
[欢迎❤️ 点赞 | 🔔 关注 | ⭐️ 收藏 | 💬 评论](#欢迎❤️ 点赞 | 🔔 关注 | ⭐️ 收藏 | 💬 评论)
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 | 目标网络或主机 | default、192.168.1.0/24、127.0.0.1 |
| gateway | 网关地址(下一跳) | 192.168.1.1、broadcast、local |
| source | 源IP地址(数据包来源) | 192.168.1.5、127.0.0.1 |
| proto | 路由来源协议 | static、kernel、dhcp |
| scope | 路由作用范围 | link、host、global |
| dev | 网络接口设备 | eth0、lo、wlan0 |
| tbl | 路由表标识 | local、main、default |
🎯 关键字段深度解析
①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字段显示不同路由表,可能用于策略路由 -
虚拟接口路由 :如
tun0、tap0指示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.1或localhost上的服务,从而进行攻击实现提权或别的。
举例:攻击者的机会
-
假设攻击者已经通过某种方式(例如,利用了一个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,数据外传 |
| 规则顺序错误 | 逻辑缺陷 | 绕过某些限制规则 |
通过系统化的防火墙规则侦查,攻击者能够识别网络访问模式 、发现隐蔽服务 ,并规划最小阻力的攻击路径,为后续的权限提升和横向移动奠定基础。🔥
欢迎❤️ 点赞 | 🔔 关注 | ⭐️ 收藏 | 💬 评论
每一份支持,都是我持续输出的光。
