快递单号这东西,渗透看着就是快递一串数字加字母,可它背后藏着的单号信息量,比你想的查询大得多。
我干过一件挺无聊的渗透事。有个包裹从深圳发往北京,快递单号SF开头,单号顺丰的查询。我盯着物流轨迹看了一下午,渗透从“已收件”到“运输中”,快递再到“派送中”,单号每一条记录都带时间戳和操作网点。查询你猜我发现了什么?渗透那个中转站的名字,连地图上都搜不到,快递但系统里写得清清楚楚——XX物流园B区3号库。单号也就是说,单号本身是死的,但查询接口是活的,它能把一件实体货物的物理位置,翻译成一套数字轨迹。
渗透测试里有个经典动作,叫“越权查询”。原理特简单:你登录自己的账号,查自己的单号,服务器返回正常数据。但如果你把URL里的订单号参数改成别人的,比如把末尾的001改成002,服务器没校验归属,那你就看到别人的收件人姓名、电话、家庭住址了。我试过几次,还真有平台这么裸奔。不是大厂,是些小物流公司自研的系统,查询接口连个鉴权都没做,参数一改,全量数据直接吐出来。
更野的玩法是撞接口。有些快递查询平台,对外提供批量查询API,但参数校验不严。你把单号字段改成批量提交,或者注入个SQL语句,比如在单号后头加个单引号,看它报不报错。报错就说明有戏,接下来就是union select、时间盲注那套老手艺。我见过一个案例,某电商平台的物流查询接口,单号参数直接拼进SQL,连预编译都没用。攻击者用延时注入,一秒一秒地猜数据库里的表名,最后把整个用户表拖出来,几十万条记录,全是姓名加手机号加地址。
别以为只有技术漏洞才叫渗透。社工也是手段。快递单号查询页面上,经常有“常见问题”或“客服电话”。你打过去,说自己是收件人,报上单号,再瞎编个理由——比如“我手机号换了,收不到验证码,您帮我查下现在到哪了”。客服如果业务不熟,真可能直接告诉你。更阴的是,有些查询系统支持“手机号查件”,你只需要知道收件人手机号前三位和后四位,再配合点社会工程学套出完整号码,就能拉出他所有快递记录。这玩意儿比黑客技术好使多了,因为人永远是最大的漏洞。
还有个细节,很多人忽略。快递单上的条形码或二维码,本身就是个入口。你拿手机扫一下,弹出的不光是物流信息,有时候还能带出下单时的内部备注。比如“客户要求放丰巢”,或者“易碎品轻放”。但有些系统接口设计得不干净,扫个码能直接跳到管理后台的登录页,甚至有些内部测试环境没下线,扫出来是个开发调试页面,上面挂着数据库连接字符串。
说到底,渗透快递单号查询这件事,核心不是攻击某个平台,而是理解“数据流转”的每个环节。从商家发货、快递揽收、中转分拨、末端派送,每一步都有系统记录,每个记录点都可能是个接口。接口多了,攻击面就大了。你不需要攻破核心数据库,只要找到一个边缘系统的漏洞,比如某个老旧的网点查询工具,就能顺着数据流摸进去。
我最后再说个实在的。如果你自己搞渗透测试,别一上来就上扫描器。先手动查一个单号,把整个请求包抓下来,看看参数名、Cookie、Referer、User-Agent,这些细节里往往藏着后端框架的指纹。比如看到JSESSIONID,就知道是Java写的,那重点测一下Spring的已知漏洞。看到PHPSESSID,就往ThinkPHP的方向想。信息收集做到位,比乱打一通高效得多。
快递单号只是个小入口,但搞明白它怎么被查询、怎么被存储、怎么被校验,你就能摸清一套系统的大半脾气。这活儿不炫技,但特练手。