[軟件研究]對AMH面板的研究

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

一一查看了全部方法皆沒有發現可利用的點。

想法3驗證:

查遍全部文件皆沒有發現可疑的後門文件。

既然沒辦法直接獲取後臺權限,那麼咱們看看登陸進後臺後有哪些漏洞吧:

1,index.php中的一個延時注入

看到箭頭所指之處,首先是love參數,是作了截斷的,咱們有很大的概率能夠利用,再來是$_SERVER變量,是沒有受到addslashes的影響,咱們是能夠引入單引號的。

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

首先是利用截斷,這種方法須要咱們可控兩個地方,第一個查詢是沒有辦法的,可是第二個插入是能夠嘗試的,可是這裏是存在問題的,具體查看$url是怎麼獲取的。

使用了parse_url進行解析,獲取path和query字段,並拼接在一塊兒,這裏咱們可使query字段有值,可是依舊會引入咱們無法控制的問號。

因此找個方法的注入會失敗。

咱們使用方法2,不用前面的截斷,直接用後面的$url變量,加入單引號,由於沒有開啓報錯,很大程度只能使用延時了,並且在後臺壓根就沒啥屌用。

簡單證實一下:

成功插入咱們想要的字符

 還有其餘一些問題,不看了。

 

0x04 總結

嗯,對AMH面板應該就看到這了。

前臺確實難挖,後臺看了也沒啥用。

拋磚引玉吧。

相關文章
相關標籤/搜索