HTTP Negotiation Teknikleri
Önem derecesiDüşük
enRead this article in English
Apache sunucularda varsayılan alan adı ya da VirtualHOst direktifleri içerisinde navigasyonu kolaylaştırmak amacıyla bazı komutlar bulunmaktadır. Apache yapılandırmasında MultiViews ayarları açık olduğunda, tarayıcıdan gelen bilgi doğrultusunda talebi farklı sayfalara yönlendirmek mümkündür. Bu işlem çoğunlukla tarayıcı diline göre uygun bölgesel yapılandırmaları yapmak ya da sayfayı farklı dillerdeki sayfalara yönlendirmek için kullanılan bir yöntemdir. Günümüzde bu işlemler çoğunlukla script motorları tarafından yapılmaktadır.
MultViews açık olduğunda saldırgan olası anahtar kelimeleri içeren bir sözlük ile sınırsız sayıda deneme yaparak, sunucuda bulunan sayfaların isimlerinin listesini oluşturabilir. Bu şekilde ayarlanmış bir Apache Web Sunucusuna yapılan istekteki dosya bulunmadıysa, benzer dosya isimleri kullanarak içerik aranmaya devam eder. Örneğin /public/kitaplar/foo şeklinde yapılan bir istekte foo dosyası bulunmadıysa public dizini dahil mod_negotiation açık olan tüm dizinlerde foo içeren tüm dosyalar aranır. Bu sayede saldırgan üzerinde çalışabileceğ bir liste oluşturmuş olur.
Bu saldırı sadece httpd.conf dosyasında
Kanıt
Web dizini altında /img adında bir dizin olduğunu varsayalım:
[root@localhost img]# ll -h
total 756K
-rw-r--r--. 1 root root 8.0K Aug 21 20:16 index.php
-rw-r--r--. 1 root root 4.0K Aug 21 20:15 login.php
-rw-r--r--. 1 root root 91K Aug 21 20:15 logo1.tif
-rw-r--r--. 1 root root 641K Aug 21 20:14 logo.gif
-rw-r--r--. 1 root root 512 Aug 21 20:13 logo.png
-rw-r--r--. 1 root root 3.0K Aug 21 20:16 logout.php
Dizin içeriği yukarıdaki gibidir.
Bu zafiyetin oluşmasına neden olacak örnek httpd.conf dosyası da aşağıdadır:
<Directory "/var/www/html">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
Saldırgan aşağıdaki gibi bir sorgu yaptığında birden çok cevap alacaktır
curl -kis "http://192.168.16.72/img/logo" -H "Accept: ne/varsa"
Dönen sonuç aşağıdaki gibidir:
HTTP/1.1 406 Not Acceptable
Date: Wed, 21 Aug 2019 17:35:56 GMT
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/5.4.16
Alternates: {"logo.gif" 1 {type image/gif} {length 656384}}, {"logo.png" 1 {type image/png} {length 512}}
Vary: negotiate,accept
TCN: list
Content-Length: 406
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>406 Not Acceptable</title>
</head><body>
<h1>Not Acceptable</h1>
<p>An appropriate representation of the requested resource /img/logo could not be found on this server.</p>
Available variants:
<ul>
<li><a href="logo.gif">logo.gif</a> , type image/gif</li>
<li><a href="logo.png">logo.png</a> , type image/png</li>
</ul>
</body></html>
Saldırgan tek bir sorgu ile birden çok dosyanın yerini tespit etmiş oldu. logo.gif ve logo.png.
HTTP’nin bu şekilde cevap vermesi tek başına bir açık sayılamaz ancak saldırganın hem sunucu hakkında daha iyi fikir edinmesine hem de elinde bir dizin listesi olması işini kolaylaştıracaktır.
Çözüm
/etc/httpd/ ya da /etc/apache2/ altında bulunan tüm *.conf dosyalarında MultiViews ayarını kaldırın.
Yasal Uyarı
Copyright (c) 2019 – 2026 ONLAYER Bilişim Teknolojileri A.Ş.
Bu sayfadaki içeriğin kullanımı sadece bu sayfaya link ile atıf yapılarak mümkündür. Yazılı izin olmadan değiştirilemez ve alıntı yapılamaz.
Kullanım Uyarısı: Burada belirtilen direktifler olduğu gibidir ve uygulanması sonucunda oluşabilecek servis kesintileri ve veri kaybından ONLAYER sorumlu değildir. Sistemlerin daha iyi çalışabileceği ya da daha güvenli olacağına dair hiç bir garanti verilmemektedir. Ne firma ne de yazar kullanımdan dolayı hiçbir sorumluluk kabul etmemektedir.