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

    實戰|某次紅藍對抗之Solr-RCE實戰繞過

    VSole2022-07-26 07:03:15

    前言

    在某次紅藍對抗過程中。

    要結束的時候突然發現了掃描器爆出了

    Solr-RCE-CVE-2019-0192漏洞。

    但是進行測試過程中,發現存在各種各樣的問題

    繞過1

    進行測試,發現目標只可以執行單命令,返回字段比較少的命令。

    whoamiipconfig
    

    執行dir,無法執行。

    不出網

    想著直接執行ps直接上線就好了,各種嘗試之后,后知后覺發現對方不出網

    寫websgell

    發現目標不出網的時候,只有寫webshell這一條路子可以走了。

    但是目標只能執行個別命令還無法解決。

    dir無法執行。陷入了沉思,加入單雙引號也不行。

    根據以前的內網經驗是不是系統無法默認調用到dir.exe。

    那么 cmd /c dir是不是可以。

    驚奇的發現,可以完美的執行命令。

    通過dir,找到目錄。進行寫馬嘗試。

    但是發現目標路由規則寫死了,無法直接訪問到.jsp的文件。

    剛開始以為是根目錄的問題。

    發現不止根目錄,常用的css/js和img下面的也不行。

    后續在webshell中看到,翻文件看到了有類似路由機制的驗證

    言歸正傳

    在執行rce的時候,找到了solr的目錄。發現這里的.jsp是沒有這個驗證的。

    利用命令執行進行找到該位置,進行寫文件。

    問題來了。echo 寫入一直無法寫入。。

    問題解決

    把這里的特殊字符進行特殊字符編碼,即可成功寫入。
    

    又遇到一個問題。jsp的馬子都有%號,這里不論怎么做 %就是寫不進去。

    差點放棄。找不到不帶%的馬子。

    柳暗花明

    但是想到了上午利用過的Certutil可以進行編碼解碼

    這樣就沒有特殊字符了。

    完全沒問題。

    剛開始一點一點追加,發現下面的會寫進去兩行

    看了一下就最后有一個+號,沒有特殊字符。

    全部直接寫進去。

    然后decode進行解碼,完美。

    訪問但是是500.不過確很開心,因為確實寫上來。

    接下來解決為啥500就可以了。

    type 123.jsp

    查看一下。

    發現最后decode的時候,少了一個>

    本地測試,是沒有這個問題的。可能是目標一次性字符長度的問題。

    這里很簡單了。

    追加一下就可以了。

    連接成功

    驗證

    特殊字符
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    今天來分享一個繞過過濾比如?等字符的場景,測試環境為 PHP+Mysql假設場景php 代碼通過 HTTP GET 參數 param1 接收用戶輸入的內容,然后經過自定義的過濾函數?過濾可能導致 SQL 注入的特殊字符。在 SQL 查詢中,用戶數據作為列名插入到查詢語句中,比如:$query = mysqli_query;函數來打印錯誤信息,那么也無法使用報錯注入的方式來回顯數據。auth,使用 like 子句來查找該表名的第一個字符?
    可以使用 '|"|}|) 等特殊字符進行檢測,除了正常的參數提交外,注入的位置也可能存在于 HTTP header 中,比如 X-Forwarded-For、User-Agent、Referer、Cookie 中。不同數據庫的報錯內容:
    快速了解 Linux Sudo 高危提權漏洞的研究利用。
    CVE-2020-9054是由于可執行文件weblogin.cgi在身份驗證期間未正確過濾username參數造成的。
    風險描述SQL注入主要發生在應用程序數據庫層面上。程序員在設計程序的時候,沒有對用戶的輸入進行校驗,含有特殊字符語句會被數據庫誤認為是正常的SQL指令而運行,從而使數據庫受到攻擊,可能導致數據被竊取、更改、刪除,以及進一步導致網站被嵌入惡意代碼、被植入后門程序等危害。
    避免網站顯示SQL錯誤信息,比如類型錯誤、字段不匹配等,防止攻擊者利用這些錯誤信息進行一些判斷。
    SQL注入主要發生在應用程序數據庫層面上
    0x01 %00繞過WAF輸入一個單引號頁面報錯首先閉合,這里用')閉合keywords=1') %23. order by x 被攔截,用--%0a代替空格即可直接上union select會一直卡著,沒有任何返回把空格都改為--%0a,成功響應,在 select 跟 1,2,3... 之間用兩個 --%0a 會無響應在 1 后面加上?并 url 編碼,原理是 waf 把空字節認為是結束導致了后面的語句可以繞過0x02 Base64繞WAF發現參數為 base64 編碼測試字符發現頁面報錯,使用報錯注入來出數據133 and updatexml. 這里可以使用16進制或者科學計數法0x1或1e1keywords=11'and-updatexml
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类