在渗透测试的世界里,测试人员常被称为代码世界的“侦探”,手握Burp Suite这类工具对目标资产进行探测。常规操作往往是在页面中疯狂修改参数、发送请求,却时常只收到平淡的响应,如同石沉大海;或是请求被直接拦截,令人无可奈何。特别是在登录框这类“经典场景”中,测试者需要同时扮演研究正常逻辑的用户和设计攻击载荷的研究者,还要时刻提防WAF的拦截。
最近挖掘到的几个中高危漏洞,并没有依赖0day漏洞或复杂的利用链,纯粹依靠细致的“人工审查”——逐行比对请求参数与系统响应,不放过任何细节。在某个下午,当修改了一个深藏在JSON数据结构中的参数后,系统反馈了异常的信息,一个未授权访问的漏洞就此显露。这让人深刻体会到,耐心的观察与分析往往比复杂的利用技术更为有效。
案例一:无限抽奖币漏洞
新的功能点往往被常规功能所掩盖,在黑盒测试中,只有通过不断的“点点点”,坚持到隐蔽功能出现的那一刻,漏洞可能就呼之欲出。
在某厂商资产中,发现一个不起眼的抽奖活动,每次抽奖消耗20币,并有实物奖品。

初始拥有100币。在尝试修改投币数量、拦截返回包控制奖品、并发签到等操作后,漏洞尚未找到,游戏币却已所剩无几。

在最后一次尝试抓娃娃并修改请求包无果后,已经准备放弃。然而,当游戏币耗尽时,界面出现了“分享赚币”的新功能点。

点击分享后,在Burp Suite历史记录中分析数据包,凭借经验锁定/app/point/doll/share接口。该接口中存在一个控制获得金币数量的参数。

思路清晰后,直接重放该请求,并将金币数量参数修改为极大值。

操作成功,获得了大量游戏币。这个案例告诉我们,在测试中不要轻易放弃,必须穷尽所有功能点。许多测试者在遇到鉴权后就断定目标不存在越权漏洞,这是不严谨的。一次完整的渗透测试应力求覆盖所有测试思路。
案例二:可控优惠券漏洞
某些服务在购买后会赠送优惠券,但通常只有购买高价服务才能获得高额优惠券。本案例通过手法,找到高等级优惠券对应的token,并在购买低级服务时进行替换,从而达到“刷券”效果。
省略前期信息收集步骤,直接进入数据分析阶段。选择一个商品服务下单,使用Burp Suite抓取所有流量。通过逐一分析,定位到创建订单的关键接口。
https://xxxxx/restapi/soa2/19691/orderCreate?_fxpcqlnired...

查看已创建的订单,发现支付成功后系统会赠送相应的优惠券,但都是面额很小的“福利券”。

将创建订单的请求发送到重放器,仔细观察数据包。这种涉及多流程的业务请求通常参数繁多,需要人工识别关键参数。最终,在data数据体中发现了记录优惠券token的字段。

通过一系列方法,找到了其他高价值优惠券的token,并将其替换到原始请求中对应的三个位置。这意味着,可以通过购买低级服务,自定义获取任意已知token的高价值优惠券,并且可以重复叠加。

替换后再次提交订单,原本的三张小额券被替换成了三张大额打车减免券。

案例三:CSRF漏洞利用
在逻辑漏洞、云攻防成为主流的今天,最基础的CSRF漏洞常被忽略。实际上,任何需要主观意愿才能执行的操作(如修改信息、添加地址、发送邮件等),如果请求中没有token或其他有效的校验机制,都可能存在CSRF风险。
在某站点中,正常修改绑定邮箱需要输入交易密码。但另一个“个人信息”接口却可以直接修改邮箱,且无二次验证。

为不影响业务,使用两个已实名的小号进行测试。修改个人信息并抓包,定位到更新信息的接口。
/fund/apl/postUserinfo

该请求直接携带新邮箱,跳过了交易密码验证,并且请求包中没有token、referer校验等状态码字段,符合CSRF漏洞的条件。
使用Burp Suite的“Engagement tools” -> “Generate CSRF PoC”功能,将POST请求转换为CSRF攻击代码。

将生成的代码保存为HTML文件,让已登录的受害者小号浏览器访问该文件。点击执行后,页面返回修改成功。

刷新目标站点,发现个人信息和邮箱已被修改为攻击者预设的内容,CSRF攻击成功。

案例四:信息泄露导致网站被接管
从企业SRC转向实际工作渗透测试,面对的不再是少数指定目标,而是海量的资产。分享一个近期通过信息泄露成功接管网站管理员权限的案例。
工作渗透测试通常有授权,目标可能是某一地区的大量单位。海量资产的梳理是关键第一步。

资产测绘与处理
众多单位中,只有部分存在备案网站。使用hunter等网络测绘平台,可以通过企业备案名称精准查询资产,这是其他平台不具备的优势。
查询语法示例:icp.name="xxx"

为了批量处理,编写了一个Python脚本,调用hunter的API进行自动化查询。脚本会读取单位名称列表,逐一查询并整理结果。
import requests
import base64
import time
import json
import pandas as pd
# ... (脚本代码较长,此处省略,保留核心逻辑展示)
# 主要功能:读取公司名文件,调用Hunter API,处理返回的JSON数据,并输出Excel报告。
脚本运行后,会生成包含所有有效资产的JSON文件和Excel表格,便于后续分析。

收集到域名资产后,通常先保留状态码为200的地址。随后使用nuclei、afrog等工具进行自动化扫描,快速发现诸如swagger泄露、目录遍历、已知CVE漏洞等问题,为进一步手工测试提供入口点。

渗透实战过程
在对某个单位网站进行手工测试时,首页功能看似简单。首先进行目录扫描。

扫描结果中出现了/Admin/目录,很可能是后台管理入口。
http://xxxxx.com/Admin/
访问该目录,返回301状态码并跳转到登录页面,说明存在鉴权。尝试常用弱口令未果。

常规思路穷尽后,重新审视目录扫描结果。发现一个名为password.txt的文件。

直接访问该文件,成功获取到明文的管理员密码。

使用获取到的密码成功登录网站后台,获得管理员权限。

总结
漏洞挖掘往往没有华丽的技巧,而是源于对无数个数据包的重复测试与细致观察。第100个数据包带来的惊喜,可能就藏在前99次的枯燥尝试之中。渗透测试的本质是坚持与细心,在看似穷尽的思路之外,或许就隐藏着突破的关键。保持严谨的测试流程和永不放弃的心态,是每个安全研究者最重要的品质。