50 代码审计-PHP无框架项目SQL注入挖掘技巧

news2024/11/20 18:39:39

目录

    • 演示案例:
      • 简易SQL注入代码段分析挖掘思路
      • QQ业务图标点亮系统挖掘-数据库监控追踪
      • 74CMS人才招聘系统挖掘-2次注入应用功能(自带转义)
      • 苹果CMS影视建站系统挖掘-数据库监控追踪(自带过滤)
    • 技巧分析:
    • 总结:

在这里插入图片描述
demo段指的是代码段,先简要的分析一下漏洞的产生原理
完整源码,完整的一套程序
框架源码,指的是框架上面的问题,有框架和没框架的两个源码结构是完全不同的

每个漏洞挖掘的方法有少许的差异,主要是由于漏洞的原理和产生决定

程序有什么漏洞,我们就挖什么漏洞,针对性的找漏洞,找上传、找注入

我们手里有很多源码,一个一个源码分析是很麻烦的,我们可以借助工具,帮我们自动扫描探针,我们推荐使用Fortify、Seay系统

在这里插入图片描述
它会自动对源码进行分析,然后生成简要的报告,这些是它发现可能存在的安全问题,这个工具支持各种语言
在这里插入图片描述
在这里插入图片描述
选择一个源码,对文件进行编译,然后给出一个相应的测试报告
在这里插入图片描述
我们一般挖的话,思路就是不可能直接拿到源代码就上去看了,一个源代码拿到手上,我们要先去分析,所以我们先去用工具去批量测试一下,爆出一些可能存在的安全问题,在它的基础上再去看,这样子能节省一些时间

#代码审计教学计划:
审计项目漏洞Demo->审计思路->完整源码框架->验证并利用漏洞
看漏洞产生的报告、代码段,分析一下关于这个漏洞,我们如何挖掘它会好一点,然后再用完整的代码、框架、源码段在进行完整体系验证和利用这个漏洞的挖掘思路

#代码审计教学内容:
PHP,JAVA网站应用,引入框架类开发源码,相关审计工具及插件使用

#代码审计必备知识点:
环境安装搭建使用,相关工具插件安装使用,掌握前期各种漏洞原理及利用
在PHP里面会涉及到断点调式,就是分析代码的时候要看一下当前页面和代码在那个地方执行,下一步在干嘛干嘛,这些东西全部需要配置

#代码审计开始前准备:
审计目标的程序名,版本,当前环境 (系统,中间件,脚本语言等信息),各种插件等
程序的语言版本、语言的类型和你的环境,可能造成有些漏洞在利用或验证的时候有些问题
SQL注入里面有魔术引号,这个可以在PHP配置里面开启和关闭得到,假设这个网站自身没有启用魔术引号过滤的,那我自己搭的环境有这个过滤,即使它有漏洞你在测试验证的时候,可能会出现误报,但是这个误报并不是代码之间的过滤,而是环境自己的配置导致的过滤,所以我们需要知道目标网站的信息

#代码审计挖掘漏洞根本:
可控变量及特定函数,不存在过滤或过滤不严谨,存在绕过导致的安全漏洞
漏洞在利用的时候都需要可控变量,函数的作用将决定是什么漏洞,如果是输出性的函数,输出代码用的、输出变量用的,将会导致跨站漏洞,因为跨站漏洞原理和输出性函数是有关系的

可控变量有了之后,还要看它有没有过滤,过滤的比较安全,那就是没有漏洞,如果说没有过滤、过滤不严谨,也会导致安全漏洞,所以基本上我们在做漏洞分析的时候,大部分都是看它的过滤

过滤不严谨是它没有想到一些多种攻击方式的一些关键字符和一些恶意字符,也可能是函数在使用的时候,函数使用的不好,像CTF比赛经常考到的,两个等于号,三个等于号就是判断这个值是否相等的时候,是有区别的,所以验证判断的时候存在饶过

演示案例:

简易SQL注入代码段分析挖掘思路

分析一下sqlilabs靶场的sql注入代码
在这里插入图片描述
要包含数据库配置文件,才能对数据库进行操作,我们要进行数据库操作,首先要建立连接,就要包含数据库配置文件,后面就是操作数据库的
mysql query()数据库执行函数,没有这个函数就没有sql注入漏洞,因为注入漏洞要对数据库进行操作
在这里插入图片描述
这段代码同时存在xss和SQL注入漏洞,可控变量和特定函数导致的安全问题

在这里插入图片描述
挖掘思路在特定关键字,搜索特定关键字尝试寻找特定漏洞,因为漏洞产生必定会有关键字,因为关键字没有,这个漏洞就不存在
如:搜索echo print 尝试挖掘的就是xss漏洞;搜索$_GET $_POST 尝试挖掘的就是安全漏洞;搜索数据库的操作性函数,就能尝试挖掘它的注入
如:特定关键字 select insert update sql执行语句 == sql注入漏洞

定点挖掘功能点:
如:我要挖掘文件上传,通过网站的浏览,人工肉眼的判断,找到特定的地方,会员中心存在文件上传的操作地址,抓包分析找到源码中的特定文件代码段,进行文件上传代码分析挖掘

拓展:视漏洞而定
sql注入 数据库监控-监控到当前页面和数据库的交互过程 (SQL执行语句)
发现sql语句里面那些变量可以伪造,那些执行语句里面的值可以进行修改和测试,然后你在找到指定代码段看一下,修改测试的时候,这个代码段有没有进行过滤,发现有没有注入

断点调试: 访问页面对应代码进行断点调试 (执行过程前后顺序,调用文件列表等)
便于你完整了解过程中代码一整个执行下来,你就可以分析到它其中有没有过滤了,其实就是追踪过程

QQ业务图标点亮系统挖掘-数据库监控追踪

加载源码
在这里插入图片描述
利用关键字进行全局搜索,就是所有代码都载进去,搜索关键字,因为有select,才能说明有语句的查询
关键字会被封装,其实select被写成一种函数,自定义的类里面去了,直接调用就完事了
在这里插入图片描述
在搜索的时候,要把正则和不区分大小写给勾起来
在找的时候,那个有变量就看那个文件,没有变量这个语句就写死了,因为外面要控制变量实现sql语句的自定义
在这里插入图片描述
如果出现乱码,换一下GBK,然后重新打开
在这里插入图片描述
选中函数名,点击全局搜索,在那个代码中有调用这个函数
全文追踪在代码中搜索它在那个地方
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
判断值等于几,然后给出相应的提示

在这里插入图片描述
在调用语句的时候,把它调式输出一下,能够更加快捷的看到当前执行的SQL语句
在这里插入图片描述
对应调用的文件在v144.php里面,外面访问一下对应的文件
说明没有进入代码段是有个验证的
在这里插入图片描述
在这里插入图片描述
得到网站的地址
在这里插入图片描述
获取来路地址,由于我是直接访问的没有来路地址,所以url为空,最终domain为空

在这里插入图片描述

有跟没有对比,显然不存在,外面要让它相等,才能进行刚才注入的判断
在这里插入图片描述
我们访问的时候让它有来源,点击有跳转功能的地方,F12修改器href,然后点击跳转
在这里插入图片描述
现在就不提示了,因为它的来源是自身来源
在这里插入图片描述
传递id=1,还是按照刚才的方式来
在这里插入图片描述
在这里插入图片描述
查找一下 “请输入完整”
在这里插入图片描述
我们还需要继续满足条件,api=ok&u=1&p=1
在这里插入图片描述
id改成2之后
在这里插入图片描述
看一下yw有几个列
在这里插入图片描述
看一下语句能不能代入进去并且执行,用#号屏蔽掉
在这里插入图片描述
重新操作一下
在这里插入图片描述
这个时候语句就执行了,说明存在注入点
在这里插入图片描述
语句被执行了,延迟了3秒,因为被调用了3次,所以延迟了9秒
在这里插入图片描述
我们先搜索select,然后找到变量,我们在看函数被谁调用,发现有值传进来控制变量id,访问v144.php,受到了文件名的两个过滤,第一个是检测来源的过滤,第二个是满足这个条件
在这里插入图片描述
条件满足之后,变量成功接受,调用这个函数,函数直接拼接语句,没有过滤,这代码属于无过滤的注入点
在这里插入图片描述

74CMS人才招聘系统挖掘-2次注入应用功能(自带转义)

74CMS这个源码是有自带过滤的,这个自带过滤是很多优秀、有一定规模的CMS自带的过滤机制,就是在代码中没有看到有过滤的写法,但是他的配置文件里面已经写进去了,然后他调用一些函数就可以去分析一下你输入的代码中有没有这个代码

在这里插入图片描述
一把看他的过滤机制写法是看他的全局配置文件,配置文件的目录结构一般会在网站目录下面,像include这种关键字里面
在这里插入图片描述
这个就是典型的过滤转移,等同于魔术引号
在这里插入图片描述
common.inc.php这里面的代码基本上是全局享用的,文件基本上都调用这个代码,都被执行了一遍
在这里插入图片描述
addslashes_deep重新写的定义函数,先看一下你的开关开没开,没有开就利用东西来过滤
在这里插入图片描述
我们可以采用宽字节注入、二次注入绕过魔术引号的机制
在这里插入图片描述
招聘网站会有招聘中心,会员中心,我们可以对会员中心这个地方进行设置,因为会员中心里面会涉及到用户的信息和更改这个操作,所以我们代码测试的功能点要放在这个上面

在这里插入图片描述
我们点击创建新简历,信息随便写
在这里插入图片描述
我们利用数据库监控插件,直接下断、更新
在这里插入图片描述
我们找到对应文件,然后搜索传递的变量
在这里插入图片描述
我们看一下数据库执行语句,输入的时候,后面有update更新,二次注入涉及到先插在更新,但是我们这里更新的信息跟我们加载的不相关,所以这个地方不满足,我们就要继续找
在这里插入图片描述
点击保存跳到下一步在这里插入图片描述
但是插入的数据,我们无法指定,它用了编号代替,因为这些数据是我们选择的,不是我们填写的,所以这个数据我们不能指定
在这里插入图片描述
我们继续下一步
在这里插入图片描述
这里是直接更新,没有插入数据,我们之所以使用到二次注入是因为他能够解决转移,就是你变量接收过去直接更新
在这里插入图片描述
我们加个单引号
在这里插入图片描述
这边自动加个反斜杆,我们就注入不了,我们需要同时找到操作里面有insert同样有update的两种情况,而且变量还要可控还行,要满足这三个条件
在这里插入图片描述
你插入的时候即使转义了,但是他在插进去的时候,斜杆被自动删除了,这个过滤到数据库里面就没有了,所以你在update把数据取出来之后,这个斜杆没有,我们才能注入,因为有会干扰sql语句的正常执行,会注入不了
我们在保存一下
在这里插入图片描述
这个就满足了
在这里插入图片描述
我们写上payload
在这里插入图片描述
上面有被过滤,下面没有,这就是二次注入,转移绕过的经典例子
在这里插入图片描述
这就是刚才查询user的东西
在这里插入图片描述

苹果CMS影视建站系统挖掘-数据库监控追踪(自带过滤)

我们看一下网站,我可以通过抓包来分析一下搜索框
在这里插入图片描述
推荐另外一个数据库监控软件
这个是监控mysql
在这里插入图片描述
这个是监控oracle,各种数据库都有;使用方法按照上面介绍的就可以
在这里插入图片描述
这个是监控mysql的数据库语句的
在这里插入图片描述
我们搜索一下xiaodi11,整改过程监控的语句就出来了,我们在这里就可以搜索相关资料了
在这里插入图片描述
这个是网页版的,前面是插件版的,我们想用那一种都可以
我们打开项目
在这里插入图片描述
寻找文件地址
在这里插入图片描述
m给完之后,进行判断,给到ac,然后在包含这个文件
在这里插入图片描述
这边还进行分割
在这里插入图片描述
调用search,trim去空格
在这里插入图片描述
be很明显是自定义的函数,转义过滤
在这里插入图片描述
chkSql自定义函数,进行url的编码,是关键字过滤
在这里插入图片描述

正则式匹配,有没有匹配到关键字
在这里插入图片描述
这边是两种过滤,转义和关键字过滤
在这里插入图片描述
htmlEncode这里是强制性编码转义,接触到数据库还会转义
在这里插入图片描述
我们可以使用双重编码绕过转义

技巧分析:

数据库监控脚本类,关键字搜索,业务应用分析等

总结:

代码审计不是一定要有编程知识

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

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

相关文章

C语言从入门到实战——常用内存函数的了解和模拟实现

常用内存函数的了解和实现 前言1. memcpy使用和模拟实现2. memmove使用和模拟实现3. memset函数的使用4. memcmp函数的使用 前言 内存函数(memory functions)指的是控制计算机内存操作的函数 1. memcpy使用和模拟实现 void * memcpy ( void * destinat…

重生奇迹mu坐骑系统详解

重生奇迹mu最强坐骑排名 1、红色烈焰——炎狼兽。炎狼兽身穿火红色盔甲,远远看去如同一道红色烈焰,非常酷炫,可供多种职业使用,是所有勇士梦寐以求的坐骑。除了可以提高移动速度以外,当年炎狼兽还是勇士们的刷怪利器。…

医院不良事件报告系统源码带鱼骨图分析

医院不良事件上报系统通过 “事前的人员知识培训管理和制度落地促进”、“事中的事件上报和跟进处理”、 以及 “事后的原因分析和工作持续优化”,结合预存上百套已正在使用的模板,帮助医院从对护理事件、药品事件、医疗器械事件、医院感染事件、输血事件…

紫龙游戏解锁Jira与Perforce的游戏开发行业实践

近日,在龙智携手Atlassian与JFrog共同举办的“大规模开发创新:如何提升企业级开发效率与质量”的线下研讨会中,紫龙游戏上海研发中心高级项目管理主管叶凯威为大家带来了精彩演讲, 分享紫龙游戏的项目管理工具与流程,以…

处理和分析人类语言数据-NLTK安装和使用

简介:NLTK(Natural Language Toolkit)是一个强大的Python库,用于处理和分析人类语言数据,是一个开源的项目,包含:Python模块,数据集和教程,用于NLP的研究和开发&#xff…

微软推出AI助手Copilot的正式版本;ChatGPT:七位研究人员分享他们的观点

🦉 AI新闻 🚀 微软推出AI助手Copilot的正式版本 摘要:微软宣布其AI助手Copilot正式上线,此前Copilot的预览版已成为很多用户的日常AI伴侣。此次上线后,Copilot将继续提供AI驱动的网络聊天体验,并具备商业…

SAP_ABAP_内表数据重复问题,解决思路

SAP ABAP 顾问(开发工程师)能力模型_Terry谈企业数字化的博客-CSDN博客文章浏览阅读516次。目标:基于对SAP abap 顾问能力模型的梳理,给一年左右经验的abaper 快速成长为三年经验提供超级燃料!https://blog.csdn.net/j…

终端安全管理软件是监控软件吗

有些人在后台问,终端安全管理软件是监控软件吗? 先回答,是监控软件。 因为它具有监控的功能,在很大程度上,是可以用来当做监控软件来用的。 终端安全管理软件是一种集中管理终端设备的软件工具,可以在企业…

Windows下打包C++程序无法执行:无法定位程序输入点于动态链接库

1、问题描述 环境&#xff1a;CLionCMakeMinGW64遇到问题&#xff1a;打包的exe无法运行&#xff0c;提示无法定位程序输入点于动态链接库。 2、解决思路 ​ 通过注释头文件的方式&#xff0c;初步定位问题是因为使用了#include <thread> 多线程库引起的。而且exe文件…

很详细 无人机自主飞行技术的要点与优势

随着无人机自主飞行技术的不断成熟&#xff0c;其在提升巡检效率和减轻工作负担方面正日渐显现为一项强有力的工具。在本文中&#xff0c;我们将共同探讨无人机自主飞行技术的精髓。 一、无人机自主飞行技术的要点 1、 一键式航线规划 为确保无人机在任务中能够安全飞行&…

成人学生钢笔练字快速入门,硬笔书法行书楷书教程合集

一、教程描述 虽然现在都是电脑打字&#xff0c;需要手写的场合越来越少&#xff0c;但是可以写一手人见人爱&#xff0c;花见花开的好字&#xff0c;仍然是很拉风很惊艳的&#xff0c;可以给人留下深刻印象。本套硬笔书法教程&#xff0c;大小40.90G&#xff0c;共有591个文件…

Java参数验证@Validated

就以登录接口为例&#xff0c;如果用户传参的时候没有传递帐号或者密码&#xff0c;会报错&#xff0c;但是报错的信息不够全面&#xff0c;前端人员不好判断是什么问题&#xff0c;这个时候就需要对参数进行一个校验 引入依赖 <dependency><groupId>org.hibernat…

rust入门(rust教程、rust安装方法)

文章目录 Rust开发入门Rust的特性Rust的应用场景Rust安装——环境配置1. 安装rustup具体执行步骤 2. 验证安装 Rust的卸载基本语法变量与数据类型控制流函数 Rust的所有权系统错误处理实战&#xff1a;构建一个小项目创建新项目编写代码运行项目安装相关链接器运行 删除项目 Ru…

vue-cli创建项目运行报错this[kHandle] = new _Hash(algorithm, xofLen);(完美解决)

1&#xff1a;问题出现的原因 出现这个问题是node.js 的版本问题&#xff0c;因为 node.js V17开始版本中发布的是OpenSSL3.0, 而OpenSSL3.0对允许算法和密钥大小增加了严格的限制&#xff0c;可能会对生态系统造成一些影响。故此以前的项目在使用 nodejs V17以上版本后会报错。…

【C#】读取ini配置文件的内容

一、编写ini配置文件 ini文件时初始化文件&#xff0c;通常是系统配置文件所采用的存储格式。ini文件有自己的固定格式&#xff0c;是由若干个“节”&#xff08;section&#xff09;组成&#xff0c;每个节由若干个“键”&#xff08;key&#xff09;组成&#xff0c;每个key…

上门预约洗衣洗鞋管理软件小程序开发;

闪站侠洗衣洗鞋店管理软件 为洗衣洗鞋店、干洗店提供加盟、直营连锁管理&#xff1b; 实现门店上门收衣>开单拍照>清洗护理>工厂洗涤>订阅信息进度通知>会员取衣>报表统计等服务流程。实现上门收衣服务&#xff0c;数据实时同步门店&#xff0c;提高店铺形象…

No supported authentication methods available (server sent: publickey) 问题的解决

参考&#xff1a;git clone使用ssh报错: No supported authentication methods available(server sent: publickey) 的解决办法_赵锦川的博客-CSDN博客 No supported authentication methods available (server sent: publickey) 修改&#xff1a;网络的中的SSH设置

PHP使用HTTP代码示例模板

PHP是一种广泛用于服务器端的编程语言&#xff0c;它提供了许多内置的函数和扩展&#xff0c;以便开发人员能够轻松地处理HTTP请求和响应。在PHP中&#xff0c;您可以使用以下代码示例模板来处理HTTP请求和生成HTTP响应。 php复制代码 <?php // 处理GET请求 if ($…

预约按摩小程序有哪些功能特点?

随着科技的飞速发展&#xff0c;我们的生活方式发生了翻天覆地的变化。现在&#xff0c;只需动动手指&#xff0c;就能解决许多生活中的问题。同城预约上门按摩小程序&#xff0c;就是这样一个方便、快捷的解决方案。 在忙碌的生活中&#xff0c;身心疲惫的人们急需一种快速有效…

CentOS系列:【Linux】CentOS7操作系统安装nginx实战(多种方法,超详细)

CentOS7操作系统安装nginx实战&#xff08;多种方法&#xff0c;超详细&#xff09; 一. 实验环境二. 使用yum安装nginx2.1 添加yum源2.1.1 使用官网提供的源地址&#xff08;方法一&#xff09;1. 找到官网的源2. 使用rpm -ivh 进行安装3. 安装完成之后查看源&#xff1a; 2.1…