0x00 前言

继续研究,这次来看一下AMH面板,图截自官网

就让我们来看看这个多个"首个"的面板做的怎么样吧。

0x01 安装

官方提供了两种安装方式,一是极速安装,二是编译安装。

所为极速安装,应该就是直接拉RPM包,编译好的安装了,编译安装就字面意思了,不解释。

这里先选用极速安装,时间也跟官方说的差不多,1分来钟就安装好了。

安装完之后,提示了我们默认的账号密码,管理界面端口等信息。

其中8888端口为普通http,9999端口为https,其实是一个东西。

注意到url后缀为php。

0x02 研究&&分析

先看看安装脚本amh.sh,里面到底写了什么东西:

先定义了一些变量,可以看到极速安装默认安装的nginx为nginx-generic-1.12版本,mysql为5.5,而php就比较老了为php5.3版本。

然后就是几个函数

看了一下,大概意思就是这样了。

后面的代码就是顺序执行并打印出结果了

从安全方面来说,这里有几个思考点:

1,默认密码是否可以猜测呢?

2,源码可以获取,代码审计会不会发先一些问题呢?

先来验证第一个问题。

看到SetPassowrd函数,函数名很明显是和密码相关

可以看到默认密码生成的方法:ip地址_随机数_当前时间 | md5sum 之后再取12位作为密码,已经是很难猜测得了了。

那么接下来我们就获取源码审计一发。

获取源码,分析后端源码,获取源码步骤:

lsof -i:

查看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 controller
1,IndexAction()

一一查看了所有方法皆没有发现可利用的点。

想法3验证:

查遍所有文件皆没有发现可疑的后门文件。

既然没办法直接获取后台权限,那么我们看看登录进后台后有哪些漏洞吧:

1,index.php中的一个延时注入

看到箭头所指之处,首先是love参数,是做了截断的,我们有很大的几率可以利用,再来是$_SERVER变量,是没有受到addslashes的影响,我们是可以引入单引号的。

跟进add_love方法,在indexs模型中。

首先是利用截断,这种方法需要我们可控两个地方,第一个查询是没有办法的,但是第二个插入是可以尝试的,但是这里是存在问题的,具体查看$url是怎么获取的。

使用了parse_url进行解析,获取path和query字段,并拼接在一起,这里我们可以使query字段有值,但是依旧会引入我们没法控制的问号。

所以找个方法的注入会失败。

我们使用方法2,不用前面的截断,直接用后面的$url变量,加入单引号,因为没有开启报错,很大程度只能使用延时了,而且在后台压根就没啥屌用。

简单证明一下:

成功插入我们想要的字符

还有其他一些问题,不看了。

0x04 总结

嗯,对AMH面板应该就看到这了。

前台确实难挖,后台看了也没啥用。

抛砖引玉吧。

[软件研究]对AMH面板的研究的更多相关文章

  1. 一、美国国家经济研究局NBER教育经济研究项目工作论文合集

    一.美国国家经济研究局NBER教育经济研究项目工作论文合集 (一)项目地址: American National Bureau of Economic Research - Economics of ...

  2. 对比WDCP面板与AMH面板的区别与选择

    转载: http://www.laozuo.org/2760.html | 老左博客 随着VPS主机的性价比提高(其实就是降价)我们很多站长会越来越多的选择使用VPS搭建网站或者运营一些项目,相比较而 ...

  3. Atitit.软件gui按钮and面板---通讯子系统(区)-- github 的使用....

    Atitit.软件gui按钮and面板---通讯子系统(区)-- github 的使用.... 1. 1.注册账户以及创建仓库 1 2. 二.在GitHub中创建项目(create a new rep ...

  4. atitit.软件gui按钮and面板---os区-----软链接,快捷方式

    atitit.软件gui按钮and面板---os区-----软链接,快捷方式 1. 硬链接 1 2. 二.软链接(符号链接)LN 1 3. 三.删除链接 2 4. 区别 2 5. 参考 3 1. 硬链 ...

  5. Atitit.软件gui按钮and面板---os区-----linux windows搜索文件 文件夹

    Atitit.软件gui按钮and面板---os区-----搜索文件 1. Find 1 2. 寻找目录 1 3. 2. Locate// everything 1 4. 3. Whereis (wi ...

  6. zz姚班天才少年鬲融凭非凸优化研究成果获得斯隆研究奖

    姚班天才少年鬲融凭非凸优化研究成果获得斯隆研究奖 近日,美国艾尔弗·斯隆基金会(The Alfred P. Sloan Foundation)公布了2019年斯隆研究奖(Sloan Research ...

  7. Unity的HTC VIVE SDK研究(手柄按键功能的研究,比较详细)

    http://blog.csdn.net/ystistheking/article/details/51553237 想交流的朋友我们可以微博互粉,我的微博黑石铸造厂厂长 ,缺粉丝啊 .....求粉求 ...

  8. 关于wxpython多线程研究包括(import Publisher错误研究)

    作为一个自动化测试人员,开发基本的应用桌面程序是必须的!最近在研究wxpython相关知识,目前看到多线程一块,发现官方文档介绍说:"在线程中不能修改修改窗口属性!",但是实际情况 ...

  9. AMH面板命令操作大全

    LNMP面板 - AMH 命令使用nginx篇 » SSH Nginx1) 有步骤提示操作: ssh执行命令: amh nginx然后选择对应选项进行操作. 2) 或直接操作: 启动Nginx: am ...

随机推荐

  1. jquery 学习(三) - 遍历操作

    HTML代码 <p>1111</p> <p>1111</p> <p>1111</p> <p>1111</p&g ...

  2. DSO windowed optimization 代码 (1)

    这里不想解释怎么 marginalize,什么是 First-Estimates Jacobian (FEJ).这里只看看代码,看看Hessian矩阵是怎么构造出来的. 1 优化流程 整个优化过程,也 ...

  3. python学习笔记:"爬虫+有道词典"实现一个简单的英译汉程序

    1.有道的翻译 网页:www.youdao.com Fig1 Fig2 Fig3 Fig4 再次点击"自动翻译"->选中'Network'->选中'第一项',如下: F ...

  4. BackBone结合ASP.NET MVC实现页面路由操作

    1. 问题的背景 什么是页面路由操作,就是通过浏览器地址栏的标记来实现页面内部的一些操作,这些操作具有异步性和持久性.应用场景主要有页面操作过程中的添加收藏夹的操作.后退操作等过程中能完全恢复界面. ...

  5. ARMV8 datasheet学习笔记1:预备知识

    1. 前言 ARMv8的架构继承以往ARMv7与之前处理器技术的基础; 除了支持现有的16/32bit的Thumb2指令外,也向前兼容现有的A32(ARM 32bit)指令集. 基于64bit的AAr ...

  6. Linux动态频率调节系统CPUFreq之一:概述【转】-- 非常好的博客

    转自:http://blog.csdn.net/droidphone/article/details/9346981     目录(?)[-] sysfs接口 软件架构 cpufreq_policy ...

  7. Asp.Net Core 快速邮件队列设计与实现

    发送邮件几乎是软件系统中必不可少的功能,在Asp.Net Core 中我们可以使用MailKit发送邮件,MailKit发送邮件比较简单,网上有许多可以参考的文章,但是应该注意附件名长度,和附件名不能 ...

  8. plsql developer如何自定义快捷键

    首选项 用户界面 编辑器 自动替换 选择替换文件,文件内容: sf=select * from df=delete from

  9. Vue.js——循环(Java、JSTL标签库、数据库)

    一.Vue.js循环 Vue.js循环要使用 v-for 指令. v-for 指令需要以 student in StudentList 形式的特殊语法使用, StudentList 是源数据数组并且s ...

  10. Struts2的类型转换器

    Struts2的类型转换器 如何实现Struts2的类型转换器? * 继承StrutsTypeConverter * 覆盖convertFromString和convertToString 注册类型转 ...