• 代码审计及示例


    简介:

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

    结合丰富的安全知识、编程经验、测试技术,利用静态分析和人工审核的方法寻找代码在架构和编码上的安全缺陷,在代码形成软件产品前将业务软件的安全风险降到最低。

    方法:

    人工审核:

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

    静态分析:

    通过一组全面规则、测试机制和方针在软件开发过程、测试中发现软件的安全缺陷。基于函数分析,比如正则表达式

    审计思路:

    1、通读全文代码,从功能函数代码开始阅读,例如include文件夹下的common_fun.php,或者有类似关键字的文件。

    2、看配置文件,带有config关键字的文件,找到mysql.class.php文件的connect()函数,查看在数据库连接时是否出现漏洞

    3、继续跟读首页文件index.php,了解程序运作时调用了哪些函数和文件index.php文件作为标线,一层一层去扩展阅读所包含的文件,了解其功能,之后进入其功能文件夹的首页文件,进行扩展阅读。

    漏洞产生原因:

    1、变量控制不严(一切输入都是有害)。

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

    漏洞挖掘:

    sql注入关键字: selectinsertupdate$_GET $_POST$_REQUEST

    上传漏洞关键字: $_FILES move_uploaded_file

    执行漏洞关键字: shell_execexecpassthru systempopen

    包含漏洞关键字: includeinclude_oncerequirerequire_once

    变量覆盖关键字: $$

    跨站漏洞关键字: echoprintprint_rvar_dumpvar_exprot

    代码审计分析

    SQL注入

    XSearch工具对代码取关键字

    对搜索到的文件验证下

    SQL注入漏洞可以查询关键字select from、mysql_connect、mysql_query、mysql_fetch_row等,白盒审计时可以关注数据库查询方式还有update、insert、delete

    二次注入搜索:urldecode或者rawurldecode

    魔术符号GPC是on,会把单引号(')、双引号(")、反斜杠(\)和NULL加上反斜杠转义。搜索urldecode或者rawurldecode,验证二次转义。

    二次转义过程如下:

    原url代码:/1.php?id=1%2527

    php默认第一次转义:/1.php?id=1%25       绿色的%25会被被PHP转义成%

    urldecode转义:/1.php?id=1      在碰到函数就会把%25再次转义,变成’逗号

    这种转义会有注入风险

    会话认证漏洞

    搜session,cookie是否加密

    考虑session是不是固定的,有没有验证。可能存在session会话过滤攻击。

    考虑cookie有没有校验,换成其他用户名,可能存在cookie欺骗漏洞。

    apache搭建两个系统

    xhcms:http://192.168.246.11/xhcms/

    phpweb:http://192.168.246.11/phpweb/   要用低版本,使用5.2.17版本的php

    审计工具

    安装fortify破解版,其他审计工具:PMD、fidebugs、checkstyle、seay pgp代码审计工具

    fortify扫描

    构造啦一个语句验证漏洞,也可以BP抓包验证。同一个页面可能会有很多误报

    seay pgp代码审计工具扫描xhcms

    综合扫描

    根据自己经验判断漏洞

    登录后台

    高危漏洞:不存在的用户可以登录后台

    构造语句111'">

    留言昵称的漏洞

    留言内容的漏铜

    CSRF漏洞,delete没有做token验证

  • 相关阅读:
    攻防演练下安全防御体系构建过程
    C++ PrimerPlus 复习 第三章 处理数据
    思维导图-vb.net开发带进度条的复制文件夹功能c#复制文件夹
    MZ-Tools 8.0.1.2944 Crack
    Python中如何判断列表中的元素,是否在一段文本中??
    Flet教程之 12 Stack 重叠组建图文混合 基础入门(教程含源码)
    嵌入式学习笔记(33)S5PV210的第二阶段处理过程
    SQL内连接——使用场景记录
    CPS攻击案例(一)——基于脉冲宽度调制PWM的无人机攻击
    【linux编程】linux文件IO的标准函数及其示例(fread,fwrite,fgetc,fputc,fgets,fputs,fprintf,fscanf)
  • 原文地址:https://blog.csdn.net/arissa666/article/details/134022706