源代码审计(白盒测试)

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验证 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值