源代码审计学习
- 源代码审计主要分成人工和工具扫描两种
- 代码审计的目的是为了发现代码中的安全漏洞
- 代码审计人员需要具备一定的编程能力,并对安全漏洞有一定的了解,是比较难的一种安全工作
工具
- fortify 工具 业内常用 很贵几十万 ,附上盗版链接: https://www.ddosi.org/fortify/
- seayphp 免费源代码审计工具
fortify 我觉得不太好用,倒不是从技术的角度,而是中文注释在里面都变成乱码了。让审计变得麻烦。
我推荐使用gpt作为源代码审计辅助工具!
黑盒与白盒
- 黑盒:不知道源代码的情况下,通过测试来发现漏洞(渗透测试)
- 速度快
- 渗透测试发现问题,代码审计确认原因
- 白盒:知道源代码的情况下,通过阅读源代码来发现漏洞(源代码审计)
- 全面深入的发现漏洞
- 代码审计的问题,通过渗透测试来验证可利用性
代码审计的基本流程
- 配置分析环境-> 熟悉业务逻辑 -> 分析程序架构-> 工具自动扫描-> 人工代码审计 -> 代码审计报告
在审计过程中,可以主要观察以下内容:
-
SQL注入:检查是否存在使用不安全的SQL查询语句的地方,例如拼接字符串而不使用参数化查询。
-
跨站点脚本攻击(XSS):确保不会将未经转义的用户输入插入HTML或JavaScript中。
-
不安全的文件上传:验证上传的文件类型和内容,避免任意代码执行。
-
认证和授权问题:确保正确地实现了身份验证和授权策略,并限制敏感数据或操作的访问。
-
敏感信息泄露:确保不会以明文形式存储密码、令牌或其他敏感信息。
-
内存泄漏和不安全对象引用:确保没有未释放的资源或不安全的对象引用,以防止恶意方利用它们。
-
密码破解和暴力攻击:确保密码哈希和加密算法足够安全,以防止破解和暴力攻击。