是否可以在web应用程序中伪造主机文件条目

本文关键字:主机 伪造 文件 应用程序 web 是否 | 更新日期: 2023-09-27 18:29:37

我有一个位于IIS服务器(公共互联网上)上的rest应用程序,配置如下:

  • IP地址:A.B.C.D
  • 主机头:不是公共dns.example.com

(该条目不在公共dns中,只是因为它不必在。这不仅仅是通过隐藏主机标头来实现安全。)

为了让我的客户端连接到应用程序,我只需在主机文件中添加一个条目:

A.B.C.D不是公共dns.example.com

有了hosts文件条目,一切都很好。

问题是我的一个客户端位于ASP.NET web应用程序中,我无法修改应用程序所在的web服务器的主机文件。

因此,我的问题是,是否有可能在web应用程序中伪造主机文件条目?

我在想这样的事情:

string url = "something-not-public.example.com/myservice/mymethod";
var client = new WebClient();
client.Headers[HttpRequestHeader.ContentType] = "application/json";
// Set the destination IP for this request here!
string json = new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(MyObject);
string response = client.UploadString(url, json);

我会考虑上面的请求级别欺骗的例子,这会很好,但我也很想知道是否也可以进行应用程序级欺骗。通过这种方式,应用程序可以设置主机条目,并且从该应用程序中发出的所有请求都将使用它们。

是否可以在web应用程序中伪造主机文件条目

你的做法是错误的-与其试图设置从域名到IP地址的映射,不如简单地向IP发出请求,并用你想要使用的域名显式覆盖HTTP请求的主机头:

string url = "A.B.C.D/myservice/mymethod";
var client = new WebClient();
client.Headers[HttpRequestHeader.ContentType] = "application/json";
client.Headers[HttpRequestHeader.Host] = "something-not-public.example.com";