ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Burp Suite Intruder暴力破解实战:从Pikachu靶场入门Web安全测试

2026/8/5 11:43:20 拓冰建站 浏览量
Burp Suite Intruder暴力破解实战:从Pikachu靶场入门Web安全测试 1. 项目概述从“登录框”到“管理员后台”的实战演练如果你刚开始接触网络安全尤其是Web应用安全那么“暴力破解”这个词你一定不陌生。它听起来很“暴力”但在实际渗透测试中却是一项基础且至关重要的技术。今天我们不谈复杂的理论就从一个最经典的场景入手一个网站的登录表单。你的目标很简单就是通过尝试各种用户名和密码的组合找到那个能让你成功登录的“钥匙”。Pikachu靶场作为国内最知名的Web漏洞练习平台之一其“基于表单的暴力破解”关卡就是为这个场景量身定做的。它模拟了一个没有任何验证码、登录失败次数限制或复杂令牌Token防护的脆弱登录点。而我们的“武器”则是渗透测试领域的瑞士军刀——Burp Suite更具体地说是它的自动化攻击模块Intruder。为什么选择这个组合作为新手入门的第一课因为它的反馈是即时的、可视化的。你发送一个请求服务器返回一个响应成功或失败一目了然。这个过程能让你最直观地理解HTTP协议的无状态交互、客户端与服务器的对话以及自动化工具如何将枯燥的重复劳动变得高效。我见过很多新手在成功爆破出第一个账号密码时那种“原来如此”的兴奋感是驱动他们深入这个领域最原始的动力。本文将带你完整走一遍流程从环境配置、抓包分析到Intruder模块的深度配置最后成功破解并附上我精心整理和筛选过的实战字典文件。2. 环境搭建与前期准备打造你的渗透测试工作台工欲善其事必先利其器。在开始“爆破”之前一个稳定、隔离的测试环境是安全实验的基石。我们不建议在任何生产环境或未经授权的网站上做测试因此在本地虚拟机中搭建全套环境是最佳选择。2.1 靶场环境部署Pikachu on PHPStudyPikachu靶场本质上是一个用PHP编写的Web应用因此它需要一个Web服务器如Apache/Nginx和PHP运行环境通常还会用到MySQL数据库。对于Windows用户最省心的方案是使用PHPStudy这类集成环境软件。首先从Pikachu的官方GitHub仓库或可信源下载最新版的靶场源码。接着安装PHPStudy建议使用较新的版本如PHPStudy V8。安装完成后启动PHPStudy确保其Apache和MySQL服务处于运行状态图标为绿色。然后将下载的Pikachu文件夹解压并整个复制到PHPStudy的WWW根目录下通常是D:\phpstudy_pro\WWW\或C:\phpstudy\WWW\。关键的一步是数据库初始化。在浏览器中访问http://127.0.0.1/pikachu/首次访问时页面通常会提示你进行安装或初始化。点击相关链接它会引导你创建数据库。这个过程通常是自动化的页面会检测数据库连接你只需要点击“初始化安装”按钮脚本就会自动创建所需的数据库和表并插入初始数据包括我们待会要破解的测试账号。完成后你应该能看到Pikachu的主界面琳琅满目的漏洞模块列表其中就有“暴力破解” - “基于表单的暴力破解”。注意有时初始化可能会因为数据库密码不对而失败。PHPStudy的MySQL默认密码可能是root或空。如果失败你需要手动修改Pikachu配置文件通常是inc/config.inc.php中的数据库连接信息使其与你的PHPStudy设置匹配。2.2 攻击工具配置Burp Suite代理设置我们的主力工具是Burp Suite Community Edition社区版对于个人学习和非商业用途完全免费且功能强大。从PortSwigger官网下载安装后首次运行需要临时生成一个项目文件。要让Burp能截获和分析浏览器发出的流量必须配置浏览器通过Burp的代理服务器进行网络访问。Burp默认监听本机127.0.0.1的8080端口。启动Burp代理打开Burp Suite进入Proxy标签页下的Options子标签。确认Proxy Listeners列表中有一条监听127.0.0.1:8080的条目且状态为Running。如果没有点击Add绑定地址和端口即可。配置浏览器代理这里以最常用的Firefox为例其代理设置独立于系统更为方便。打开Firefox进入设置-网络设置-设置...选择手动代理配置在HTTP代理和SSL代理中均填入127.0.0.1端口填8080。同时在不代理...的输入框中最好清空或确保不包含localhost, 127.0.0.1以便Burp也能捕获到对本地靶场的请求。安装Burp CA证书为了能解密HTTPS流量虽然我们本地靶场是HTTP但养成好习惯你需要让浏览器信任Burp。在浏览器中访问http://burp或http://127.0.0.1:8080点击CA Certificate链接下载证书文件。然后在Firefox的设置-隐私与安全-证书-查看证书-证书机构中导入该证书并勾选信任。开启拦截回到Burp在Proxy-Intercept标签页确保Intercept is on按钮是按下状态。现在你在浏览器中的所有HTTP/HTTPS请求都会被Burp暂停并显示出来。完成以上步骤后在浏览器中访问你的Pikachu靶场地址如http://127.0.0.1/pikachu你应该能在Burp的Intercept标签页看到这个请求。点击Forward放行直到页面完全加载。这个“拦截-放行”的练习能让你立刻感受到Burp作为中间代理的强大控制力。3. Intruder模块深度解析不仅仅是“爆破”工具很多人把Intruder简单地理解为“爆破工具”这低估了它的能力。Intruder的核心是一个高度可定制的自动化HTTP请求发送器。它可以针对一个HTTP请求模板系统性地修改其中你指定的一个或多个参数我们称之为“攻击位置”然后按照你设定的规则和字典Payload批量发送请求并记录和分析所有响应。这对于测试输入点如登录凭证、ID参数、搜索关键词的安全性至关重要。3.1 四种攻击模式详解与选用场景在Intruder的Positions标签页Attack type决定了Payload如何被应用到攻击位置上。理解这四种模式的差异是高效使用Intruder的关键。Sniper狙击手模式工作方式它只有一个Payload集合Set。这个集合里的每个Payload会依次替换每一个你标记的攻击位置$但一次只替换一个位置其他位置保持不变使用原始请求中的值。适用场景测试单个参数的不同值。例如你有一个查询用户详情的接口?id100你标记了100为攻击位置。使用Sniper模式和一个数字字典它会依次发送?id1,?id2,?id3... 的请求。对于需要同时爆破用户名和密码的登录表单Sniper模式不适用因为它无法处理两个变量同时变化的情况。Battering ram攻城锤模式工作方式它也只有一个Payload集合。但这个集合里的每个Payload会同时替换所有你标记的攻击位置。也就是说所有位置在每次请求中都被替换成同一个值。适用场景测试多个参数需要保持相同值的情况。比较少见例如一个修改密码的功能需要同时验证“旧密码”和“确认旧密码”两个字段是否一致你可以用这个模式测试。Pitchfork草叉模式工作方式这是最灵活的模式之一。它为每一个标记的攻击位置分配一个独立的Payload集合Set 1, Set 2...。攻击时Intruder会从每个集合中按顺序各取一个Payload组合成一次请求。它像一把草叉同时“叉起”多个位置的不同值。适用场景测试一一对应的关系且每个参数的值来自不同的字典。经典场景是“用户名枚举”你有一个疑似存在的用户名列表Set 1和一个固定的弱密码如123456Set 2。Pitchfork模式会用第一个用户名123456第二个用户名123456...的方式去测试从而找出哪些用户名使用了这个弱密码。Cluster bomb集束炸弹模式工作方式这是暴力破解用户名和密码的标配模式。它同样为每个攻击位置分配独立的Payload集合。攻击时它会进行笛卡尔积运算。即第一个集合如用户名的每一个Payload都会与第二个集合如密码的每一个Payload进行配对。适用场景完全未知的用户名和密码组合爆破。假设用户名字典有100个密码字典有1000个Cluster bomb模式将生成100 * 1000 100,000个请求尝试所有可能的组合。这正是我们本次Pikachu靶场练习需要使用的模式。3.2 实战抓包与攻击位置标记理解了模式我们开始实战操作。首先在已配置好代理和拦截的浏览器中进入Pikachu的“基于表单的暴力破解”页面。你会看到一个简单的登录框。捕获登录请求在用户名和密码框中随意输入一些内容例如test和123然后点击“登录”或提交按钮。此时请求会被Burp Suite拦截在Proxy-Intercept标签页。发送到Intruder在这个被拦截的请求报文上右键选择Send to Intruder快捷键CtrlI。这时Burp会自动切换到Intruder模块的Positions标签页。清除与标记你会看到请求的URL、参数、Body等内容被自动填充进来。首先点击右侧的Clear §按钮清除所有Burp可能自动添加的标记§符号。然后在请求体中通常是usernametestpassword123submitLogin这样的格式用鼠标分别选中我们输入的用户名test和密码123每选中一个就点击一次Add §按钮。成功标记后test和123会被一对§符号包围变成username§test§password§123§。这表示我们告诉Intruder“这两个地方是需要你替换的变量。”选择攻击模式在Attack type下拉菜单中选择Cluster bomb。你会看到下方自动出现了Payload set: 1和Payload set: 2分别对应我们标记的第一个位置username和第二个位置password。至此攻击模板就设置好了。Intruder已经知道要修改哪里以及如何修改进行笛卡尔积组合。接下来就是告诉它用什么来修改——也就是配置Payload载荷。4. Payload配置与字典艺术效率与精准的平衡Payload是Intruder攻击的“弹药”。配置得当事半功倍配置不当要么徒劳无功要么引发不必要的警报如触发账户锁定机制。虽然Pikachu靶场没有防护但养成好习惯至关重要。4.1 Payload类型与设置详解切换到Payloads标签页。因为我们标记了两个位置且使用Cluster bomb模式所以这里有两个Payload set需要配置。Payload Set 1对应我们标记的第一个变量username。Payload type选择Simple list。这是最常用的类型表示从一个简单的列表我们的字典文件中读取Payload。Payload Options [Simple list]这里就是加载或输入具体Payload的地方。你可以点击Load...按钮从磁盘选择一个包含用户名的文本文件.txt格式每行一个用户名。也可以直接在输入框里手动添加点击Add按钮加入列表。Payload Set 2对应我们标记的第二个变量password。同样Payload type选择Simple list。在Payload Options中加载你的密码字典文件。除了Simple list其他几种常用类型也值得了解Runtime file从运行时文件读取Payload适用于超大型字典避免一次性加载到内存。Numbers生成数字序列常用于爆破数字ID。Brute forcer按字符集生成所有组合适用于已知长度和字符集的密码但组合数爆炸需谨慎使用。Custom iterator高级功能用于构建复杂的Payload格式。4.2 字典文件的构建与优化心得字典的质量直接决定爆破的效率和成功率。一个糟糕的字典比如全是随机无意义的字符串就像用勺子挖隧道效率极低。这里分享我多年积累的字典构建思路和一份为你准备好的实战字典核心内容。用户名字典思路常见默认账号admin,administrator,root,test,guest,user,manager。与目标相关的名称公司名缩写、产品名、项目代号。例如靶场叫pikachu可以尝试pikachu,pika等。姓名组合收集目标组织可能的人员姓名首字母姓氏全拼等。这在针对特定组织的测试中有奇效。规律生成利用工具如crunch、CUPP按一定规则年份、常见后缀生成用户名列表。密码字典思路更为关键顶级弱口令123456,password,admin,12345678,qwerty,123456789,12345,1234,111111,1234567。这些必须放在字典最前面。靶场/系统默认密码很多练习平台或开源系统有默认密码如admin/adminroot/123456。密码策略模式年份常见词2024admin,admin2023,welcome2024公司名/产品名数字pikachu123,pikachu2024键盘模式qazwsx,1qaz2wsx,!qaz2wsx简单变形Admin123!,admin123,Pssw0rd字典合并与去重可以从互联网收集公开的弱口令字典如rockyou.txt但一定要根据目标进行裁剪和合并并用sort -u命令去重避免重复尝试。附本次Pikachu靶场实战精简字典示例你可以创建两个文本文件usernames.txt和passwords.txt。usernames.txt内容建议admin administrator root test pikachu guest userpasswords.txt内容建议包含Pikachu靶场预设的正确答案123456 password 12345678 admin 12345 123456789 pikachu 123 admin123 password123实操心得在真实环境中盲目使用超大字典进行全量爆破是不可取的极易触发防护和产生大量日志。优先使用“小而精”的字典结合社会工程学信息从网站、GitHub、员工领英资料中搜集进行针对性爆破成功率更高隐蔽性也更强。对于本次靶场练习上述精简字典足以覆盖常见测试用例。5. 发起攻击与结果分析在数据海洋中寻找“成功”的灯塔配置好Payload后点击Start attack按钮Intruder会弹出一个新窗口开始发送攻击请求。这个窗口是实时显示攻击状态和结果的仪表盘。5.1 结果列解读与成功标识攻击窗口的表格包含多列我们需要重点关注以下几列Request请求序号。Payload 1/Payload 2当前请求所使用的Payload组合。StatusHTTP响应状态码。200通常表示请求被服务器接收和处理了不一定是登录成功。Error是否有网络错误。Timeout是否超时。Length这是判断登录成功与否最关键的一列它表示服务器返回的HTTP响应体的字节长度。在暴力破解登录时成功登录的页面和失败登录的页面其HTML内容几乎总是不同的。例如失败可能返回一个包含“登录失败”提示语的页面而成功则会跳转到后台首页或显示欢迎信息这必然导致响应长度Length不同。Comment可以手动添加注释。如何分析结果排序点击Length列的表头让所有请求按响应长度排序。长度与众不同的行通常是唯一一个不同长度或者极少数几个相同长度极有可能就是成功的登录尝试。对比仔细观察那些长度特殊的请求。在表格中选中它下方会显示完整的Request和Response。切换到Response标签页甚至用Render渲染功能查看网页效果确认是否真的跳转到了成功页面。验证将找到的用户名和密码组合在浏览器中手动输入尝试登录进行最终确认。在Pikachu靶场的这个练习中使用我们提供的字典你会很快发现一个请求的Length值与其他绝大多数请求不同。查看其Payload大概率就是admin/123456。这就是靶场预设的正确答案。5.2 攻击性能与线程控制在攻击窗口的菜单栏你可以看到攻击的进度、已发送请求数、错误数等信息。Intruder-Options标签页下有一些重要设置Number of threads并发线程数。增加线程可以提升攻击速度但会给服务器带来更大压力也更容易被识别为攻击。在测试环境可以调高如20-30对真实目标需谨慎建议调低如5-10。Throttle请求间隔。可以设置每次请求之间的固定延迟Delay between requests或随机延迟Add random variations。在真实测试中设置延迟是规避WAFWeb应用防火墙或账户锁定策略的基本礼仪。Retry on failure失败重试。网络不稳定时可以开启。6. 进阶技巧与常见问题排查掌握了基础流程我们来看看一些能让你更得心应手的技巧以及新手常会遇到的问题。6.1 使用Grep Match和Extract精准过滤结果单纯靠肉眼对比Length有时在复杂场景下会失效比如页面包含动态内容导致长度波动。Intruder提供了更强大的结果过滤工具Grep - Match和Grep - Extract。Grep - Match在Intruder-Options-Grep - Match中你可以添加一些字符串。Intruder会在每个响应中搜索这些字符串并在结果表中新增一列显示是否匹配。例如在登录失败页面HTML里总有“登录失败”、“invalid”等字样。你可以添加登录失败、error等关键词。那么所有匹配这些关键词的请求都会被标记出来。成功登录的响应不包含这些词从而被轻易区分。Grep - Extract更进一步你可以从响应中提取一段特定的文本比如成功登录后的用户名提示“欢迎admin”。在Grep - Extract中通过CSS选择器或正则表达式定义提取规则提取的内容会显示在结果列中一目了然。6.2 遇到TokenCSRF Token怎么办Pikachu靶场的“基于表单的暴力破解”关卡故意没有设置Token但它的“验证码绕过”或“Token防爆破”关卡就有。Token通常是CSRF Token是服务器生成的一个随机值随登录表单下发提交时必须原样带回用于防止跨站请求伪造和简单的重放攻击。这直接阻止了我们的暴力破解因为每次尝试都需要一个新的、有效的Token。应对策略以Pikachu的Token防爆破关卡为例抓包观察先正常抓取一次登录请求包。你会发现请求参数里多了一个像tokenabcdefg123456这样的字段。分析Token来源查看之前获取登录页面的那个GET请求的响应体Token通常隐藏在表单的一个隐藏输入框input typehidden nametoken value...里或者由JavaScript生成。使用Pitchfork或Cluster bomb递归方法APitchfork你需要标记三个攻击位置username,password,token。但token需要每次请求都不同。你可以先手动连续抓几次登录页获取几个连续的Token做成一个字典Set 3。然后使用Pitchfork模式让Intruder从用户名字典Set 1、密码字典Set 2、Token字典Set 3中各取一个进行组合。缺点是Token字典很快用完攻击就停止了。方法B递归Cluster bomb这是更自动化的方法。首先在Positions里只标记username和passwordtoken先不标记使用原始抓包里的值。在Payloads标签页找到最下面的Resource Pool你可以创建一个新的资源池并为其配置Request Engine。更关键的是使用Recursive grep功能在Options标签页。你需要先配置一个Grep - Extract规则从登录页面的响应中提取出Token值。然后在攻击设置中启用“Recursive grep”并指定将这个提取到的Token值用于填充请求中token参数的位置。这样Intruder会在每次请求前先自动访问一次登录页面获取新Token再用新Token组合用户名密码进行登录尝试。这就完美解决了Token动态变化的问题。这也是为什么网络热词中会提到“token用递归搜索”。6.3 常见问题与解决速查表问题现象可能原因解决方案Burp抓不到浏览器流量1. 浏览器代理未设置或设置错误。2. Burp代理监听未开启。3. 浏览器访问的是HTTPS但未安装/信任Burp CA证书。1. 检查浏览器代理设置是否为127.0.0.1:8080。2. 检查BurpProxy-Options中Listener是否Running。3. 访问http://burp下载并安装证书在浏览器中信任它。Intruder攻击速度极慢或卡住1. 线程数设置过高本地资源或靶机处理不过来。2. 字典过大。3. 网络或靶场环境问题。1. 在Intruder-Options中降低Number of threads如降至5。2. 使用更精简的字典。3. 检查PHPStudy、靶场服务是否运行正常。所有请求返回相同Length无法区分成功1. 成功和失败的页面结构可能故意设计得很像。2. 重定向导致Length计算的是跳转前页面。1. 使用Grep - Match功能搜索成功/失败页面独有的关键词如“退出”、“欢迎” vs “错误”。2. 在Options-Redirections中尝试将重定向处理改为“Always”或“On-site only”让Burp自动跟随跳转分析最终页面的长度。攻击结果中出现大量4xx/5xx错误1. 请求格式在Payload替换后被破坏如特殊字符未编码。2. 服务器对异常请求直接报错。1. 检查标记位置是否准确是否包含了不该标记的字符如引号、等号。2. 在Payloads-Payload Encoding中可以尝试勾选“URL-encode these characters”对Payload进行URL编码。无法标记Payload位置请求可能不是简单的application/x-www-form-urlencoded格式而是JSON或XML。切换到Raw视图查看原始请求体。对于JSON你需要精确选中JSON字符串中value部分进行标记。Intruder支持多种格式但标记时需要更小心。6.4 安全研究与法律边界最后也是最重要的一点必须强调本文所述的所有技术仅限用于授权的安全测试、教育学习以及像Pikachu这样的专用漏洞练习环境。未经明确授权对任何网站或系统进行暴力破解或其他安全测试都是非法的属于计算机入侵行为将面临法律责任。真正的网络安全工程师和道德黑客白帽子他们的技能是用来帮助企业和组织发现并修复漏洞从而保护网络空间的安全。在学习过程中请始终坚守法律和道德的底线。你可以搭建自己的虚拟机环境使用DVWA、bWAPP、WebGoat、Pikachu等合法的靶场进行无限次的练习这是提升技能最安全、最有效的途径。当你熟练掌握了这些工具和技术背后的原理你便拥有了守护一方网络安全的能力而不是破坏它。