源代码审计(白盒测试)

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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/109086.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

element表格实现单选框

利用checkbox来实现表格单选,思路就是将checkbox的值绑定到当前行mainFlag,定义checkbox的change事件,每当值改变时将上次选中的行数据mainFlag改给false <template><el-table:data"tableData"style"width: 100%"><el-table-column label&q…

视频推拉流/直播点播平台EasyDSS分享的链接提示“无信号”,该如何解决?

视频直播点播平台EasyDSS可支持用户自行上传视频文件&#xff0c;也可将上传的点播文件作为虚拟直播进行播放。平台能支持多屏播放&#xff0c;可兼容Windows、Android、iOS、Mac等操作系统&#xff0c;还能支持CDN转推&#xff0c;具备较强的可拓展性与灵活性。 为给用户提供更…

Git 提交规范

遇到的问题 在项目中采用 git 管理代码版本时&#xff0c;突然不能进行提交&#xff08;git commit&#xff09;。 报错信息如下&#xff1a; ERROR invalid commit message format. Proper commit message format is required for automated changelog generation. Git 规范…

AI 浪潮下的创业故事(一)—— Jina AI

点击蓝字 关注我们 编辑&#xff1a;Alan Wang 排版&#xff1a;Rani Sun 微软 Reactor 为帮助广开发者&#xff0c;技术爱好者&#xff0c;更好的学习 .NET Core, C#, Python&#xff0c;数据科学&#xff0c;机器学习&#xff0c;AI&#xff0c;区块链, IoT 等技术&#xff0…

SaaS 完整指南

什么是软件即服务 (SaaS)&#xff1f; 软件即服务 (SaaS) 是云计算的三个组成部分之一&#xff0c;是一种软件分发模型&#xff0c;其中第三方提供商托管应用程序&#xff0c;最终用户可以通过 Internet 访问软件。 SaaS 应用程序开发使组织无需在自己的计算机或自己的数据中…

CentOS7 内核升级

1.linux内核版本说明 https://en.wikipedia.org/wiki/Linux_kernel_version_history The Linux Kernel Archives - Releases

【Python】Python 实现 Excel 到 CSV 的转换程序

Python 实现 Excel 到 CSV 的转换程序 Excel 可以将电子表格保存为 CSV 文件&#xff0c;只要点几下 鼠标&#xff0c;但如果有几百个 Excel文件要转换为 CSV &#xff0c; 就需要点击几小时。利用 openpyxl 模块&#xff0c; 编程读取当前工作目录中的所有 Excel 文件&#x…

Mobpush智能化精准推送,助力求职者快人一步

近日&#xff0c;“BOSS”直聘崩了的消息又又又上了热搜&#xff0c;2023年9月15日上午&#xff0c;BOSS直聘在线统计超过4700万人。由此可见&#xff0c;随着金九银十招聘旺季的到来&#xff0c;求职软件成为人们的青睐。但是对于大多数使用招聘软件的用户而言&#xff0c;往往…

unigui点击按钮后弹出悬浮窗,几秒钟后关闭

为了实现点击按钮后&#xff0c;复制内容到剪切板&#xff0c;然后弹出悬浮窗提示给用户。 js代码如下&#xff0c;复制内容&#xff0c;然后保存命名为.js的文件&#xff1a; //弹窗提醒function showAlert(s_msg) {// 创建 div 元素var div document.createElement("d…

【算法训练-排序算法 三】【排序应用】合并区间

废话不多说&#xff0c;喊一句号子鼓励自己&#xff1a;程序员永不失业&#xff0c;程序员走向架构&#xff01;本篇Blog的主题是【合并区间】&#xff0c;使用【数组】这个基本的数据结构来实现&#xff0c;这个高频题的站点是&#xff1a;CodeTop&#xff0c;筛选条件为&…

【vr】【unity】白马VR课堂系列-VR开发核心基础05-主体设置-手柄对象的引入和设置

【视频教学】 【白马VR课堂系列-VR开发核心基础05-主体设置-手柄对象的引入和设置】 https://www.bilibili.com/video/BV19D4y1N73i/?share_source=copy_web&vd_source=7f5c96f5a58b7542fc6b467a9824b04e 【内容】 上一节引入了XR Origin并进行了初步设置,运行测试时V…

数据库主从切换过程中Druid没法获取连接错误

背景&#xff1a; 今天dba在进行DB的主从切换&#xff0c;导致应用一直报错&#xff0c;获取不到DB连接&#xff0c;druid的错误信息如下&#xff1a; Could not open JDBC Connection for transaction; nested exception is com.alibaba.druid.pool.GetConnectionTimeoutExc…

基于主动移频法与AFD孤岛检测的单相并网逆变器matlab仿真

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 仿真模型 算法介绍 (1)仿真模型由单相电网、逆变器、滤波环节、PI控制器、PWM生成器、锁相环、AFD控制器s函数、测量模块等构成&#xff1b; (2)采用主动移频法(AFD)进行孤岛检测&#xff1b; (3)相应速度…

CMake教程-第 7 步:添加系统自省功能

CMake教程-第 7 步&#xff1a;添加系统自省功能 1 CMake教程介绍2 学习步骤Step 1: A Basic Starting PointStep 2: Adding a LibraryStep 3: Adding Usage Requirements for a LibraryStep 4: Adding Generator ExpressionsStep 5: Installing and TestingStep 6: Adding Sup…

基于springboot实现汉服文化分享平台项目【项目源码+论文说明】

摘要 本论文主要论述了如何使用JAVA语言开发一个汉服文化平台网站 &#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论述汉服文化平台网站的当前背景以及系统开发的…

【Linux常用命令12】搜索命令及特殊字符的使用

which&#xff1a;查看可执行文件的位置 which 命令whereis&#xff1a;查看文件的位置&#xff0c;只能用于程序名的搜索 whereis [选项] 命令 -b 定位可执行文件。 -m 定位帮助文件。 -s 定位源代码文件。 -u 搜索默认路径下除可执行文件、源代码文件、帮助文件以外…

Python 中的省略号对象

作为一名经验丰富的 Python 开发人员&#xff0c;您可能遇到过 Python 中的三个点…省略号对象。 如果您尝试在 Python 解释器中打印此内容&#xff0c;它将显示一个省略号。 本篇文章将介绍 Python 中省略号对象的使用。 使用省略号作为未编写代码的占位符 省略号对象可以以…

【vue2高德地图api】02-npm引入插件,在页面中展示效果

系列文章目录 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、安装高德地图二、在main.js中配置需要配置2个key值以及1个密钥 三、在页面中使用3.1 新建路由3.2新建vue页面3.2-1 index.vue3.2…

基于RuoYi-Flowable-Plus的若依ruoyi-nbcio支持自定义业务表单流程的集成方法与步骤(一)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 由于大家最自定义业务表单的整个集成方法还不熟悉&#xff0c;下面大概介绍一下这个流程与方法。 1、首先…

2.2 如何使用FlinkSQL读取写入到文件系统(HDFS\Local\Hive)

目录 1、文件系统 SQL 连接器 2、如何指定文件系统类型 3、如何指定文件格式 4、读取文件系统 4.1 开启 目录监控 4.2 可用的 Metadata 5、写出文件系统 5.1 创建分区表 5.2 滚动策略、文件合并、分区提交 5.3 指定 Sink Parallelism 6、示例_通过FlinkSQL读取kafk…