0x00 前言php
继续研究,此次来看一下AMH面板,图截自官网mysql
就让咱们来看看这个多个"首个"的面板作的怎么样吧。nginx
0x01 安装web
官方提供了两种安装方式,一是极速安装,二是编译安装。sql
所为极速安装,应该就是直接拉RPM包,编译好的安装了,编译安装就字面意思了,不解释。后端
这里先选用极速安装,时间也跟官方说的差很少,1分来钟就安装好了。安全
安装完以后,提示了咱们默认的帐号密码,管理界面端口等信息。服务器
其中8888端口为普通http,9999端口为https,实际上是一个东西。mvc
注意到url后缀为php。xss
0x02 研究&&分析
先看看安装脚本amh.sh,里面到底写了什么东西:
先定义了一些变量,能够看到极速安装默认安装的nginx为nginx-generic-1.12版本,mysql为5.5,而php就比较老了为php5.3版本。
而后就是几个函数
看了一下,大概意思就是这样了。
后面的代码就是顺序执行并打印出结果了
从安全方面来讲,这里有几个思考点:
1,默认密码是否能够猜想呢?
2,源码能够获取,代码审计会不会发先一些问题呢?
先来验证第一个问题。
看到SetPassowrd函数,函数名很明显是和密码相关
能够看到默认密码生成的方法:ip地址_随机数_当前时间 | md5sum 以后再取12位做为密码,已是很难猜想得了了。
那么接下来咱们就获取源码审计一发。
获取源码,分析后端源码,获取源码步骤:
lsof -i:8888
查看8888端口是谁开的。
找nginx所在位置
ps -aux | grep nginx
到nginx的目录看nginx的配置文件
能够发现包含了amh的vhosts,查看amh的配置文件最终找到amh的源码所在
打包到本地分析
这里先停一下,转过头来看看web界面,登陆进到主页,发现不管点啥都提示要绑定受权帐户
好不容易注册了个帐号,发现最少也要6块钱一个月。
不贵,可是这个服务器是腾讯云实验室的,就开了几个小时,待会就到期了。
何况我有源码了,就不折腾了。
0x03 源代码审计
拿到源码,先看目录
标准的mvc目录,index.php 为入口。
定义了一堆的常量,加载了Amysql目录下的Config.php 和Amysql.php,而后开启网站进程
其中Amysql.php 定义了控制器,模型,视图模板等基类,
而Config.php就是一些配置变量:
能够看到默认是对$_GET,$_POST,$_COOKIE,$_FILES变量进行addslashes过滤。(代码位于Amysql.php中AmysqlProcess类的ProcessStart方法),开了XSS防御,不开启任何报错的。
且每一次向后端的请求都必需要带token,防止了csrf攻击
明确咱们的目的:找到无需访问验证进入后台的漏洞。
1,验证存在缺陷,能够直接访问一些API。
2,前台存在缺陷,可让咱们间接获取到后台权限。好比一个存储型的xss,一个前台登陆的sql注入等等。
3,是否存在后门性质文件。
想法1验证:
发现程序使用了Function类的CheckLogin来判断用户是否登陆:
一一比对全部controller,发现能加的都加了Function::CheckLogin进行验证判断。
想法2验证:
找遍了全部不用登陆的方法,就几个:
index controller:
1,login()
2,module_list()
3,index_csrf()
4,index_forbidden()
5,logout()verify_code controller1,IndexAction()
一一查看了全部方法皆没有发现可利用的点。
想法3验证:
查遍全部文件皆没有发现可疑的后门文件。
既然没办法直接获取后台权限,那么咱们看看登陆进后台后有哪些漏洞吧:
1,index.php中的一个延时注入
看到箭头所指之处,首先是love参数,是作了截断的,咱们有很大的概率能够利用,再来是$_SERVER变量,是没有受到addslashes的影响,咱们是能够引入单引号的。
跟进add_love方法,在indexs模型中。
首先是利用截断,这种方法须要咱们可控两个地方,第一个查询是没有办法的,可是第二个插入是能够尝试的,可是这里是存在问题的,具体查看$url是怎么获取的。
使用了parse_url进行解析,获取path和query字段,并拼接在一块儿,这里咱们可使query字段有值,可是依旧会引入咱们无法控制的问号。
因此找个方法的注入会失败。
咱们使用方法2,不用前面的截断,直接用后面的$url变量,加入单引号,由于没有开启报错,很大程度只能使用延时了,并且在后台压根就没啥屌用。
简单证实一下:
成功插入咱们想要的字符
还有其余一些问题,不看了。
0x04 总结
嗯,对AMH面板应该就看到这了。
前台确实难挖,后台看了也没啥用。
抛砖引玉吧。