文章总结: 本文是渗透测试实战教学,讲解Kali容器与BurpSuite环境搭建,演示信息收集、分析、验证的标准测试流程,通过nmap扫描、Burp抓包改包验证SQL注入,并分析攻击流量在日志中的特征,提出fail2ban封禁、WAF拦截等防护措施,强调测试方法论与日志监控的重要性。
综合评分: 78
文章分类: 渗透测试,实战经验,安全工具,安全意识
靶场实战04|Burp在手,天下我有(附docker靶场部署步骤)
原创
安全值班室
安全值班室
安全值班室
2026年9月20日 09:00
北京
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
前四期把地基打完了:协议、Linux、Web三层架构。这一课装上武器,把“测试”从“会敲几条命令”升级成“一套能复用的标准流程”。
很多新手拿到目标第一反应是开扫描器乱扫,扫完一脸懵:端口是出来了,然后呢?真正的测试是有方法论的:信息收集→分析→验证,每一步用什么工具、产出什么结论,心里要有数。这一期就把这条流水线搭起来。
01 / 环境搭建:Kali容器+Burp双件套
本章靶场分两件:Kali Linux容器负责命令行工具(nmap、curl、目录爆破),Burp Suite社区版负责图形化抓包改包。Kali是渗透测试圈的事实标准系统,社区版免费、官方提供,够新手用一年。
# 1. 拉取Kali官方镜像(大小约1~2GB,耐心等待下载完成)docker pull docker.1ms.run/kalilinux/kali-rolling# 2. 启动Kali容器,进入交互式终端docker run -it --rm --name kali-lab docker.1ms.run/kalilinux/kali-rolling bash# --rm:退出容器时自动销毁,不残留环境# -it:开启交互终端,可直接输入命令# 3. 进入容器内,更换阿里云软件源并安装实验工具(耗时2~3分钟)# 替换Kali源为阿里云镜像,解决官方源访问不稳定问题sed -i 's@http://http.kali.org/kali/@http://mirrors.aliyun.com/kali/@g' /etc/apt/sources.list.d/kali.sourcesapt update && apt install -y curl nmap net-tools iputils-ping# nmap:端口扫描工具# curl:构造HTTP请求# net-tools:网络排查工具# iputils-ping:ping连通性测试
Burp安装指引(宿主机上装,因为它要图形界面):打开 PortSwigger 官网 burp/communitydownload,下载对应系统的安装包,Java环境装好(Windows/Mac直接双击,Linux跑 java -jar burpsuite_community_*.jar)。装完启动,默认监听 127.0.0.1:8080,这就是后面浏览器要指过去的代理入口。
靶场说明:为什么选Kali+Burp这个组合?Kali容器保证命令行工具链跟行业一致、且完全隔离在本机;Burp社区版是全球使用率最高的Web抓包工具,面试问“会用什么工具”,答Burp是基本盘。两者组合正好覆盖“信息收集(Kali)→流量分析(Burp)”主线。
避坑指南(新手必看):
① 报错“Unable to locate package nmap”:Kali容器初始源没更新。先执行 apt update 再装,别跳过第3步。
② docker pull 卡住不动:镜像源慢。给Docker配国内镜像加速器(daemon.json加 registry-mirrors),或换个网络重试,pull是断点续传的,不会白下。
③ Burp启动提示 Java 版本不支持:社区版需要 Java 17+。装对应JDK(apt install openjdk-17-jdk),或用官方自带的安装包免去手动配Java。
④ 容器里 curl 外网超时:先确认宿主机能上网,再给容器配 –network host 重跑,别怀疑命令本身。
02 / 模拟攻击:把标准测试流程跑一遍
这一课不针对任何外部目标,全在本地自建靶场上演练。标准测试流程三步走:信息收集 → 分析 → 验证,下面分5步走通它。
步骤1|信息收集:先看目标暴露了什么——用nmap扫本地靶机(这里演示扫127.0.0.1自己的回环地址,纯本地):
nmap -sV 127.0.0.1# -sV 探测服务版本# 扫描结果:22(ssh)、3306(mysql)、8082/8083(http)# 发现Web服务,后续针对Web端口开展渗透测试
说明:为什么先扫端口?攻击面是“开着且能访问的服务”。端口清单决定测试方向——只开80就测Web,开了3389就要考虑远程桌面。这是信息收集的核心产出。
步骤2|挂上代理:让流量经过Burp——Burp默认监听127.0.0.1:8080,先把浏览器流量引过去。Chrome系浏览器可以用命令行参数一键指定代理,用完即走:
# Chrome 启动,配置HTTP代理为Burp,忽略证书错误chrome --proxy-server="http://127.0.0.1:8080" --ignore-certificate-errors# 打开BurpSuite → Proxy → Intercept# 浏览器所有HTTP请求都会经过Burp代理拦截
说明:Burp本质是一个中间人代理,浏览器先找它、它再转发给服务器,请求和响应都能被看到、被改。为什么非用代理?因为浏览器的Network面板只能看不能改,而漏洞利用的本质就是“修改客户端参数看服务器反应”。
步骤3|浏览目标:抓一个正常请求当基线——在本地靶场访问一个商品页,Burp里能看到完整请求包:
GET /goods.php?id=1 HTTP/1.1Host: localhostUser-Agent: Mozilla/5.0 (X11; Linux x86_64) Chrome/120.0Cookie: PHPSESSID=xxxxxConnection: close
说明:一个HTTP请求包的结构就是这五行起步:请求行(方法+路径+版本)、Host(目标)、UA(客户端标识)、Cookie(身份凭证)、Connection。记住这个结构,后面每一类漏洞的Payload都是往这些字段里塞东西。
步骤4|分析:参数就是攻击面——把请求送到Burp的Repeater(重放器),观察 id=1 这个参数:它是数据库查询的入参,改它会影响返回内容。分析结论:凡是能被客户端修改且影响服务端逻辑的参数,都是潜在攻击面。
步骤5|验证:改参数看反应——把 id=1 改成 id=1’(多一个单引号)重放:
GET /goods.php?id=1%27 HTTP/1.1# 响应特征:HTTP 500,页面返回SQL语法报错# 说明用户输入直接拼入SQL语句,存在SQL注入嫌疑# 报错中的库名、账号等敏感信息已打码 [REDACTED]
说明:验证环节回答一个关键问题:这个攻击面“能不能被打”。单引号触发语法错误,证明输入进了SQL拼接,第9章专门教利用。整个流程:信息收集(扫端口)→分析(找参数)→验证(探反应),每一步有明确产出,这就是专业测试和乱扫的区别。
03 / 日志分析:测试流量在服务器眼里长什么样
攻击特点:无论是手动测试还是扫描器,流量都会在服务器访问日志里留痕。一次典型的探测,Apache日志长这样:
# Apache 访问日志192.168.1.10 - - [19/Aug/2026:10:02:11 +0800] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)"192.168.1.10 - - [19/Aug/2026:10:02:14 +0800] "GET /admin/ HTTP/1.1" 404 153 "-" "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)"192.168.1.10 - - [19/Aug/2026:10:02:19 +0800] "GET /robots.txt HTTP/1.1" 200 98 "http://your-target.com/" "Mozilla/5.0 (X11; Linux x86_64) Chrome/120.0"192.168.1.10 - - [19/Aug/2026:10:02:22 +0800] "GET /goods.php?id=1%27 HTTP/1.1" 500 320 "http://your-target.com/goods.php" "Mozilla/5.0 (X11; Linux x86_64) Chrome/120.0"
逐行解读:
第1、2行:同一IP在3秒内连续请求 / 和 /admin/,UA是“Nmap Scripting Engine”——工具直接自报家门,这是nmap脚本扫描的特征。
第3行:访问 /robots.txt,Referer指向 your-target.com,UA变成Chrome——像人,但紧接着就访问敏感路径,是扫描器切换UA后的继续探测。
第4行:访问 /goods.php?id=1%27(%27是单引号),返回500——这是注入探测,说明目标Web服务已被手工测试命中,是最需要警惕的一行。
判断标准(真实攻击,不是误报/爬虫/正常流量):
① 工具UA直出:UA里出现 Nmap Scripting Engine、sqlmap、dirsearch 等工具标识,几乎可以判定是扫描行为。
② 请求节奏和路径序列:秒级间隔连续请求 /admin/、/backup/ 等不存在路径,404扎堆——人工浏览不会这么“地毯式”点。
③ 缺静态资源请求:正常浏览器打开页面会同时请求css、js、图片;纯扫描流量只请求目标路径本身,Referer和资源请求明显缺失。
④ 异常参数触发5xx:参数带编码字符(%27、%20)后状态码从200变500,是漏洞探测正在发生的直接证据。
注意区分:搜索引擎爬虫UA规范(Googlebot等)、频率稳定、只爬公开路径,不是攻击;特征叠加出现,基本可断定有人在做主动探测。
04 / 如何防护:让扫描器“暴露”在流量里
先讲原理:攻击者为什么能扫描?因为服务是公开的、探测是无痕的——默认Web服务器会把所有请求记进日志,但没人看。攻击者的工具再隐蔽,也要发请求,发了就有统计特征:频率、路径分布、UA、资源请求模式,和真人浏览差异巨大。防护的本质不是“让工具扫不了”,而是让扫描行为可被发现、可被处置。
基础级(必须做):日志留全+告警。确认访问日志记录UA、Referer、状态码(Apache默认格式已含),并每天扫一遍异常特征:
# 统计UA中包含扫描工具特征的请求grep -Ei "nmap|sqlmap|dirsearch|nikto" /var/log/apache2/access.log | wc -l# 统计404状态最多的IP(大量404是目录扫描典型特征)awk '{print $1}' /var/log/apache2/access.log | sort | uniq -c | sort -rn | head -10
进阶级(推荐):主动拦截。用fail2ban对扫描IP自动封禁,或用WAF规则拦截工具UA和注入特征:
# fail2ban 自定义过滤规则:10分钟内404请求超过30次则封禁IP[definition]failregex = ^<HOST>.*"(GET|POST).*" 404maxretry = 30findtime = 600bantime = 3600# 规则说明# failregex:正则匹配日志,捕获访问产生404状态码的客户端IP <HOST># maxretry:最大失败次数阈值# findtime:统计时间窗口,单位秒(600秒 = 10分钟)# bantime:封禁时长,单位秒(3600秒 = 1小时)# WAF等价防护思路# 1. 拦截User-Agent包含 sqlmap / nmap / dirsearch 等扫描器特征# 2. 拦截请求参数中存在 %27(单引号URL编码)、union select 等注入探测载荷
纵深防御:部署蜜罐目录(/admin、/backup 等假路径,谁访问谁暴露);把日志接入SIEM做行为基线,偏离基线的请求自动告警;对外最小化暴露——只开放必要端口、管理后台加IP白名单或VPN;周期性做红队演练,用同样的扫描工具验证自己的检测规则到底能不能拦住。分层设防后,攻击者每扫一步都会留下“下一步”的线索。
05 / 总结复盘
本章要点(新手必须记住):
① 测试方法论三阶段:信息收集→分析→验证,先看攻击面再动手,不要上来就乱扫。
② nmap -sV 扫出开放端口和服务版本,是信息收集的起点;攻击面=开着且能访问的服务。
③ Burp是中间人代理,浏览器流量先过它,改参数重放是漏洞验证的核心操作。
④ HTTP请求包五要素:请求行、Host、UA、Cookie、Connection,所有Payload都往这些位置塞。
⑤ 扫描流量在日志里特征明显:工具UA、404扎堆、无静态资源请求——防守方要会认。
面试可能怎么问:
“你的一次完整渗透测试流程?”(答:先信息收集——资产、端口、指纹;再分析——按攻击面分类找参数和入口;再验证——构造请求确认漏洞并评估影响;最后输出报告。)
“Burp怎么抓包?”(答:Burp监听127.0.0.1:8080,浏览器代理指向它,流量经Burp转发即可在Proxy里查看和修改请求。)“日志里怎么发现扫描?”(答:看UA工具标识、404密集程度、请求节奏和静态资源缺失,结合fail2ban自动封禁。)
新手村毕业!第5章进入“逻辑漏洞”模块——越权访问:为什么改个ID就能看到别人的订单?这是新手最容易出成果的漏洞类型,靶场已备好。
关注我,下期不迷路
MORE
往期回顾
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:安全值班室 安全值班室
安全值班室《靶场实战04|Burp在手,天下我有(附docker靶场部署步骤)》