ป้ายเลื่อน


WelCom To www.Kiss-Hack.blogspot.com สังคม IT สังคม Hacker

หมวดหมู่

วันจันทร์ที่ 10 พฤศจิกายน พ.ศ. 2557

ช่องโหว่ LFD PHP Function readfile();


ช่องโหว่ PHP Function readfile(); 

 



  
  ในบทความนี้เกริ่นก่อนเลยว่าตู มั่วนิ่มในการอธิบาย 40% ตรงใหนอธิบายผิดหรือข้ามกรุณาช่วยกระซิบเบาๆที่ข้างหูผมด้วยนะ

     ไอ้ช่องโหว่นี้ เมื่อก่อนจะเห็นอยู่บ่อยๆ ในเว็บ Download ต่างๆ หรือ เว็บเอกสาร ซึ่งชื่อเทคนิคการแหกนี้ คือหนึ่งในเทคนิคของ LFI ( Local File Inclusion ) นอกจากนี้ยังมีฟังชั่น showssource() , highlight_file() ก็ใช้เปิดไฟล์ได้ ถ้ารับ user input ที่ไม่ได้ sanitize เข้าไปก็มีความเสี่ยงเกิด LFI ได้เหมือนกัน

     เมื่อก่อน (นานมาก) เคยคุยเรื่องนี้กับ AK-1 อยู่เนื่องๆ เพราะ ผมดูแล้วมันเป็นช่องโหว่ที่อันตรายมาก และ มักจะเกิดกับ เว็บที่เปิดให้ Download ไฟล์ต่างๆในเว็บ โดยที่ไม่ได้เขียน Code ให้รัดกุม จนทำให้สามารถ Download ไฟล์อื่น ที่อยู่ในเซิฟเวอร์ออกมาอ่านได้


    ไอ้ช่องโหว่นี้เกิดจากการใช้ ฟังชั่น readfile() ของ PHP ในการเขียนไฟล์สำหรับ Download ของเว็บ (นอกจากฟังช้่น readfile() แล้วก็มี อันอื่นอีก) จาก Code ในภาพ จะเห็นว่า บรรทัดที่ 3 จะกำหนด ตัวแปรที่ชื่อว่า $filename กำหนด Method เป็น GET และ Parameter ที่ชื่อว่า path ซึ่งจะสามารถรับค่า ที่จะ Download ไฟล์ออกมา (สามารถกำหนด พาธ ไฟล์ที่จะโหลดได้อย่าง ( /etc/passwd )


    ในส่วนต่างๆของโค้ดจะเป็นการกำหนด Header ให้เบราเซอร์รู้ว่าเป็นการ Downlaod อันนี้เอาไปศึกษาเองนะ (ง่วงแล้ว)  เรามาดูในส่วนสำคัญกันดีกว่า ในบรรทัดที่ 30 จะเห็นว่ามีการเรียกใช้ ฟังชั่น readfile(); ซึ่ง ฟังชั่น readfile() นี้ คล้ายๆ ฟังชั่น fopen() คือการเอาไฟล์ที่ถูกกำหนดจาก Parameter มาอ่าน หากดูใน Code ดังภาพแล้ว จะเห็นว่าฟังชั่น readfile($filename); กำหนดให้ ดึงค่าจากตัวแปร $filename ออกมาใช้ จะสามารถใช้งานเพื่อ Downlaod เอกสาร หรือ ไฟล์ต่างๆในเซิฟเวอร์ออกมาได้

การใช้งานจากช่องโหว่ Code ข้างต้น

Exploit : 127.0.0.1/load.php?path=/var/www/access.log


#จะก๊อปก็เอาเครดิตไปด้วยนะสลัด ด้วยรัก และ ฟัคยู

ที่มา : https://www.facebook.com/notes/tawan-naultang/%E0%B8%8A%E0%B9%88%E0%B8%AD%E0%B8%87%E0%B9%82%E0%B8%AB%E0%B8%A7%E0%B9%88-php-function-readfile/734494709958006