轩辕三官 发布于2022年11月8日 分享 发布于2022年11月8日 0x00 前言 在渗透测试中,为了搜集信息,常常需要从外网获得交换服务器的内网IP,公开资料显示多级闪蒸的辅助/扫描仪/http/owa_iis_internal_ip插件支持这个功能,但是这个插件公开于2012年,已不再适用于Exchange 2013、2016和2019,本文将要介绍一种更为通用的方法,开源代码,记录细节。 0x01 简介 本文将要介绍以下内容: owa _ iis _内部_ip插件介绍 更为通用的方法 计算机编程语言开源代码 0x02 owa_iis_internal_ip插件介绍 多级闪蒸的辅助/扫描仪/http/owa_iis_internal_ip插件支持探测交换服务器的内网IP,对应氧化钾系统下的位置为:/usr/share/metasploit-framework/modules/auxiliary/scanner/http/OWA _ IIS _内部_ IP。铷 开源代码库上的地址为:https://github。com/rapid 7/metasploit-framework/blob/master/modules/auxiliary/scanner/http/OWA _ IIS _内部_ IP。铷 通过阅读源码,可以总结出实现原理: 设置超文本传送协议协议为1.0并访问特定统一资源定位器 在返回数据中,如果状态码为401,在页眉中的' WWW-Authenticate '会包含内网互联网协议(互联网协议) 在返回数据中,如果状态码位于300和310之间,在页眉中的'位置'会包含内网互联网协议(互联网协议) 在提取互联网协议(互联网协议)时,使用正则表达式(192\.168\.[0-9]{1,3}\.[0-9]{1,3}|10\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}|172\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}),这里存在bug:只能筛选出格式为'192.168.*.*'的内网互联网协议(互联网协议) 为了修复这个bug,可以将正则表达式修改为([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}|10\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}|172\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}) 注: 修改插件后需要执行命令重新加载_全部来重新加载多级闪蒸插件 修复上面的病菌后,我在测试Exchange 2013、2016和2019时仍然无法获得准确的内网互联网协议(互联网协议) 0x03 更为通用的方法 这里给出一种基于owa _ iis _内部_ip插件的方法,使用计算机编程语言实现,适用范围更广 思路如下: 利用计算机编程语言设置超文本传送协议协议为1.0并访问特定URL,在报错结果中暴露出交换服务器的内网互联网协议(互联网协议) 需要细节如下: (1)Python设置HTTP协议为1.0 Python2: 导入请求 导入httplib http lib。http连接。_ http _ vsn=10 HTTP lib。HTTP连接。_ HTTP _ vsn _ str=' HTTP/1.0 ' Python3: 导入请求 从超文本传送协议(Hyper Text Transport Protocol的缩写)导入客户端 客户。http连接。_ http _ vsn=10 客户。HTTP连接。_ HTTP _ vsn _ str=' HTTP/1.0 ' (2)设置访问URL owa _ iis _内部_ip插件中提到的网址: URL=['/Microsoft-Server-ActiveSync/default。eas ', /Microsoft-Server-ActiveSync ', /Autodiscover/Autodiscover.xml ', /自动发现, /Exchange ', /Rpc ', /EWS/Exchange.asmx ', /EWS/Services.wsdl ', /EWS ', /ecp ', /OAB ', /OWA ', /aspnet_client ', /PowerShell'] 经过多个环境的测试,更为精确的统一资源定位器如下: URL=['/OWA ', /自动发现, /Exchange ', /ecp ', /aspnet_client'] (3)测试代码 #python3 导入请求 导入urllib3 urllib3.disable_warnings() 从超文本传送协议(Hyper Text Transport Protocol的缩写)导入客户端 客户。http连接。_ http _ vsn=10 客户。HTTP连接。_ HTTP _ vsn _ str=' HTTP/1.0 ' 尝试: url='https://mail.test.com/OWA ' response=requests.get(url,verify=False) 打印(响应。状态_代码) 打印(响应。文本) 打印(响应。标题) 例外情况为e: 打印(五) 回显结果: https连接池(主机=' 192。168 .1 .1 ',port=443):URL:/OWA/认证/登录。aspx超过了最大重试次数?URL=https://192。168 .1 .1/OWA/原因=0(由NewConnectionError(':无法建立新连接:[WinError 10060]连接尝试失败,因为被连接方在一段时间后没有正确响应,或者建立的连接失败,因为连接的主机没有响应')) 从报错信息中,我们可以看到交换服务器的IP,这里只需要加一个正则表达式主机='(0 .*?)',即可提取出来互联网协议(互联网协议) 0x04 开源代码 完整的实现代码已上传至github,地址如下: https://github . com/3g student/Homework-of-Python/blob/master/Exchange _ get internal IP . py 代码支持5种检测内部网IP的方法。 目前测试结果显示,该脚本支持Exchange 2010、2013、2016、2019,可以稳定获取内网IP。 0x05 小结 本文分析了msf的辅助/scanner/http/OWA _ IIS _ internal _ IP插件,给出了一个更通用的方法,即开源代码,来获取Exchange server的内网IP,并记录详细信息。 留下回复 链接帖子 意见的链接 分享到其他网站 更多分享选项…
推荐的帖子