• 生命在于学习——代码审计工具


    在这里插入图片描述
    图片来源于百度图片。
    注意:本篇文章仅用于自我学习,笔记记录,不得用于其他用途。

    一、引子

    在攻方面,传统的黑盒模式是通过扫描器扫描站点或利用NDAY来渗透的方式已经受到了很大的制约,现在及未来的渗透测试发展方向是白盒测试 , 也就是代码审计 , 无论是挖0day还是企业渗透测试 , 白盒都是最快最准确的挖掘姿势拿到源代码–>代码审计–>利用审计出来的漏洞制定措施,所以代码审计能力也越发重要。
    最好是工具和人工结合使用。

    二、审计工具

    工欲善其事 必先利其器,使用自动化工具代替人工挖掘,可以显著提高审计工作的效率,学会利用自动化代码审计工具,是每个代码审计人员必备的技能
    自动审计工具:

    • RIPS
    • Seay
    • fortify

    三、代码审计环境搭建

    phpstudy2018 + php5.4 + 留言板源码
    解压到www根目录
    修改cs.com\lib\config.php 数据库配置
    链接mysql数据库 , 创建数据库
    create database message;
    use message;
    source D:\\phpStudy\\PHPTutorial\\WWW\\cs.com\\lib\\test_message.sql;
    访问
    http://cs.com
    管理员/密码
    admin/admin
    

    四、RIPS

    它是一款开源的,具有较强的漏洞挖掘能力的自动化代码审计工具,由PHP语言编写,用于静态审计PHP代码
    也可以采用正则方式扫描代码发现漏洞;还能够采用自定义的语法扫描代码发现问题
    官网:

    http://rips-scanner.sourceforge.net/
    

    在这里插入图片描述

    解压下载的zip文件到Web服务器网站目录下即可。在浏览器中输入Web服务器地址和对应目录
    主界面介绍:
    在这里插入图片描述

    功能描述
    subdirs如果勾选上这个选项,会扫描所有子目录,否则只扫描一级目录,缺省为勾选
    verbosity level选择扫描结果的详细程度,默认为1(建议就使用1)
    vuln type选择需要扫描的漏洞类型。支持命令注入、代码执行、SQL注入等十余种漏洞类型,默认为全部扫描
    code style选择扫描结果的显示风格(支持9种语法高亮)。
    /regex/使用正则表达式过滤结果
    path/file要扫描的目录
    scan开始扫描

    访问

    http://rip.com/
    

    在这里插入图片描述

    实验 : 使用RIPS 对留言板源码进行扫描
    访问
    输入地址 , 开始扫描
    在这里插入图片描述

    1、xss漏洞

    在这里插入图片描述

    访问对应地址 , 抓包复现

    http://cs.com/admin/index.php
    

    在这里插入图片描述
    修改之后 , 放过数据包
    image-20220401163718257
    直接跳转到首页 , 复现失败 , 因为在index.php也会做一个cookie的校验

    2、文件上传漏洞

    路径

    File: E:\phpstudy_pro\WWW\cs.com/admin/admin_check.php
    

    在这里插入图片描述

    通过浏览网站发现只有修改头型 , 有上传点 , 测试

    http://cs.com/user_edit.php
    

    在这里插入图片描述

    http://cs.com/upload/images/2022_09_20/Upload_2022_09_20_16_54_43_160791.php
    

    在这里插入图片描述

    存在任意文件上传 , 可以getshell , 查看源码

    function upFile(){
    	$dir = PATH."/upload/images/".date('Y_m_d');
    	$dir_bak = "/upload/images/".date('Y_m_d');
    	is_dir($dir) || mkdir($dir,0777,true);
    	$fileName = date('Y_m_d_H_i_s', time())."_".(rand(100000,900000));
    	$fileType = strrchr($_FILES["user_pic"]["name"], ".");
    	$fileName = "Upload_".$fileName.$fileType;
    	$destination =  $dir."/".$fileName;
    	move_uploaded_file($_FILES["user_pic"]["tmp_name"],$destination);
    	$filePath  = $dir_bak."/".$fileName;
    	return $filePath;
    }
    

    没有做任何的过滤和限制 , 直接拼接的文件后缀
    这个工具挺喜欢echo的,碰到就报XSS。

    五、Seay

    软件介绍

    • Seay代码审计 , 由阿里巴巴尹毅使用C#开发的针对PHP代码安全审计软件
    • 执行审计常见web安全漏洞,并且能够进行代码调试,函数定位,语法高亮等。
    • 运行在Windows系统上

    Seay实践:

    1. 新建项目,打开源码文件夹,点击自动审计即可
    2. 误报可能会很多,扫描完成生成报告即可查看

    在这里插入图片描述

    实验 : 使用Seay源代码审计工具对留言板源码进行扫描

    1、Exec命令执行

    命令执行 Exec 函数 , 找到函数 , 右键定位 函数 , 发现是自定义函数 , 并不是命令执行 , 误报

    image-20220401172728037

    2、sql注入

    image-20220401203835639

    直接拼接的sql语句 , 变量值可控 , 存在sql注入漏洞 , 可以通过echo当前语句 , 直接查看sql语句

    接着又是 命令执行 Exec 函数

    image-20220401204619485

    误报

    3、sql注入

    image-20220401204737937

    直接拼接的sql语句 , 变量值可控 , 存在sql注入漏洞 , 可以通过echo当前语句 , 直接查看sql语句

    剩下的sql注入全是直接拼接的就不一个一个介绍了 , 然后Exec函数是误报

    4、文件上传

    image-20220401205043168

    没有对文件名做任何的处理和过滤 , 可以直接上传webshell

    5、伪造客户端ip

    image-20220401205325335

    burp插件就可以演示 , 但是这个源码中没有调用这个函数的地方

    小总结

    Seay 感觉还不错  , 最起码sql注入可以检测出来 , 不会有xss误报 , 然后函数定位功能很好用
    缺点 : 逻辑漏洞无法检测 , 当然这也是工具的通病
    

    六、fortify

    Fortify SCA ,是HP的产品 ,是一个静态的、白盒的软件源代码安全测试工具。
    它通过内置的五大主要分析引擎:数据流、语义、结构、控制流、配置流等对应
    用软件的源代码进行静态的分析,分析的过程中与它特有的软件安全漏洞规则集
    进行全面地匹配、查找,从而将源代码中存在的安全漏洞扫描出来,并给予整理
    报告。扫描的结果包含详细的安全漏洞信息、安全知识说明、修复意见。
    

    Foritfy SCA

    主要包含的五大分析引擎

    数据流引擎 : 跟踪,记录并分析程序中的数据传递过程所产生的安全问题。
    语义引擎 : 分析程序中不安全的函数,方法的使用的安全问题。
    结构引擎 : 分析程序上下文环境,结构中的安全问题。
    控制流引擎 : 分析程序特定时间,状态下执行操作指令的安全问题。
    配置引擎 : 分析项目配置文件中的敏感信息和配置缺失的安全问题。
    

    特有的X-Tir跟踪器 : 跨跃项目的上下层次,贯穿程序来综合分析问题

    支持的语言

    1. asp.net     
    2. VB.Net     
    3. c#.Net     
    4. ASP     
    5. VBscript     
    6. VS6     
    7.java     
    8.JSP     
    9.javascript     
    10. HTML     
    11. XML     
    12. C/C++     
    13.PHP     
    14.T-SQL     
    15.PL/SQL     
    16. Action script      
    17. Object-C (iphone-2012/5)     
    18. ColdFusion5.0 - 选购     
    19. python -选购     
    20. COBOL - 选购     
    21.SAP-ABAP -选购
    

    1、导出报告

    点击tools-reports,有两种报告模式:Generate BIRT Report 和 Generate Legacy Report

    选择 Generate BIRT Report

    image-20220403121853769

    不过默认导出的是英文报告 , 一般很少使用该功能

    2、xss漏洞

    image-20220403122439339

    主要介绍工具如何使用 , 关于漏洞的分析 , 复现 , 前面已经搞过了 , 该漏洞是误报

    3、弱口令

    image-20220403122639560

    4、文件上传

    工具扫出来提示的是 路径操控

    image-20220403123255388

    5、sql注入

    image-20220403123452857

    image-20220403123529295

    搜索行sql注入 , 可以看到是直接拼接的sql语句, 虽然有单引号保护 , 但是可以通过闭合单引号绕过

    七、工具的不足

    工具本身存在一定量的误报或者漏报
    扫描结果需要大量人工确定甄别
    csrf, 越权, 逻辑漏洞等扫不到
    如用多种语言开发的软件,则需单独分析
    
    不能自动收集常见的代码安全问题
    
  • 相关阅读:
    Kaldi安装(Linux环境)
    html中字体加粗
    代码随想录65——额外题目【二叉树】:129求根节点到叶节点数字之和、1382将二叉搜索树变平衡、100相同的树、116填充每个节点的下一个右侧节点指针
    给定一个 N×3 的矩阵 matrix,对于每一个长度为 3 的小数组 arr,都表示一个大楼的三个数据,请返回整体的轮廓线数组。
    单日 5000 亿行 / 900G 数据接入,TDengine 3.0 在中国地震台网中心的大型应用
    章鱼网络Louis:发现Web3商业价值
    python二次开发Solidworks:齿轮生成器
    使用Signposts分析App性能
    iOS 16 中 CoreData 托管对象发生变化但其衍生 (Derived) 属性在 SwiftUI 中不刷新的解决
    mac 打不开 idea 或者 pycharm 的方法
  • 原文地址:https://blog.csdn.net/qq_15131581/article/details/126951941