Temel Linux Hak Yükseltme

Hak yükseltme dediğimiz şey aslında 5 temel adımdan oluşur. Püf nokta Enumeration, fakat Türkçe tam karşılığını bulamadım doğurusu.. Enumeration kelimesni kullanacağım için kusuruma bakmayın. Neyse kaldığımız yerden devam edelim.

  • Topla - Önce Enumeration sonra daha çok Enumeration sonra daha da çok Enumeration

  • Işle - Topladığımız verileri işleyip/analiz edip bilgiye dönüştürmemiz gerek

  • Ara - Bilgilerin içinden işimize yarayacakları bulmamız gerek

  • Uyarla - Gerekli exploiti yazmak/ayarlamak gerekebilir

  • Denemek - Ve aklına gelen herşeyi dene!

Işletim sistemi

Hangi dağıtımı kullanıyor? Versiyonu ne acep?

Işe girişmeden önce nerde olduğumuzu ne kullandığımızı bilmekte fayda var.

1
2
3
4
cat /etc/issue
cat /etc/*-release
cat /etc/lsb-release # Debian tabanlı ise burası
cat /etc/redhat-release # Redhat tabanlı ise burası

Kernel sürümü ne? Kaç bit?

Işe girişmeden önce nerde olduğumuzu ne kullandığımızı bilmekte fayda var.

1
2
3
4
5
6
cat /proc/version
uname -a
uname -mrs
rpm -q kernel
dmesg | grep Linux
ls /boot | grep vmlinuz-

Çevresel değişkenler ne alemde?

Nerdeyiz, ne nerede, kime abi kime abla diyoruz öğrenmekte fayda var herhalde

1
2
3
4
5
6
7
cat /etc/profile
cat /etc/bashrc
cat ~/.bash_profile
cat ~/.bashrc
cat ~/.bash_logout
env
set

Yazıcı var mı?

Yazıcı önemli tabi

1
lpstat -a

Uygulamalar ve Servisler

Hangi servis çalışıyor? Hangileri bizim yetkimizde ?

1
2
3
4
ps aux
ps -ef
top
cat /etc/services

Hangi servisler root? Root olanlarda açıklı olan var mı?

Root çalışan işlem var ise çok uzaklaşmaya gerek yok. Genelde istismara en çok yarayacak yer burasıdır.

1
2
ps aux | grep root
ps -ef | grep root

Hangi uygulamar kurulu? Hangi sürümleri kullanıyorlar? Şuan çalışan hangileri?

Uygulamaları istismar etmek için exploit yazma atraksiyonuna girmeden eski sürümlerdeki açıklar işe yarıyabilir.

1
2
3
4
5
6
ls -alh /usr/bin/
ls -alh /sbin/
dpkg -l
rpm -qa
ls -alh /var/cache/apt/archivesO
ls -alh /var/cache/yum/

Hatalı veya yanlış konfigrasyon var mı?

Hatalı config nasıl açıklasam ki? isminden belli herhalde

1
2
3
4
5
6
7
8
9
10
cat /etc/syslog.conf
cat /etc/chttp.conf
cat /etc/lighttpd.conf
cat /etc/cups/cupsd.conf
cat /etc/inetd.conf
cat /etc/apache2/apache2.conf
cat /etc/my.conf
cat /etc/httpd/conf/httpd.conf
cat /opt/lampp/etc/httpd.conf
ls -aRl /etc/ | awk '$1 ~ /^.*r.*/

Planlanmış iş var mı?

En çok ekmek yenen yer. Cronjob, bizim yetkimiz dahilindeki bir dosyayı çalıştırıyor ise direk istismar edebiliriz.

1
2
3
4
5
6
7
8
9
10
11
12
crontab -l
ls -alh /var/spool/cron
ls -al /etc/ | grep cron
ls -al /etc/cron*
cat /etc/cron*
cat /etc/at.allow
cat /etc/at.deny
cat /etc/cron.allow
cat /etc/cron.deny
cat /etc/crontab
cat /etc/anacrontab
cat /var/spool/cron/crontabs/root

Salt okunur şifre var mı?

1
2
3
4
grep -i user [filename]
grep -i pass [filename]
grep -C 5 "password" [filename]
find . -name "*.php" -print0 | xargs -0 grep -i -n "var $password" # Joomla

Ağ ve İletişim olayları

Sistem hangi NIC’e(‘lere) sahip? Başka bir Ağ’a bağlı mı?

1
2
3
/sbin/ifconfig -a
cat /etc/network/interfaces
cat /etc/sysconfig/network

Ağ konfigrasyonları ne alemde? DHCP sunucusu? DNS sunucusu? Gateway?

Bu ağdan ekmek çıkabilirite kontrol testi

1
2
3
4
5
6
cat /etc/resolv.conf
cat /etc/sysconfig/network
cat /etc/networks
iptables -L
hostname
dnsdomainname

Diğer kullanıcılar veya hostların sistem ile iletişimi ne durumda?

1
2
3
4
5
6
7
8
9
10
lsof -i
lsof -i :80
grep 80 /etc/services
netstat -antup
netstat -antpx
netstat -tulpn
chkconfig --list
chkconfig --list | grep 3:on
last
w

Önbelleğe düşmüş IP ve/veya MAC adresi olabilir

1
2
3
arp -e
route
/sbin/route -nee

Paket koklaması yapabiliyor muyuz? yapıyorsan ne düşüyor?

1
tcpdump tcp dst 192.168.1.120 80 and tcp dst 10.5.4.132 21

Gizli bilgiler ve kullanıcılar?

Sen kimsin? Kimler giriş yaptı? Kimler burada? Kimler ne yapabilir?

1
2
3
4
5
6
7
8
9
id
who
w
last
cat /etc/passwd | cut -d: -f1 # List of users
grep -v -E "^#" /etc/passwd | awk -F: '$3 == 0 { print $1}' # List of super users
awk -F: '($3 == "0") {print}' /etc/passwd # List of super users
cat /etc/sudoers
sudo -l

Mahrem dosyaları okuyabiliyor muyuz?

1
2
3
4
at /etc/passwd
cat /etc/group
cat /etc/shadow
ls -alh /var/mail/

Ilginç home dizinleri var mı?

1
2
ls -ahlR /root/
ls -ahlR /home/

Şifrelerin olabileceği config dosyaları, log dosyalarına göz atmakta fayda var

1
2
3
cat /var/apache2/config.inc
cat /var/lib/mysql/mysql/user.MYD
cat /root/anaconda-ks.cfg

Kullanıcı daha önce ne yaptı? Şifreler var mı?

1
2
3
4
5
cat ~/.bash_history
cat ~/.nano_history
cat ~/.atftp_history
cat ~/.mysql_history
cat ~/.php_history

Kullanıcı bilgileri var mı?

1
2
3
4
cat ~/.bashrc
cat ~/.profile
cat /var/mail/root
cat /var/spool/mail/root

Özel anahtar sızıntısı var mı?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
cat ~/.ssh/authorized_keys
cat ~/.ssh/identity.pub
cat ~/.ssh/identity
cat ~/.ssh/id_rsa.pub
cat ~/.ssh/id_rsa
cat ~/.ssh/id_dsa.pub
cat ~/.ssh/id_dsa
cat /etc/ssh/ssh_config
cat /etc/ssh/sshd_config
cat /etc/ssh/ssh_host_dsa_key.pub
cat /etc/ssh/ssh_host_dsa_key
cat /etc/ssh/ssh_host_rsa_key.pub
cat /etc/ssh/ssh_host_rsa_key
cat /etc/ssh/ssh_host_key.pub
cat /etc/ssh/ssh_host_key

Dosya Sistemleri

/etc/ de yazma iznimiz var mı? Bir servisi tekrar konfigre edebiliyor muyuz?

1
2
3
4
5
6
7
8

ls -aRl /etc/ | awk '$1 ~ /^.*w.*/' 2>/dev/null # Herhangi biri
ls -aRl /etc/ | awk '$1 ~ /^..w/' 2>/dev/null # Sahip
ls -aRl /etc/ | awk '$1 ~ /^.....w/' 2>/dev/null # Grup
ls -aRl /etc/ | awk '$1 ~ /w.$/' 2>/dev/null # Diğer

find /etc/ -readable -type f 2>/dev/null # Herhangi biri
find /etc/ -readable -type f -maxdepth 1 2>/dev/null # Herhangi biri

/var/‘ın içinde ne var?

1
2
3
4
5
6
7
ls -alh /var/log
ls -alh /var/mail
ls -alh /var/spool
ls -alh /var/spool/lpd
ls -alh /var/lib/pgsql
ls -alh /var/lib/mysql
cat /var/lib/dhcp3/dhclient.leases

Websitelerde gizli bir bilgi var mı? Ayar dosyalarında veritabanı bilgileri var mı ?

1
2
3
4
5
ls -alhR /var/www/
ls -alhR /srv/www/htdocs/
ls -alhR /usr/local/www/apache22/data/
ls -alhR /opt/lampp/htdocs/
ls -alhR /var/www/html/

Log dosyaları ne alemde?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
cat /etc/httpd/logs/access_log
cat /etc/httpd/logs/access.log
cat /etc/httpd/logs/error_log
cat /etc/httpd/logs/error.log
cat /var/log/apache2/access_log
cat /var/log/apache2/access.log
cat /var/log/apache2/error_log
cat /var/log/apache2/error.log
cat /var/log/apache/access_log
cat /var/log/apache/access.log
cat /var/log/auth.log
cat /var/log/chttp.log
cat /var/log/cups/error_log
cat /var/log/dpkg.log
cat /var/log/faillog
cat /var/log/httpd/access_log
cat /var/log/httpd/access.log
cat /var/log/httpd/error_log
cat /var/log/httpd/error.log
cat /var/log/lastlog
cat /var/log/lighttpd/access.log
cat /var/log/lighttpd/error.log
cat /var/log/lighttpd/lighttpd.access.log
cat /var/log/lighttpd/lighttpd.error.log
cat /var/log/messages
cat /var/log/secure
cat /var/log/syslog
cat /var/log/wtmp
cat /var/log/xferlog
cat /var/log/yum.log
cat /var/run/utmp
cat /var/webmin/miniserv.log
cat /var/www/logs/access_log
cat /var/www/logs/access.log
ls -alh /var/lib/dhcp3/
ls -alh /var/log/postgresql/
ls -alh /var/log/proftpd/
ls -alh /var/log/samba/

Mount edilmemiş sistem bölümü var mı?

1
cat /etc/fstab

Sistem bölümleri nasıl mount edilmiş?

1
2
mount
df -h

Hangi Gelişmiş Linux Dosya Izinleri kulanılmış ? Yapışkan bit? SUID? SUID?

  • Yapışkan bit - Sadece dosya/dizin sahibi dosya ismini değiştirebilir veya sileblir
  • SGID - grup olarak çalıştırır, kimin çalıştırdığının pek bir önemi yok
  • SUID - sahibi olarak çalıştırır, kimin çalıştırdığının pek bir önemi yok
1
2
3
4
5
6
7
8
9
10
11
find / -perm -1000 -type d 2>/dev/null   # Yapışkan bit
find / -perm -g=s -type f 2>/dev/null # SGID (chmod 2000)
find / -perm -u=s -type f 2>/dev/null # SUID (chmod 4000)

find / -perm -g=s -o -perm -u=s -type f 2>/dev/null # SGID veya SUID

for i in `locate -r "bin$"`; do find $i \( -perm -4000 -o -perm -2000 \) -type f 2>/dev/null; done # Çalıştırılabilir dosya dizinlerine bakar, daha hızlıdır. ( /sbin/, /bin/,/usr/bin/ ,/usr/sbin/ gibi )

# find komutunu kök dizinden başlattığımızdan dolayı derinliği 3 e almamız yeterli yoksa pekçok hata ile karşılabiliriz

find / -perm -g=s -o -perm -4000 ! -type l -maxdepth 3 -exec ls -ld {} \; 2>/dev/null

Herkes tarafından yazılabilir ve çalıştırılabilir dizinleri var mı? (/tmp/ gibi)

1
2
3
4
5
6
7
8
find / -writable -type d 2>/dev/null      # herkes tarafından yazma izni olan dizinler
find / -perm -222 -type d 2>/dev/null # herkes tarafından yazma izni olan dizinler
find / -perm -o w -type d 2>/dev/null # herkes tarafından yazma izni olan dizinler

find / -perm -o x -type d 2>/dev/null # herkes tarafından çalıştırılma izni olan dizinler

find / \( -perm -o w -perm -o x \) -type d 2>/dev/null #
herkes tarafından hem yazma hem çalıştırılabilir diziler

Sahipsiz ve herkes tarafından yazılabilir hata dosyaları var mı?

1
2
3
find /dir -xdev \( -nouser -o -nogroup \) -print # Sahipsiz dosyalar

find / -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print # herkes tarafından yazma izni olan dosyalar