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面板應該就看到這了。
前臺確實難挖,後臺看了也沒啥用。
拋磚引玉吧。