• 源代码审计(白盒测试)


    1.简介

    代码安全测试是从安全的角度对代码进行安全测试评估

    2.测试的方法

    人工审核和静态分析工具辅助进行

    人工审核:既能解决内部问题也能解决外部问题。是目前最有效率的解决方案,并且在理论上手工代码审核是非常有效的,但人工审核的效率不高,所以我们会采用自动化分析工具辅助人工的方式来提高审核的效率。

    静态分析工具:通过一组安全规则,测试机制和方针在软件开发过程

    3.通用的思路
        

    1、通读全文代码,从功能函数代码开始阅读
     2、看配置文件,带有config关键字的文件,找到mysql.class.php文件的connect()函数,查看在数据库连接时是否出现漏洞。
     3、继续跟读首页文件index.php,了解程序运作时调用了哪些函数和文件 以index.php文件作为标线,一层一层去扩展阅读所包含的文件,了解其功能,之后进入其功能文件夹的首页文件,进行扩展阅读。
     打开源代码的首页文件,根据首页文件调用的功能,一层层的看调用的功能和用到的函数,查看是否有漏洞 

    4.漏洞产生的原因

    1、变量控制不严(一切输入都是有害)
    2、变量到达有利用价值的函数(一切进入函数的变量是有害的),漏洞的利用效果取决于最终函数的功能。 

    5.漏洞挖掘流程分析
      

    •  sql注入关键字

            select、insert、update、$_GET $_POST、$_REQUEST
            宽字节注入
                搜索gbk
                mysql_real_escape_string()或者搜索这个函数
                使用pdo方式,在PHP5.3.6及以下版本需要设置setAttribute(PDO::ATTR_EMULATE_PREPARES,false);来禁用prepared statements的仿真效果。
            二次注入
                搜索urldecode()函数
                搜索rawurldecode()函数

    •     变量覆盖关键字

            $$

    •     xss漏洞跨站脚本解析

            print、print_r、echo、printf、sprintf、die、var_dump、var_export

    •     csrf跨站请求伪造

            没有token 和referee 一般存在csrf

    •     文件包含

            include()、include_once()、require()和require_once()
            PHP低于5.3要考虑%00截断的问题

    •     任意文件下载

            file_get_contents()、highlight_file()、fopen()、readfile()、fread()、fgetss()、fgets()、parse_ini_file()、show_source()、file()

    •     任意文件上传漏洞关键字

            $_FILES 、move_uploaded_file

    •     代码执行

            eval()、assert()、preg_replace()、call_user_func()、call_user_func_array()、array_map()

    •     命令执行

            system()、exec()、shell_exec()、passthru()、pcntl_exec()、popen()、proc_open()

    •     越权

            level、session

    •     手工挖洞使用软件x-search       

    6.如何做代码审计

    • 使用工具

            将文件导入进去,开始扫描,扫出来高危中危低危在验证一下,audit  workbeach显示漏洞在几行,有描述和修复方案

    •     手工

            简单阅读代码首页文件,和功能页面,一层层看调用的函数和文件内容
            利用xsearch搜索函数和语句
            找到后前后看看有没有漏洞,能不能漏洞复现,打开对应页面对应参数,构造payload验证 

     

  • 相关阅读:
    jffs2文件系统(二)
    vue provide inject使用
    oracle 乱码(编码为AMERICAN_AMERICA.US7ASCII)问题解决
    不小心格式化了硬盘怎么恢复?
    【JAVA-Day43】Java常用类Calendar解析
    可变参数函数原理
    字节抖音电商 后端开发岗位 一面
    SpringCloud 之OpenFeign 自定义配置和使用/自定义拦截器
    基于LMI的非线性混沌系统滑模控制
    最短路径专题5 最短路径
  • 原文地址:https://blog.csdn.net/2301_79194110/article/details/133854542