使用Seay进行代码安全审计

2023-11-18

Seay介绍

Seay介绍

Seay其实是一款用 C语言所开发的一款对 PHP相关代码的安全审计系统,它是运 行在 Windows操作系统上的。这种软件能够发现 SQL 注入漏洞、代码执行漏洞、命令执行错误、文件内容包括、文件的上传、绕过防护、拒绝文件服务、XSS的跨站漏洞、信息泄露问题、任意URL 跳 转等漏洞。 打开以后主界面如图 1.1 所示。

图1.1Seay主界面

源代码审计系统主要特点:

  1. 可以一键启动白盒审计
  2. 对代码进行必要的调试
  3. 对正则进行编码

Seay 支持的漏洞有以下几种

  1. 文件的函数中如果存在相关变量,就有可能存在漏洞
  2. pr.eg_repl.ace 的/f,如果有可控的变量,就可能存在漏洞
  3. phpi.nfo()的相关函数,就会存在敏感信息泄露的漏洞
  4. call_user_func 的相关函数的参数如果包含变量,就可能存在代码执行相关漏洞

Seay安装

下载Seay安装包

下载地址

请添加图片描述
解压后如下:
请添加图片描述

项目根目录如下图所示:
请添加图片描述
请添加图片描述
点击程序启动文件,程序正常启动如图所示。
请添加图片描述

Seay使用

基本使用方法

使用seay系统的方法如下:
(1)在安装后就打开程序,然后新建一个项目。
(2)选择需要审查的文件夹中的相关代码,然后打开后如图 3.1 。
(3)然后查看系统界面左侧列表列出来的项目结构。
(4)双击文件可以打开编辑器对其进行编辑,之后对文件进行字符和函数的查找。seay系统的使用
(5)点击关闭。如果代码已经审计完成或者想审计其他人的相关代码,就点击关闭就可以。
(6)菜单栏上的三个按钮为自动审计按钮,它可以自动对代码进行审计,自动审计,会对所有相关的危险以及隐藏的漏洞代码都会查找出来,使用者可以点击后等待 ,报告马上就可以自动出来,方便使用者。

审计工具插件栏
(7)代码调试功能可以调试需要执行的代码。如果是 php 解析的代码,相当方便
(8)函数查询功能其实就是查询官网内置的相关函数,查阅具体的函数使用方法以及参数说明;
(9)数据的管理功能体现在连接本地的数据库或者远程数据库时,可以方便项目的管理,用户可连接 mySQL 和 SQLserver, 示例如 3.3 图所示。
图 3.3 数据库管理功能

实验案例 - DVWA靶场

DVWA介绍

DVWA靶场可以进行SQL注入漏洞、XSS漏洞、CSRF漏洞、以及文件上传等漏洞的相关练习,因为此系统又提供了许多的安全演练相关的级别,所以可以逐步地来提升Web渗透的相关的技术。DVWA靶场就是一套开源的系统,可以在练习Web渗透技术的同时,通过阅读源码学习到对于各种漏洞的安全防护编码的知识。

DVMA靶场下载

GitHub - d.igininja/DVWA: Dam.n Vulnerable Web Appl.icatio.n
图4.1 DVMA压缩包
解压后如图所示:
图4.2 DVMA根目录

Seay中新建项目

在Seay中选择进行新建项目,如图4.3所示。
图4.3 Seay中新建项目

Seay中选择DVWA本地程序

在新建项目中,选择DVNA的相关源代码
图4.4 选择DVMA源代码

查看Seay中的DVMA的目录结构

图4.5 DVMA的目录结构

Seay 开启审计

使用 Seay中的自动审计功能,点击“自动审计按钮”。
图4.6 开启自动审计功能

审计结果

审计的结果如图 4.7所示
图4.7 审计结果

生成代码审计报告

Seay可以自动生成审计报告,可在浏览器中打开,因为是html格式。
图 4.8“生成报告”按钮
我们可以在报告中看到各种漏洞的相关分析,以及漏洞文件的绝对路径。
图4.9 自动生成审计报告

漏洞相关分析

自动审计系统可以罗列出所有漏洞,如文件漏洞,文件读取的漏洞。可以通过自己分析可以熟悉和了解Web安全的相关漏洞,从而将漏洞和代码关联到一起,在理解代码的某些部分种可以出现的漏洞。比如ID序号为20,漏洞描述为文件操作函数里面存在变量,可以在任意文件中读取,删除,修改文件。
图 4.10 漏洞描述
选中ID为20的漏洞,双击查看漏洞的信息,就可以可以查看漏洞的对应信息,以及相关分析。
图4.11 查看漏洞信息
可以看到,输入文件后,可以在第227行对文件进行 unlink操作。
图4.12 分析漏洞信息
打开 phpStudy程序,然后开启Apache和MySql组件,在主机中验证这个漏洞。
图4.13 打开 phpStudy
在主机上登陆DVNA,输入账号,密码。
图4.14 登陆DVMA
安全级别选择 low级别,然后点击“提交”。图 4.15 选择级别
左侧选择“File Upload”,显示界面如下
图4.16 显示界面
根据漏洞描述,上传照片格式的文件。
图4.17上传文件
图4.18显示结果
点击 ViewSource生成系统源码,对源码进行审计分析。
图4.19 生成源码
与Seay分析的结果进行比较,两者分析结果是一致的。
图4.20 比较结果
审计结束
点个赞再走吧
往期传送门

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用Seay进行代码安全审计 的相关文章

  • 纠正装饰器模式的一个大缺点

    不久前 我在重构一些游戏战斗代码时决定尝试装饰器模式 战斗者可以拥有各种被动能力 也可能是不同类型的生物 我认为装饰器可以让我在运行时以各种组合添加行为 因此我不需要数百个子类 我几乎已经完成了 15 个左右的被动能力装饰器 在测试中我发现
  • 使用 Laravel 4 验证多个文件上传

    如何在 Laravel 4 中验证上传文件的数组 我已将其设置为允许多个文件 并且已测试这些文件是否存在于 Input file files 数组中 但如何验证每个文件呢 这是我尝试过的 notesData array date gt In
  • Zend Framework 生成唯一的字符串

    我想生成一个唯一的 4 6 个字符长的字母数字字符串 以便与每个记录 用户 一起保存在数据库中 db 字段具有唯一索引 因此尝试保存预先存在的字符串会生成错误 现在我正在生成一个随机字符串并使用 try catch 因此在添加新记录时如果抛
  • PHP 如何判断用户是否按下了 Enter 键或 Submit 按钮?

    我遇到的问题是我在一个表单中有多个提交输入 每个提交输入都有不同的值 我更愿意将它们保留为提交 Whenever the user presses Enter it is as though the topmost submit input
  • 搜索引擎如何找到相关内容? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Google 在解析网络时如何找到相关内容 例如 Google 使用 PHP 原生 DOM 库来解析内
  • 通过 Ajax 加载内容时,WORDPRESS 音频播放器未加载,MediaElement.js 未应用

    我正在创建一个 WordPress 主题 当我使用 ajax 加载内容时 它不会将 MediaElements js 应用于我的音频播放器 因此不会显示音频 我认为这是因为 MediaElement js 加载了 wp footer 并且此
  • 如何检查PHP变量是否包含非数字?

    我只是想知道检查 PHP 变量中是否有非数字的方法以及它是否也检测字符之间的空格 需要确保我的表单字段中没有添加任何奇怪的内容 提前致谢 如果您的意思是您只想要一个包含数字的值 那么您可以使用ctype digit http php net
  • Yii 使用 ajax 进行分页

    我需要使用ajax启用分页 我的代码 控制器 更新内容ajax function actionIndex dataProvider new CActiveDataProvider News array pagination gt array
  • 扩展蓝图类?

    我想覆盖timestamps 函数中发现Blueprint班级 我怎样才能做到这一点 e g public function up Schema create users function Blueprint table table gt
  • 从 smarty 访问 PHP 文件的变量(本地或全局)

    我有一个 php 文件 其中包含一些本地和全局变量 例如 foo 从此文件中调用 smarty 对象 如何在不更改 PHP 文件的情况下从 smarty 脚本访问 foo Thanks 如果你有一个名为 BASE 的常量变量 并且定义如下
  • preg_match_all 查询仅显示有问题的外部组

    我无法弄清楚如何只显示 preg 查询的外部组级别 我会给你一个例子 preg match all start end input matches 这个输入start1 start2 2end 1end产生这个输出start1 start2
  • 为什么 iconv 在 php:7.4-fpm-alpine docker 中返回空字符串

    给出以下代码
  • 在 Wordpress 站点中进行 AJAX 调用时出现问题

    我在使用 Wordpress 站点功能的 AJAX 部分时遇到了一些问题 该功能接受在表单上输入的邮政编码 使用 PHP 函数来查找邮政编码是否引用特定位置并返回到该位置的永久链接 我的第一个问题是关于我构建的表单 现在我的表单操作是空白的
  • 如果循环中内存超出,我可以在 for 循环中抛出异常吗?

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如何处理 foreach 循环中发生
  • PHP HEREDoc (EOF) 语法在 Sublime Text 3 上突出显示与正斜杠的差异

    我不熟悉 Sublime Text 3 如何使用语法突出显示 例如 如果它纯粹依赖于主题 或者它内置于主题运行的标准中 但就我而言 使用 PHP 的 HERE 文档和转发存在一些语法突出显示差异斜线 一旦出现正斜杠 ST3 就会认为以下所有
  • 表单提交后如何保留选择字段中的选定值?

    我有一个用于将票证上传到数据库的主页 我有一个选择字段 我想保留用户在提交表单之前选择的值 但它没有发生 这是我选择字段的代码
  • Laravel 中只向登录用户显示按钮

    如果我以 John 身份登录 如何才能只显示 John 的红色按钮而不显示 Susan 的红色按钮 测试系统环境 Win10 Laravel5 4 Mysql5 7 19 table class table table responsive
  • 如何在 PHP 中从 IP 地址/国家/地区名称查找时区 ID?

    谁能告诉我 PHP 中是否有任何方法可以从 IP 地址或国家 地区名称获取时区区域 例如 亚洲 加尔各答 描述 我正在尝试根据他 她的国家 地区设置用户时区 我从他的 IP 地址获取用户所在国家 地区 但我需要该国家 地区的时区区域 例如
  • 一次播种多行 laravel 5

    我目前正在尝试为我的用户表播种 如果我像这样尝试 2 行 就会失败 如果我只使用单个数组而不是 users 数组内的 2 个数组来创建一些假数据 那么效果很好 我做错了什么 正确的方法是什么 class UserTableSeeder ex
  • 简单的 PHP 表单:电子邮件附件(代码 Golf)

    想象一下 一个用户想要在其网站上放置一个表单 该表单将允许网站访问者上传一个文件和一条简单的消息 该消息将立即通过电子邮件发送 即 该文件未存储在服务器上 或者如果该文件存储在服务器上 仅暂时 作为文件附件 并在邮件正文中添加注释 查看更多

随机推荐