Table of Contents
PHP2Shell คือ อะไร
php2shell เป็นชื่อ write-up ทาง Calif Research ร่วมการใช้ AI ของทาง OpenAI โดยคุณ Ryan Austin ที่เล่าเรื่อง ช่องโหว่ PHP RCE 2 ตัว ได้แก่ เจ้า CVE-2026-109618 และ CVE-2026-109619 ซึ่งมันเป็น Bug ค้างมาหลาย 10 ปี แล้วมันทำผลเยอะด้วย โดยมันสามารถทำให้ตัว memory server เต็ม ระบบทำงานผิดพลาด จนผู้โจมตีสามารถส่งคำสั่งพิเศาเพื่อสร้าวความเสียหาย หรือ ไปหลอกล่อเอาข้อมูลออกมาก็ได้
แนวทางการเอาตัวรอดหละ ชั่วคราวนะ
📌 ปิด session upload progress (ใช้กับ PHP-FPM) session.upload_progress.enabled=0
📌 ตั้ง memory_limit=-1 (ใช้ทั้ง mod_php และ PHP-FPM) และอย่าใช้ RLIMIT_AS / RLIMIT_DATA ของ OS เพราะทำให้ memory เต็มได้เหมือนกัน แต่วิธีนี้มีข้อควรระวังนะ
ไม่มี Limit ชีวิตเกินร้อยยย ดังนั้นต้องคุมที่ระดับ container/cgroup แทน
📌 ลดขนาด post_max_size ช่วยได้บางส่วน แต่ bypass ได้
📌 ตั้ง pm.max_requests ต่ำ ๆ (เช่น 500) เพื่อรีไซเคิล worker บ่อย ๆ
📌 จำกัดสิทธิ์ worker: ไม่รันเป็น root, ใช้ disable_functions, filesystem แบบ read-only, จำกัด outbound network
📌 ปิดการแสดง error: display_errors=0, fatal_error_backtraces=0 (จริงอันนี้ ควรซ่อนหมดนะให้ไปลง Log แทน
ถ้ามีพวก Proxy พวก Nginx / พวก WAF ตั้งกันไว้ / Load Balance เพิ่มมาตรการลงไป
📌 จำกัดขนาด request เช่น client_max_body_size 2M;
📌 ตั้ง buffer ให้เหมาะสม เช่น client_body_buffer_size, client_header_buffer_size, large_client_header_buffers
📌 Block Endpoint ไม่ให้รับ multipart เลย ในการ Upload
📌 ดู log หา multipart ที่ชื่อ field ซ้อนลึกผิดปกติ หรือ PHP worker crash ถี่ ๆ
นอกจากนี้ หาภาพรวมระบบให้เจอ แล้วดูด้วยว่า ให้เครื่อง PHP เข้าถึงฐานข้อมูลและระบบอื่นได้เท่าที่จำเป็น หรือ มันเข้าได้ทั้งหมด ตอนนี้อาจจะปรับไม่ทัน แต่หาก่อน แล้วมาปรับระยะยาว
📌 ก่อนจะแก้สุมหัวกันก่อน แล้ว Test นะ
หลายๆ อันมีคนทำ Script ไว้นะ เช่น https://github.com/HOSTED-POWER/php_uploadprogress_guard ลอง Review ก่อนใช้งาน
แนวทางการเอาตัวรอดหละ ระยะยาว
📌 Update PHP Version
| Branch | เวอร์ชันที่แก้แล้ว |
|---|---|
| PHP 8.5 | 8.5.12 |
| PHP 8.4 | 8.4.27 |
| PHP 8.3 | 8.3.36 |
| PHP 8.2 | 8.2.35 |
📌 คุมการเข้าถึงของ PHP เข้าว่าอาจจะต้องรื้อ Arch
ก่อนจะแก้สุมหัวกันก่อน แล้ว Test นะ ย้ำอีกที เพราะเคสล่าสุด แต่ตลกจิงลูกค้าธนาคาร Update RedHat แล้วพวก Podman มันต้องขยับไปด้วย แต่ไม่ได้ทดสอบ สรุปถ้า Container ที่รันมันตาย เละเลยนะ สร้างใหม่ไม่ได้ มันต้องแก้ Command นิดหน่อยและ แค่งงการสื่อสารย้ำให้ Test แต่ไป Prod เลยจ้า
เอาจริงสัปดาห์นี้มองว่าวันวินาศเลยก็ได้ เพราะมีอีกหลายตัวประกาศ CVSS แบบ ตัว GitLab เนี่ย เจอระดับไคจู 10 เต็ม เพิ่งขยับไปเสาร์ก่อนด้วย ผมว่า AI มันทำให้เราละเลยอะไรหลายๆอย่าง มันมาเยอะไว ทั้งคนสร้าง และคนเจาะเลย



