给老系统做个安全检查——Burp & SqlMap 扫描注入漏洞
背景
在 AI 技术突飞猛进的今天,类似 Cursor 之类的工具已经能写出堪比大部分程序员水平的代码了。然而,在我们的代码世界里,仍然有不少"老骥伏枥"的系统在兢兢业业地发光发热。这些祖传系统的代码可能早已过时,架构可能岌岌可危,但鉴于种种现实考量,它们还得继续"苟且偷生",维持着脆弱的平衡。
就像一位年迈的守护者,这些老系统虽然迟早会光荣退休,被新系统取代,但在那一刻到来之前,我们需要确保它们依然健健康康、稳稳当当、安安全全地运转。毕竟,谁也不希望它们在退休前突然"暴毙",给我们带来意想不到的麻烦。
让我们以一个陪伴了我们多年的老系统为例,化身"SQL 注入检测专家",用 Burp Suite 和 SqlMap 这两件"秘密武器",给它做一次全面的"安全体检"吧!毕竟,防范于未然总比亡羊补牢要强得多。
注意:安全风险千千万万,防范措施也是花样不穷,本篇只聊一下 SQL 注入这个风险。
安装软件
首先,我们需要准备好 Burp 和 SqlMap 两个工具,其中 Burp 是商业软件,包括企业版,专业版和社区版,具体的下载,安装方式,这里不在多说,大家可以去官网看一下,最新的下载地址传送门:https://portswigger.net/burp/releases/professional-community-2025-1-1。
关于 Burp 的安装,还是用传统搜索引擎搜一下吧,不要问 gpt,现阶段的大模型基本不会告诉你怎么做错误的事~
再来说一下 sqlmap,这是个开源脚本,用 Python 写的,所以要使用这个工具的话,我们的开发机器上也要有 Python 的运行环境才可以。
其他的好像也没啥可说,给出官网和仓库地址
上面的软件和脚本准备好后,为了让测试更加顺畅,我们还需要一个 Burp 的浏览器插件,长这样,在火狐的插件市场搜索安装就好。

准备环境
配置监听端口
首先在浏览器插件上,配置好监听端口,这里以默认的 8080 为例,也可以配置成任何没有被占用的端口。
需要注意的是,Burp 软件上设置的监听端口要和插件保持一致,我们才能执行网络抓/放包的操作
配置流程如下图


访问被测地址
通过火狐浏览器,访问一下我们之前准备好的待测试的地址,抓取到的数据包会反映到 burp 上面,然后我们把这个请求包保存到文件

注入测试
上述操作完成后,就可以使用 sqlmap 做注入测试了,这里为了方便,我直接使用 batch 模式

测试完成后,会在控制台的输出中,显示你的测试地址是否有测试漏洞,
有漏洞就像这样👇

没有就像这样

如果看到没有测出注入风险,控制台里还会给我们一下参数调整的建议,比如,我按它的建议 ,把风险等级调高,在增加 tamper 参数
输出的结果依然是没有注入风险。

总结
好了,简单的 SqlMap 联动 Burp 的测试就结束了,实际上,今天我们开发的大部分管理系统,都会使用 ORM 类的插件来替代传统的数据连接方式,而绝大部分的 ORM 框架,在中间层就已经基本杜绝了 SQL 注入的风险了,我们只需要关注业务就好。所以如果你开发的是一个现代应用,那评估安全风险的时候,可以把更多的精力放在其他方面,本篇介绍的内容,只适合给老系统做一些安全检查了。
版权声明: 本文为 InfoQ 作者【为自己带盐】的原创文章。
原文链接:【http://xie.infoq.cn/article/a04c6360696b50ea28b024d1a】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论