代码审计基础--白盒测试
代码审计原理
检查源代码中的安全缺陷,检查程序源代码是否存在安全隐患,或者有编码不规范的地方,通过自动化工具或者人工审查的方式,对程序源代码逐条进行检查和分析,发现这些源代码缺陷引发的安全漏洞,并提供代码修订措施和建议。
基本思路
主要由三个方面组成:
关键词
功能(一般框架中)
通读代码
关键词
对一些存在漏洞的关键函数名进行定向筛选。
功能
对可能存在漏洞的相关功能进行审计,常见的有:
程序初始安装
站点信息泄漏
文件上传
文件管理
登陆认证
数据库备份恢复
找回密码
验证码
通读代码
通读全文发作为一种最麻烦的方法也是最全面的审计方法,但是该方法也是一种必要的方法。
了解整个应用的业务逻辑,才能挖掘到更多更有价值的漏洞。
语言特性—PHP
PHP目录结构
放引用的库或者插件,文件夹名字一般叫 librarie、lib、plugin
PHP项目中 vendor 文件夹是PHP的包管理器安装依赖代码存放的路径
视图代码文件夹一般叫 layout、theme、template、view
控制器文件夹一般叫 controller
公用的一些代码文件夹一般叫 common
一些工具函数可能放在 helper/util/tool 文件夹里
配置文件放在 config 文件夹里
components 或 modules: 这里有mvc的代码,把功能互相独立出来
route.php: 对不同的url调用不同的代码
语言特性—Java
Java代码审计辅助工具
Jetbrains IDEA(IDE)
Sublime text(文本编辑器)
JD-GUI(反编译)
Fernflower(反编译)
Bytecode-Viewer
Eclipse(IDE)
NetBeans(IDE)
语言特性—ASP.NET
一般来说,在 asp.net 应用中,需要进行观察的文件有:aspx.cs、.cs、.ashx 和 dll文件
aspx.cs 是页面后的代码,aspx负责显示,服务器端的动作就是在aspx.cs定义的
.cs是类文件,公共类之类的
.ashx 是一般处理程序,主要用于写 web handler,可以理解成不会显示的 aspx页面,不过效率更高
dll 就是 cs文件编译之后的程序集
代码审计小结
通过搜索引擎查阅相关函数的用法和作用,见的多了自然就进入这个领域了。初学代码审计,会有大批代码看不懂,只有死磕下去,才会看懂越来越多的代码,也为了以后审计逻辑漏洞打下基础。但是,也不能盲目死磕一个不会的点,这个度只能自己把握。
另外,要有一种属于个人的审计思路,每个人的习惯不同,代码审计的方式也就不同。
当然一定要记住最上边说的三个方向点!危险函数,功能,通读代码