วันอังคารที่ 31 พฤษภาคม พ.ศ. 2554

Hacking Web Application

Hacking Web Application

พูด ถึง "Web" ในวันนี้ ไม่มีใครไม่รู้จัก "World Wide Web" หรือ "www" เพราะการค้นหาข้อมูลในการทำงานโดยเฉพาะคน IT นั้นจะปฏิเสธไม่ได้เลยว่าจำเป็นต้อง "เข้าWeb" เป็นประจำแทบทุกวัน ยกตัวอย่าง ตัวผมเองนั้นเข้า Web ของ "google.com" จนเรียกได้ว่าวันไหนถ้า Web google เข้าไม่ได้ ผมคงต้องรู้สึกหงุดหงิดและมีผลกับการทำงานพอสมควรเลยทีเดียว

สำหรับ องค์กรในยุค ICT นี้ทุกบริษัทล้วนมี Web Site เป็นของตนเองแทบทั้งสิ้น ส่วนใหญ่เพื่อแสดงข้อมูลที่เปิดเผยได้ต่อสาธารณะ อันได้แก่ ข้อมูลผลิตภัณฑ์สินค้า แผนที่ เบอร์โทรศัพท์ ตลอดจนกิจกรรมต่างๆ ที่ต้องการเผยแพร่ซึ่งองค์กรจำเป็นต้องใช้ "Web Server" ในการจัดทำ "Web Site" โดยปกติทั่วไปแล้ว ข้อมูลจาก http://www.netcraft.com/ ได้รายงานว่า web site ทั่วโลกมีถึงกว่า 40 ล้าน web site ซึ่ง 66.52 % ใช้ Apache (Open Source) เป็น web server และ 24.64 % ใช้ IIS ของ Microsoft เป็น web server

( http://news.netcraft.com/archive ... _server_survey.html )

จาก ข้อมูลใน web site นี้ Hacker สามารถค้นประวัติของ web site เราได้ว่าเคยใช้ web server อะไร และมีการปรับปรุงเปลี่ยนแปลงเช่น Upgrade version หรือลง Patch อะไรบ้าง โดยสามารถ search จาก http://www.netcraft.com/ ได้โดยใส่ชื่อ web site ที่ต้องการค้นข้อมูลลงไป

            ตัวอย่างการค้นหาประวัติของเว็บไซต์ใน http://www.netcraft.com/
ที่กลาย เป็นแหล่งข้อมูลอย่างดีให้กับแฮกเกอร์ ข้อมูล Version ของ Web Server เช่น Module ต่างๆ ที่เราใช้ จะทำให้ Hacker รู้ข้อมูลที่สามารถนำไปค้นหาช่องโหว่ (Vulnerability) ของโปรแกรมที่เราใช้อยู่ จากนั้น Hacker จะหา "โปรแกรมเจาะช่องโหว่" ที่ในหมู่ Hacker เรียกว่า "Exploit" เพื่อนำมาลองใช้ในการเจาะเข้าสู่ web site ของเรา ปกติแล้ว Hacker มักนิยมไปค้นหาที่ http://packetstormsecurity.nl/ ซึ่งจะมีโปรแกรมจำพวก "Exploit" อยู่มากพอที่ Hacker จะนำไปใช้เจาะระบบ

             http://packetstormsecurity.nl/ เว็บไซต์หากินของเหล่าแฮกเกอร์
ซึ่งมีเครื่องมือเจาะระบบมากมายให้เลือก ใช้ หาก Hacker ไม่สามารถเจาะผ่าน Port 80 (http) หรือ port 443 (https) โดยใช้ Exploit ตรงๆ ได้ hacker ก็จะใช้เทคนิคอื่นในการเจาะ web site ซึ่งได้แก่เทคนิค Cross-Site Scripting (XSS), SQL Injection, Parameter Tampering, Hidden Manipulation, Plain Text Attack หรือ Cookie Poisoning เช่น Parameter Tampering ทำให้เกิด error ขึ้นบนหน้าจอของ Web Browser ในบางที่เราสามารถเห็นถึง Source Code ที่หลุดออกมาจาก error message ที่เกิดขึ้น ทำให้พาไปถึงการ Hack ระบบได้ในที่สุด

เทคนิคการเจาะ Web Application นั้น มีอยู่หลายวิธี ส่วนใหญ่แล้ว Hacker จะรู้ว่าเราใช้ Platform ของ Microsoft (Web Server คือ IIS) หรือของค่าย UNIX/ Linux (Web Server คือ Apache httpd) ถ้าหาก Hacker เจาะตัว Web Server ไม่ได้ Hacker จะหาวิธีอื่นในการเจาะ โดยปกติแล้วก็จะดูไปถึงภาษา Script ที่เรานำมาเขียน Code ใช้งาน ซึ่ง Script เหล่านี้ล้วนมีช่องโหว่แทบทั้งสิ้นไม่ว่าจะเป็น ASP, PHP หรือ JSP เราจึงจำเป็นต้องมีการตรวจสอบ Source Code เสียก่อนที่จะนำมาใช้งาน ซึ่งต้องใช้เวลาพอสมควร และ เราควรลองใส่ Parameter แปลกๆ ลงในช่อง URL เพื่อลองดูว่าหากมีการเปลี่ยนแปลงค่า Parameter จะทำให้ระบบมีปัญหาหรือไม่ (Parameter Tampering)

เทคนิค ที่ Hacker นิยมก็คือการทำ SQL Injection เนื่องจากเมื่อเวลาเราต้องการที่จะ Login (Authentication) เข้าสู่ web site ทาง Web Server จะถาม "Username" และ "Password" ของเรา เมื่อเราใส่ Username และ password แล้ว Browser ก็จะนำข้อมูลไป check กับฐานข้อมูลในลักษณะ select * from table where user_name = "username" จากการที่เราใช้ "where clause" ในการเขียน web application เพื่อการค้นข้อมูลของ user ซึ่งในการเขียนโปรแกรมนี้จะดูง่าย แต่ในทางมุมมองของ Hacker นั้น Hacker จะใช้ วิธีใส่ SQL command แปลกๆ เพิ่มเติมเข้ามาใน SQL Query เพื่อดึงข้อมูลที่ Hacker ต้องการออกมาจาก Web Site ของเรา

Hacker สามารถใช้โปรแกรมประเภท Sniffer ในการตรวจจับข้อมูล User name และ password เช่นโปรแกรม Cain จาก Web Site: http://www.oxid.it/ มาดักจับ password เวลาที่ user ทำการ log on เข้าสู่ Web Application ถ้า Web Server ไม่ได้ใช้ SSL (Secure Socket Layer) กับ Web Server ข้อมูลที่ใช้ http ซึ่งเป็น Plain text ที่ไม่ได้รับการเข้ารหัสก็จะถูกโปรแกรม Cain ตรวจจับได้อย่างง่ายดาย

             โปรแกรม Cain ซึ่งเป็นโปรแกรมประเภท Sniffer
ที่สามารถตรวจจับข้อมูลยูสเซอร์ เนมและพาสส์เวิร์ดได้ดังนั้น เพื่อเป็นการป้องกันไม่ให้ Hacker เข้ามา "sniff" แอบดู username และ password ของเรา เราควรทำการ "Encrypt" หรือ "เข้ารหัส" ข้อมูลโดยใช้ SSL กับ Web Server ให้วิ่งเป็น "https:" แทนที่จะวิ่งเป็น "http:" ธรรมดา เป็นต้น

การใช้งาน SSL Protocol สามารถป้องกันข้อมูลไม่ให้ถูกแอบ sniff ได้ในระดับหนึ่งแต่ไม่สามารถป้องกันการ Hack แบบที่ใช้ Exploit ยิงเข้ามาโดยตรง เนื่องจากระบบของเรามี "Known Vulnerabilities" ดังนั้น เราควรทำการ "Patch" หรือ "Fix" Web Server ของเราอย่างสม่ำเสมอด้วยนะครับ



*แนะ นำ: อยากแนะนำเว็บนึงซึ่งให้เราเล่นเป็น Hacker เก็บแต้มนะครับ ช่วยได้มากทำให้เรารู้ถึงช่องทางในการ Hack มากขึ้นและจะรู้วิธีป้องกันการ Hack ได้มาก

เว็บไทย: http://try2hack.siamdev.net/
Italy: http://www.try2hack.lt/en/


จาก เวป http://www.ohocode.com/

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

แสดงความคิดเห็น