ARBITRARY FILE UPLOAD#1

ARBITRARY FILE UPLOAD#1
มีเว็บไซด์มากมายที่มี feature ให้ user สามารถ upload ขึ้นไปบนเว็บไซต์เพื่อจะนำไปใช้ในด้านต่างๆ ไม่ว่าจะเป็น การ upload รูปภาพสำหรับการเปลี่ยน avatar ของ user ของ user, การ upload ไฟล์เพื่อแชร์ในห้องแชท และอีกหลากหลาย use case ซึ่งมีเว็บไซด์จำนวนมากที่ไม่มีการตรวจสอบลักษณะของไฟล์ที่ user ทำการ upload ว่าเป็นไฟล์ธรรมดาหรือว่าไฟล์อันตราย ทำให้ Attacker สามารถ upload webshell ขึ้นไปยังเว็บไซด์เพื่อสั่งการเครื่องได้นั่นเอง
ยกตัวอย่าง source code ของ PHP เป็นดังนี้
<?php

if( isset( $_POST[ 'Upload' ] ) ) {
 $target_path  = "uploads/";
 $target_path .= basename( $_FILES[ 'uploaded' ][ 'name' ] );
 if(move_uploaded_file( $_FILES[ 'uploaded' ][ 'tmp_name' ], $target_path ) ) {
  $html .= "<pre>{$target_path} successfully uploaded!</pre>";
 }
 else
 {
  $html .= "<pre>Your image was not uploaded.</pre>";
 }
}

?>
จากโค๊ดตัวอย่างนี้จะเห็นว่า upload มาแล้ว save ได้มั้ย ไม่มีการตรวจสอบ file แต่อย่างใด ดังนั้นการ upload file นี้จะกลายเป็นว่า Attacker สามารถ upload webshell ขึ้นไปได้

Comments

Popular Posts