• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
بررسی باگ ادعا شده Gitorious.org
#1
فرموده شده که Gitorious.org باگ داره.
اول گفتن XSS، بعد گفتن نه XST.
حالا کار نداریم. اصلا هر باگی.
میخوایم ببینیم واقعا باگی درکار هست یا نه.

اطلاعات بیشتر چی دادن؟
گفتن با این هدرها تست کنید:

کد:
TRACE /DDMIpLQebW HTTP/1.1
Cookie: _gitorious_sess=str<script>alert("XSS!");</script>str
Host: gitorious.org
Connection: Keep-alive
Accept-Encoding: gzip,deflate
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1;)
Accept: */*

خب منم یه برنامهء تست نوشتم:
کد پی‌اچ‌پی:
<?php
  
$service_port 
getservbyname('www''tcp');

$host='Gitorious.org';

$address gethostbyname($host);
  
$socket socket_create(AF_INETSOCK_STREAMSOL_TCP);
if (
$socket 0) {
    echo 
"socket_create() failed: reason: " socket_strerror($socket) . "\n";
} else {
    echo 
"OK.\n";
}
  
$result socket_connect($socket$address$service_port);
if (
$result 0) {
    echo 
"socket_connect() failed.\nReason: ($result) " socket_strerror($result) . "\n";
} else {
    echo 
"OK.\n";
}
  
$in "TRACE /t.php HTTP/1.1\r\n";
$in .= "Cookie: _gitorious_sess=str<script>alert(\"XSS\");</script>str\r\n";
$in .= "Host: $host\r\n";

$in .= "Connection: Close\r\n\r\n";

$out '';
  
socket_write($socket$instrlen($in));
  
while (
$out socket_read($socket2048)) {
    echo 
$out;
}
  
socket_close($socket);
  
?>
اجراش کنید چی میشه؟
هیچی یک کادر alert جاوااسکریپت ظاهر میشه توی مرورگر.
خب این یک باگه؟
نه.
چرا؟
چون هیچ چیز عجیبی در این قضیه نیست.
تعریف متد TRACE اینه که هرچی بهش فرستادید برمیگردونه به خودتون. البته این بار در بدنهء پاسخ. یعنی هدرهایی رو هم که ارسال کردید در بدنهء پاسخ به خودتون برمیگردونه. بنابراین اگر شما در هدر درخواست خودتون کد جاوااسکریپت گذاشته باشید، این کدها در پاسخ در بدنهء پیام درج میشن و بنابراین مرورگر اونها رو مثل محتویات HTML عادی اجرا میکنه و بنابراین کد جاوااسکریپت شما اجرا میشه.

روی هر سرور دیگری هم که متد TRACE باز باشه باید همین نتیجه رو بگیرید.
من روی لوکال خودم هم تست کردم و همین نتیجه رو داشت.
اگر کسی سرور دیگری سراغ داره که متد TRACE اون بازه لطفا بگه تا تست کنیم.

بعد ایشون میفرمایند:
نقل قول:اولاً هر سروری متد trace ش فعال نیست، دوماً پارامتری (مثل کوکی) روش وجود نداره که بخوای مقداری رو بهش بدی که پردازش کنه یا جواب بده
از هر 100 تا 1 دونه آسیب پذیره

باوجود توضیحاتی که بنده دادم نمیدونم انگار متوجه نشدن که قضیه چیه. چون این قضیه اصلا ربطی به پارامتر کوکی و پردازشش و این حرفا نداره و روی تمام سرورها یکسانه.

بطور مثال شما اسم کوکی رو در کد بالا از _gitorious_sess به vejmad تغییر بدید و برنامه رو دوباره اجرا کنید:
کد پی‌اچ‌پی:
<?php
  
$service_port 
getservbyname('www''tcp');

$host='Gitorious.org';

$address gethostbyname($host);
  
$socket socket_create(AF_INETSOCK_STREAMSOL_TCP);
if (
$socket 0) {
    echo 
"socket_create() failed: reason: " socket_strerror($socket) . "\n";
} else {
    echo 
"OK.\n";
}
  
$result socket_connect($socket$address$service_port);
if (
$result 0) {
    echo 
"socket_connect() failed.\nReason: ($result) " socket_strerror($result) . "\n";
} else {
    echo 
"OK.\n";
}
  
$in "TRACE /t.php HTTP/1.1\r\n";
$in .= "Cookie: vejmad=str<script>alert(\"XSS\");</script>str\r\n";
$in .= "Host: $host\r\n";

$in .= "Connection: Close\r\n\r\n";

$out '';
  
socket_write($socket$instrlen($in));
  
while (
$out socket_read($socket2048)) {
    echo 
$out;
}
  
socket_close($socket);
  
?>

مشاهده میفرمایید که بازم کد جاوااسکریپت ما در پاسخ اجرا میشه!

درکل هرکد مشابه این رو روی هر سروری که متد TRACE فعاله اجرا کنید همین نتیجه رو میگیرید. پس این باگ خاصی مختص gitorious نیست. مگر اینکه بگیم کلا متد TRACE باگ داره، که اینم منطقی نیست.

تنها ایرادی که میشه به gitorious گرفت اینه که متد TRACE رو باز گذاشته که این امنیت رو پایین میاره (با توجه به باگهای زیادی که تاحالا در نسخه های مختلف مرورگرهای مختلف بوده و بنابراین میتونن از این متد برای حمله سوء استفاده کنن). اما شاید واقعا به دلیلی این کار رو کردن و از روی فراموشی یا کم سوادی نبوده.

بهرحال چیزی که هست مسئله فقط باز بودن یا نبودن متد TRACE است. باگ خاصی در gitorious نیست که در سایتهای دیگری که این متد رو باز گذاشته باشن نباشه. نهایت بگیم کانفیگ سرور اشتباه داشتن.

چیزی که تا اینجا ارائه شده و ما هم تست کردیم و دیدیدم، بر اثر رفتار طبیعی متد TRACE بوده و نه هیچ چیز دیگری. ضمنا تا اینجا و به خودی خودش هیچ خطری هم برای کسی نداره. اما اگر مثلا در مرورگر شما یا در سورس سایت gitorious باگ و حفره ای باشه، میتونن برای افزایش نفوذ از متد TRACE هم در حملات خودشون استفاده کنن.

اینم یه مثال دیگه که این بار کد جاوااسکریپت رو بجای کوکی هدر در خط وضعیت ارسال میکنیم:

کد پی‌اچ‌پی:
<?php
  
$service_port 
getservbyname('www''tcp');

$host='Gitorious.org';

$address gethostbyname($host);
  
$socket socket_create(AF_INETSOCK_STREAMSOL_TCP);
if (
$socket 0) {
    echo 
"socket_create() failed: reason: " socket_strerror($socket) . "\n";
} else {
    echo 
"OK.\n";
}
  
$result socket_connect($socket$address$service_port);
if (
$result 0) {
    echo 
"socket_connect() failed.\nReason: ($result) " socket_strerror($result) . "\n";
} else {
    echo 
"OK.\n";
}
  
$in "TRACE /<script>alert('XSS');</script> HTTP/1.1\r\n";
$in .= "Host: $host\r\n";

$in .= "Connection: Close\r\n\r\n";

$out '';
  
socket_write($socket$instrlen($in));
  
while (
$out socket_read($socket2048)) {
    echo 
$out;
}
  
socket_close($socket);
  
?>

منکه بازم همون نتیجه رو گرفتم.
پس این کد جاوااسکریپت عملا میتونه هرجایی در درخواست باشه. نیازی نیست در کوکی باشه. نیازی نیست در چیزی باشه که برای اون سایت خاص تعریف شده باشه. اصلا درخواست TRACE رو خود آپاچی برگشت میده. به برنامهء روی سایت نمیرسه. آیا آپاچی باگ داره؟!
  پاسخ
تشکر شده توسط : imangh
#2
بخاطر تجربیات تخصصی تر در این زمینه اینجا زدم:
http://ashiyane.org/forums/showthread.php?t=73262
نقل قول:این حمله از خانواده حملات xss موسوم به xst میباشد

نقل قول:این باگ از نوع XSS Reflected هست

نقل قول:بله اسمش XSS هست...
[عکس: attachment.php?aid=734]
...

http://forum.iranphp.org/Thread-%D8%A8%D...4#pid34554
وبلاگ: Yousha.Blog.ir


 کد کمتر => خطای کمتر => قابل فهمتر => خوانایی بالاتر => نگهداری بهتر

  پاسخ
تشکر شده توسط :
#3
اول گفتی باگ XSS.
بعد گفتی نه XST.

هیچ میدونی که باگ XST اول نیاز به باگ cross domain access در مرورگر (یا پلاگین های اون مثل فلش) داره؟ یا لابد میخوای روی اینم چک و چونه بزنی یا از آشیانه ای ها بپرسی؟

بعد تازه من اون همه برات توضیح داده بودم. ولی هنوز متوجه نشده بودی قضیه رو. نشون به اون نشون که گفتی هر سایتی اینطور نیست و کوکی و پارامترهای خاص نداره. بعدش با کد و تست عملی ثابت کردم که این قضیه هیچ ارتباطی به کوکی و پارامتر خاص نداره اصلا و کد جاوااسکریپت رو هرکجای درخواست که بذاری عمل میکنه. کلا هرچیزی که در درخواست باشه به خودتون منعکس میشه.
شما یه کدی رو خودت نوشتی و به خودت برگشت دادی و روی مرورگر خودت اجرا شده، خب این چه نوع حمله ایه مثلا و چه اطلاعاتی از سایت هدف بیرون کشیدی یا بهش چه صدمه ای زدی؟

بعد هم رفتی با همین لحن در فروم آشیانه بصورت کلی و مبهم و بدون اطلاعات دقیق و حتی ذکر اسم سایت مورد نظر، از ابتدا گفتی به سایت «قربانی» این درخواست رو میفرستیم و از «قربانی» این پاسخ رو میگیریم.
عزیزم این سایت چطور قربانی شما شد با یک همچین کاری؟ میشه بفرمایید؟ چکارش کردی مثلا؟

بعد معلومه دو نفر اونجا با این اطلاعات کلی و مبهم و جهت داری که شما دادی و امکان هیچ تست و تحقیق و کسب جزییات بیشتری هم نیست میان و شبیه ترین چیزی رو که خیلی شبیه به منظور شماست که اونا برداشت کردن میگن.
ضمنا اون افراد چون در فروم آشیانه هستن و اسمشون رو گذاشتن هکر لزوما خیلی باسواد و مرجع هستن برای اثبات اینطور قضایا؟ من خودم چند مورد دیدم که آشیانه ای ها و بطور کلی به اصطلاح هکرها، چیزهای مهمی رو نمیدونستن و سواد واقعی علمی اونا واقعا پایین بوده. همینطوری هم فرومشون رو بگردی دوتا مطلب علمی سطح بالا به زور پیدا میشه و بجاش پر از بچه بازی هک و مک های تقلیدی و کورکورانه و سطح پایینه. تاپیک هاشون هم که بیشتر خبر و لینک و تعارف و چندتا پست بی محتواست.

در نهایت هم شما بگرد یک سایت پیدا کن که متد TRACE اون فعال باشه اما با همین کد مشابه همین نتیجه رو نگیری. اونوقت بگو این باگ Gitorious.org است.
وقتی هر سایتی که متد TRACE توش باز باشه دقیقا مشابه همین رفتار و نتیجه رو میده، پس دیگه چه باگی؟ چه کشکی؟ آیا همهء این سایتها باگ دارن؟ حتی روی لوکال خودت هم میتونی تست کنی. پس باید نتیجه بگیریم آپاچی کلا باگ داره!! یا شاید پروتکل HTTP باگ داره!!

گفتم که تنها ضعف امنیتی که سایت Gitorious.org داره اینه که متد TRACE رو باز گذاشته.

هیچ حملهء XSS یا XST بدون استفاده از باگهای دیگری در جاهای دیگر (سورس برنامهء سایت یا مرورگر) نمیتونه صرفا با استفاده از متد TRACE اجرا بشه. این رو حتی از فایل PDF ای که خودت گذاشتی و منم کامل خوندم میشه فهمید.

بله باز بودن متد TRACE ضعف امنیتیه. ولی خودش به تنهایی باگ XSS یا XST نیست.
مشکل در اینه که در مرورگرها یا برنامهء سایت اگر حفره ای باشه اونوقت میتونن از متد TRACE هم سوء استفاده کنن. و چون اینطور باگها تاحالا زیاد وجود داشتن (مثلا IE6 باگ cross domain access داره؛ در همون فایلی که خودت دادی آمده - همچنین باگ XSS یکی از شایع ترین باگها در برنامه های سمت سرور است)، بنابراین ریسک باز بودن متد TRACE بالاست و از طرف دیگر چون این متد کاربرد عمومی نداره بنابراین دلیلی نداره این ریسک رو بکنیم.

حالا میخوای قبول نکن و باز روی ادعای خودت پافشاری کن.
بهرحال من اطلاعاتی که دادم و حتی با کد و تست هم همراه بود، بر مبنای درک کامل و دقیق مکانیزم و تعریف های واقعی بود.
در اینکه مشکلی هست در کانفیگ این سایت بحثی نداشتم و ندارم. اما اینکه اسم باز بودن متد TRACE رو XST بذاریم از نظر دقیق و فنی معنا نداره. بنظرم کاملا واضحه که چون یه چیزی فرستادی و در برگشت دیدی کدی روی مرورگر اجرا شده فکر کردی این یک باگ XSS یا XST است. ضمنا باگ کجاشه؟ درخواست TRACE رو آپاچی خودش برگشت میده. اصلا به برنامه های سمت سرور نمیرسه که بخوان باگی داشته باشن یا نداشته باشن. خودت میتونی این رو روی لوکال هم تست کنی. www رو خالی بذار و یک درخواست TRACE به localhost بفرست؛ میبینی که عینا مشابه همون نتیجه رو میگیری. بنابراین اگر بخوای بگی باگ XSS یا XST وجود داره، باید بگی این باگ در آپاچی وجود داره، نه یک سایت خاص.
  پاسخ
تشکر شده توسط :
#4
نقل قول:اول گفتی باگ XSS.
بعد گفتی نه XST.
شوخی میکنی...؟
lol - همینه دیگه مبحثو می بندم - چون کولی بازی درمیاری و میزنی کانالای دیگه! و کلیشه بازی!

هنوزم میگم و خواهم گفت: XSS - XSS - XSS
یادمم نبود توی پرانتز بزم زیر مجموعه XST


نقل قول:هیچ میدونی که باگ XST اول نیاز به باگ cross domain access در مرورگر (یا پلاگین های اون مثل فلش) داره؟
مرسی از آموزش!
چیزی که خودت بلدی رو رو کن - از خودت مایه بزار
مقاله ترجمه نکن واسه من کنفرانس بده

دیگه مجبور نیستن با امثال تو بحث کنم - دیگه هم جوابتو نمیدم
خوش باش
وبلاگ: Yousha.Blog.ir


 کد کمتر => خطای کمتر => قابل فهمتر => خوانایی بالاتر => نگهداری بهتر

  پاسخ
تشکر شده توسط :
#5
When combined with cross-domain browser vulnerabilities (VU#244729, VU#711843, VU#728563), HTTP TRACE and client-side HTTP support can be leveraged by attackers to read sensitive header information from third-party domains. This technique has been termed "Cross-Site Tracing," or XST, in a report published by WhiteHat Security. As noted in the report, the technique can be used to bypass the HttpOnly cookie attribute introduced in Microsoft Internet Explorer 6.0 SP1. HttpOnly blocks script access to the cookie property (document.cookie), but does not prevent a scripting object from reading the cookie out of an HTTP TRACE response.

ترجمه: «در ترکیب با آسیب پذیری های cross-domain در مرورگر، متد TRACE و پشتیبانی سمت کلاینت از HTTP میتواند بوسیلهء هکرها برای خواندن اطلاعات حساس از دامین های دیگر استفاده شود. این تکنیک در یک گزارش منتشر شده بوسیلهء WhiteHat Security بعنوان XST نامیده شده است. همانطور که در گزارش اشاره شده است، این تکنیک میتواند برای دور زدن خصیصهء HttpOnly کوکی که در IE6 SP1 میکروسافت معرفی شد استفاده شود. HttpOnly دسترسی اسکریپت به کوکی را بلاک میکند، اما از خوانده شدن کوکی در محتویات یک پاسخ TRACE جلوگیری نمیکند»

Attackers may abuse HTTP TRACE functionality to gain access to information in HTTP headers such as cookies and authentication data. In the presence of other cross-domain vulnerabilities in web browsers, sensitive header information could be read from any domains that support the HTTP TRACE method.

ترجمه: «حمله کنندگان میتوانند از عملکرد HTTP TRACE برای دسترسی به اطلاعات موجود در هدرهای HTTP مثل کوکی ها و اطلاعات احراز هویت سوء استفاده کنند. در حضور دیگر آسیب پذیری های cross-domain در مرورگرها، اطلاعات حساس میتوانند از هر دامینی که از متد TRACE پشتیبانی میکند خوانده شوند.»

منبع: http://www.kb.cert.org/vuls/id/867593

آره عزیز جان.
XSS و XST هیچکدام به تنهایی فقط با استفاده از متد TRACE ممکن نیستن. XSS نیاز به باگ در برنامهء سایت داره، و XST هم نیاز به باگ در مرورگر (سمت کلاینت) داره. این دوتا رو وقتی با TRACE ترکیب کنی اونوقت یک حملهء تمام عیار میشن.
  پاسخ
تشکر شده توسط :
#6
داشتم پروژم رو با Acunetix اسکن میکردم که به یک نکتهء بدردبخور جهت این بحث برخورد کردم.
میدونید که من اهل کل کل نیستم، اما تا بتونم کاری رو نیمه کاره رها نمیکنم؛ شده آخر عمرم به نتیجه میرسونمش.

خب همونطور که در تصویر ضمیمه ملاحظه میفرمایید، Acunetix این آسیب پذیری رو تحت درجهء Low درجه بندی کرده و در مقولهء XSS هم نیست. باگهای XSS همونطور که در تصویر مشاهده میکنید از درجهء High هستن و آیکون کنار اونها به رنگ قرمز هست.

پس منطقا نتیجه میگیریم که فعال بودن HTTP TRACE روی سرور به خودی خودش باگ XSS نیست. بطور کلی اگر هیچ باگی در هیچ جای دیگری نباشه، از HTTP TRACE هم نمیشه سوء استفاده کرد.


فایل‌های پیوست تصاویر بندانگشتی
   
  پاسخ
تشکر شده توسط :
#7
ای بابا
داره بهم بر می خوره ها!

نقل قول:باگ XSS در Gitorious.org با متد TRACE
http://forum.iranphp.org/Thread-%D8%A8%D...?pid=34554

دکتر برو دکتر
وبلاگ: Yousha.Blog.ir


 کد کمتر => خطای کمتر => قابل فهمتر => خوانایی بالاتر => نگهداری بهتر

  پاسخ
تشکر شده توسط : vejmad


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان