diff --git a/test/modules/core/env.py b/test/modules/core/env.py index 9c63380503c..9124a28f26f 100644 --- a/test/modules/core/env.py +++ b/test/modules/core/env.py @@ -12,7 +12,7 @@ class CoreTestSetup(HttpdTestSetup): def __init__(self, env: 'HttpdTestEnv'): super().__init__(env=env) self.add_source_dir(os.path.dirname(inspect.getfile(CoreTestSetup))) - self.add_modules(["cgid"]) + self.add_modules(["cgid","include"]) class CoreTestEnv(HttpdTestEnv): diff --git a/test/modules/core/htdocs/ssi/exec.shtml b/test/modules/core/htdocs/ssi/exec.shtml new file mode 100644 index 00000000000..e98afb15ddc --- /dev/null +++ b/test/modules/core/htdocs/ssi/exec.shtml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/test/modules/core/test_004_ssi.py b/test/modules/core/test_004_ssi.py new file mode 100644 index 00000000000..a4fe03a7f17 --- /dev/null +++ b/test/modules/core/test_004_ssi.py @@ -0,0 +1,32 @@ +import pytest +import textwrap + +from pyhttpd.conf import HttpdConf + +class TestSSIInjection: + + @pytest.fixture(autouse=True, scope="class") + def _class_scope(self, env): + conf = HttpdConf(env, extras={ + "base": textwrap.dedent(f""" + + Options +Includes + AddType text/html .shtml + AddOutputFilter INCLUDES .shtml + + """) + }) + conf.install() + assert env.apache_restart() == 0 + + def test_ssi_004_01(self, env): + """ + CVE-2025-58098: + Server Side Includes must not add query string to #exec cmd=... + """ + url = env.mkurl("http", "htdocs", "/ssi/exec.shtml?INJECTED") + r = env.curl_get(url) + + body = r.response["body"].decode("utf-8") + assert "SSI_OK" in body + assert "INJECTED" not in body \ No newline at end of file