当前位置:首页 > 热点 > 查漏洞 正文

查漏洞

来源:烟消火灭网   作者:热点   时间:2026-10-17 05:54:02

老周把服务器日志翻到第三遍的查漏洞时候,终于骂了一句脏话。查漏洞日志里有个IP地址,查漏洞每隔四十分钟准时出现一次,查漏洞每次只请求一个接口,查漏洞请求完就消失。查漏洞这个接口是查漏洞用户登录。但奇怪的查漏洞是,请求里带的查漏洞参数全是空的。

他盯着屏幕看了半分钟,查漏洞忽然明白了。查漏洞有人在扫他的查漏洞登录接口,用空参数试探返回信息。查漏洞如果返回“参数错误”,查漏洞说明接口存在;如果返回“404”,查漏洞说明路径不对。这是最笨的漏洞扫描方式,笨到大多数安全设备都懒得报警。

老周是我认识的一个后端开发,在一家小公司维护一套跑了六年的系统。他跟我说这事的时候,语气里带着一种奇怪的得意。他说现在的漏洞扫描工具太聪明了,聪明到只会盯着已知的漏洞类型跑。SQL注入、XSS、文件包含,这些都有现成的规则库。可真正能捅出篓子的,往往是那些规则库还没收录的逻辑漏洞。

他给我举了个例子。他们系统里有个优惠券功能,用户领取后可以分享给朋友。分享链接里带一个券ID。正常流程是:A领券,分享给B,B点开链接,券转到B账户。问题出在,这个“转”的操作没有校验B是否已经领过同一张券。于是有人写了个脚本,把自己的分享链接反复打开,每打开一次,券就复制一份。最后他手里攒了三千多张券,全部用来抵扣,一分钱没花买了台电视。

“你说这算SQL注入吗?不算。算XSS吗?也不算。它就是逻辑上少了个判断。”老周说这话时,把椅子往后一仰,手在空中比划了一下,“但造成的损失,比很多高危漏洞都大。”

漏洞扫描工具查不出这种问题。工具只会看代码里有没有拼接SQL字符串,有没有对输入做过滤。它看不懂业务逻辑。它不知道“一个用户只能领一次券”这件事,除非有人把这条规则写成工具能理解的规则。但规则是死的,业务是活的。活的东西,总有缝隙。

老周后来自己写了个脚本,专门跑那些“不正常但合法”的请求。比如,把用户ID改成负数,看看会不会返回别人的数据;比如,把分页参数设成极大值,看看会不会拖垮数据库;比如,把金额字段传成字符串,看看会不会报错。他说这叫“手动模糊测试”,其实就是靠人的直觉去猜哪里可能出问题。

有一次他猜中了。系统里有个导出功能,导出条件里有个“开始时间”和“结束时间”。他把结束时间设成1970年,开始时间设成2099年,结果系统把整张表的数据全导出来了。没有权限校验,没有分页限制,一个请求拉走了几十万条用户记录。他赶紧把漏洞报上去,修了。但他说,如果他不去试,这个漏洞可能再跑三年都没人发现。

“工具查的是‘已知的坏’,人查的是‘没想到的坏’。”老周说,“这两件事,根本不是一回事。”

我问他,那到底该怎么查漏洞?他想了想,说:“别光看代码,去看人怎么用你的系统。尤其是那些不按你预期用的人。他们才是真正的扫描器。”

他顿了顿,又补了一句:“当然,前提是你得先知道自己的预期是什么。很多系统,连开发者自己都说不清楚。”

标签:

责任编辑:百科