Anti-armenia.ORG - Forumlar - Path Traversal Yoxsa LFİ?



Istifadəçi
    2023-06-05 22:52 GMT                 

ItIsNotMe



İstifadəçi
Mesaj Sayı : 68
Mövzu Sayı :
Rep Ver : 
Rep Sayı :   5  
Indi Saytda : Durum
Cinsiyyət : Oğlan
Şəhər : Bakı
Ölkə :
Məslək : ItIsNotMe
Yaş : 22
Mesaj :

Mövzunu Paylaş!


Salam hər kəsə,Bu mövzumda çox adamın, əsas da bu mövzuları təzə öyrənən şəxslərin qarışdırdığı, məntiq olaraq oxşar amma bir-birindən fərqli olan iki güvənlik açığı haqqında qısa olaraq yazmağa çalışacam.Path Traversal və LFİ.
İlk olaraq hansının adını eşitməyimizdən asılı olmayaraq ağlımıza gələn yəqin ki ../../../../../etc/passwd payloadı olur.Bəs LFİ və Path Traversal sadəcə /etc/passwd faylındanmı ibarətdir? təbii ki xeyr.
Düzdür ki hər iki güvənlik açığı vasitəsilə serverdə müəyyən faylları oxuya bilirik,lakin LFİ-də edə biləcəklərimiz daha da dərinləşir.Çünki Path Traversalda sadəcə faylın kontentini oxuya bildiyimiz halda,LFİ-da bu sadəcə fayl oxumaqla bitmir,adından da göründüyü kimi biz faylı oxumuruq sadəcə funksiyanın olduğu fayla başqa bir faylı "include" edirik yəni daxil edirik.Bununla da əgər bizim daxil etdiyimiz faylın kontenti istifadə etdiyimiz proqramlaşdırma dilində yazılmış bir scriptdirsə artıq bizə faylın kontentini göstərmir birbaşa faylın içərisinə daxil edərək çalışdırır.Path Traversal-da sadəcə fayl oxumaqla limitlənərkən,LFİ fayl oxumaqla başlayıb sonu RCE-ə qədər gedir.Bura qədər yazdığım cümlələrdə əgər başınız qarışdısa,indi verəcəyim kod nümunələrindən sonra ümid edirəm ki bu mövzunu tam anlayacaqsız.
İlk olaraq Path Traversal-a aid bir kod nümunəsi yazaq,kodları PHP-də yazacam ki sırf bu güvənlik açığını ən yaxşı PHP-də anlamaq olur.Kodları isə geniş,sayt səhifəsi şəklində yazmayacam,sırf güvənlik açığının yarandığı hissəyə aid nümunə yazacam ki qarışıqlıq olmasın.

Kod:
<?php
if(isset($_GET['file'])){
$file = $_GET['file'];
$content = file_get_contents($file);
echo $content;}
else {
echo "<h1>Bu İndex səhifəsidi.</h1>";
}
?>
de]

Bu index.php faylının məzmunudur.Kodda yazılıb ki əgər GET metodu ilə file parametri göndərilərsə ( index.php?file= və ya /?file= ) həmin parametrin aldığı dəyəri file_get_contents() funksiyası ilə çalışdır əks halda Bu İndex səhifəsidi yazısını ekrana çıxar,yəni biz file parametrinə nə dəyər versək bizə onun məzmununu göstərəcək.Gəlin praktiki göstərək.

https://img2.teletype.in/files/da/4b/da4be27c-a97f-41ff-af86-df89fce8d98f.png


https://img1.teletype.in/files/84/31/8431c767-575d-48fc-88b0-bafc66794fce.png


file parametrinə message.txt dəyərini yazdıqda yekun olaraq echo file_get_contents("message.txt") kimi nəticə çıxır və bizə message.txt faylının kontentini göstərir.Bəs biz file message.txt yerinə serverdə olan başqa bir PHP faylını çağırsaq nə olacaq?Gəlin birlikdə baxaq.
Serverimizdə about.php adında bir fayl var və məzmunu aşağıdakı kimidir.

Kod:
<?php
echo "<h1>Bu About səhifəsidir</h1>";
?>
e]

https://img4.teletype.in/files/71/82/71824bed-0267-46fc-944e-7b44b95d1dd1.png


Normal olaraq faylı açanda belə görüntü çıxır qarşımıza.İndi isə file parametri ilə çağıraq.

https://img1.teletype.in/files/81/c0/81c082c1-57ed-411a-bab5-a7ab0b73172d.png


about.php faylının məzmununu olduğu kimi bizə verir yəni text formasında.Path Traversal bundan ibarətdir yəni icazəmiz olan istənilən faylın məzmununu text formatında oxuya bilirik.Artıq LFİ-a keçdikdə işlər qarışır və güvənlik açığının kritikliyi artır.LFİ üçün bir kod nümunəsi verək

Kod:
<?php
if(isset($_GET['file'])){
$file = $_GET['file'];
include($file);}
else {
echo "<h1>Bu İndex səhifəsidi.</h1>";
}
?>
de]

Ümumiyyətlə include() funksiyasının məqsədi başqa fayllarda olan kodları hər hansı digər faylın içində yenidən təkrar yazmamaqla istifadə etməkdi,məsələn,file1.php faylında $x = "salam" adında dəyişən yaratdız sonra da file2.php faylinda include("file1.php") yazıb sonra echo $x yazsaz artıq salam sözünü çap etdirəcək,nümunə kimi Pythondakı modulları da göstərə bilərik.

https://img2.teletype.in/files/d0/e3/d0e31633-731d-4cfd-a48e-11644a2b9b04.png


https://img3.teletype.in/files/ac/ee/acee668c-2895-4c30-bd39-ee1701637aef.png


Hər iki nümunədə artıq PHP faylını txt kimi deyil Render edərək PHP kimi çalışdırdığını gördük,LFİ-i RCE-ə çevirməyi yolları çoxdur buna nümunə kimi Log Poisoning-i göstərə bilərik,Log Poisoning-də loglara php payloadlarının düşməsini təmin edərək(auth.log faylını oxuya biliriksə ssh useri yerinə php kodu yazmaq,access.log faylını oxuya biliriksə User-Agent yerinə php payloadı yazmaq və s.) logları php faylının içərisinə include edib php payloadlarımızı çalışdıra bilirik,digər nümunə kimi əgər Web Server root userində çalışırsa /proc/self/environ faylını include edərək User-Agent yerinə php payloadı yazıb çalışdıra bilirik(Amma bu çox az hallarda olur çünki /proc/self/environ faylının yetkisi 400 olur ona görə mütləq web server gərək root userində çalışsın).
Ümid edirəm ki bura qədər yazdıqlarımdan sonra bu güvənlik açıqları haqqında əgər bilmirdizsə ilkin məlumatları öyrənə bildiz.
İndi isə keçək güvənlik açığının qarşısının alınmasına
Ən güvənli yolu bir list yaradıb sadəcə müəyyən faylların çağırılmasına icazə verməkdir.Nümunə kimi aşağıdakı kimi kod yazmaq olar.

Kod:
<?php
if(isset($_GET['file'])){
$file = $_GET['file'];
if ($file != "message.txt" && $file != "about.php"){
echo "Fayl tapılmadı";}
else{
include($file);
}
}
else {
echo "<h1>Bu İndex səhifəsidi.</h1>";
}
?>
code]

https://img4.teletype.in/files/3e/eb/3eeb60ea-fa3c-4ea3-a101-bd0ad8d18079.png


https://img1.teletype.in/files/0d/2c/0d2cd75e-ceeb-4321-bb55-dceb9ab72e2d.png


Oxuduğunuz üçün təşəkkürlər.

Anti-armenia.ORG
    

Istifadəçi
    2023-06-06 09:36 GMT                 

T43RIZ



Creative
Mesaj Sayı : 123
Mövzu Sayı :
Rep Ver : 
Rep Sayı :   26  
Indi Saytda : Durum
Cinsiyyət : Oğlan
Şəhər : anti-armenia.org
Ölkə :
Məslək : Designer
Yaş : 6
Mesaj :

Mövzunu Paylaş!


Mövzu dolğundur)) Əlaa!!!

Anti-armenia.ORG
    

Istifadəçi
    2023-06-06 09:57 GMT                 

ItIsNotMe



İstifadəçi
Mesaj Sayı : 68
Mövzu Sayı :
Rep Ver : 
Rep Sayı :   5  
Indi Saytda : Durum
Cinsiyyət : Oğlan
Şəhər : Bakı
Ölkə :
Məslək : ItIsNotMe
Yaş : 22
Mesaj :

Mövzunu Paylaş!


Sitat
#62066 T43RIZ :
Mövzu dolğundur)) Əlaa!!!


Təşəkkürlər

Anti-armenia.ORG
    

Istifadəçi
    2023-06-06 15:12 GMT                 

H3ll0



İstifadəçi
Mesaj Sayı : 3
Mövzu Sayı :
Rep Ver : 
Rep Sayı :   0  
Indi Saytda : Durum
Cinsiyyət : Oğlan
Şəhər :
Ölkə :
Məslək : nothing
Yaş : 1
Mesaj :

Mövzunu Paylaş!


Əllərinə sağlıq

Anti-armenia.ORG
    

Istifadəçi
    2023-06-07 19:53 GMT                 

Shirinov039



İstifadəçi
Mesaj Sayı : 13
Mövzu Sayı :
Rep Ver : 
Rep Sayı :   0  
Indi Saytda : Durum
Cinsiyyət : Oğlan
Şəhər :
Ölkə :
Məslək : Shirinov039
Yaş :
Mesaj :

Mövzunu Paylaş!


Əllərinə sağlıq, əladı

Anti-armenia.ORG
    

Istifadəçi
    2023-06-08 14:21 GMT                 

ItIsNotMe



İstifadəçi
Mesaj Sayı : 68
Mövzu Sayı :
Rep Ver : 
Rep Sayı :   5  
Indi Saytda : Durum
Cinsiyyət : Oğlan
Şəhər : Bakı
Ölkə :
Məslək : ItIsNotMe
Yaş : 22
Mesaj :

Mövzunu Paylaş!


Sitat
#62070 H3ll0 :
Əllərinə sağlıq



Təşəkkürlər

Sitat
#62079 Shirinov039 :
Əllərinə sağlıq, əladı



Təşəkkürlər

Anti-armenia.ORG