# OSCP Not

* Reverse shell alırken 443 portundan almaya çalış. Başka portdan dışarıya istek çıkarmayabilir.&#x20;
* Düşük yetkili bir kullanıcı ile shell aldıktan sonra ps aux | grep root yazarak root'un çalıştırdığı dosyaları tespit edebiliriz.
* User'ı aldıktan sonra mutlaka home dizininde ki tüm dosyaları (.bash\_history vs.) ls -la diyerek ara ve oku.
* Bir web sitesinde .git uzantılı bir directory görürsek ve burada farklı push dosyaları varsa bunları localimize çekmek için git-dumper kullanabiliriz.
* ls -la dediğimiz de .git ve .gitconfig vs. gibi bir şey varsa bunu oku. .gitconfig dosyası bize .git dosyasının konumunu gösterir. .git'in olduğu konumda git show Herhangi bir git nesnesi hakkında bilgi görüntülemek için kullanılır.
* find . | grep config
* shell aldıktan sonra /etc/hosts dosyasını kontrol et. Belki farklı subdomainler olabilir.
* netstat -lntp ile farklı portlar ayakta mı onları kontrol et.
* ssh ile dosya çekme; scp root@10.10.11.180:dosyaadi /home/root/dizin
* consul, vault vs gibi uygulamalara yönlendiriyorsa bizi makine googledan bunların exploit edilme yöntemlerini ara.
* grep -R ile recursive olarak dosyaları ara. Örneğin bir log dosyası gördün. tufan.log ama içi boş bunu -R ile ara "**grep -R tufan.log .**" bu şekilde log dosyasının nasıl oluştuğunu görebilirsin yani kaynak kodunu. Kaynak kodunu okuyarak neyi nereye neden kaydediyor bunları tespit edebiliriz.
* netcat ile bir shell aldıktan sonra eğer shellimiz ölürse çok üzülürüz. O yüzden kendimize hemen bir ssh key oluşturup ssh keyini alalım kenarda dursun.&#x20;
* Bir web sitesi varsa kaynak kodundan kullandığı frameworklere, js css gibi ürün olarak kullanılan ürünlerin zafiyeti var mı kontrol et.
* Wordpress sistemde dosya okuyabiliyorsak ilk önce ssh deneriz eğer kullanıcı dizinin de ssh yoksa config dosyasını okumalıyız. Bu config dosyasını bulabilmek için önce nginx'in konfigürasyon dosyalarına bakabiliriz.
* Makine de shell aldıktan sonra tcpdump ile dockerların trafiğini dinleyebiliriz. tcpdump -i docker0 -w /home/tufan -s 0  Burada TLSv1.2 protokolü RSA gibi zayıf bir algoritma kullanılıyorsa yakaladığımız bu şifreleri trafikleri decrpt edebiliriz. Makinede ssl şifrelemesini bulmamız lazım. Bunuda find ile arayıp bulabiliriz. .key ve .crt uzantılı iki dosya olmalı. Wiresharktan Edit>Preferences> RSA Keys > Add New KEy File diyerek .key uzantılı dosyamızı içeri atıyoruz. CTRL R ile refresh ettiğimiz de artık http isteklerini göreceğiz.

```js
/etc/nginx/sites-enabled/default

bu komutta root olarak çıkan yer bizi config dosyasının olduğu dizini gösterecektir.
```

```
/var/www/metapress.htb/blog/wp-config.php
```

```
mkdir .ssh
ssh-keygen (gelen her şeyi enterla)
cp id_rsa.pub authorized_keys
cat id_rsa (bunu kopyala ve saldırgan makinemize herhangi.keys diye kaydet)
Yapıştırdığımız dosyanın iznini değiştirelim chmod 600 herhangi.keys
Sonra direkt ssh ile bağlanmayı dene. Eğer olmazsa oluşturduğumuz ssh dosyalarını 
(kurban makinede) chmod 600 ile değiştir.

```

### SSH Port Forwarding

Bazen exploitları sömürmek için pivoting yada port forwarding yapmak gerekir. Çünkü dışarıdan o portları erişim olmayabilir. Örneğin içeride 8500 portunda zafiyetli bir consul uygulaması olsun. Biz bu uygulamaya içeriden aldığımız shell ile erişebiliyoruz fakat metasploit modülünde bulunan bir modül ile bunu sömürmemiz mümkün değil çünkü dışarıdan erişemiyoruz. O yüzden port forwarding yaparak sanki bu uygulama localimizde çalışıyor gibi davranabilir.

```bash
ssh -L [kullanacagimiz-port]:[baglanmak-istediginiz-domain-ya-da-ip-adresi]:[baglanacagimiz-port] [kullanacaginiz-ssh-sunucu]
```

10.10.10.103 makinesinin 8500 portunu saldırgan makinemizin 8500 portuna yönlendirelim.

* ssh tufan@10.10.10.103 -L 8500:127.0.0.1:8500

Windows'ta port forwarding için plink ya da socat uygulamalarını kullanabilirsin.\


**Aşağıda ki komutlar ile suid ve sgid lere bak.**

* ```
  find / -perm -u=s -type f 2>/dev/null
  find / -perm -g=s -type f 2>/dev/null
  ```

id yazarak kullanıcının her hangi bir gruba dahil olup olmadığına bak.

Grubun adını (logs diye bir grup olsun) bulduktan sonra find ile bu gruba ait dosyalara bak.

```
find / -group logs 2>/dev/null
```

* **`pspy`** toolunu çalıştır. pspy, root izinlerine ihtiyaç duymadan işlemleri gözetlemek için tasarlanmış bir komut satırı aracıdır. Yürütülen diğer kullanıcılar tarafından çalıştırılan komutları, cron işlerini vb. görmenizi sağlar. Root'un çalıştırdığı dosyaları görebiliriz bu şekilde. O dosyalara yönelerek yetki yükseltebiliriz. **Bu komutu kullanırken dikkat edilmesi gereken** şey toolu durdurmak için ctrl z gerekiyor. Bu da mevcut shelli öldürüyor ve aldığımız shell gidiyor. O yüzden şöyle çalıştırmak toolu 1 dakika çalıştırıp sonra kesecektir.&#x20;

&#x20;    **`timeout 1m pspy64`**

* SMB Userları enum etmek için nullinux ya da enum4linux kullan.

```
enum4linux -U 10.10.0.50
```

```
nullinux --users 10.10.0.50
```

Tespit edilen userları bir listeye koyup kerberostan bir TGT bileti talep ederek kullanıcıların hashlerini çekerek o hashleri kırıp sisteme login olmaya çalış.

**`impacket-GetNPUser.py --users-file users.txt dcadi.local/ -request --format hashcat`**

`Alınan hashi hashcat ile kır.`

**`hashcat -a 0 -m 13100 hashed.txt /path/to/wordlist --force`**

* crackmapten winrm'i açık mı kontrol et eğer açıksa bağlanıp ilerle. Yada rdp psexec vs yap.

**`crackmapexec winrm -i 10.10.10.161 -u username -p password`**

* Bulduğun kullanıcı ile secretsdump kullanarak adminin hashini dump etmeye çalış.

&#x20;  **`impacket-secretdump.py htb.local/username:password@10.10.10.161`**&#x20;

* Bulduğun kullanıcı ile bloodhound at. Gelen sonuçta arama kısmına sahip olduğun userı yaz sağ tıkla ve **`mark user as owned`** yap.&#x20;
* Ele geçirdiğin kullanıcı ile farklı bir kullanıcı oluşturup onu farklı bir gruba almayı dene. Bazen bu gruplar admin yetkisi ile komut çalışırır. Admin yetkisi ile çalışmasa bile adminin hashini secretsdump ile dump edebilir.

&#x20;     net groups diyerek mevcut grupları kontol edebilirsin. gruba eklemek için de net group "Grup Adı" tufan /add

*
* Her hangi bir yerde vault var mı kontrol et. Bunu direkt vault yazarak da anlama şansın var. Vault, verilerin güvenliğinin önemli olduğu , başkaları tarafından görüntülenmesi veya bilinmesi sakıncalı olan , erişimin sınırlandırılması gereken verilere erişimi kısıtlar. Vault Secret Management konusunda insanlara yardımcı olurken bize priv. esc. için yardımcı olabilir.&#x20;

```
vault login
```

yazdığımız da bize bir key verir. Bu key bizim ssh parolamız bunla root'a içerden ssh atabilir. root@127.0.0.1

<figure><img src="https://3256200453-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdgBjVj5SEIGGByUujC8x%2Fuploads%2FfFLvQuuKgUKl6IuaFmJx%2Fimage.png?alt=media&#x26;token=5a5c6778-dab1-4e6f-9b5a-8e49392b7b92" alt=""><figcaption></figcaption></figure>

## Web

* Web sitelerinde sadece dizinler değil subdomainleride kontrol et.

gobuster vhost -w /home/kali/pentest/SecLists/Discovery/DNS/bitquark-subdomains-top100000.txt -t 50 -u shoppy.htb

* Eğer uygulamada lfi varsa, ssh keyini okumayı dene. Ya da /etc/hosts dosyasını içeride farklı domainler olabilir.
* tarama için sadece ffuf atma düz dirsearch'te at.
* Sitenin php, aspx vs hangi dil ile yazıldığını tespit etmek için site.com/index.php index.aspx gibi şeyler dene hangisinde hata vermezse o dil ile yazılmıştır. Saldırıları da onlar ile deneyebiliriz.
* file upload alanı varsa neyi yasakladığını bulmak için bütün uzantıları at. Örneğin uygulama php ise .phar dosyasını vs kabul ediyor olabilir. Reverse almak için ilk öncelikle phpinfo sayfasını okumak gerekir. Çünkü reverse almak için kullancağımız fonksiyonlar yasaklanmış olabilir. Bunu disable\_function kısmından bulabiliriz. Atacağımız reverse shell payload'ında bu yasaklı fonksiyonlar olmamalıdır.
