## 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证书)
这里有一个很大的误区就是他们认为代码审计只能白盒测试。
其实不然,是可以黑盒测试的,通过本地搭建然后纯黑盒测试也是可以的,难度可能会大一点而已。
代码审计有两条路线(新手)
-
通读全文:打开一个cms文件后 从第一行看到底,读懂他每一行的意思(技能提升的)。
2. 定位敏感函数:掌握住可以存在危险函数的地方,进行反推.
就比如说 变量覆盖(include ),文件包含这类
我们就可以全文搜索include这个函数
对于一些代码功底差一点的朋友
最好的方法就是:灰盒测试
灰盒测试=白盒+黑盒
黑盒的思路=>寻找功能点
测试方法:
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
注意:安装程序他是独立的,不并不属于前台,也不属于后台
这个时候,我们就完成了安装。
但是,这里有个疑问,install安装程序,它可不可以重复安装
我们尝试发现是可以的
只要访问他这个install安装程序,他就可以重复安装
这个有啥用?
1.重复安装就代表着你能破坏网站
假如说你重复安装了,他原来的数据,就会被你的覆盖掉,数据是无价的,尤其是网站的用户数据等等。
2.重复安装你就能进入后台
数据库主机 连接的是本地对吧。那如果我换成我的服务器
然后我设置密码和账号(也就是我重新定义了账号和密码) 我是不是就可以进入后台了。
进入后台之前,我们需要了解一个东西:(安全防御)
内网防护弱,外网防护强
后台防护弱,前台防护强
思路:我们重复安装进入后台,然后通过写文件的方法或者后台getshell的方法。
拿到目标的服务器
注意:我这个方法很危险,代价很大。假如说授权不到位,很容易戴银手铐,最后进去
3.其次就是重装它本身就是个不安全的,但是很多人都认为危害不大,容易忽略。
漏洞产生一般:传参+可控制
这里我们可以看到 他所在的路径在install/index.php
然后我们根据他的路径找到他,审计他的源码
在这里我们可以看到他的传参有个?act=step2
去审计系统进行查询step2
如果你的php编程很牛逼,那你这个时候,就可以通读全文了。
然后我们也可以去找他的配置文件等等。
这里我们就通过关键字搜索,查到了这个参数
在index.php文件里
疑问1:网站访问数据库,你的数据库账号密码会储存在那里?
一般情况下,他都存在配置文件里的,所以我们可以找他的配置文件。去看看他配置文件有什么东西
疑问2:怎么找配置文件?
①.看代码
②.猜(一般开发不会随意乱写的,他是很讲究的东西,可以百度)
这里我们看data里面有一个config.php配置文件
所有的cms基本都会有这个文件(但是可能不一定叫这个名字)
打开看一看
这里 我们可以看到双引号
假如说:我在这里再写一个双引号 是不是就可以闭合掉前面的双引号。这样我们就可以写一个马了?
我们在重装页面去进行尝试
点击下一步,我们发现报错了。我们去查看一下数据库
点击下一步,我们发现报错了。
我们去查看一下数据库,明眼人一眼就看出来了 是因为的原因
这就说明这里有魔术引号(做了防御)
这个时候,怎么搞?
这里有两条路线
1.去看他这个是怎么加上去的,能否被我们利用,然后给他取消掉
2.边缘化的东西【骚知识】(就是说 有些东西是我们不晓得,没有接触过)
然而这里就可以利用骚知识(双引号解析漏洞)
文章出处:https://www.cnblogs.com/yunen/p/10600410.html
重点是看这个位置
然后,我们去尝试一下
页面没有报错,这个可能就大概率成功了。
然后我们去数据库看看
然后我们去访问data目录下的config.php?8=phpinfo();
我搞了很久,都没弄明白。问题出在哪里?
最后,我咨询一个安全大佬,他说可能是php版本的问题,因为不同的版本,会有不同的问题。
现在我用的是5.4.45版本的,他是执行不了的
然后指导我换到5.5.38
准备getshell吧 嘿嘿
以上是通过代码审计进行渗透测试。
明天,再说黑盒测试+灰盒测试的一些思路和方法吧
原文始发于微信公众号(白虎实验室):bluecmsPHP代码审计(自学)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论