Genel Bakış
HTTP spesifikasyonu (RFC 9110), her biri belirli bir amaca yönelik istek metodları — yaygın olarak HTTP fiilleri olarak adlandırılır — tanımlar. GET ve POST sıradan web taraması ve form gönderimleri için gerekli olsa da PUT, DELETE ve TRACE gibi metodlar yalnızca belirli, kontrollü bağlamlarda kullanılmak üzere tasarlanmıştır. Bu metodlar, üretim web sunucularında sıkı erişim kontrolleri uygulanmadan etkin bırakıldığında önemli bir saldırı yüzeyi oluşturur.
- PUT: Sunucuya, istek gövdesini belirtilen URI'da depolamasını söyler; bu da dosya yüklemeye veya içerik değiştirmeye olanak tanır.
- DELETE: Sunucuya, belirtilen URI'daki kaynağı kaldırmasını söyler.
- TRACE: Alınan HTTP isteğini istemciye geri yansıtır; tanısal döngüsel test amacıyla tasarlanmıştır. Üretim ortamlarında meşru bir kullanım amacı yoktur.
- CONNECT ve OPTIONS (ikincil endişe):
OPTIONSbaşlı başına düşük risklidir ancak hangi metodların etkin olduğunu ortaya çıkarır;CONNECTise sunucu üzerinden trafik yönlendirmek amacıyla kötüye kullanılabilir.
Nasıl çalışır?
Bir saldırgan, önce sunucuya — genellikle bir OPTIONS isteğiyle — kabul edilen HTTP metodlarını listelemek için Allow yanıt başlığını sorgular. Hangi tehlikeli metodların mevcut olduğuna bağlı olarak farklı saldırı vektörleri ortaya çıkar:
- PUT tabanlı dosya yükleme: Sunucu
PUTkabul ediyorsa ve hedef dizin yazılabilirse saldırgan doğrudan web köküne isteğe bağlı bir dosya (örneğin bir web kabuğu) yükleyebilir.PUT /shell.php HTTP/1.1gibi kötü amaçlı gövdeli bir istek, sunucu yüklenen dosya türünü işliyorsa uzaktan kod yürütülmesine yol açabilir. - DELETE tabanlı içerik silme: Kimlik doğrulaması yapılmamış bir
DELETEisteği geçerli bir kaynak URI'sine gönderildiğinde sunucudaki kaynağı kaldırır ve hizmet reddi ile veri kaybına yol açar. - TRACE tabanlı Siteler Arası İzleme (XST):
TRACEmetodu,CookieveAuthorizationbaşlıkları dahil tüm istek başlıklarını yanıt gövdesinde geri yansıtır. Bir siteler arası betik vektörüyle (örneğin Flash veya eski tarayıcı XHR açığı) birleştirildiğinde saldırgan, normalde JavaScript tarafından erişilemeyenHttpOnlyçerezlerini okuyabilir ve oturum ele geçirme saldırılarına karşı temel korumalardan birini aşabilir. - WebDAV uzantısı riski: WebDAV etkin sunucular, ek metodlar (
PROPFIND,MKCOL,COPY,MOVE) sunar ve yetkisiz dosya sistemi manipülasyonu riskini artırır. - Fiil manipülasyonu yoluyla güvenlik duvarı/WAF atlatma: Bazı erişim kontrol kuralları belirli HTTP metodlarına bağlıdır. Beklenmedik veya özel bir metodla (örneğin
HEADveya rastgele bir fiil) istek göndermek, ara yazılım veya web uygulaması güvenlik duvarları tarafından uygulanan metod düzeyindeki ACL'leri atlatabilir.
İş etkisi
Gereksiz yere etkinleştirilmiş HTTP metodlarının istismar edilmesinin sonuçları, tam sunucu ele geçirmesinden düzenleyici yaptırımlara kadar uzanır:
- Uzaktan Kod Yürütme (RCE): PUT aracılığıyla sunucu tarafı betiği başarıyla yüklenmesi ve ardından GET ile çalıştırılması, saldırgana web uygulaması ortamı üzerinde tam kontrol sağlar.
- Veri imhası: Kısıtlanmamış DELETE erişimi, uygulama içeriğinin toplu silinmesine, hizmet kesintilerine ve kurtarılamaz veri kayıplarına yol açar.
- Oturum ele geçirme: TRACE aracılığıyla XST istismarı, kimliği doğrulanmış oturum tokenlarını açığa çıkarabilir ve kullanıcı etkileşimi olmaksızın hesap ele geçirilmesine olanak tanır.
- Uyumluluk ihlalleri: Yetkisiz veri erişimi veya değişikliği, GDPR, PCI DSS, HIPAA ve benzeri çerçeveler kapsamında ihlal bildirimi yükümlülüklerini tetikleyebilir.
- İtibar zararı: PUT aracılığıyla web kabuğu yüklenmesinin veya site tahrifatının kamuoyuna duyurulması ciddi itibar hasarına yol açar.
Nasıl düzeltilir?
- TRACE'i global olarak devre dışı bırakın: TRACE'in üretimde geçerli bir kullanım amacı yoktur. Sunucu düzeyinde devre dışı bırakın. Apache'de sunucu yapılandırmasına
TraceEnable Offekleyin. Nginx'in yerel TRACE desteği yoktur, ancak yukarı akış proxy'lerinin bunu yeniden etkinleştirmediğini doğrulayın. IIS'de TRACE'irequestFilteringiçindeki izin verilen fiiller listesinden çıkarın. - PUT ve DELETE'i yalnızca kimliği doğrulanmış ve yetkilendirilmiş bağlamlara kısıtlayın: Uygulamanız PUT veya DELETE gerektiriyorsa (örneğin bir REST API), bu metodları işlemeden önce kimlik doğrulaması (OAuth 2.0, API anahtarları) ve yetkilendirme denetimleri uygulayın. Statik dosya dizinlerinde asla etkin bırakmayın.
- Gerekli değilse WebDAV'ı devre dışı bırakın: WebDAV, tehlikeli metod açığının yaygın bir kaynağıdır. Açık bir operasyonel ihtiyaç yoksa WebDAV modülünü devre dışı bırakın (Apache'de
mod_dav, IIS'deWebDAV). - İzin verilen HTTP metodlarının beyaz listesini kullanın: Web sunucunuzu veya WAF'ınızı yalnızca uygulamanızın gerçekten kullandığı metodları (genellikle
GET,POST,HEAD,OPTIONS) kabul edecek şekilde yapılandırın. Apache'de:<LimitExcept GET POST HEAD> Deny from all </LimitExcept>. Nginx'de:if ($request_method !~ ^(GET|POST|HEAD)$) { return 405; }. IIS'de: açık fiil izin listesiylerequestFilteringkullanın. - Ağ katmanı kontrolleri uygulayın: İzin verilmeyen metodları uygulama sunucusuna ulaşmadan reddetmek için bir Web Uygulaması Güvenlik Duvarı (WAF) veya ters proxy kullanın.
- Sertleştirme sonrası OPTIONS numaralandırmasıyla doğrulayın: Değişiklikleri uyguladıktan sonra sunucuya bir
OPTIONSisteği gönderin veAllowbaşlığının yalnızca amaçlanan metodları listelediğini doğrulayın. - Düzenli olarak denetleyin: Yapılandırma kaymasını tespit etmek için HTTP metod numaralandırmasını periyodik güvenlik değerlendirmelerine ve CI/CD boru hattı güvenlik testlerine dahil edin.
Kaynaklar
- OWASP WSTG – HTTP Metodlarını Test Et (WSTG-CONF-06)
- OWASP – Siteler Arası İzleme (XST)
- MITRE CWE-16: Yapılandırma
- MITRE CWE-650: Sunucu Tarafında HTTP İzin Metodlarına Güvenme
- RFC 9110 – HTTP Semantiği (IETF)
- RFC 4918 – WebDAV için HTTP Uzantıları (IETF)
- OWASP Top 10 A05:2021 – Güvenlik Yanlış Yapılandırması
- Apache HTTP Sunucusu – TraceEnable Yönergesi