Sekitar tanggal 18 Juli 2016 terdapat kabar bahwa ditemukan celah kemananan HTTPOXY yang berefek pada applikasi yang menjalankan cgi dan artinya permasalahan ini berimbas pada semua webserver termasuk Apache, Nginx, Varnish dan termasuk kebanyakan applikasi berbasis PHP.
Pada pembahasan kali ini kami akan menginformasikan bagaimana cara mengetahui apakah webserver anda terpengaruh dengan celah keamananan HTTPOXY ini ataukah tidak selanjutnya apabila terpengaruh bagaimana cara patch webserver khususnya apache dan varnish cache
Contents
Upload HTTPoxyTest.php
Buatlah file bernama httpoxytest.php dan isi dengan kode berikut ini
<?php if (!function_exists('getallheaders')) { function getallheaders() { if (!is_array($_SERVER)) { return array(); } $headers = array(); foreach ($_SERVER as $name => $value) { if (substr($name, 0, 5) == 'HTTP_') { $headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value; } } return $headers; } } if (isset($_GET['check']) && $_GET['check'] == 'yes') { $hs = getallheaders(); if (isset($hs['Proxy']) || isset($hs['proxy'])) echo "bad"; else echo "good"; exit(0); } $http='http'; if ($_SERVER['HTTPS'] == 'on') $http='https'; $url = "$http://".$_SERVER['HTTP_HOST'].$_SERVER["SCRIPT_NAME"]."?check=yes"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER, array("Proxy: evil")); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $r = curl_exec($ch); if ($r === false) echo curl_error($ch); if ($r == 'good') { ?><b>Good!</b> Proxy has been filtered out. No need to do anything<?php } elseif ($r == 'bad') { ?><b>Bad!</b> You'll need to filter out the proxy header in your configs.<?php } else { ?>No idea.. something went wrong:<br><textarea cols=80 rows=10><?=$r?></textarea><?php } curl_close($ch); ?>
Setelah anda membuat file tersebut kemudian akses.
Apabila hasilnya “bad” artinya webserver anda vulner dan berikut ini adalah cara melakukan patch nya.
Cara Patch Apache HTTPoxy Vulnerability
Anda tinggal tambahkan di konfigurasi apache bisa di
nano /etc/apache2/conf-available/httpoxy.conf
atau yang menggunakan Directadmin bisa disini
nano /etc/httpd/conf/extra/httpd-default.conf
Kemudian tambahkan dibagian bawah
<IfModule mod_headers.c>
RequestHeader unset Proxy early
</IfModule>
dan restart apache
Sekali lagi test ulang dengan mengakses script httpoxytest.php
Cara Patch Varnish HTTPoxy Vulnerability
Untuk varnish cache anda cukup menambahkan baris berikut ini
sub vcl_recv {
unset req.http.proxy;
}
Kami telah melakukan patch pada apache dan varnish dari httpoxy vulnerability sudah kami test dan berhasil
Selamat mencoba dan jika tidak berhasil atau ada kendala silahkan komentar dibawah.