سر یکی از پروژههای پنتست متوجه شدم که روی تارگت، متد TRACE فعال بود. گفتم بد نیست کمی در موردش صحبت کنیم.
متد TRACE چیه؟
یکی از متدهای HTTP (مثل GET، POST و ...) هست که برای Diagnostic و Debugging طراحی شده.
وقتی یک درخواست TRACE به سمت سرور ارسال میکنیم، سرور (در صورت فعال بودن این متد) معمولاً همون درخواست دریافتی رو بههمراه Headerهایی که در مسیر بهش اضافه شدن، در پاسخ برمیگردونه.
مثال:
TRACE / HTTP/1.1
Host: target.ir
X-Test: VulnerabilityCheck
نمونه پاسخ:
HTTP/1.1 200 OK
Content-Type: message/http
TRACE / HTTP/1.1
Host: target.ir
X-Test: VulnerabilityCheck
Via: proxy.example.com
X-Forwarded-For: 192.168.1.1
این رفتار میتونه اطلاعاتی درباره زیرساخت، Proxyها، Reverse Proxyها و برخی Headerهای اضافهشده در مسیر درخواست در اختیار ما قرار بده.
آیا فعال بودن TRACE یک آسیبپذیریه ؟
نه،
فعال بودن TRACE به تنهایی یک آسیبپذیری محسوب نمیشه؛ اما در اغلب سرویس های امروزی کاربرد عملی خاصی نداره و معمولاً توصیه میشه در محیط Production غیرفعال باشه تا سطح حمله (Attack Surface) کاهش پیدا کنه.
تکنیک XST یا Cross-Site Tracing چیه؟
یک تکنیک قدیمی بود که از ترکیب TRACE و XSS استفاده میکرد. در برخی مرورگرهای قدیمی، این حمله میتونست باعث افشای اطلاعات حساسی مثل Cookieهای دارای فلگ HttpOnly بشه.
الان مرورگرها ارسال درخواست TRACE از طریق JavaScript رو مسدود کردن؛ بنابراین سناریوی کلاسیک XST عملاً دیگه قابل بهرهبرداری نیست. با این حال، غیرفعال کردن TRACE همچنان یکی از توصیههای رایج Hardening محسوب میشه.
بررسی فعال بودن TRACE با پایتون :
import requests
url = "https://target.ir/"
headers = {"X-Test": "TRACE-CHECK"}
response = requests.request("TRACE", url, headers=headers)
if response.status_code == 200 and "X-Test" in response.text:
print("TRACE method appears to be enabled.")
else:
print("TRACE method is disabled or not echoed.")
این اسکریپت صرفاً بررسی میکنه که آیا سرور درخواست TRACE رو Echo میکنه یا نه و به تنهایی نشون دهنده وجود یک آسیبپذیری قابل بهرهبرداری نیست.
@Ahura_Rahmani | #Ahur4 #HTTP #TRACE #XST #WebSecurity #PenetrationTesting
620 ·