หน้าเว็บ

วันพุธที่ 6 มิถุนายน พ.ศ. 2555

ปิด Functions อันตรายใน PHP.




          สวัสดีครับ ห่างหายไปนานกับการเขียนบล๊อกเนื่องจากช่วงปิดเทอมแล้วเพิ่งเปิดเทอมก็มาอยู่หอแล้วตอนนี้ :) เข้่าเรื่องดีกว่า เรื่องของเรื่องคือผมอ่านทวิตเตอร์อยู่แล้วไปเจอ ลิงค์นี้ PHP Shell Detector – web shell detection tool สคริปนี้เป็น Tool ที่ใช้ตรวจสอบและค้นหา php shell ครับผมเลยลองเปิดไฟล์หลักดูพบกับโค้ด..
private $_regex = '%(preg_replace.*\/e|\bpassthru\b|\bshell_exec\b|\bexec\b|\bbase64_decode\b|\beval\b|\bsystem\b|\bproc_open\b|\bpopen\b|\bcurl_exec\b|\bcurl_multi_exec\b|\bparse_ini_file\b|\bshow_source\b)%'; //system: regex for detect Suspicious behavior

          ผมก็เลยสดุดตาว่าพวกนี้เป็นฟังก์ชั่นของ php ที่อันตรายสคริปนี้ดักไว้หมดเลยนี่หว่า :O เลยจับมาเขียนบทความซะหน่อยว่าควรจะปิดฟังก์ชั่นไหนอย่างไร

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

- ทำไมต้องทำ ?
          ปิดการใช้งานฟังก์ชั่นอันตรายจะทำให้การโจมตีนั้นยากยิ่งขึ้นและเพิ่มประสิทธิภาพของเว็บในการเสี่ยงที่จะโดนแฮกได้ ซึ่งการโจมตีที่พบมากนั้นคือช่องโหว่ Upload File นั้นเองซึ่งจะสามารถอัพโหลดสคริปอันตรายที่มีฟังก์ชั่นอันตรายเข้ามาใน server และโจมตี server ได้เราจึงต้องปิดฟังก์ชั่นอันตรายของ php เพื่อทำให้สคริปนั้นใช้งานไม่ได้หรือใช้งานได้ยากขึ้นนั้นเอง..

- ทำอย่างไร ?
          ขั้นแรก list รายชื่อฟังก์ชั่นที่อันตรายซึ้งมีดังนี้ (ซึ่งอาจมีมากกว่านี้ ดูที่ Ref )..
eval
system
exec
shell_exec
passthru
popen
proc_open
parse_ini_file
show_source
symlink
curl_exec
curl_multi_exec
          ขั้นที่สอง ปิดการใช้งานฟังก์ชั่นนั้นๆที่ไฟล์ php.ini ครับซึ่ง php.ini นั้นใน windows จะอยู่ที่..
C:\Windows\php.ini
(แล้วแต่การ config path)
         และใน linux จะอยู่ที่...
/etc/php5/apache2/php.ini
/usr/local/lib/php.ini
(แล้วแต่การ config path)
         ให้ค้นหา "disable_functions" ในไฟล์ php แล้วเพิ่มชื่อฟังก์ชั่นที่ต้องการจะปิดเข้าไปครับเช่นตัวอย่าง..
disable_functions =eval,exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
          เมื่อเสร็จแล้วก็ทำการ Save ไฟล์ php.ini แล้ว Restart Web Server เป็นอันเสร็จครับ หรือถ้าเลี่ยงไม่ได้ที่จะต้องใช้ควรกรอง input ด้วยฟังก์ชั่น escapeshellarg() เพื่อป้องกันการใช้คำสั่งอันตรายครับ..
          ขอจบบทความเพียงเท่านี้ ขอบคุณที่อ่านจนจบครับผม ,, ICheer_No0M

Ref : http://web.securityinnovation.com/appsec-weekly/blog/bid/79067/Disable-Dangerous-Functions-in-PHP
http://blog.eukhost.com/webhosting/dangerous-php-functions-must-be-disabled/

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

โพสต์ความคิดเห็น