วันอังคารที่ 14 มิถุนายน พ.ศ. 2554

Hacking Web Application (ตอนที่ 1)


Hacking Web Application (ตอนที่ 1)
by A.Pinya Hom-anekCISSP,CISA
ACIS Professional Team
E-mail: 
พูดถึง "Web" ในวันนี้ ไม่มีใครไม่รู้จัก "World Wide Web" หรือ "www" เพราะการค้นหาข้อมูลในการทำงานโดยเฉพาะคน IT นั้นจะปฏิเสธไม่ได้เลยว่าจำเป็นต้อง "เข้าWeb" เป็นประจำแทบทุกวัน ยกตัวอย่าง ตัวผมเองนั้นเข้า Web ของ "google.com" จนเรียกได้ว่าวันไหนถ้า Web google เข้าไม่ได้ ผมคงต้องรู้สึกหงุดหงิดและมีผลกับการทำงานพอสมควรเลยทีเดียว

สำหรับองค์กรในยุค ICT นี้ทุกบริษัทล้วนมี Web Site เป็นของตนเองแทบทั้งสิ้น ส่วนใหญ่เพื่อแสดงข้อมูลที่เปิดเผยได้ต่อสาธารณะ อันได้แก่ ข้อมูลผลิตภัณฑ์สินค้า แผนที่ เบอร์โทรศัพท์ ตลอดจนกิจกรรมต่างๆ ที่ต้องการเผยแพร่ซึ่งองค์กรจำเป็นต้องใช้ "Web Server" ในการจัดทำ "Web Site" โดยปกติทั่วไปแล้ว ข้อมูลจาก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/archives/2003
/06/12/june_2003_web_server_survey.html)


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





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




รูปที่2 : 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: www.oxid.it มาดักจับ password เวลาที่ user ทำการ log on เข้าสู่ Web Application ถ้า Web Server ไม่ได้ใช้ SSL (Secure Socket Layer) กับ Web Server ข้อมูลที่ใช้ http ซึ่งเป็น Plain text ที่ไม่ได้รับการเข้ารหัสก็จะถูกโปรแกรม Cain ตรวจจับได้อย่างง่ายดาย (ดูรูปที่ 3)




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

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




จาก : หนังสือ eLeaderThailand
ฉบับที่173 ประจำเดือนกรกฎาคม 2546
Update Information : 17 กรกฎาคม 2546

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

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