Indonesian Back|Track Team
Share Detect PHP Backoor Image and How to Prevent or Clear The Image - Printable Version

+- Indonesian Back|Track Team (https://www.indonesianbacktrack.or.id/forum)
+-- Forum: Defensive Zone (https://www.indonesianbacktrack.or.id/forum/forum-173.html)
+--- Forum: Hardening (https://www.indonesianbacktrack.or.id/forum/forum-189.html)
+--- Thread: Share Detect PHP Backoor Image and How to Prevent or Clear The Image (/thread-5689.html)



Detect PHP Backoor Image and How to Prevent or Clear The Image - Junior Riau - 03-27-2014

Assalamualaikum wr.wb
selamat siang semua
kali ini saya mau share kembali

sebelumnya setelah om @zee eichel membagi trik and tips tentang backdooring di thread berikut

kali ini saya akan berbagi bagai mana cara mendeteksinya dan mencegahnya

[hide]
Persiapan percobaan :
1. index.php/index.html berisikan script html untuk form upload
PHP Code:
<html>
    <
head>
        <
meta charset="UTF-8">
        <
title></title>
    </
head>
    <
form method="post" action="proses.php" enctype="multipart/form-data">
        <
input type="file" name="file"/><br/>
        <
input type="radio" name="for" value="Plugin"/>Plugin<br/>
        <
input type="radio" name="for" value="Theme"/>Theme<br/>
        <
input type="submit" name="submit"/>
    </
form>
    </
body>
</
html

2. File proses.php untuk menerima data post dari file index.html/index.php
PHP Code:
<?php

/* 
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
if(isset($_FILES['file'])){
    
$exif exif_read_data($_FILES['file']['tmp_name'], 0true);
    echo 
"File Name : ".$_FILES['file']['name']."<br />\n";
    echo 
"File exif data : <br/>\n";
    foreach (
$exif as $key => $section) {
        foreach (
$section as $name => $val) {
            echo 
"$key.$name$val<br />\n";
        }
    }

let's try it
ini gambar yang akan di upload
[Image: cp.jpg]

gambar tersebut bersih dari script
[Image: pure.png]

hasil upload tanpa manipulasi image
[Image: ss.png]

kemudian
rubah baris code di proses.php pada bagian ini
PHP Code:
echo "$key.$name$val<br />\n"
menjadi
PHP Code:
echo "$key.$name: ".htmlspecialchars($val)."<br />\n"

sisip kan script php ke image dengan perintah
PHP Code:
jhead -ce cp.jpg 
saya sisipkan
PHP Code:
<?php phpinfo(); ?>

hasilnya adalah
[Image: jheadscript.png]
[Image: viewscript.png]

secarang bagaimana mendeteksi image tersebut telah dimanipulasi berisikan php script

rubah code proses.php menjadi
PHP Code:
if(isset($_FILES['file'])){
    
$exif exif_read_data($_FILES['file']['tmp_name'], 0true);
    echo 
"File Name : ".$_FILES['file']['name']."<br />\n";
    echo 
"File exif data : <br/>\n";
    foreach (
$exif as $key => $section) {
        foreach (
$section as $name => $val) {
            if(
strcasecmp($key"COMMENT")==0){
                echo 
"Comment exif data found <br/>";
                echo 
"value : ".htmlspecialchars($val);
            }
        }
    }


hasilnya adalah seperti ini
[Image: found.png]

bagaimana menghilangkannya?
menghilangkannya dengan cara meng create ulang image tersebut dengan php gd extension
berikut code untuk menghilangkannya
PHP Code:
<?php

/* 
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
if(isset($_FILES['file'])){
    
$exif exif_read_data($_FILES['file']['tmp_name'], 0true);
    echo 
"File Name : ".$_FILES['file']['name']."<br />\n";
    echo 
"File exif data : <br/>\n";
    foreach (
$exif as $key => $section) {
        foreach (
$section as $name => $val) {
            if(
strcasecmp($key"COMMENT")==0){
                echo 
"Comment exif data found <br/>";
                echo 
"value : ".htmlspecialchars($val);
            }
        }
    }
    
$imageType;
    
$image;
    echo 
"<br/><br/>Re-create image : <br/><br/>";
    
$temp=getimagesize($_FILES['file']['tmp_name']);
        
$imageType=$temp[2];
        
        if( 
$imageType == IMAGETYPE_JPEG ){
            
$image imagecreatefromjpeg($_FILES['file']['tmp_name']);
            
imagejpeg($image,"upload/".$_FILES['file']['name']);
        }
        elseif( 
$imageType == IMAGETYPE_GIF ){
            
$image imagecreatefromgif($_FILES['file']['tmp_name']);
            
imagegif($image,"upload/".$_FILES['file']['name']);
        }
        elseif( 
$imageType == IMAGETYPE_PNG ){
            
$image imagecreatefrompng($_FILES['file']['tmp_name']);
            
imagepng($image,"upload/".$_FILES['file']['name']);
        }
     echo 
"File exif data : <br/>\n";
     
$newexif_read_data("upload/".$_FILES['file']['name'], 0true);
    foreach (
$new as $key => $section) {
        foreach (
$section as $name => $val) {
            echo 
$key." ".$name ." : ".$val."<br/>";
        }
    }


hasilnya sebagai berikut :
[Image: clear.png]

jadi kesimpulannya untuk mencegah backdoor image masuk, jangan gunakan move_upload() untuk menyimpan file upload, tapi dengan cara meng create ulang image tersebut.

[/hide]

Selamat mencoba..

Best regards

Junior Riau


RE: Detect PHP Backoor Image and How to Prevent or Clear The Image - Junior Riau - 03-27-2014

ini yang kasih thanks pada baca gak ya :/
atau cuma lihat :/
atau malah gak ngerti :/


RE: Detect PHP Backoor Image and How to Prevent or Clear The Image - drewcode - 03-28-2014

hahhaa ternyata yang ginian yg suka bikin BD-jpeg kaga jalan Angry

berarti fitur auto resize pada images upload juga bisa yah menangkal BD Image.. ?
mantap om tutorialnya :-bd
Cek Kolor Confused:-


RE: Detect PHP Backoor Image and How to Prevent or Clear The Image - Junior Riau - 03-28-2014

(03-28-2014, 12:47 AM)drewcode Wrote: hahhaa ternyata yang ginian yg suka bikin BD-jpeg kaga jalan Angry

berarti fitur auto resize pada images upload juga bisa yah menangkal BD Image.. ?
mantap om tutorialnya :-bd
Cek Kolor Confused:-

iya, untuk resize image juga akan menghapus script php di dalam image
sipsip sama sama om
isi kolor masih lengkap=))Big Grin:Smile:-


RE: Detect PHP Backoor Image and How to Prevent or Clear The Image - wine trochanter - 03-28-2014

(03-27-2014, 07:23 PM)junior.riau18 Wrote: ini yang kasih thanks pada baca gak ya :/
atau cuma lihat :/
atau malah gak ngerti :/

gk ngerti beb
berat bahasa nya Big Grin
pake bahasa seawam mungkin dong :*


RE: Detect PHP Backoor Image and How to Prevent or Clear The Image - iyan squid - 03-29-2014

thanks biar bisa baca Big Grin selanjutnya siap2 mikir buat ngertiin Big Grin


RE: Detect PHP Backoor Image and How to Prevent or Clear The Image - Junior Riau - 03-29-2014

baca dulu postingan om @zee eichel


RE: Detect PHP Backoor Image and How to Prevent or Clear The Image - iKONspirasi - 03-30-2014

owh bener juga ya, jgn diupload dulu tp di taruh di temp trus dilihat metadata filenya pake exif, setelah itu diubah file namenya.

ide bagus bro Big Grin

cek kulkas