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
Post a Comment