我是孜孜,目前在一家金融公司,从事基于 node.js
的全栈开发,并承担一些架构工作。
我不是从事安全工作行业的,我也只是把王昊天老师上个视频课,Web 安全攻防实战
的前端和 node 相关的课程学完。看到昊天老师出新课,我第一时间买了。
随后小编邀请我,写个读者故事,这让我陷入了纠结。我为什么下意识的买了这门课?这可是一门看起来更适合安全从业者的课啊?
我是一个理解东西很慢的人,从初入职场,就会被同事告知一些最佳实践,但是很多时候,我无法理解背后深意。
我初入职场第一份工作除了 fix bug, 就是整理 SOAP service 的 contract, 并且找到每个字段的准确校验条件。
我无法理解为什么要这样做? 看起来意义不大,每天花了很多时间确认准确的校验条件,却写不了几行 code。。。 于是我问 why?
同事告诉我,这是最佳实践,永远都要校验用户输入。要不然就会有被注入的风险。什么风险呢? SQL 注入?但是我们使用 parameterized query 了啊,为什么要做过多的校验呢?
我记住了永远要校验用户的输入,但是我没有理解。
直到最近的 log4j
zero day 漏洞,因为需要给团队做分享,我研究了下并重现了这个漏洞,这虽然是一个 log4j
的 zero day 漏洞,但是有很多地方都可以防范住这个问题,比如 永远都要检验用户的输入。我们程序或者上游网关有很多环节都可以校验并拦截 这个 zero day 漏洞的触发条件 ${jndi:***}
防范的原理和 02 路径穿越:你的 Web 应用系统成了攻击者的资源管理器? 类似。
了解漏洞,不仅仅是为了研究漏洞,还是让我们知道并理解最佳实践背后的意义。
也为自己带团队新人的时候,可以用更多的例子告诉他们,不要在写 code 的时候偷懒。因为总会有些奇奇怪怪攻击手法,让你认识到还可以这样使用自己开发的服务。
想要深入理解漏洞,感受攻击者高明的手法,我认为最好的实践方式就是当一把“黑客”。这也是这门课准备了 mituan 的环境,方便我们上手试玩。
但是正如昊天老师在开篇写道,
其次漏洞挖掘和分析需要的往往不是单一知识点,可能会涉及多个知识体系内的多个点,这就导致我们很容易在跟踪一个漏洞过程中不断深入延展,最后丧失清晰的学习边界,越学越不懂
因为不同漏洞设计的点不一样,如果遇到自己不熟悉的点,即使有详细步骤,试着理解并重现攻击也是很难的。
如果你的目的是和我一样,只是理解漏洞,帮助自己写出更健壮的 code。或许没有必要每个漏洞都去重现,我们只需要关注怎么防范漏洞就可以。
也许好奇心会驱使我,尝试着重现攻击。我希望我尽量使用 mituan 上手把玩每个漏洞,随着把玩的漏洞越来越多,或许我能理解攻击者奇特的脑回路。。也许有一天我也会发现一个 CVE 呢?