host碰撞探测资产Ladon探测域名内网IP

admin 2022年9月27日09:06:47评论58 views字数 3244阅读10分48秒阅读模式


前言

在内网渗透中,有时候你会发现有些WEB无法通过IP访问,主要原因是目标对网站进行了域名绑定,尤其是同服上有多个域名站点的。这时候你访问可能报401、403、404等错误,或者也不报错返回IIS或APACHE等默认页面,如果认为目标未搭建网站,则可能因此错过一些存在漏洞的WEB。或者说你已经搞下内网其中一台机器,想通过该机器搞主站,但是使用Ladon的WebScan或WhatCms均未探测到主网IP,原因多半也是网站绑定了域名(IIS设置显示为主机头),所以本文主要是解决这个问题。

解决方案

1.通过修改Hosts文件,绑定IP域名,访问IP看返回页面与目标主站对比。
2.访问网站,设置HTTP主机头,访问IP看返回页面与目标主站页面对比。

实战用途

  1. 探测域名对应内网IP

  2. 探测主站绑定多个IP

  3. 确认外网域名真实IP


拿qq.com为例,直接使用IP访问,访问不到,设置主机头后成功解析标题

host碰撞探测资产Ladon探测域名内网IP


namespace hostscan{ class Program { //hostscan for ladon //http://k8gege.org static void Main(string[] args) {
string ip = ""; //string host = "qq.com";//扫C段或批量时写目标对应域名 string host = ""; //不设主机头,默认获取IP对应WEB标题 if (args.Length == 1) { ip = args[0]; } else if (args.Length == 2) { ip = args[0]; host = args[1]; } else { Console.WriteLine("hostscan ip"); Console.WriteLine("hostscan ip domain"); return; }
string url = "http://" + ip; if (ip.Contains("http://") || ip.Contains("https://")) url = ip;
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);
req.Method = "GET";
//req.ContentLength = data.Length; //req.ContentType = "application/x-www-form-urlencoded"; req.ContentType = "application/octet-stream";
if (host != "") req.Host = host; req.Accept = "image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-silverlight, application/vnd.ms-xpsdocument, application/x-ms-application, application/x-ms-xbap, application/xaml+xml, */*"; try { HttpWebResponse response = (HttpWebResponse)req.GetResponse(); Stream myResponseStream = response.GetResponseStream(); StreamReader myStreamReader = new StreamReader(myResponseStream, System.Text.Encoding.Default); string retString = myStreamReader.ReadToEnd(); myStreamReader.Close(); myResponseStream.Close(); Console.WriteLine(ip + " " + GetTitle(retString));
} catch (Exception ex) {
; }
}

private static string GetTitle(string html) {
String regex = @"<title>.+</title>";
String title = Regex.Match(html, regex).ToString(); title = Regex.Replace(title, @"[""]+", ""); return title;
}

}}


批量探测

显然在不确定是哪个内网IP为主站机器的情况下,一个一个IP试效率就太低了,因此我们需要代码实现自动探测。我们可以获取C段网站标题,然后看哪个IP标题和外网访问时的标题对比,以此确认哪个IP为主站机器,如果做了负载均横或机器有多网卡,则可能有多个IP都为同一标题。

因为是.net程序,所以Ladon可直接加载EXE做为模块扫描,从扫描结果得知,qq.com绑定了多个IP。实战时指定为目标内网IP即可,hostscan.exe域名需写死或通过TXT读取。

C:Usersk8gege>hostscan 58.250.137.36 qq.com58.250.137.36 <title>腾讯首页</title>
C:Usersk8gege>Ladon40 58.250.137.36/24 hostscan.exeLadon 6.6Start: 2020-07-15 21:42:40Runtime: .net 4.0 OS Arch: x86OS Name: Microsoft Windows 7 旗舰版Call DiyMoudle (c# exe)58.250.137.36/24load hostscan.exe58.250.137.36/24 is Valid CIDRIPCound: 256Scan Start: 2020-07-15 21:42:4058.250.137.100 <title>鑵捐浜戞櫤鏈?涓€閿惌寤轰紒涓氳嚜宸辩殑瀹㈡湇骞冲彴</title>58.250.137.36 <title>腾讯首页</title>58.250.137.38 <title>腾讯首页</title>58.250.137.11658.250.137.12458.250.137.11558.250.137.107 <title>鎶㈡敞QQ绌洪棿涓撳睘鍩熷悕</title>58.250.137.112 <title>鐧诲綍</title>58.250.137.101 <title>腾讯首页</title>


原文2年前发布:http://k8gege.org/Ladon/hostscan.html

Ladon批量探测

之前写完后一直忘了集成到Ladon里,但因模块只支持.net 4.0就没有集成,想等着有空解决它模块支持任意.net版本后再加,直接现在想起要加,也懒得处理兼容性了,因为很多.NET高版本你一行就实现的功能,我要用低版本2.0来实现通用是很麻烦的,你得真正懂代码背后原理,除了实现功能还得稳定。

host碰撞探测资产Ladon探测域名内网IP


上述IP直接访问,是访问不到的,通过host.txt设置需要识别的域名列表,本例只放qq.com一个,我们探测ip是否绑定qq.com。如果此时我们获取了CDN以外IP或者在内网里,访问IP的WEB端口发现全是IIS、Apache等默认页面,就判定该IP上没有部署站点,这是错的,因为实际上很多域名都绑定了IP,因为同一个IP上有多个站点,多个域名指向IP,它就得通过一个标识区分,比如主机头,所以我们在WEB请求时绑定域名。如果访问成功,标题和外网域名标题一致,或者网页源码的URL中包含域名,就是对应资产了。


host碰撞探测资产Ladon探测域名内网IP


PS: host.txt可放多个域名,比如子域名,可确认子域名在C段的哪个IP上

原文始发于微信公众号(K8实验室):host碰撞探测资产Ladon探测域名内网IP

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年9月27日09:06:47
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   host碰撞探测资产Ladon探测域名内网IPhttps://cn-sec.com/archives/1318013.html

发表评论

匿名网友 填写信息