bluecmsPHP代码审计(自学)

admin 2022年9月25日20:48:08代码审计评论29 views2615字阅读8分43秒阅读模式
##0x00 前言
大家好,我是小軍,在此,我做一个简单的代码审计思路学习
这次审计的目标是bluecms
这次我将选择用这个cms案例分析

## 0x01 环境搭建

Phpstudy 2018

Bluecms v1.6源代码

https://www.a5xiazai.com/php/17968.html#link

代码审计工具(Seay源码审计系统)


1.思路

我们渗透测试人员的本质工作在于渗透测试。渗透测试的核心,在于找漏洞。找漏洞实质上就是找BUG。找bug的核心,是因为开发人员的技术不到家或者是衔接的问题或者跟项目经理有仇或者任何原因等等各种因素啥的。


衔接问题是指:比如上一个人写的代码是没毛病的,然后下一个人写的也是没问题的。最后拼凑在一起就出现了问题bug 这种也是存在的

这其中还有一个很重要的东西就是平衡


我为啥这么说呢?


大家都知道cookie对吧 它本身就是个不安全的东西,我们可以利用xss跨站脚本攻击,通过xss攻击平台来窃取管理员的cookie或者是用户的,从而登录他的账号进行非法操作等等。那么说如果不存在cookie 那么是不是要安全一些?但问题来了 假如没有cookie,用户在逛淘宝登录的时候要进行一次验证输入,添加购物车也要进行验证一次,购买商品的时候也要进行一次验证。换位思考一下 你觉得这样的体验好吗?这样用户体验肯定很差对吧

所以说 安全和业务他是平衡的。不可能存在绝对的安全系统或应用等等


那么这个时候就需要代码审计了

代码审计的核心:在于通过源码,知道代码是如何执行的,然后根据代码执行中可能产生的问题进行分析,从而寻找漏洞(或者说寻找开发的Bug)

代码审计一般指的是白盒审计(通用型漏洞,例如cms通杀漏洞--cnvd证书)

这里有一个很大的误区就是他们认为代码审计只能白盒测试。

其实不然,是可以黑盒测试的,通过本地搭建然后纯黑盒测试也是可以的,难度可能会大一点而已。


代码审计有两条路线(新手)

  1. 通读全文:打开一个cms文件后 从第一行看到底,读懂他每一行的意思(技能提升的)。

bluecmsPHP代码审计(自学)

2. 定位敏感函数:掌握住可以存在危险函数的地方,进行反推.

就比如说 变量覆盖(include ),文件包含这类

我们就可以全文搜索include这个函数

bluecmsPHP代码审计(自学)

对于一些代码功底差一点的朋友

最好的方法就是:灰盒测试

灰盒测试=白盒+黑盒

黑盒的思路=>寻找功能点

测试方法:

1.sql注入

2.Xss

3.Csrf

4.Xxe

5.Ssrf

6.文件上传

7.逻辑漏洞

(1)验证码绕过

(2)密码找回

(3)支付漏洞

(4)越权

白盒测试:

比如:

1.变量覆盖

2.文件包含

3.反序列化

4.代码执行

5.命令执行


2.代码审计(提升方法)

1.看文章,关于代码审计漏洞的文章并且复现

2.看cnvd,看cnvd里面xxx存在xx漏洞,然后去进行复现操作

3.自己去进行挖掘,可以先灰盒,再定位危险函数,再通读等


3.实战代码审计

0x02 代码审计过程

首先我们先安装这个cms(/install) 安装完后访问本地ip并刷新

数据库名:root

数据库密码:root

后台账号:admin

后台密码:admin

注意:安装程序他是独立的,不并不属于前台,也不属于后台

bluecmsPHP代码审计(自学)

这个时候,我们就完成了安装。

但是,这里有个疑问,install安装程序,它可不可以重复安装

我们尝试发现是可以的

只要访问他这个install安装程序,他就可以重复安装

bluecmsPHP代码审计(自学)

这个有啥用?

1.重复安装就代表着你能破坏网站

假如说你重复安装了,他原来的数据,就会被你的覆盖掉,数据是无价的,尤其是网站的用户数据等等。

2.重复安装你就能进入后台

数据库主机 连接的是本地对吧。那如果我换成我的服务器

然后我设置密码和账号(也就是我重新定义了账号和密码) 我是不是就可以进入后台了。

bluecmsPHP代码审计(自学)

进入后台之前,我们需要了解一个东西:(安全防御)

内网防护弱,外网防护强

后台防护弱,前台防护强

思路:我们重复安装进入后台,然后通过写文件的方法或者后台getshell的方法。

拿到目标的服务器

注意:我这个方法很危险,代价很大。假如说授权不到位,很容易戴银手铐,最后进去


3.其次就是重装它本身就是个不安全的,但是很多人都认为危害不大,容易忽略。

漏洞产生一般:传参+可控制

这里我们可以看到 他所在的路径在install/index.php

bluecmsPHP代码审计(自学)

然后我们根据他的路径找到他,审计他的源码

bluecmsPHP代码审计(自学)

在这里我们可以看到他的传参有个?act=step2

bluecmsPHP代码审计(自学)

去审计系统进行查询step2

如果你的php编程很牛逼,那你这个时候,就可以通读全文了。

然后我们也可以去找他的配置文件等等。

这里我们就通过关键字搜索,查到了这个参数

在index.php文件里

bluecmsPHP代码审计(自学)

疑问1:网站访问数据库,你的数据库账号密码会储存在那里?

一般情况下,他都存在配置文件里的,所以我们可以找他的配置文件。去看看他配置文件有什么东西

疑问2:怎么找配置文件?

①.看代码

②.猜(一般开发不会随意乱写的,他是很讲究的东西,可以百度)

bluecmsPHP代码审计(自学)

这里我们看data里面有一个config.php配置文件

所有的cms基本都会有这个文件(但是可能不一定叫这个名字)

打开看一看

bluecmsPHP代码审计(自学)

bluecmsPHP代码审计(自学)

这里 我们可以看到双引号

假如说:我在这里再写一个双引号 是不是就可以闭合掉前面的双引号。这样我们就可以写一个马了?

我们在重装页面去进行尝试

bluecmsPHP代码审计(自学)

点击下一步,我们发现报错了。我们去查看一下数据库

bluecmsPHP代码审计(自学)

bluecmsPHP代码审计(自学)

点击下一步,我们发现报错了。

我们去查看一下数据库,明眼人一眼就看出来了 是因为的原因 

这就说明这里有魔术引号(做了防御)

这个时候,怎么搞?

这里有两条路线

1.去看他这个是怎么加上去的,能否被我们利用,然后给他取消掉

2.边缘化的东西【骚知识】(就是说 有些东西是我们不晓得,没有接触过)

bluecmsPHP代码审计(自学)

然而这里就可以利用骚知识(双引号解析漏洞)

文章出处:https://www.cnblogs.com/yunen/p/10600410.html

bluecmsPHP代码审计(自学)

重点是看这个位置

bluecmsPHP代码审计(自学)


然后,我们去尝试一下

bluecmsPHP代码审计(自学)

页面没有报错,这个可能就大概率成功了。

然后我们去数据库看看

bluecmsPHP代码审计(自学)

然后我们去访问data目录下的config.php?8=phpinfo();

bluecmsPHP代码审计(自学)

我搞了很久,都没弄明白。问题出在哪里?

最后,我咨询一个安全大佬,他说可能是php版本的问题,因为不同的版本,会有不同的问题。

现在我用的是5.4.45版本的,他是执行不了的

bluecmsPHP代码审计(自学)

然后指导我换到5.5.38

bluecmsPHP代码审计(自学)

准备getshell吧 嘿嘿

bluecmsPHP代码审计(自学)

以上是通过代码审计进行渗透测试。

明天,再说黑盒测试+灰盒测试的一些思路和方法吧

原文始发于微信公众号(白虎实验室):bluecmsPHP代码审计(自学)

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年9月25日20:48:08
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  bluecmsPHP代码审计(自学) http://cn-sec.com/archives/1314256.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: