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

源代码审计

代码安全测试简介

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

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

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

代码安全测试方法

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

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

       静态分析工具:通过一组全面规则、测试机制和方针在软件开发过程、测试中发现软件的安全缺陷。 (如: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、不能自动收集常见的代码安全问题。


声明:

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何安装使用秋叶comfyui整合包,手把手详细教程(文末附安装包)

B 站的秋叶大佬在 1 月份就已经发布了 comfy ui 的整合包。用户将压缩包下载后&#xff0c;能够一键启动 comfy ui。其便利性与之前的 webui 整合包如出一辙。然而在整合包下载完成后&#xff0c;新手或许会遭遇插件以及模型缺失的情况&#xff0c;同时也不清楚该如何运行工作流…

HackTheBox-Machines--Popcorn

文章目录 0x01 端口扫描0x02 测试思路2.1 80端口测试 0x03 /torrent 目录文件上传测试0x04 权限提升 Popcorn 测试过程 0x01 端口扫描 (base) gryphonwsdl ~ %nmap -sC -sV 10.129.138.22 Starting Nmap 7.94 ( https://nmap.org ) at 2024-05-28 14:22 CST Nmap scan report …

用任务监听RTOS各任务的运行状态

使用rtos时内存对于单片机来说总是非常抠搜的。 任务分配多了浪费&#xff0c;少了跑不动。 最近看到这个监听任务还是很好用的。 废话不多说。开始操作 第一步在配置文件中打开这几个宏 #define configUSE_TRACE_FACILITY 1 /*为1时启用可视化跟踪调试*/ #define conf…

清风雅致·林曦老师的中国画美育直播课 你想了解的都在这里

大家期待已久的《清风雅致林曦老师的中国画美育直播课》开启报名啦~这个夏天&#xff0c;林曦老师将带你画完十幅重要的册页图&#xff0c;明代杜琼的《南村别墅图》。在此期间&#xff0c;暄桐教室除了收到了大家的“心心念念”和“满怀期待”&#xff0c;还有一连串“小问号”…

QT软件界面的设计与启动方法

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、Q T界面设计的重要性 二、QT软件的启动与配置 三、QT软件的启动路径设置 四、QT软件启…

[Redis]List类型

列表类型来存储多个有序的字符串&#xff0c;a、b、c、d、e 五个元素从左到右组成了一个有序的列表&#xff0c;列表中的每个字符串称为元素&#xff0c;一个列表最多可以存储个元素。在 Redis 中&#xff0c;可以对列表两端插入&#xff08;push&#xff09;和弹出&#xff08…

SRS介绍及环境搭建

1.SRS简介 SRS&#xff08;Simple Real-Time Media Server&#xff09;是一个开源的流媒体服务器&#xff0c;它支持多种流媒体协议&#xff0c;包括RTMP、WebRTC、HLS、HTTP-FLV、SRT、MPEG-DASH和GB28181等57。SRS主要应用于直播、视频会议等场景&#xff0c;提供实时音视频服…

Java—认识异常

1. 异常的概念与体系结构 1.1 异常的概念 在生活中&#xff0c;一个人表情痛苦&#xff0c;出于关心&#xff0c;可能会问&#xff1a;你是不是生病了&#xff0c;需要我陪你去看医生吗&#xff1f; 在程序中也是一样&#xff0c;程序猿是一帮办事严谨、追求完美的高科技人才…

数据结构排序算法之直接插入排序与希尔排序【图文详解】

P. S.&#xff1a;以下代码均在VS2019环境下测试&#xff0c;不代表所有编译器均可通过。 P. S.&#xff1a;测试代码均未展示头文件stdio.h的声明&#xff0c;使用时请自行添加。 博主主页&#xff1a;LiUEEEEE                        …

光环云携手火山引擎共推全栈AI服务,赋能千行百业智能化转型,助力新质生产力发展

5月15日&#xff0c;2024春季火山引擎FORCE原动力大会在北京举办。作为智算云网综合服务提供商&#xff0c;光环云受邀出席大会&#xff0c;与火山引擎共同探索大模型时代下行业发展的新趋势。 会上&#xff0c;光环云数据有限公司正式与火山引擎签署生态伙伴合作协议&#xf…

JAVA应用服务器如何快速定位CPU问题

如果服务器上部署了多个Java站点服务和Java微服务&#xff0c;并且突然接收到CPU异常告警&#xff0c;我们需要逐步确定是哪个服务进程造成了CPU过载&#xff0c;接着是哪个线程&#xff0c;并最终定位到是哪段代码导致了这个问题 简要步骤如下&#xff1a; 步骤一、找到最耗C…

汇编概论和实践

一 汇编第一例 C代码 #include <stdio.h>int main() {printf("Hello, World!\n");return 0; }对应的汇编 .LC0:.string "Hello, World!"main:pushq %rbpmovq %rsp, %rbpleaq .LC0(%rip), %rdicall puts@PLTmovl $0, %eaxpopq %rbpret 二 CPU架构…

Android 车载 Audio 中 有关系统按键无声的问题排查小结

本文简单记录一下&#xff0c;车载中系统按键音的问题排查从 App --> FrameWork --> HAL层 的问题排查。 通过日志分析&#xff1a; AudioStreamOutSink 这个有数据写入到 HAL 中&#xff08;方式一&#xff09; 查看 dump 文件。&#xff08;方式二&#xff09; 先 …

C++语言·list链表(下)

还是之前说的&#xff0c;因为要写模板&#xff0c;为了避免链接出现问题&#xff0c;我们将所有内容都写到一个文件中去。首先就是画出链表的框架 链表本身只需要一个头节点就足以找到整条链表&#xff0c;而需要它拼接的节点我们再写一个模板。而我们知道list是一个带头双向循…

[深度学习]yolov10+bytetrack+pyqt5实现目标追踪

【简介】 利用YOLOv10、ByteTrack和PyQt5实现目标追踪是一个强大的组合&#xff0c;可以为用户提供一个交互式的实时目标追踪界面。以下是一个简化版的实现思路描述&#xff1a; 首先&#xff0c;YOLOv10是一个先进的目标检测算法&#xff0c;能够准确识别视频或图像中的目标…

【自然语言处理】Transformer中的一种线性特征

相关博客 【自然语言处理】【大模型】语言模型物理学 第3.3部分&#xff1a;知识容量Scaling Laws 【自然语言处理】Transformer中的一种线性特征 【自然语言处理】【大模型】DeepSeek-V2论文解析 【自然语言处理】【大模型】BitNet&#xff1a;用1-bit Transformer训练LLM 【自…

STM32学习和实践笔记(32):电容触摸按键实验

1.电容触摸按键原理介绍 触摸按键与传统的机械按键相比&#xff0c;不仅美观而且耐用、寿命长&#xff0c;它颠覆了传统意义上的机械按键控制&#xff0c;只要轻轻触摸&#xff0c;就可以实现按键开关的控制、量化调节甚至方向控制。触摸按键已广泛应用于手机、DVD、洗衣机等消…

使用Prompt,轻松实现你的第一个全栈项目

前言 还有程序员没有应用过大模型技术吗&#xff1f;是工具也可以&#xff01;如果你还未使用过大模型技术&#xff0c;那么我劝你尽早行动&#xff0c;它会成为你开发的一大神器。如果你对大模型感兴趣&#xff0c;同时想使用大模型技术来开发产品&#xff0c;我接下来这个实…

【JavaEE】JVM中内存区域划分和类加载机制详解

一.初步了解JVM的基本 JVM 是 Java Virtual Machine 的简称&#xff0c;意为 Java虚拟机。是运行Java代码的核心部分&#xff0c;主要负责将Java字节码翻译为机器语言&#xff0c;并且提供了运行时的环境。JVM作为Java平台的一部分&#xff0c;隐藏了操作系统和硬件的差异性&am…

《SpringBoot3+Vue3实战》系列文章目录

前后端分离&#xff08;Frontend-Backend Separation&#xff09;是一种软件架构设计模式&#xff0c;它将传统的Web应用中的前端&#xff08;用户界面&#xff09;和后端&#xff08;服务器逻辑和数据存储&#xff09;从应用层面进行解耦&#xff0c;使得两者可以独立地开发、…