代码审计(工具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、不能自动收集常见的代码安全问题。
声明:
- 此文章只做技术研究,谨遵守国家相关法律法规,请勿用于违法用途,如果您对文章内容有疑问,可以尝试留言私信,如有侵权请联系小编处理。
相关文章:
代码审计(工具Fortify 、Seay审计系统安装及漏洞验证)
源代码审计 代码安全测试简介 代码安全测试是从安全的角度对代码进行的安全测试评估。(白盒测试;可看到源代码) 结合丰富的安全知识、编程经验、测试技术,利用静态分析和人工审核的方法寻找代码在架构和编码上的安全缺陷…...
cocos creator 3.x 手搓背包拖拽装备
项目背景: 游戏背包 需要手动 拖拽游戏装备到 装备卡槽中,看了下网上资料很少。手搓了一个下午搞定,现在来记录下实现步骤; 功能拆分: 一个完整需求,我们一般会把它拆分成 几个小步骤分别造零件。等都造好了…...
运维开发.Kubernetes探针与应用
运维系列 Kubernetes探针与应用 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_28550263…...
Spring 框架:Java 企业级开发的基石
文章目录 序言Spring 框架的核心概念Spring 框架的主要模块Spring Boot:简化 Spring 开发Spring Cloud:构建微服务架构实际案例分析结论 序言 Spring 框架自 2002 年发布以来,已经成为 Java 企业级开发的标准之一。它通过提供全面的基础设施…...
在Docker中使用GPU
一、安装nvidia-container-toolkit 总之一句话:nvidia-docker和nvidia-docker2,nvidia-container-runtime 已经被英伟达迭代了,可以认为nvidia-container-toolkit是nvidia-docker和nvidia-docker2, nvidia-container-runtime 的替…...
vue3 前端实现导出下载pdf文件
这样的数据实现导出 yourArrayBufferOrByteArray 就是后端返回数据 // 创建Blob对象const blob new Blob([new Uint8Array(res)], { type: application/pdf })// 创建一个表示该Blob的URLconst url URL.createObjectURL(blob);// 创建一个a标签用于下载const a document.cr…...
AI智能体研发之路-模型篇(五):pytorch vs tensorflow框架DNN网络结构源码级对比
博客导读: 《AI—工程篇》 AI智能体研发之路-工程篇(一):Docker助力AI智能体开发提效 AI智能体研发之路-工程篇(二):Dify智能体开发平台一键部署 AI智能体研发之路-工程篇(三&am…...
电商物流查询解决方案助力提升消费者体验
截至2023年12月,中国网络购物用户规模达9.15亿人,占网民整体的83.8%。这一庞大的数字不仅展现了电子商务的蓬勃发展,也标志着数字零售企业营销战略的转变——从以产品和流量为核心,到用户为王的新阶段。因此,提升消费者…...
【深度密码】神经网络算法在机器学习中的前沿探索
目录 🚝前言 🚍什么是机器学习 1. 基本概念 2. 类型 3. 关键算法 4. 应用领域 5. 工作流程 🚋什么是神经网络 基本结构 🚂神经网络的工作原理 前向传播(Forward Propagation): 损失函…...
搭载算能 BM1684 芯片,面向AI推理计算加速卡
搭载算能 BM1684 芯片,是面向AI推理的算力卡。可集成于服务器、工控机中,高效适配市场上所有AI算法,实现视频结构化、人脸识别、行为分析、状态监测等应用,为智慧城市、智慧交通、智慧能源、智慧金融、智慧电信、智慧工业等领域进…...
Python开发 我的世界 Painting-the-World: Minecraft 像素图片生成器
简介 Painting-the-World 是一款创新的工具,专为《我的世界》(Minecraft) 玩家及创作者设计,旨在将数字图片转变为游戏内的像素艺术。通过利用 RCON (Remote Console) 协议,本项目可以直接与《我的世界》服务器对话,根据输入的图…...
【经验分享】盘点“食用“的写文素材
一、构建框架 简介 1. 身份 擅长领域 2. 博客内容 3. 目前示例: 阿里云专家博主,华为云-云享专家,专注前、后端开发 博客内容:前后端实战教学、源码剖析、常见面试知识解析、算法题解与心得、日常考研总结等 目前正在备战考研&…...
实习碰到的问题w1
1.vueelementUI在输入框中按回车键会刷新页面 当一个 form 元素中只有一个输入框时,在该输入框中按下回车应提交该表单。如果希望阻止这一默认 行为,可以在 <el-form> 标签上添加 submit.native.prevent 。 参考:element-ui 表单 form …...
c#实现BPM系统网络传输接口,http协议,post
BPM通过http协议实现网络传输,语言使用.net(c#),在这里只提供一个接口,具体代码如下,请参照: public string MakeRequest(string parameters) { ServicePointManager.ServerCertificateValidationCallback new Syst…...
如何修改开源项目中发现的bug?
如何修改开源项目中发现的bug? 目录 如何修改开源项目中发现的bug?第一步:找到开源项目并建立分支第二步:克隆分支到本地仓库第三步:在本地对项目进行修改第四步:依次使用命令行进行操作注意:Gi…...
结构设计模式 - 代理设计模式 - JAVA
代理设计模式 一. 介绍二. 代码示例2.1 定义 CommandExecutor 类2.2 定义 CommandExecutorProxy代理类2.3 模拟客户端2.4 测试结果 三. 结论 前言 这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新。 作者:神的孩子…...
企业了解这些cad图纸加密方法,再也不怕图纸被盗了!
在竞争激烈的商业环境中,企业的核心技术、设计图纸和创意是维持其市场地位和竞争优势的关键。CAD图纸作为产品设计的重要载体,其安全性自然成为企业关注的焦点。为了确保CAD图纸不被非法获取或盗用,企业需要采取一系列有效的加密方法。本文将…...
# 详解 JS 中的事件循环、宏/微任务、Primise对象、定时器函数,以及其在工作中的应用和注意事项
为什么会突然想到写这么一个大杂烩的博文呢,必须要从笔者几年前的一次面试说起 当时的我年轻气盛,在简历上放了自己的博客地址,而面试官应该是翻了我的博客,好几道面试题都是围绕着我的博文来提问 其中一个问题,直接…...
神经网络与深度学习——第14章 深度强化学习
本文讨论的内容参考自《神经网络与深度学习》https://nndl.github.io/ 第14章 深度强化学习 深度强化学习 强化学习(Reinforcement Learning,RL),也叫增强学习,是指一类从与环境交互中不断学习的问题以及解决这类问题…...
centOS 编译C/C++
安装C和C编译器 yum -y install gcc*查看CenterOS系统信息 cat /etc/system-releaseCentOS Linux release 8.2.2004 (Core)查看gcc版本 gcc --versiongcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-4) Copyright (C) 2018 Free Software Foundation, Inc. This is free software…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...
vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)
UniApp 集成腾讯云 IM 富媒体消息全攻略(地理位置/文件) 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型,核心实现方式: 标准消息类型:直接使用 SDK 内置类型(文件、图片等)自…...
消防一体化安全管控平台:构建消防“一张图”和APP统一管理
在城市的某个角落,一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延,滚滚浓烟弥漫开来,周围群众的生命财产安全受到严重威胁。就在这千钧一发之际,消防救援队伍迅速行动,而豪越科技消防一体化安全管控平台构建的消防“…...
人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型
在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重,适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解,并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...
欢乐熊大话蓝牙知识17:多连接 BLE 怎么设计服务不会乱?分层思维来救场!
多连接 BLE 怎么设计服务不会乱?分层思维来救场! 作者按: 你是不是也遇到过 BLE 多连接时,调试现场像网吧“掉线风暴”? 温度传感器连上了,心率带丢了;一边 OTA 更新,一边通知卡壳。…...
比较数据迁移后MySQL数据库和ClickHouse数据仓库中的表
设计一个MySQL数据库和Clickhouse数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...
