跳转到帖子

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

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

TheHackerWorld官方

Exchange Web服务(EWS)开发指南6——请求_ntlm

精选回复

发布于

0x00 前言

在之前的文章《Exchange Web Service(EWS)开发指南4——Auto Downloader》 和《Exchange Web Service(EWS)开发指南5——exchangelib》 介绍了两种利用混杂访问交换资源的方法,各有特点。

前者采用了较为底层的通信协议,在功能实现上相对繁琐,但是有助于理解通信协议原理和漏洞利用。后者借助第三方库exchangelib,开发便捷,但是不太适用于漏洞利用。

站在漏洞利用的角度,如果仅使用封装NTLM认证的第三方包,既不影响漏洞利用,又能兼顾效率。

所以本文选取了第三方包请求_ntlm,以自动化下载邮件和提取附件为例,开源代码,介绍用法。

0x01 简介

本文将要介绍以下内容:

请求_ntlm用法

开发细节

开源代码

0x02 requests_ntlm用法

说明文档:

https://github.com/requests/requests-ntlm

1.两种登录方法

我在低于1.0.0版本的requests_ntlm.py找到了使用混杂登录的方法,代码位置:

https://github。NTLM/blob/v 0。3 .0/NTLM请求/NTLM请求。py # L16

这里可以找到使用混杂登录的参数格式为ABC dabcd ABC dabcd:ABC dabcd ABC dabcd

两种登录交换的示例代码如下:

(1)明文登录

目标='192.168.1.1 '

用户名='[email protected]

密码='密码1 '

RES=请求。邮政(' https://'目标'/EWS/交易所。asmx ',data=POST_BODY,headers=headers,verify=False,auth=HttpNtlmAuth(用户名,密码))

打印(资源状态代码)

打印(研究文本)

(2)Hash登录

目标='192.168.1.1 '

用户名='[email protected]

hash=' 0000000000000000000000000:5835048 ce 94 ad 0564 e29a 924 a 03510 ef '

RES=请求。邮政(' https://'目标'/EWS/交易所。asmx ',data=POST_BODY,headers=headers,verify=False,auth=HttpNtlmAuth(用户名,哈希))

打印(资源状态代码)

打印(研究文本)

2.Session机制

请求_ntlm支持会议机制,能够减少身份验证的次数,缩短通信数据包,效率更高

0x03 开发细节

1.使用requests_ntlm重新实现ewsManage_Downloader.py

在原有脚本EWS经理_下载器。巴拉圭的基础上,只需做以下替换即可

(1)

原代码:

status,responsetext=ntlm_auth_login(主机,端口,模式,域,用户,数据,POST_BODY)

替换为:

RES=请求。邮政(' https://'主机'/EWS/交易所。asmx ',data=POST_BODY,headers=headers,verify=False,auth=HttpNtlmAuth(user,data))

(2)

原代码:

状态

替换为:

资源状态_代码

(3)

原代码:

如果响应文本中的res.status_code=='200 '和NoError ':

替换为:

如果资源状态代码==200并且资源文本中有“无错误”:

(4)

原代码:

主机、端口、模式、域、用户、数据

替换为:

主机、模式、用户、数据

(5)

原代码:

响应文本

替换为:

资源文本

(6)

原代码:

sys.argv[1],int(sys.argv[2]),sys.argv[3],sys.argv[4],sys.argv[5],sys.argv[6]

替换为:

sys.argv[1],sys.argv[2],sys.argv[3],sys.argv[4]

(7)

原代码:

path1 '\\' sys.argv[5]

替换为:

path1 '\\' sys.argv[3]

最后再去除一些多余的代码即可

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

https://github。com/3g学生Python作业/blob/master/EWS经理_请求_ NTLM _下载器。py。巴拉圭

2.使用Session机制重新实现ewsManage_Downloader.py

通过会议机制能够减少身份验证的次数,缩短通信数据包,效率更高

所以在这里使用会议机制重新实现EWS经理_下载器。巴拉圭

换用会议机制的方法示例:

原代码:

目标='192.168.1.1 '

用户名='[email protected]

密码='密码1 '

RES=请求。邮政(' https://'目标'/EWS/交易所。asmx ',data=POST_BODY,headers=headers,verify=False,auth=HttpNtlmAuth(用户名,密码))

打印(资源状态代码)

打印(研究文本)

RES=请求。邮政(' https://'目标'/EWS/交易所。asmx ',data=POST_BODY2,headers=headers,verify=False,auth=HttpNtlmAuth(用户名,密码))

打印(资源状态代码)

打印(研究文本)

新代码:

目标='192.168.1.1 '

用户名='[email protected]

密码='密码1 '

会话=请求。会话()

session.auth=HttpNtlmAuth(用户名,密码)

RES=会话。邮政(' https://'目标'/EWS/交易所。asmx ',data=POST_BODY,headers=headers,verify=False)

打印(资源状态代码)

打印(研究文本)

RES=会话。邮政(' https://'目标'/EWS/交易所。asmx ',data=POST_BODY2,headers=headers,verify=False)

打印(资源状态代码)

打印(研究文本)

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

https://github。com/3g student/Homework-of-Python/blob/master/EWS经理_请求_ NTLM _会话_下载器。巴拉圭

0x04 小结

在Exchange网站服务(EWS)开发上,使用第三方包请求_ntlm,封装了NTLM认证过程,不仅可以提高开发效率,同时不影响漏洞利用代码的编写,更可以借助会议机制减少认证过程的通信数据,十分推荐。

留下回复

创建帐户或登录后发表意见

最近浏览 0

  • 没有会员查看此页面。