跳转到帖子
  • 游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

    赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

    TheHackerWorld官方

渗透基金会3354支持通过HTTP协议的NTLM的Webshell实现


尖REN

推荐的帖子

0x00 前言

在某些情况下,访问Web服务器的资源需要通过HTTP协议上的NTLM进行NTLM身份验证。当我们在这样的Web服务器中使用Webshell时,我们不仅需要考虑NTLM认证的实现,还需要能够在命令行下使用它。

本文仅从技术研究、开源代码、分享脚本开发细节的角度介绍一种实现方法。

0x01 简介

本文将介绍以下内容:

设计理念

脚本开发详细信息

开放源代码

0x02 设计思路

有许多Web服务器通过HTTP协议由NTLM认证。这里以Exchange和SharePoint为例。

(1)交换测试环境

保存文件的绝对路径:

c:\ Program Files \ Microsoft \ Exchange Server \ V15 \ client access \ auto discover \ test . aspx

相应的URL是:

https://URL/自动发现/test.aspx

(2)SharePoint测试环境

保存文件的绝对路径:

c:\ Program Files \ Common Files \ Microsoft shared \ Web服务器扩展\15\TEMPLATE\LAYOUTS\test.aspx

相应的URL是:

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

Test.aspx要求通过HTTP协议上的NTLM进行NTLM身份验证。

这里以一个支持cmd命令的webshell为例进行测试。webshell的地址是:

https://github . com/tennc/webshell/blob/master/aspx/ASP . net-backdoors/cmd exec . aspx

如下图

2-1.png

这个webshell需要通过浏览器来操作,首先完成NTLM认证,然后填写正确的Auth Key和cmd命令来执行。

我们的目标是能够在命令行下使用它,它可以作为一个模板进行修改。设计思路如下:

(1)exec MD . aspx

接收表单请求作为验证身份验证密钥的参数。

如果验证失败,则返回空结果。

如果验证成功,执行传入的cmd命令并返回执行结果。

(2)aspxCmdNTLM.py

命令行脚本

首先,NTLM认证由NTLM Over HTTP协议完成,该协议需要支持明文和用户密码哈希两种登录方式。

通过Form form请求发送Auth Key和要执行的cmd命令,并接收cmd命令的执行结果。

execCmd.aspx和aspxCmdNTLM.py之间的通信内容是用Base64编码的,所以在程序实现中要考虑Base64的编解码。

0x03 脚本开发细节

1.execCmd.aspx

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

Base64编码的实现:

byte[] enbytes=编码。default . GetBytes(string 1);

字符串string2=Convert。to base 64 string(enbytes);

Base64解码的实现:

byte[] outbyte=Convert。from base 64 string(string 1);

string string2=编码。default . GetString(outbyte);

的完整实现代码如下:

%@页语言='C#'%

%@导入名称空间='System。诊断' %

%@导入名称空间='System。IO'%

2.aspxCmdNTLM.py

NTLM认证的实施可以参照前面的代码:

https://github . com/3g student/Homework-of-Python/blob/master/check EWS . py

支持两种登录方法:明文和用户密码哈希。

表格请求通过邮件发送。

Base64编解码需要注意字符串的格式。

的完整代码已上传至github,地址如下:

https://github . com/3g student/Homework-of-Python/blob/master/aspxcmdntlm . py

ExecCmd.aspx需要保存在Web服务器中。

AspxCmdNTLM.py在命令行执行,连接execCmd.aspx执行Cmd命令并获取返回结果。

AspxCmdNTLM.py支持两种登录方法:明文和用户密码哈希。

对于Exchange服务器,对应的Webshell权限是System。

如下图

3-1.png

可以直接打Exchange PowerShell。

命令示例:

python aspxcmdntlm . py 192 . 168 . 1 . 1 443 https://192 . 168 . 1 . 1/auto discover/exec MD . aspx明文test.com用户1密码123!powershell-c ' Add-PSSnapin Microsoft。exchange . management . powershell . snap in;Get-MailboxServer ' '

结果如下

3-2.png

对于SharePoint服务器,相应的Webshell权限是用户权限。

如下图

3-3.png

您可以尝试调用SharePointServer PowerShell。

命令示例:

python aspxcmdntlm . py 192 . 168 . 1 . 1 443 https://192 . 168 . 1 . 1/auto discover/exec MD . aspx明文test.com用户1密码123!powershell-c ' Add-PSSnapin Microsoft。SharePoint . PowerShellGet-SPSite ' '

这里应该注意的是,用户需要配置为能够访问数据库,然后才能执行SharePointServer PowerShell命令。

与可以访问数据库的用户列表相对应的Powershell命令如下:

Add-PSSnapin Microsoft。SharePoint . PowerShell

Get-SPShellAdmin

将与用户访问权限相对应的Powershell命令添加到数据库,如下所示:

Add-PSSnapin Microsoft。SharePoint . PowerShell

Add-SPShellAdmin域\用户1

与删除用户对数据库的访问权限相对应的Powershell命令如下:

Add-PSSnapin Microsoft。SharePoint . PowerShell

remove-spshell admin Domain \ user 1-Confirm:$ false

正常结果如下

3-4.png

0x04 小结

以Exchange和SharePoint为例,介绍了支持HTTP协议NTLM的Webshell的实现思路、开源代码和共享脚本开发细节。

留下回复

链接帖子
意见的链接
分享到其他网站

黑客攻防讨论组

黑客攻防讨论组

    You don't have permission to chat.
    • 最近浏览   0位会员

      • 没有会员查看此页面。
    ×
    ×
    • 创建新的...