掌握漏洞
怎样算真正的掌握一种漏洞
新出现的安全漏洞越来越多,很多人都说掌握XX种漏洞,但真正聊的时候,只有两句话就结束了,给人戛然而止的感觉。
那么不由得会问,怎样才算真正的掌握一种漏洞? 本文主要以常见的SQL注入漏洞为例进行简述
功能
安全是业务系统的一个属性,漏洞因实现业务功能而产生,有时认为漏洞是系统实现了设计之外的功能,特定的漏洞只会在特定的业务功能中才会存在
所以找漏洞,需要知道漏洞所附属的特定功能,尤其是比较复杂的与业务系统强相关的逻辑漏洞,对系统自身功能要有足够的了解。
尤其是企业安全建设多年后,常见的漏洞已经比较难找,新漏洞主要以业务功能相关的复杂漏洞为主。
是什么
最基础的要知道漏洞是什么,比如是SQL注入还是XSS,能够用自己的话表述清楚。
为什么
知道漏洞是怎样产生的,是由于开发过程中缺少安全意识,导致的编码错误,还是运维上线部署配置不当,导致漏洞的出现?
分类
按照不同的方法有不同的分类结果,比如SQL注入按照注入点,可能分为数字型、字符型、有时还有说搜索型 ,而如果按照是否有回显又分,盲注和有回显。还有一次注入和二次注入等
影响
漏洞都对应着相应的危害,是造成信息泄露,还是可以获得服务器权限等。
而且很多漏洞都不是一种危害,比如SQL注入漏洞:
- 如果select语句注入,导致攻击者读取数据库内容 造成信息泄露
- 如果是delete ,update语句注入,还会造成信息删除的风险
- 如果是高权限的数据库账号连接,如使用SA或者root,还可能导致攻击者读取任意文件、列目录,甚至获得webshell和执行任意命令
回答的是否全面代表候选人对知识的掌握程度
检测方式
怎样准确判断一个漏洞是否存在是技术人员的基本功,但方法有很多种,候选人应该熟练掌握适合自己(自己能够理解的方法),有时候不同场景判断的方法是不同的,切勿说一漏万。尽可能全面的表达,让面试官确信你真的掌握相关的内容。
黑盒测试
手工
在了解漏洞原理的基础上,自己手动构造payload,根据返回内容 判断漏洞是否存在。具体实施可能是通过返回包状态,或者dns回显方式
工具
使用工具自动化发现漏洞,比如使用burp,awvs,appscan进行全站扫描,发现注入点,然后使用sqlmap进行深入测试,提取数据进行深入验证等
难点
比较难发现二次注入,需要构造多次请求
白盒测试
进行代码审计发现漏洞,同样分为手工测试和使用自动化工具进行测试,与黑盒基本相同,不在赘述。
修复方案
一种漏洞的修复方案,也有多种,每种之间的优缺点及适合的场景是需要重点进行关注的。
比如对于SQL注入漏洞,对于存量业务建议采用黑/白名单对输入内容进行过滤的方式, 对于新的业务建议使用新的SQL查询框架,使用预编译防止SQL注入。同时建议合理配置数据库连接账号权限和敏感数据加密存储,控制出现漏洞后的风险。
自我理解
在理解漏洞本质基础上,高度概况漏洞,用一句话简要概况(可以是自己总结也可以是网上专家总结,关键是自己理解,能够解释)。能够不断展开漏洞细节,完整介绍漏洞的方方面面(可参考如上,也可自己分类)
后记
作者:思安 写于:2022/4/10