代码审计(工具Fortify 、Seay审计系统安装及漏洞验证)

news2024/11/19 19:28:06

源代码审计

代码安全测试简介

       代码安全测试是从安全的角度对代码进行的安全测试评估。(白盒测试;可看到源代码)

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

注:代码审计尤其注意反序列化漏洞

代码安全测试方法

       代码审核采用人工审核和静态分析工具辅助的方式进行。

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

       静态分析工具:通过一组全面规则、测试机制和方针在软件开发过程、测试中发现软件的安全缺陷。 (如:HP Fortify)

代码审计的通用思路

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

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

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

注:快速挖源代码漏洞,直接搜索容易产生漏洞的相关函数

漏洞产生的原因

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

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

漏洞挖掘流程分析

sql注入关键字: select、insert、update、$_GET $_POST、$_REQUEST

上传漏洞关键字: $_FILES 、move_uploaded_file

执行漏洞关键字: shell_exec、exec、passthru system、popen

包含漏洞关键字: include、include_once、require、require_once

变量覆盖关键字: $$

跨站漏洞关键字: echo、print、print_r、var_dump、var_exprot

密码硬编码关键字:明文密码出现在代码中,如 "password""123456"

权限与认证绕过关键字:

直接比较用户输入与固定值,如 if ($_SESSION['user'] == 'admin')

可使用【xsearch_CHS.exe工具】进行快速搜索含关键字的文件: 

 

  


工具Fortify 漏洞审计分析

      根据工具扫描结果分析风险漏洞成因,手工跟踪相关函数及变量,测试漏洞是否可利用、排除误报可能。通过工具修复建议,手工修复相关漏洞

 网站部署

打开可视化数据库软件【Navicat for MySQL 】

数据库名: phpweb

宇符集:utf8 -- UTF-8 Unicode

排序规则:utf8_general_ci

phpweb靶场环境放到phpstudy根目录下; 打开phpstudy软件选择5.2.17版本启动;

 访问打开phpweb破解版,进行系统安装:

http://10.0.0.101:90/phpweb/base/install/index2.php
直接跳过了index.php登陆页面

 

访问ppweb主页: 

http://10.0.0.101:90/phpweb/

FORTIFY安装:

软件下载及安装详见【fortify新版安装步骤.pdf】文件

 网站扫描过程:

点击【Advanced Scan】高级扫描:

 选择要扫描的项目:(phpweb)

选择文件输出位置【Output file】,可默认:

点击配置【Configure Rulepacks..】,选择扫描项目涉及到的语言,可默认:

开始扫描【scan 】:

扫描完成:

选择漏洞:

参数给变量未经过直接带入输出

$groupname=$_POST["groupname"];
<input type="text" name="groupname" size="50" value="<?php echo $groupname; ?>" class="input" />

 

 漏洞验证:

找到文件所在位置进行访问:

http://10.0.0.101:90/phpweb/advs/admin/advs_duilian_modi.php

填写信息提交--bp抓包--请求主体test后输入以下xss恶意代码与数据库交互进行弹窗:

'"><script>alert(123)</script>

 

成功弹框

存在xss漏洞; 并获取到了物理路径及可能存在sql注入:


 Seay源代码审计系统使用

Seay是一套开源代码审计系统,使用C# 编写,需要.NET2.0以上版本环境才能运行

 网站部署

打开可视化数据库软件【Navicat for MySQL 】

 

数据库名: xhcms

宇符集:utf8 -- UTF-8 Unicode

排序规则:utf8_general_ci

 

xhcms靶场环境放到phpstudy根目录下; 打开phpstudy软件选择5.2.17版本启动;

 访问xhcms网站进行系统安装:

http://10.0.0.101:90/xhcms/install/

成功安装: 

 访问xhcms主页: 

http://10.0.0.101:90/xhcms/

 

Seay软件安装:

软件:详见附件【Seay PHP代码审计工具2.1公测版.rar】

运行:解压【Seay PHP代码审计工具2.1公测版.rar】,点击【Seay PHP代码审计工具2.1公测版.exe】运行软件:

 网站扫描过程:

点击【Seay】浏览:

选择项目:

扫面设置--函数管理:

可根据情况添加函数:

 点击综合扫描:

扫描完成:

 选择漏洞:

4 $file=addslashes($_GET['r']); //接收文件名   //可输入变量$_GET 可能存在安全威胁
5 $action=$file==''?'index':$file; //判断为空或者等于index   //file函数可能存在任意文件读取漏洞
6 include('files/'.$action.'.php'); //载入相应文件   //file函数可能存在任意文件读取漏洞

 漏洞验证:

http://10.0.0.101:90/xhcms/index.php
  • 代码分析

参数r只有一个addslashes函数过滤,但对于文件包含来说并没有什么用。

尝试利用

因为包含的是files目录下的文件,所以在files下新建shell.php,内容为

<?php
phpinfo();
?>

 尝试包含漏洞:

http://10.0.0.101:90/xhcms/index.php?r=shell

成功访问,存在漏洞: 

也可以用../跳转:

因为包含的是files目录下的文件,所以在files上级目录新建123.php;内容为:

<?php
phpinfo();
?>

尝试../访问上级目录文件内容:123.php

http://10.0.0.101:90/xhcms/index.php?r=../123

成功访问,存在漏洞: 


工具局限性

1、工具本身存在一定量的误报或者漏报。

2、扫描结果需要大量人工确定甄别。

3、 如用多种语言开发的软件,则需单独分析。

4、使用工具缺乏规范化的编码规范。

5、不能自动收集常见的代码安全问题。


声明:

  • 此文章只做技术研究,谨遵守国家相关法律法规,请勿用于违法用途,如果您对文章内容有疑问,可以尝试留言私信,如有侵权请联系小编处理。

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

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

相关文章

EitbaseEX香港业务开展,提升用户友好交易体验

在全球范围内备受瞩目的加密货币交易平台Coinbase&#xff0c;宣布正式入驻香港市场&#xff0c;并命名为EitbaseEX。这一战略性扩展举措&#xff0c;旨在为香港提供先进的加密货币交易技术和服务&#xff0c;同时将香港打造为其在亚太地区的重要枢纽。 作为国际金融中心&#…

算法(一)递归

文章目录 递归的概念递归三要素递归demo打印100次“hello word”斐波那契数列 递归的概念 递归算法是一种直接或者间接调用自身函数或者方法的算法。 递归三要素 递归条件结束 因为递归是循环调用自身&#xff0c;因此就必须要有结束条件&#xff0c;或者就会OOM。 函数的功…

2.8Flowmap的实现

一、Flowmap 是什么 半条命2中水的流动 求生之路2中的水的流动 这种方式原理简单&#xff0c;容易实现&#xff0c;运算量少&#xff0c;如今也还在使用 1.flowmap的实质 Flow map(流向图) &#xff0c;一张记录了2D向量信息的纹理&#xff0c;Flow map上的颜色(通常为RG通道…

Ubuntu部署kafka集群

Apache Kafka (KRaft 集群) Apache Kafka 是一个基于 TCP 的分布式流处理平台&#xff0c;提供高吞吐量、低延迟的消息传递和处理能力&#xff0c;用于构建实时数据管道和流应用程序。其底层通信依赖于 TCP Socket&#xff0c;但 Kafka 封装了许多高级特性&#xff0c;使其更加…

Python使用动态代理的多元应用

Python作为一种功能强大且易于学习的编程语言&#xff0c;在网络编程领域具有广泛的应用。当Python与动态代理技术结合时&#xff0c;便开启了一扇通往更多可能性的大门。以下将深入探讨Python使用动态代理可以实现的多种应用。 首先&#xff0c;Python结合动态代理在网络爬虫…

ETLCloud中如何使用Kettle组件

ETLCloud中如何使用Kettle组件在当今数据驱动的时代&#xff0c;数据处理和分析已成为企业决策的关键。为了更高效地处理海量数据&#xff0c;ETL&#xff08;Extract, Transform, Load&#xff09;工具变得至关重要。而在众多ETL工具中&#xff0c;Kettle作为一款开源、灵活且…

学习笔记——网络参考模型——TCP/IP模型

二、TCP/IP模型 TCP/IP模型(TCP/IP协议栈)&#xff1a;很多个互联网协议的集合&#xff0c;其中以TCP和IP为主&#xff0c;将这些协议的集合称为TCP/IP协议栈。目前使用最多的协议模型。 因为OSI协议栈比较复杂&#xff0c;且TCP和IP两大协议在业界被广泛使用&#xff0c;所以…

C++候捷stl-视频笔记2

深度搜索list list是双向链表&#xff1a;底部实现是环状双向链表 list内部除了存data之外&#xff0c;还要存一个前向指针prev和一个后向指针next list的iterator&#xff0c;当迭代器的时候&#xff0c;是从一个节点走到下一个节点&#xff0c;是通过访问next指针实现的 主要…

arcgis api for javascript点击获取要素错乱的问题

今天帮同事看了一个前端地图点击的问题&#xff1a;点击时总会获取到周边的图元&#xff0c;即使我点击线的周围&#xff0c;也是能获取到的&#xff0c;除非离得特别远。 地图组件用的是arcgis api, 图层类是grahicslayer,要素类型是线。这是添加图元的代码&#xff1a; grap…

AIGC商业案例实操课,发觉其创造和商业的无限可能,Ai技术在行业应用新的商机

课程下载&#xff1a;https://download.csdn.net/download/m0_66047725/89307523 更多资源下载&#xff1a;关注我。 课程内容 1 AI为什么火 。写在课程前面的寄语 。AIGC标志性事件:太空歌剧院 。AI人工智能为什么这么火 &#xff0c;AI人工智能发展历程 。聊天AI会取…

Vxe UI vxe-upload 上传组件,显示进度条的方法

vxe-upload 上传组件 查看官网 https://vxeui.com 显示进度条很简单&#xff0c;需要后台支持进度就可以了&#xff0c;后台实现逻辑具体可以百度&#xff0c;这里只介绍前端逻辑。 上传附件 相关参数说明&#xff0c;具体可以看文档&#xff1a; multiple 是否允许多选 li…

短剧系统源码:构建互动娱乐的新平台

随着数字媒体的兴起&#xff0c;短剧成为了一种新兴的娱乐形式&#xff0c;它以紧凑的叙事和快速的节奏迎合了现代观众的观看习惯。短剧系统源码的开发&#xff0c;为短剧内容的创作、传播和消费提供了一个全面的技术解决方案。本文将探讨短剧系统源码的关键组成部分及其功能。…

基于python flask+pyecharts实现的中药数据可视化大屏,实现基于Apriori算法的药品功效关系的关联规则

背景 在中医药学中&#xff0c;物品与功效之间的关联关系研究是一个非常重要的课题。传统中医药学中&#xff0c;很多药物都具有多种功效&#xff0c;而且不同药物对同一种疾病可能具有不同的疗效。因此&#xff0c;挖掘物品与功效之间的关联关系&#xff0c;可以帮助我们更加…

【第十二节】C++控制台版本贪吃蛇小游戏

目录 一、游戏简介 1.1 游戏概述 1.2 实现功能 1.3 开发环境 二、实现设计 2.1 C类的设计 2.2 项目结构 2.3 代码设计 三、程序运行截图 3.1 游戏界面 3.2 自定义地图 3.3 常规游戏界面 一、游戏简介 1.1 游戏概述 本游戏是一款基于C语言开发的控制台版本贪吃蛇游…

centos7 openssh9.7p 制作rpm包

centos7 openssh9.7p 制作rpm包 下载源码包&#xff1a;通过git开源打包源码准备编译打包环境编译打包上传rpm包到需要更新的服务器,并更新 下载源码包&#xff1a; 一般只用ssh源码就可以了 cd /root wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.7p…

一文了解企业版电子书:从认识到制作

现如今&#xff0c;电子书已经成为企业传播知识、展示品牌、吸引客户的重要工具了。那么&#xff0c;企业版电子书到底是什么&#xff1f;又该如何才能制作出有效的企业版电子书呢&#xff1f;接下来&#xff0c;跟着LookLook同学一起来看看如何从认识到制作一本企业版电子书。…

【计算机网络】——物理层(图文并茂)

物理层 一.物理层概述1.物理层要实现的功能2.物理层接口特征1.机械特性2.电气特性3.功能特性4.过程特性 二.物理层下面的传输媒体1.传输媒体的分类2.导向型传输媒体1.同轴电缆2.双绞线3.光纤 3.非导向型传输媒体1.无线电波2.微波3.红外线4.激光5.可见光 三.传输方式1.串行传输与…

select多个客户端连接,传输数据时只能顺序传输产生原因

1. 场景描述 即A先连接,B后连接&#xff0c;只能先A后B依次输入数据&#xff0c;服务端依次读取数据 这是因为进行循环遍历lfd之后的描述符时&#xff0c;没有判断文件描述符i是否在newset集合中 //cfd发生变化 for(int ilfd1;i<maxfd;i){printf("i num %d\t"…

推理和行动协同(Reason and Act,ReAct)和代码生成

文心一言 当我们将“推理和行动协同&#xff08;Reason and Act&#xff0c;ReAct&#xff09;”的概念应用于代码生成时&#xff0c;我们可以理解为一种指导原则或方法论&#xff0c;它强调了在代码生成过程中进行深思熟虑的决策&#xff08;Reason&#xff09;和有效执行&am…

单实例11.2.0.3迁移到RAC11.2.0.4_使用RMAN 异机恢复

保命法则&#xff1a;先备份再操作&#xff0c;磁盘空间紧张无法备份就让满足&#xff0c;给自己留退路。 场景说明&#xff1a; 1.本文档的环境为同平台、不同版本&#xff08;操作系统版本可以不同&#xff0c;数据库小版本不同&#xff09;&#xff0c;源机器和目标机器部…