zl程序教程

您现在的位置是:首页 >  其他

当前栏目

php代码审计入门前必看

2023-04-18 12:28:37 时间
  1. 首先先介绍什么是代码审计?

代码审计:是指针对源代码进行检查,寻找代码中的bug,这是一项需要多方面技能的技术

包括:对编程的掌握,漏洞形成原理的理解,系统和中间件等的熟悉

         2.为什么要进行代码审计,这也是对刚进入代码审计领域的小白爱问的问题?

代码审计是企业安全运营以及安全从业者必备的基础能力

代码审计在很多场景中都需要用到,比如:企业安全运营,渗透测试,漏洞研究。

目前已经有不少公司在推广微软的软件SDL(Security Development Lifecycle,安全开发周期)

他涵盖需求分析--->设计---->编码---->测试----->发布------>维护,安全贯穿整个软件开发周期

其中设计,编码和测试是整个SDL的核心,安全问题大多在这里被解决掉。

其中在安全设计这一块,必须要非常了解漏洞形成的原理,纵观全局。

而在代码实现也就是编码阶段,安全依靠于编程人员的技术基础以及前期安全设计的完整性。

然后才是测试,测试包括:白盒测试,黑盒测试,灰盒测试。

黑盒测试又叫功能测试,是指在不接触代码的情况下,测试系统的功能是否存在bug,是否满足设计需求。

而白盒测试就是我们说的代码审计,以开放的形式从代码层面寻找bug,如果发现有bug则返回修复,直到没有bug才允许软件发布上线

渗透测试人员掌握代码审计是很重要的,因为我们在渗透过程中经常需要针对目标环境对payload进行调试。

另外,如果通过扫描器扫描到目录下的1一个源代码备份包,通常攻击者都会利用源代码包找到一些配置文件,因为里面有数据库,API等一类配置。

如果环境有限制,比如目标站点数据库限制连接ip等,那么工具小子可能在源代码包进行的漏洞利用也就到此为止。

对于懂代码审计的人,结果就完全就不同了,它可以对源代码进行安全审计,发现网站代码里存在的漏洞,然后利用挖掘到的漏洞进行渗透。

 3.这个时候有小白想说:那代码审计对编程能力的要求是什么?

代码审计对编程语言的基础有一定要求,至少要能看懂代码,这里说的看懂代码不是简单的理解几个if.....else语句和for循环,而是能看的懂代码的逻辑,即使有很多的代码或函数没有见过,也是可以去百度进行搜索查找的。

都说编程在语言在一块都是一通百通,只要我们对编程思想理解的非常透彻,重新学习一门语言也是非常容易上手的,所以不管你之前写过java还是C#程序,想玩一玩php的代码审计都应该不是什么大的问题。

4.代码审计的思路

通常做代码审计都是检查敏感函数的参数,然后回溯变量,判断变量是否可控并且没有经严格的过滤,这是一个逆向追踪的过程。

而代码审计并非这一种手段,还可以先找出哪些文件在接收外部传入的参数,然后跟踪变量的传递过程,观察是否有变量传入到高危函数里,或传递的过程中是否有代码逻辑漏洞,这是一种正向追踪的方式,这样的挖掘方式比逆向追踪挖掘的更全。

还有一种方式是直接挖掘功能点漏洞,根据自身经验判断该类应用通常在哪些功能中会出现漏洞,直接全篇阅读该功能代码。

可能不少小白对于学习php代码审计还有一些迷茫,或许之前尝试过学习,但是一直没有很好的进展,因为代码审计是一门很专的技术活,要学好php代码审计,需要掌握以下几点:

①php编程语言特性和基础要有

②web前端基础要有

③漏洞形成的原理要懂

④代码审计的思路要有

⑤不同系统和中间件之间的特性差异要了解