代码审计基础--白盒测试

代码审计原理

检查源代码中的安全缺陷,检查程序源代码是否存在安全隐患,或者有编码不规范的地方,通过自动化工具或者人工审查的方式,对程序源代码逐条进行检查和分析,发现这些源代码缺陷引发的安全漏洞,并提供代码修订措施和建议。

基本思路

主要由三个方面组成:

关键词

功能(一般框架中)

通读代码

关键词

对一些存在漏洞的关键函数名进行定向筛选。

功能

对可能存在漏洞的相关功能进行审计,常见的有:

程序初始安装

站点信息泄漏

文件上传

文件管理

登陆认证

数据库备份恢复

找回密码

验证码

通读代码

通读全文发作为一种最麻烦的方法也是最全面的审计方法,但是该方法也是一种必要的方法。

了解整个应用的业务逻辑,才能挖掘到更多更有价值的漏洞。

语言特性—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文件编译之后的程序集

代码审计小结

通过搜索引擎查阅相关函数的用法和作用,见的多了自然就进入这个领域了。初学代码审计,会有大批代码看不懂,只有死磕下去,才会看懂越来越多的代码,也为了以后审计逻辑漏洞打下基础。但是,也不能盲目死磕一个不会的点,这个度只能自己把握。

另外,要有一种属于个人的审计思路,每个人的习惯不同,代码审计的方式也就不同。

当然一定要记住最上边说的三个方向点!危险函数,功能,通读代码

猜你喜欢

转载自blog.csdn.net/Vdieoo/article/details/109379811