美文网首页
通用代码审计思路

通用代码审计思路

作者: Echocipher | 来源:发表于2018-12-20 00:43 被阅读0次

    免责声明:本博客只是为了自己代码审计学习过程中的笔记总结,请勿用于非法的用途,否则造成的严重后果与本文作者无关

    常见代码审计思路有如下几种:

    1. 根据敏感关键字回溯参数传递过程。
    2. 查找可控变量,争相追踪变量传递过程。
    3. 寻找敏感功能点,通读功能点代码。
    4. 通读全文代码。

    敏感函数回溯参数过程

    该方式使用最多,因为大多数漏洞是由于函数的使用不当造成的,此外如SQL注入,也有一些特征,比如SELECT,INSERT等,在结合from以及where等关键字就可以判断是否为sql语句,再通过字符串的识别,就可以判断有没有使用单引号过滤。比如,HTTP头中的HTTP_CLIENT_IP以及HTTP_X_FORWARDFOR等获取到的ip没有经过过滤就拼接到sql语句中,并且他们存在于$_SERVER变量中,不受GPC的影响,我们就可以通过查找相应关键字来快速寻找漏洞。

    优点是仅需要搜索相应敏感关键字,就可以快速挖掘漏洞,可定向挖掘,高效,高质量,但也因为没有通读代码,对程序整体框架不熟悉,定位时候会花费时间,逻辑漏洞挖掘较为困难。

    通读全文代码

    如上所述,在企业中如果做安全运营时,对自身代码进行审计,需要了解整个业务的逻辑,才能挖掘到更多有价值的漏洞,通读全文也是需要一定的技巧,要看大体的代码结构,根据文件命名大致了解程序实现了什么功能,关键文件是什么,在查看程序目录结构时,尤其注意以下几个文件:

    1. 函数集文件:通常包含functions或者common等关键字,这些文件里有一些公共函数,提供给其他文件统一调用,大多数文件在文件头部包含其他文件,比较好的方式是在index.php或者其他功能行的文件中的头部进行寻找。
    2. 配置文件:通常包含config等关键字,配置文件包括web程序运行必须的功能性配置以及数据库信息,可以了解到程序的小部分功能。

    看配置文件时,可以注意观察配置文件中的参数值是单引号还是双引号,如果是双引号,可能会存在代码执行漏洞。

    1. 安全过滤文件:关系到我们找到的可疑点可不可以利用,通常命名中有filter,safe,check等关键字,主要是对参数进行过滤,目前大多数函数会使用addslashes()函数进行过滤。
    2. index文件:由于是程序的入口文件,所以对我们了解程序架构,运行流程,包含文件等有很大帮助。

    优点是可以更好的了解程序的架构以及业务的逻辑,缺点就是花费时间较多。

    根据功能点定向审计

    等有一定的代码审计经验之后,通常对功能点可能存在的漏洞有大致的了解,我们就可以先运行程序,浏览以下程序有什么功能,程序文件是怎么分配的,了解存在形式之后,可以寻找存在漏洞概率较大的进行简单的黑盒测试,之后再去读代码,提高审计速度。

    example:

    1. 文件上传:未限制上传文件格式/SQL注入
    2. 文件管理:任意文件操作/XSS
    3. 登陆认证:任意用户登陆/越权
    4. 找回密码:爆破/算法破解

    相关文章

      网友评论

          本文标题:通用代码审计思路

          本文链接:https://www.haomeiwen.com/subject/zocekqtx.html