ประกาศถึงทุกท่านที่เข้ามา !

โปรดระวังมิจฉาชีพ , เพจปลอม
หลอกขายโปรแกรม , หลอกให้บริการแฮกเฟส ลฯล


ณ. ปัจจุบัน บล็อคและแฟนเพจที่อัพเดทอยู่
มีเท่าที่เห็นแค่ตามด้านล่างนี้ครับ

Blogspot : iAK1 BLOG
Fanpage Happie Hacking
Profile : เอเควัน ดอชพีเฮชพี

[*] ย้ำ : ไม่มีบริการรับแฮกเฟส
ไม่รับสอนแฮก ใดใดทุกกรณีครับ

หากท่านกำลังติดต่อ หรือพบเจอ บุคคล , เพจ
ที่ใช้ภาพที่เกี่ยวข้องกับ basic-hack หรือ ak1
แจ้งผมได้ที่
เอเควัน ดอชพีเฮชพี ครับ

เขียน php ฟอร์มอัพโหลดรูปภาพแบบไม่ปลอดภัย - อันตราย Bypass Hack upload shell

ก่อนอื่นต้องแนะนำ Shell ของ Hacker ในภาษาบ้านๆ ก่อนว่า Shell คืออะไร
หลังจากทำความรู้จัก Shell กันแล้ว เรามาดู โค้ด php ของฟอร์มอัพโหลดรูปภาพ
เพื่อจะสร้างฟอร์มที่ปลอดภัยต่อเว็บไซต์ ไม่ให้ถูก Upload Shell และไฟล์ 
นามสกุลอื่นขึ้นมาแทนจากโค้ดด้านล่าง เป็นตัวอย่าง ช่องอัพโหลดรูปภาพที่ Upload  Shell หรือไฟล์ .php สำเร็จ



<?php
   $uploaddir = 'uploads/'; // Relative path under webroot
        $uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
   if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile))
       {
          echo "File is valid, and was successfully uploaded.\n";
   }
   else
   {
          echo "File uploading failed.\n";
   }
     ?>

เราจึงต้องมีการตรวจสอบ ประเภทของเนื้อหา
ตรวจสอบประเภทของไฟล์ หากเป็นข้อความ  หรือ .php จะไม่ถูกอัพโหลดขึ้นไป

 <?php
      //checks if file is Gif or not
       if($_FILES['userfile']['type'] != "image/gif")
       {
          echo "Sorry, we only allow uploading GIF images";
          exit;
       }
      $uploaddir = 'uploads/';
      $uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
      if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile))
   {
          echo "File is valid, and was successfully uploaded.\n";
   }
   else
    {
          echo "File uploading failed.\n";
    }
   ?>



โค้ดด้านบนจะตรวจสอบเนื้อหา / ประเภทของชื่อไฟล์ ว่าเป็น GIF หรือไม่หากมีไฟล์อื่น ที่ไม่ใช่ GIF จะปรากฏ HTTP เป็น


"
   POST /upload2.php HTTP/1.1
   TE: deflate,gzip;q=0.3
   Connection: TE, close
   Host: localhost
   User-Agent: libwww-perl/5.803
   Content-Type: multipart/form-data; boundary=xYzZY
   Content-Length: 156
   --xYzZY
   Content-Disposition: form-data; name="userfile"; filename="shell.php"
   Content-Type: text/plain

"



รหัสจะตรวจสอบและเห็นว่าไม่ใช่ GIF และจะไม่อัปโหลดไป
แต่จะยังถูกอัพโหลด ได้ หาก Hacker ทำการ Uplaod 
จาก Data tamper plugin in firefox 
แม้จะมีการตรวจสอบ
"Content-Type" "image / gif" =>

แต่ Shell.php จะสามารถอัพโหลดขึ้นมาเป็นไฟล์ php ได้อยู่
ให้ทำการ เขียนโดย การตรวจสอบขนาดไฟล์รูปภาพ ดั่งโค้ดด้านล่าง


<?php
 $imageinfo = getimagesize($_FILES['userfile']['tmp_name']); //check image size
if($imageinfo['mime'] != 'image/gif' && $imageinfo['mime'] != 'image/jpeg')
{
    echo "Sorry, we only accept GIF and JPEG images\n";
    exit;
}
$uploaddir = 'uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
    echo "File is valid, and was successfully uploaded.\n";
} else {
    echo "File uploading failed.\n";
}
?>

ในตัวอย่างข้างต้น getimagesize PHP ฟังก์ชั่นส่งกลับขนาดและประเภทของการตรวจสอบภาพว่าไฟล์เป็นไฟล์รูปภาพที่ถูกต้อง
ตอนนี้เพื่อบายพาสประเภทของการตรวจสอบเราสามารถใช้โปรแกรมเช่น GIMP ไปฝังสคริปต์ PHP ภายในไฟล์รูปภาพที่ข้อมูล Binary นี้....ไฟล์จะถูกอัปโหลดเป็นที่ถูกต้อง  JPEG

   http:// <someSite> / uploads.webshel​​l.gif

  จะแสดงไฟล์รูปภาพที่เหมาะสม (แม้ว่ารหัสจะถูกฝังอยู่ในนั้น)
การตรวจสอบชื่อไฟล์

<?php
   $blacklist = array(".php", ".phtml", ".php3", ".php4");
   foreach ($blacklist as $item)
    {
         if(preg_match("/$item\$/i", $_FILES['userfile']['name']))
       {
              echo "We do not allow uploading PHP files\n";
              exit;
          }
    }
   $uploaddir = 'uploads/';
   $uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
   if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
           echo "File is valid, and was successfully uploaded.\n";
   }
   else
   {
           echo "File uploading failed.\n";
   }
?>



ในโค้ดข้างต้น
$blacklist มีส่วนขยายที่จะมีการตรวจสอบไฟล์ที่อัปโหลด
 ฟังก์ชันตรวจสอบชื่อของไฟล์ที่อัพโหลดเพื่อดูว่ามันมีข้อมูลใดในบัญชีดำ หากใช่จะแสดง MSG BOX ปรากฏ 
ขึ้นมาก็ยังถือว่าไม่ปลอดภัยอยู่ดี = ="
 สำหรับโพสนี้คงพอไว้แค่นี้ก่อน
แล้วโอกาสหน้าจะหาเคสมาเพิ่มเติมต่อนะครับ :)

เรียบเรียงโดย Ak1 - www.basic-hack.blogspot.com
Credit : http://freakyhackers.blogspot.com/2011/12/bypassing-security-and-validations-to.html

ไม่มีความคิดเห็น:

แสดงความคิดเห็น

(ไม่ต้องสมัครสมาชิก)

X [คอร์สเรียนออนไลน์] Android Application Developer vol.1