代码审计(工具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…...
测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...
深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...
Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果