代码审计工具学习之Seay(安装以及初步认识)

2023-11-16

目录

1.1名词解释

1.2代码审计的重要性

1.3代码审计的步骤

1.4代码审计的内容

1.5常见的代码审计工具

2 Seay

2.1什么是Seay

2.2 Seay的安装过程

3典型漏洞分析

3.1什么是命令注入漏洞

3.2 如何理解命令注入漏洞

3.3 如何防御命令注入漏洞

4 利用工具对命令注入漏洞进行分析

4.1 DVWA靶场命令注入漏洞分析

4.2 Pikachu靶场命令注入漏洞分析


1.1名词解释

软件代码审计是对编程项目中源代码的全面分析,旨在发现错误,安全漏洞或违反编程约定。 它是防御性编程范例的一个组成部分,它试图在软件发布之前减少错误。 C和C ++源代码是最常见的审计代码

顾名思义就是检查源代码中的安全缺陷,检查程序源代码是否存在安全隐患,或者有编码不规范的地方,比如使用了危险的函数或者是变量使用不当,通过自动化工具或者人工审查的方式,对程序源代码逐条进行检查和分析,发现这些源代码缺陷引发的安全漏洞,并提供代码修订措施和建议。

1.2代码审计的重要性

在信息时代,互联网对于人们的生活日渐重要,越来越多的个人信息存储在网络上,越来越多的日常活动和网络息息相关,我们似乎越来越离不开网络。

那么这个时候网络的安全性就显得尤为重要,记得曾经看过的一个关于网络安全的电视剧深刻的诠释了网络安全的重要性,其中最经典的DDOS攻击,国家电网被黑客攻击,一时间交通瘫痪,银行金融机构医院等都停止了运行,黑客利用自己发明的病毒使其自动攻击核心服务器,它们最终的目标是国家核电站,核电站一旦爆炸后果不堪设想。

上述只是黑客行为的一种,其实在我们日常生活中使用的网站,每天都遭受着亿万次攻击,若不是网络安全从业人员的防御,那么我们的生活会变的多么糟糕。

而我们国家近年来也开始重视网络安全的建设相关法律法规出台,对于整个行业的扶持,都让人们看到了国家的决心,以及对于网络安全的重视。

代码审计是渗透测试的一个过程,它是利用网站源代码,对其进行安全性分析,实则也是网站发布前的非客户需求的一次安全性测试,在安全的角度分析可能存在攻击的不安全代码的引用。

通过白名单的方式使用人工或者自动化检测的方式检验源代码中存在的安全问题,所以代码审计工作需要很多的实战经验。

1.3代码审计的步骤

  1. 配置审计分析环境
  2. 熟悉业务流程
  3. 分析程序架构
  4. 工具自动化分析
  5. 人工审计结果
  6. 整理审计报告

1.4代码审计的内容

  1. 前后台分离的运行架构
  2. WEB服务的目录权限分类
  3. 认证会话与应用平台结合
  4. 数据库的配置规范
  5. SQL语句的编写规范
  6. WEB服务的权限配置
  7. 对抗爬虫引擎的处理措施

1.5常见的代码审计工具

RIPS是一款开源的,具有较强漏洞挖掘能力的自动化代码审计工具。它使用PHP语言编写的,用于静态审计PHP代码的安全性。

VCG(VisualCodeGrepper),是一款支持C/C++、C#、VB、PHP、Java和PL/SQL的免费代码安全审计工具。它是一款基于字典的检测工具,功能简洁,易于使用。

Fortify SCA(Static Code Analyzer) 一款商业版源代码审计工具。它使用独特的数据流分析技术,跨层跨语言地分析代码的漏洞产生,目前支持所有的主流开发语言。

2 Seay

2.1什么是Seay

代码审计工具可以辅助我们进行白盒测试,大大提高漏洞分析和代码挖掘的效率。在源代码的静态安全审计中,使用自动化工具辅助人工漏洞挖掘,一款好的代码审计软件,可以显著提高审计工作的效率。
   代码审计工具按照编程语言、审计原理、运行环境可以有多种分类。商业性的审计软件一般都支持多种编程语言,比如VCG、Fortify SCA,缺点就是价格比较昂贵。其他常用的代码审计工具还有findbugs、codescan、seay,但是大多都只支持Windows环境。

Seay这是基于C#语言开发的一款针对PHP代码安全性审计的系统,主要运行于Windows系统上。这款软件能够发现SQL注入、代码执行、命令执行、文件包含、文件上传、绕过转义防护、拒绝服务、XSS跨站、信息泄露、任意URL跳转等漏洞,基本上覆盖常见PHP漏洞。另外,在功能上,它支持一键审计、代码调试、函数定位、插件扩展、自定义规则配置、代码高亮、编码调试转换、数据库执行监控等数十项强大功能。

2.2 Seay的安装过程

seay也不知道为什么,我也没有找到官网,但是网上有很多资源,可以自己去下载。

下载完安装包之后,解压到自己想要的电脑路径

图2.2.1 安装包解压

 解压成功之后,点击文件夹中的文件如上图所示,之后根据提示不断地“下一步”该软件不需

要进行任何额外的配置

图2.2.2 软件首界面

安装完成之后,点击图像进入软件,首界面如上图所示,可以看出该软件的一大优势也是界面简单,

操作易上手。

3典型漏洞分析

3.1什么是命令注入漏洞

命令注入漏洞,可能是应用程序中可能发生的最危险的漏洞之一。当应用程序允许用户输入与系统命令混淆时,就会发生命令注入漏洞或操作系统命令注入漏洞。当用户输入在没有适当防御措施的情况下直接连接到系统命令中时,就会发生这种情况。

3.2 如何理解命令注入漏洞

简单来说,命令注入漏洞从名词上大家就应该明白,它本身也是一种注入漏洞,所以只要是在用户可以控制输入的地方,就有可能会发生命令注入漏洞,与命令注入漏洞有关的可能就是系统命令,也就是我们可以通过命令提示符知道的消息,或者说采用的语法命令,我们都可以在这里输入查询,同样可以查到我们想知道的东西,最经典的就是ping IP,或者查看IP,查看系统用户权限等,所以,通过以上可知我们知道命令注入漏洞的危害也是很大的。

3.3 如何防御命令注入漏洞

那么,如何防御呢,常见的命令注入漏洞的防御就是白名单过滤,对于用户的输入进行白名单的限制,采用转义函数,对一些特殊符号进行转义,同时添加防御CSRF漏洞最有效的token,可以有效地防止命令注入漏洞。

4 利用工具对命令注入漏洞进行分析

4.1 DVWA靶场命令注入漏洞分析

图4.1.1 新建项目

进入软件之后,点击新建项目,选择DVWA靶场源代码所载的文件

                                                    图4.1.2 DVWA靶场 

 

                                                   图4.1.3 导入源代码 

图4.1.4 运行seay

点击开始,软件开始运行,分析靶场源代码。

图4.1.5 等待结果

通过进度条来检查文件是否分析完成。

                                                             图4.1.6 运行完成

 

图4.1.7 生成报告

分析完成之后,点击生成报告。

图4.1.8 报告生成

生成报告,并选择报告生成保存的位置即可(如图4.1.9)

图4.1.9 

图4.1.10 查看报告

点击(图4.1.9生成的报告),然后开始分析

图4.1.11 命令注入漏洞

确定自己想要分析的漏洞,在报告的165-166行,会存在命令注入漏洞的文件的详细信息,以

及存在漏洞利用的函数。

 

图4.1.12 分析结果

在文件中找到命令注入漏洞

图4.1.13 验证结果

我们发现(图4.1.12)中并没有对命令注入漏洞进行防御,那么我们可以采用最简单的命令进

行验证:127.0.0.1 | ipconfig。

4.2 Pikachu靶场命令注入漏洞分析

图4.2.1 新建项目

第一步仍然是新建一个项目,然后导入源代码文件(如图4.2.2)

图4.2.2 导入源代码

选择pikachu靶场源代码所在的文件的位置,然后引入项目。

图4.2.3分析漏洞

点击“开始”,软件开始运行分析整个项目。

图4.2.4 分析完成

查看进度条判断是否分析完成

图4.2.5 生成报告

分析完成之后,点击“生成报告”。

图4.2.6 报告生成

选择报告生成的位置(如下图4.2.7)所示

                                                             图4.2.7 

 

图4.2.8 分析结果

点击报告,(如图4.2.8)

图4.2.9 分析命令注入漏洞

在报告中查找目标漏洞,观察漏洞所在文件的详细位置,然后在seay中定位(如图4.2.10)。

图4.2.10 定位代码

 我们会在图4.2.10所在的位置发现漏洞的存在,经过分析我们知道漏洞的原因是因为没有对输

入进行过滤或者过滤不严格,那么我们就可以轻易地利用这个漏洞。

图4.2.11 验证漏洞

我们输入最简单的验证方式127.0.0.1 | ipconfig 我们发现成功查验出了系统相关信息。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

代码审计工具学习之Seay(安装以及初步认识) 的相关文章

  • 如何在Windows 8上正确使用SCardGetStatusChange?

    智能卡服务在 Windows 8 上的行为有所不同 并且 MSDN 尚未更新其文档 任何人都可以提供有关如何正确调用 SCardGetStatusChange 来监视 Windows 8 上的智能卡操作的代码片段吗 提前致谢 这是我为个人博
  • 提取证书中主题属性的所有值

    我目前正在使用CertGetNameString http msdn microsoft com en us library windows desktop aa376086 28v vs 85 29 aspx提取每个主题属性的值 如下所示
  • Rails Windows Vagrant 响应时间非常慢

    我在跑 Vagrant 1 7 1 Rails 4 1 4 Thin 1 6 1 Windows 7 每个静态文件的发送时间都超过一秒 在我的 PC 上加载一个页面可能需要大约 20 秒 而在同事的 Linux 机器上则只需瞬间 有一些帖子
  • 串行 I/O 与 Windows/Windows CE 重叠/不重叠

    抱歉 这不是一个大问题 但更多的是帮助那些在这些特定问题上遇到问题的人 我正在解决的问题需要使用串行 I O 但主要在 Windows CE 6 0 下运行 然而 最近有人问我该应用程序是否也可以在 Windows 下运行 所以我开始着手解
  • 防止 WNetAddConnection2 类允许被禁止的用户访问共享文件夹

    我开发了 C windows 应用程序 操作系统是Windows 7 要求 是使用带有凭据的代码访问网络共享文件夹 Test WNetAddConnection2 class 限制 是某些用户可以访问此共享文件夹 测试 但对于其他用户 设置
  • C++ 使用 Windows 命名管道

    由于某种原因 桅杆和从属装置都失败了 但是我可以找到任何关于它们如何工作的好例子 所以我不确定我哪里出了问题 在 ConnectNamedPipe 之后 主设备永远不会退出 WaitForSingleObject 并且从设备在第一个 boo
  • 为什么 fopen 无法打开已存在的文件?

    我在 Windows XP 上使用 Visual Studio 6 是的 我知道它很旧 构建 维护 C DLL 我遇到了 fopen 无法打开现有文件的问题 它总是返回 NULL 我试过了 通过将 errno 和 doserrno 设置为零
  • 如何在 Ubuntu VirtualBox 中运行 Meteor 应用程序并使用 Windows 主机上的编辑器进行编辑?

    我希望在运行 Ubuntu 的 virtualbox 来宾中运行一个用于开发目的的流星服务器 该项目将位于主机上的一个文件夹内 该文件夹将共享给来宾 该文件夹本身位于 Dropbox 文件夹内 这样我可以在多个虚拟机和工作站之间共享开发 但
  • Windows批处理文件:将结构转换为单行字符串

    我需要将这个艰巨的任务作为批处理文件来完成 这对于 C 来说不是最困难的 但在 DOS 中是一个地狱 至少对我来说 我需要将结构转换为单个 var 字符串 才能在我的程序中再次将它们转换为该结构 别担心回归 一切都已经完成了 该结构的大小会
  • 如何使用 Win32 API 与 com 端口 (RS232) 通信

    我正在尝试使用 win32 API 与 com 端口对话 我找到了这个http www robbayer com files serial win pdf http www robbayer com files serial win pdf
  • Node.js 升级在 Windows 中仍然显示旧版本

    我已使用 msi 安装程序下载并安装了新版本的 nodejs 4 1 2 之后我跑了node v 但它仍然显示旧版本 0 12 2 我尝试重新启动Windows 甚至卸载nodejs并重新安装它 但仍然显示相同的内容 为什么会发生这种情况
  • Git difftool 未启动外部 DiffMerge 程序

    我一直遵循 戴夫的博客条目 http www davesquared net 2009 05 setting up git difftool on windows html 链接在此answer https stackoverflow co
  • 如何在 Windows 下向 .sh 脚本传递参数?

    我正在尝试在 Windows 下执行 sh 脚本 我安装了 Git 它允许我执行 sh 文件 但是 如果不使用 sh 作为执行前缀 我似乎无法传递任何参数 我的 sh 文件 echo Test 1 如果我用以下命令执行它 gt sh tes
  • Windows 8 Metro 应用程序(网格应用程序)过渡时出现黑色闪烁

    我正在基于网格应用程序模板构建 Windows 8 Metro 应用程序 一切都很顺利 直到我尝试更改应用程序的主题和背景 我将图像背景应用于所有 3 个 XAML 页面的网格 另外 我在应用程序包清单中将主题更改为 Light 但它没有执
  • 如何修复圆角按钮中边框和背景之间的空白?

    我为我的 WPF 应用程序创建了一个简单的按钮模板
  • 如何为 Windows toast 注册协议?

    如何注册 Windows toast 协议 样本中来自https blogs msdn microsoft com tiles and toasts 2015 07 02 adaptive and interactive toast not
  • PHPStorm - 无效的后代文件名

    我正在尝试将 Windows 7 PC 上的本地 PHPStorm 项目与 Ubuntu 服务器同步 当我尝试任何类型的连接 例如 测试 SFTP 连接 时 它会失败并显示 Invalid descendent file name C np
  • 使用 Objective-C 进行 Windows 开发

    最近读了一篇关于 Objective C 的文章 我觉得它是一门相当简洁的语言 具有很多很酷的功能 我无意进行任何 iPhone 开发 但是我了解 GCC 能够编译 Objective C 代码 所以我想知道 Objective C 是 W
  • PC 相当于 Coda 吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Docker 警告:无法从守护进程获取默认注册表端点

    在 Windows 10 上 当我调用 docker 命令时 docker pull mongo windowsservercore 我得到以下输出 Warning failed to get default registry endpoi

随机推荐

  • 时序分析基本概念介绍——时钟sdc

    上次介绍了sdc的基本概念 那接下来几期 我们来讲解一些比较常用的sdc命令 虽然sdc大大小小有上百条命令 但实际常用的其实就那么10几条 今天我们来介绍下与时钟相关的命令 主要有以下命令 create clock create gene
  • Zlib的安装与测试

    官方网址 http www zlib net 进入官网看到 如图所示 最新版本为zlib 1 2 11 然后你用wget http www zlib net zlib 1 2 11或者wget http www zlib net zlib
  • NGINX监听不同端口的配置

    server listen 81 监听的端口 server name localhost 监听的域名 location message 当当问这个路径时实际上会去访问下面这个地址 proxy pass http localhost xxx
  • 【计算机视觉40例】案例14:指纹识别

    导读 本文是专栏 计算机视觉40例简介 的第14个案例 指纹识别 该专栏简要介绍李立宗主编 计算机视觉40例 从入门到深度学习 OpenCV Python 一书的40个案例 目前 该书已经在电子工业出版社出版 大家可以在京东 淘宝 当当等平
  • 谈谈互联网免费思维

    大家好 我是测试小牛 一位平凡又普通的95后互联网博主 今天跟大家聊下互联网的免费思维 在移动互联网时代的今天 可能任何一家互联网创业公司的崛起都具备这种思维 比如当年快滴跟滴滴之争 美团跟饿了么之争 非但不收钱 还花钱大量补贴用户 去使用
  • [思考进阶]05 人与人之间的差距,在于“自律”

    除了要提升自己的技术能力 思维的学习和成长也非常非常重要 特推出此 思考进阶 系列 进行刻意练习 从而提升自己的认知 我认识两个成功的长者 其中有一个人 每天记录当天的重要事项 比如今天和谁签了什么合同 房子装修还差什么材料 女儿20岁生日
  • 【教程+实例】Python爬虫实例——用Python爬虫爬取bangumi上的galgame资讯

    文章目录 0 前言 1 什么是爬虫 2 什么东西可以爬 3 简易爬虫示例 4 如何筛选数据 5 正则表达式 6 最终代码 如何修改代码 以适应自己的需求 效果截图 7 彩蛋 本人与知乎用户间宫羽咲sama是同一人 内容同步更新在CSDN和知
  • 1.通用文件模型及VFS结构-基础

    一 reiserFS 新型文件系统 特点 1 采用完全平衡树来容纳数据 ReiserFS是基于平衡树 STree 的文件系统结构 尤其对于大量文件的巨型文件系统 如服务器上的文件系统 搜索速度要比ext2快 ext2使用局部的二分查找法 综
  • 客户服务器被 ddos 攻击,应该怎么办?

    转自 点击打开链接https www v2ex com t 145842 首页 注册 登录 V2EX way to explore V2EX 是一个关于分享和探索的地方 现在注册 已注册用户请 登录 V2EX 提问指南 广告
  • plSQL中修改代码字体的大小

    在第一次打开PLSQL时 大部分人看代码字体的大小肯定不习惯 这时候只需要修改一下字体的大小即可 首先找到左上角的 工具 然后点击第一个首选项 然后再用户界面找到 字体 最后点击编译器中的 选择 即可 然后就可以进行字体大小的调节了
  • Android推送总结

    http blog csdn net baidu 26352053 article details 54135107 最近Android开发当中推送技术是热点 互联网上不同的博客关于推送的介绍也非常的多 大致上关于推送技术 我们可以有使用第
  • JAVA_HOME is not set

    关于JAVA HOME没有设置 本人是在配置spark集群的时候显示 JAVA HOME is not set 具体如下 但是我们在 cd JAVA HOME 还是能够进去 查阅网上资料有各种各样的解决办法 但是看着没啥关系 于是我猜测是没
  • 解决百度网盘(百度云)分享链接不存在失效、分享的文件已经被取消的问题

    解决百度网盘 百度云 分享链接不存在失效 分享的文件已经被取消的问题 参考文章 1 解决百度网盘 百度云 分享链接不存在失效 分享的文件已经被取消的问题 2 https www cnblogs com hafiz p 5496391 htm
  • spring--容器创建过程(IOC和AOP的过程)

    在前面两篇中我们介绍了IOC和AOP 知道了IOC容器就是来管理每个Bean的 而AOP就是对这些Bean进行功能的拓展 那么这个过程是怎么样实现的呢 IOC和AOP又是怎么样的一个过程呢 一 Spring容器创建过程 我们通过一个简单的创
  • 配置网卡信息/etc/sysconfig/network-scripts/ifcfg-eth0,修改ip

    1 ifconfig查看ip信息 root用户下 root edgzrip2 ifconfig a eth0 Link encap Ethernet HWaddr 00 50 56 2B 27 67 inet addr 192 168 23
  • 一键列出所有容器IP地址脚本

    文章目录 使用场景 效果 列出所有容器 自动跳过无终端的容器 脚本 案例 查看网络带宽占用 过滤IP对应的容器 解决带宽占用问题 使用场景 在服务器带宽被占用 但不好定位是哪个容器时 通过用此脚本来快速过滤容器名 以便解决问题 效果 列出所
  • [C++]使用关键字new创建对象

    1 首先解释new关键字的作用 在堆中开辟指定数据类型的空间 调用指定数据类型的构造函数 创建对象 返回创建的对象 int pn new int new与delete搭配使用 这种写法 pn为栈上的一个指针 指向堆上所对应的内存块 int
  • 逻辑地址、物理地址和线性地址

    逻辑地址 logical address 包含在机器语言指令中用来指定一个操作数或一条指令的地址 这种寻址方式在80X86著名的分段结构中表现的尤为具体 它促使MS DOS或Windows程序员把程序分成若干段 每一个逻辑地址都由一个段 s
  • 【pyspark】DataFrame基础操作(二)

    介绍一下 pyspark 的 DataFrame 基础操作 一 选择和访问数据 PySpark DataFrame 是惰性计算的 简单地选择一列不会触发计算 但它会返回一个 Column 实例 并且 大多数按列操作都返回 Column 实例
  • 代码审计工具学习之Seay(安装以及初步认识)

    目录 1 1名词解释 1 2代码审计的重要性 1 3代码审计的步骤 1 4代码审计的内容 1 5常见的代码审计工具 2 Seay 2 1什么是Seay 2 2 Seay的安装过程 3典型漏洞分析 3 1什么是命令注入漏洞 3 2 如何理解命