1. 项目概述靶场商场网站安全测试实战去年在给某电商平台做渗透测试时我发现很多初级安全工程师面对真实业务场景往往无从下手。这正是我决定撰写这篇靶场实战指南的原因——通过模拟真实商场网站环境手把手带大家掌握Web安全测试的核心方法论。Pikachu、DVWA这些经典靶场确实能练手但商业网站特有的多业务耦合、分布式架构等特性往往需要更系统的测试思路。本文将基于一个模拟的B2C商场系统包含会员中心、支付接口、商品管理等模块演示从信息收集到漏洞利用的完整链条。2. 测试环境搭建与工具链配置2.1 靶场环境快速部署推荐使用Vulnhub上的Mallory靶机镜像基于Ubuntu 20.04这个环境模拟了以下典型漏洞前端jQuery 1.11.3存在已知XSS向量后端PHP 5.6.40 MySQL 5.7含弱口令账户中间件Apache 2.4.29未打补丁安装步骤# 下载OVA文件后导入VirtualBox vagrant init mallory_v1.0 vagrant up注意务必在隔离的虚拟网络中运行避免扫描到真实设备。我习惯用VirtualBox的仅主机(Host-Only)网络模式。2.2 渗透测试工具包准备我的标准工具组合Kali Linux自带信息收集Nmap 7.91 dirb 2.22漏洞扫描Burp Suite Community OWASP ZAP漏洞利用sqlmap 1.6 commix 3.1代理调试Charles 4.6 Fiddler Everywhere关键配置技巧# 优化nmap扫描策略避免触发WAF nmap -sS -T4 --scripthttp-enum -Pn -oA mallory_scan 192.168.56.1023. 分阶段渗透测试实战3.1 信息收集阶段商场类网站需要特别关注子域名促销活动常用二级域名API接口移动端往往存在未鉴权的接口第三方服务支付网关、物流查询等实战记录# 发现后台管理地址 dirb http://mallory.test /usr/share/wordlists/dirb/common.txt输出显示存在/admin路径返回302跳转需要鉴权3.2 漏洞挖掘与利用3.2.1 SQL注入绕过实战在商品搜索框测试时发现报错信息Warning: mysql_fetch_array()...使用sqlmap进行自动化检测sqlmap -u http://mallory.test/search?qtest --batch --risk3 --level5成功获取管理员凭据后发现密码为md5加密。通过cmd5.com解密得到明文admin1233.2.2 文件上传漏洞利用在会员头像上传处绕过限制的技巧修改Content-Type为image/jpeg使用双后缀名shell.php.jpg配合Burp修改文件头为GIF89a上传后通过文件包含漏洞触发http://mallory.test/preview?file../../uploads/shell.php.jpg4. 进阶攻击链构建4.1 横向移动技术获取Webshell后通过以下方法提权# 查找SUID文件 find / -perm -4000 2/dev/null # 利用vim.basic提权 sudo -l发现允许以root运行/usr/bin/vim.basic4.2 支付逻辑漏洞挖掘关键测试点修改订单金额参数如total0.01重复提交同一订单号并发请求造成库存超卖Burp拦截到的典型脆弱请求POST /checkout HTTP/1.1 ... {order_id:10086,coupon:DISCOUNT99,amount:999}修改为{order_id:10086,coupon:DISCOUNT99,amount:0.01}5. 防御方案与加固建议5.1 代码层防护PHP安全写法示例// SQL注入防护 $stmt $pdo-prepare(SELECT * FROM users WHERE id ?); $stmt-execute([$input]); // 文件上传校验 $finfo new finfo(FILEINFO_MIME_TYPE); if(!in_array($finfo-file($_FILES[file][tmp_name]), [image/jpeg,image/png])){ die(Invalid file type); }5.2 系统层加固关键命令# 关闭危险函数 sed -i s/disable_functions .*/,exec,passthru,shell_exec,system/ /etc/php/5.6/fpm/php.ini # 配置WAF规则 nano /etc/modsecurity/modsecurity.conf SecRuleEngine On SecRule REQUEST_URI contains select deny,status:4036. 常见问题排查指南6.1 扫描被拦截应对现象nmap扫描无响应 解决方案降低扫描速度-T2使用碎片扫描-f尝试不同扫描类型-sS/-sT6.2 漏洞利用失败分析典型原因核查清单参数编码是否正确如base64双重编码是否缺失必要的HTTP头如X-Requested-With时间戳校验是否未绕过7. 学习路径推荐我的个人进阶建议基础完成DVWA所有关卡重点SQLi/XSS/CSRF进阶Pikachu靶场的文件包含、反序列化漏洞实战Vulnhub上Red系列靶机模拟企业内网最后分享一个排查技巧遇到复杂漏洞时先用简单payload测试基础功能再逐步增加复杂度。比如测试SQL注入时先尝试引发报错再构造完整的union select语句。