HTTPS欺骗以支持旧版应用程序

时间:2019-12-05 04:32:05

标签: ssl redirect https spoofing

我有一个具有硬编码URL(我无权访问源代码)的旧版应用程序,该应用程序试图在其中下载文件。网址的格式为:

https://pre.hostname.org/index.json

但是托管该站点的组织已删除该主机名,并且正在使用新的主机名,因此url的格式应为:

https://hostname2.org/pre/index.json

我既不拥有应用程序源代码,也不拥有任何网站,但是我发现,如果我在本地网络服务器上设置重定向并将旧的主机名使用来指向我的网络服务器,那么我可能会进行一些欺骗。 C:\ windows \ system32 \ drivers \ etc \ hosts档案。

在我的网络服务器上的lighttpd conf文件中:

$HTTP["scheme"] == "https" {
     $HTTP["host"] =~ ".*" {
       url.redirect = ( "^/(.*)$" => "https://hostname2.org/pre$0" )
    }
}

在主机文件中具有旧版应用程序的客户端计算机上:

0.0.0.0 hostname.org

(0.0.0.0代表我的Web服务器的主机名以及重定向说明)

通过此设置,我可以在客户端计算机上,在Web浏览器中访问旧的url,然后进行重定向。但是,它不适用于旧版应用程序,我认为这是由于SSL认证主机名不匹配所致。

例如,如果我使用Edge浏览器,则必须解决以下警告:

The hostname in the website's security certificate differs from the website you are trying to visit.

Error Code:
DLG_FLAGS_SEC_CERT_CN_INVALID

我在客户端计算机,Web服务器等上具有管理员访问权限。即使它与证书不匹配,我显然也信任我的Web服务器...

我完全接受这是应有的状态-这是https和SSL证书提供的保护的一部分-我要问的是,有没有一种方法可以使我的旧版应用程序忽略这种情况?一种在整个系统范围内规避对此特定主机名/证书的https保护的方法,以便它对旧版应用程序通过https下载文件所使用的任何API都有效?

1 个答案:

答案 0 :(得分:0)

  

是否有一种方法可以使我的旧版应用程序忽略这种情况?

由于您只有应用程序的二进制文件,因此您可以尝试用您控制的域(即二进制补丁程序)替换应用程序中的硬编码域名。请注意,如果应用程序已签名,将无法使用,因为它将破坏签名。

您还可以尝试创建自己的CA,将其作为受信任的证书导入系统,并使用该CA为相关域创建自己的证书。如果应用程序只是在不进行证书或CA固定的情况下使用系统信任库进行简单的证书验证,则它应接受您自己创建的证书,因为它信任您的CA,因此应接受重定向。