Jump to content
Sign in to follow this  
gio__gio

PHP Code Injection

Recommended Posts

გამარჯობა scripts.ge (ძალიან მომენატრე : ))) ).

მოკლედ განვიხილოთ რა არის PHP Code Injection და როგორ დავიცვათ თავი მისგან.

 

PHP Code Injection ძალიან გავს Remote system Execution-ს  და ხშირად ურევენ ერთმანეთში ხოლმე. ამიტომ როდესაც დაიწყებთ ინფორმაციის მოძიებას მასზე ან ვიდეოების ნახვას PHP Code Injection მაგიერ შეიძლება იყოს Remote system Execution-ის დემონსტრირება ან მათი ჰიბრიდი PHP Code Injection-დან Remote system Execution გამოწვევა.

 

განსხვავება მათ შორის ისაა, რომ PHP Code Injection-ის შემთხვევაში ხდება შემტევის მიერ რაიმე php კოდის ამუშავება ხოლო Remote system Execution დროს რაიმე shell კოდის ამუშავება.

როგორ მიიხწევა ეს დაუცველობა

1         Eval() ფუნქციის დახმარებით არგუმენტად გადაცემული სტრინგი აღიქმება php კოდად

2       Include()/require()  remote file inclusion -ვარიანტში

 

მაგალითები

ნორმა

$str=”giorgi”;
Eval(“ echo”’.$str.’” ;”);  -> ესაა ჩვეულებრივი ვარიანტი რომელიც გამოიყურება ესა eval(“echo ‘giorgi’;”); და დაიბეჭდება სიტყვა Giorgi ჩვენს შემთხვევაში.

დაინფიცირებული

$str=”giorgi’;echo phpinfo();’”;
eval(“echo ‘giorgi’; echo phpinfo();’’ ”); -> ასეთი მანიპულაციებით შეგვიძლია ნებისმიერი ბრძანების ამუშავება. ასევე შეგვიძლია html-ის javascrip-ის და css-ის ამუშავება. მაგალითად $str=”giorgi’; ?> <script>alert(‘hacked’);</script> <?php ’”; და ა.შ
include($str)-ით ყველაფერთან ერთად შეგვიძლია ბექდორი ავტვირთოდ მაგალითად
include(“C:ftpuploadbackdoor.php”);

დაცვა

 

Php.ini ფაილში disable functions გავუტოლებთ eval() –ს და ესე გავთიშავთ საერთოთ მას.

თუ სხვა გზა არაა და საჭიროა მისი გამოყენება  $str -ის გასაფილტრად გამოიყენეთე შემდეგი ფუნქცია escapeshellcmd() ან escapeshellarg(). ჩემი რეკომენდაცია იქნება

გამოიყენოთ რეგულარ ექსპრეშენები მაგალითად  

preg_replace(“/[^A-Za-z0-9_]/”,” ”,$str);  სადაც შემოყვანილი სტრინგიდან ყველაფერი წაიშლება გარდა ასოების, ციფრების და _ .

 

include()/require() –ის შემთხვევაში გავთიშოთ ან გამოვიყენოთ თეთრი სია თუ რომელი ტემფლეიტები იყოს დასაშვები მათვის მაგალითად

$valid_templates = array(‘report.php’, ‘export.php’);
If(!in_array($template, $valid_templates)){
die “Invalid template”;
}

Share this post


Link to post
Share on other sites
Guest Georg Harris

კარგი სიახლეა მაგრამ DLE - ზე როგორ გავაკეთო შეგიძლია მითხრათ ვინმემ?

Share this post


Link to post
Share on other sites
Guest
You are commenting as a guest. If you have an account, please sign in.
გამოეხმაურეთ

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×