Security
ต่อไปนี้เป็นความคิดเห็นส่วนตัวของผมนะครับ ที่ผมเขียน blog entry นี้เพราะว่าหลาย ๆ ครั้งที่ผมเห็นคนถกเถียงกันแทบเป็นแทบตายตอนเลือก OS สำหรับเครื่องเซิร์ฟเวอร์ที่ไม่ต้องการให้แฮกเกอร์บุกรุกได้เช่น อย่าใช้ Windows เลยใช้ Linux ปลอดภัยกว่า หรือ Linux มันยังไม่ค่อยปลอดภัยต้องใช้พวก BSD หรือแม้กระทั่ง FreeBSD ก็ยังไม่ปลอดภัย ต้อง OpenBSDสิ ถึงจะปลอดภัยที่สุด |
|||
กระบวนการทำงานของ HTTP Basic Authentication นั้นข้อมูลที่ใช้ในการพิสูจน์ตัวตน(Authentication) ซึ่งได้แก่ ชื่อผู้ใช้ (user name) กับ รหัสผ่าน (password) ไม่ได้ถูกเข้ารหัส ก่อนที่จะส่งกลับไปยังเครื่องเซิร์ฟเวอร์ด้วย HTTP Request. ดังนั้นจึงมักมีคำกล่าวอยู่เสมอ ๆ ว่าวิธีการพิสูจน์ตัวตน(Authentication) วิธีนี้นั้นไม่ปลอดภัยและไม่สมควรใช้ ซึ่งในความเป็นจริงแล้ว Form-based Authentication ซึ่งเป็นวิธีการพิสูจน์ตัวตนที่ใช้กันอยู่ทั่วไปในเว็บไซต์ส่วนใหญ่รวมไปถึงเว็บไซต์ธนาคาร หลาย ๆ แห่ง นั้นก็ส่งข้อมูลชื่อผู้ใช้ (user name) กับ รหัสผ่าน (password) ไปกับ HTTP Request โดยที่ไม่ได้เข้ารหัสเช่นเดียวกัน |
|||
คำเตือน: สิ่งที่ท่านจะได้อ่านต่อไปนี้เป็นเพียงเหตุการณ์สมมติเท่านั้น และผู้เขียนไม่ได้มีเจตนาที่จะเผยแพร่ความรู้เพื่อนำใช้ในทางที่ผิด หากมีผู้ใดนำไปความรู้จากบทความนี้ไปประยุกต์ใช้ในทางที่ผิด หรือกระทำการใด ๆ ที่ผิดกฎหมาย หรือ ศีลธรรม ทางผู้เขียนไม่ขอรับผิดชอบใด ๆ ทั้งสิ้น
ความเดิมจากตอนที่แล้ว หลังจากที่ผมใช้ SQL Injection เพื่อแก้ไขข้อมูลในตารางที่ชื่อว่า booklist ซึ่งเก็บข้อมูลราคาหนังสือของร้านหนังสือ buggybookstore.com แล้วก็เดินไปซื้อหนังสืออย่างสบายใจเฉิบ 555 แต่กระนั้นผมก็สามารถแก้ไขข้อมูลได้เพียงแค่ตารางเดียว วันนี้ผมจะมาเปิดเผยเวทย์มนต์ของเหล่าแฮกเกอร์ที่ใช้ SQL Injection ในการล้วงข้อมูลสำคัญอื่น ๆ ที่อยู่ในฐานข้อมูล หรือแม้กระทั่งเรียกใช้คำสั่งของระบบปฎิบัติการ วิธีที่ผมจะนำเสนอต่อไปนี้ใช้ได้กับเฉพาะ MS SQL Server เท่านั้นนะครับ ถ้าเป็นระบบฐานข้อมูลอื่นก็ลองพลิกแพลงเอาเองนะครับ ในระบบ ฐานข้อมูลที่เด่น ๆ เช่น Oracle, MS-SQL, PostgreSQL จะมีการเก็บ metadata ของฐานข้อมูลไว้ด้วย metadata เหล่านี้ก็ได้แก่ชื่อตารางพร้อมทั้งฟิลด์ของตารางนั้น ๆ ที่อยู่ในระบบฐานข้อมูล, ชื่อฐานข้อมูล, version เป็นต้น ซึ่งข้อมูล metadata เหล่านี้ช่วยเราได้มากในการเจาะระบบในขั้นต่อ ๆ ไป มาเริ่มกันเลยดีกว่าครับ หลังจากที่ผมแก้ข้อมูลราคาได้แล้วก็ยังไม่หนำใจครับ ผมอยากจะทราบว่าในระบบฐานข้อมูลของ buggybookstore.com นั้นมีตารางชื่ออะไรบ้าง จากตอนที่แล้วผมได้แสดงให้เห็นว่าการแสดง Error Message อันไม่พึงประสงค์นั้นอันตรายแค่ไหน ผมก็โจมตีตรงจุดนั้นต่อครับ เพื่อใช้ประโยชน์จาก ODBC Error Messages ให้มากที่สุดครับ คือให้ Error Message แสดงข้อมูล Meta Data เหล่านี้นี่เอง โดยอันดับแรกที่ผมจะทำก็คือการแจกแจงดูว่าในฐานข้อมูลนี้มีตารางอะไรบ้าง และในแต่ละตารางมีฟิลด์อะไรบ้าง มาเริ่มกันเลยดีกว่าครับ |
|||
คำเตือน: สิ่งที่ท่านจะได้อ่านต่อไปนี้เป็นเพียงเหตุการณ์สมมติเท่านั้น และผู้เขียนไม่ได้มีเจตนาที่จะเผยแพร่ความรู้เพื่อนำใช้ในทางที่ผิด หากมีผู้ใดนำไปความรู้จากบทความนี้ไปประยุกต์ใช้ในทางที่ผิด หรือกระทำการใด ๆ ที่ผิดกฎหมาย หรือ ศีลธรรม ทางผู้เขียนไม่ขอรับผิดชอบใด ๆ ทั้งสิ้น
วันนี้ก็เหมือนกับทุก ๆ วันผมตื่นมาอาบน้ำแต่งตัวกินข้าวเช้าเสร็จแล้วไม่มีอะไรทำก็เข้ามาท่องเน็ตตามปกติ พอดีนึกขึ้นได้ว่าอยากได้หนังสืออยู่เล่มหนึ่งชื่อว่า "The Web Application Hacker's Handbook: Discovering and Exploiting Security Flaws" ผมจึงเ้ข้าไปที่เว็บไซต์ของร้านหนังสือที่ผมซื้อหนังสือเป็นประจำ คือ www.buggybookstore.com ผมก็คลิก ไปเรื่อย ๆ จนถึงหนังสือที่ผมต้องการซื้อซึ่ง URL ของหน้าที่แสดงข้อมูลของหนังสือเล่มดังกล่าวเป็นดังนี้
http://www.buggybookstore.com/cgi-bin/description.asp?isbn=0470170778
เมื่อเข้าไปดูหนังสือที่อยากได้แต่ผมถึงกับช็อก เพราะว่าหนังสือเล่มนี้ทำไมแพงจัง ราคาตั้ง 1800 บาท ในที่สุดจิตใจด้านมืดของผมก็เข้าครอบงำผมต้องหาทางลดราคาหนังสือเล่มนี้ให้ได้ และแล้วการเปิดศึกระหว่างผมและเว็บแอพพลิเคชั่นของเว็บไซต์ buggybookstore.com ก็เริ่มขึ้น... |
|||
ในปัจจุบันที่ระบบฐานข้อมูลเป็นหัวใจสำคัญในการเก็บข้อมูลต่าง ๆ ของเว็บไซต์ ช่องโหว่หนึ่งที่แฮกเกอร์มักใช้ในการโจมตีเว็บไซต์เหล่านี้ก็คือการทำ SQL Injection การโจมตีด้วยวิธีดังกล่าวแฮกเกอร์สามารถตรวจสอบว่าเว็บใด ๆ มีช่องโหว่ที่สามารถทำ SQL Injection ได้หรือไม่ได้อย่างง่ายดายและการโจมตีด้วย SQL Injection ก็ไม่ใช่เป็นเรื่องที่ยากเย็นอะไร แต่ผลลัพท์ที่ได้นั่นรุนแรงทีดียว ปัญหาก็คือโปรแกรมเมอร์มือใหม่ส่วนใหญ่ไม่รู้ด้วยซ้ำว่า SQL Injection คืออะไร? |
|||
WebGoat คืออะไร? WebGoat คือ J2EE เว็บแอพพลิเคชั่นที่ถูกเขียนใ้ห้มีช่องโหว่ที่มักพบบ่อยๆ เพื่อใช้เป็นแบบฝึกหัดในการศึกษาเกี่ยวกับความปลอดภัยบนเว็บแอพพลิเคชั่น โดยมี Open Web Application Security Project (OWASP) เป็นผู้ดูแลโครงการ โปรแกรม WebGoat จะประกอบด้วยบทเรียนที่เกี่ยวกับช่องโหว่ต่าง ๆ ที่พบบ่อยในเว็บแอพพลิเคชั่น ซึ่งผู้ใช้โปรแกรม WebGoat จะต้องศึกษาหัวข้อนั้น ๆให้เข้าใจอย่างถ่องแ้ท้เพื่อที่จะโจมตี WebGoat ด้วยวิธีนั้น ๆได้ จึงจะผ่านบทเรียนดังกล่าว |
|||
Tor (The Onion Router) เป็นโอเพ่นซอร์ส ซอฟต์แวร์ที่ใช้ในการเพิ่มความปลอดภัยและความเป็นส่วนตัวให้กับผู้ใช้อินเตอร์เน็ต โดยจะป้องกันผู้ใช้การทำ Traffic Analysis (การวิเคราะห์ว่าใครติดต่อกับใครในอินเตอร์เน็ต) โดยเริ่มแรกนั้น Tor ได้รับการสนับสนุนจาก US Naval Research Laboratory แต่ภายหลัง Electronic Frontier Foundation (EFF) ได้เช้ามาทำหน้าที่สนับสนุนแทน Tor ทำงานโดยการติดตั้งโปรแกรม Tor Client บนเครื่องของผู้ใช้ซึ่งโปรแกรมดังกล่าวจะทำหน้าที่เป็น SOCKS Server ให้กับเว็บบราวเซอร์ หรือโปรแกรมที่ทำงานบน TCP/IP อื่น ๆ เพื่อส่งข้อมูลผ่าน SOCKS Server |
|||
Cross-site Scripting (XSS) ก็เป็นอีกเทคนิคที่ แฮกเกอร์ชอบใช้เป็นประจำ โดยแฮกเกอร์ใช้ web application เพื่อส่ง client-side script เช่น Javascript เป็นต้นไปทำงานที่เว็บบราวเซอร์ของเหยื่อเพื่อทำงานตามที่แฮกเกอร์ ต้องการ |
|||
|
|