Web Application

Common Myth: "Basic authentication is insecure."

กระบวนการทำงานของ HTTP Basic Authentication นั้นข้อมูลที่ใช้ในการพิสูจน์ตัวตน(Authentication) ซึ่งได้แก่ ชื่อผู้ใช้ (user name) กับ รหัสผ่าน (password) ไม่ได้ถูกเข้ารหัส ก่อนที่จะส่งกลับไปยังเครื่องเซิร์ฟเวอร์ด้วย HTTP Request. ดังนั้นจึงมักมีคำกล่าวอยู่เสมอ ๆ ว่าวิธีการพิสูจน์ตัวตน(Authentication) วิธีนี้นั้นไม่ปลอดภัยและไม่สมควรใช้ ซึ่งในความเป็นจริงแล้ว Form-based Authentication ซึ่งเป็นวิธีการพิสูจน์ตัวตนที่ใช้กันอยู่ทั่วไปในเว็บไซต์ส่วนใหญ่รวมไปถึงเว็บไซต์ธนาคาร หลาย ๆ แห่ง นั้นก็ส่งข้อมูลชื่อผู้ใช้ (user name) กับ รหัสผ่าน (password) ไปกับ HTTP Request โดยที่ไม่ได้เข้ารหัสเช่นเดียวกัน

A Hacker's Diary ตอน หาช่องโหว่ของด้วย Nikto


คำเตือน: สิ่งที่ท่านจะได้อ่านต่อไปนี้เป็นเพียงเหตุการณ์สมมติเท่านั้น และผู้เขียนไม่ได้มีเจตนาที่จะเผยแพร่ความรู้เพื่อนำใช้ในทางที่ผิด หากมีผู้ใดนำไปความรู้จากบทความนี้ไปประยุกต์ใช้ในทางที่ผิด หรือกระทำการใด ๆ ที่ผิดกฎหมาย หรือ ศีลธรรม ทางผู้เขียนไม่ขอรับผิดชอบใด ๆ ทั้งสิ้น

หลังจากที่ห่างหายไปนานเกือบสามอาทิตย์ เนื่องจากการเดินทางไปอินเดีย และ ได้รับเชื้อหวัดกลับมาเป็นของฝาก ในที่สุดผมก็เพิ่งจะกลับมามีแรงเขียนก็วันนี้แหละครับ แม้ว่าจะเขียนไป ไอ โคลก ๆ ไปก็ตาม ฉะนั้นผมขออนุญาตเขียนอะไรสั้น ๆ นะครับ วันนี้ผมเลยจะมาแนะนำเครื่องมือในการแฮก อ้อไม่ใช่ครับ ขอเรียกว่า security tool ที่ผมใช้ประจำละกันครับ ซึ่งไอ้เจ้า tool นี่มีชื่อว่า Nikto

A Hacker's Diary ตอน SQL Injection ภาคต่อ


คำเตือน: สิ่งที่ท่านจะได้อ่านต่อไปนี้เป็นเพียงเหตุการณ์สมมติเท่านั้น และผู้เขียนไม่ได้มีเจตนาที่จะเผยแพร่ความรู้เพื่อนำใช้ในทางที่ผิด หากมีผู้ใดนำไปความรู้จากบทความนี้ไปประยุกต์ใช้ในทางที่ผิด หรือกระทำการใด ๆ ที่ผิดกฎหมาย หรือ ศีลธรรม ทางผู้เขียนไม่ขอรับผิดชอบใด ๆ ทั้งสิ้น

ความเดิมจากตอนที่แล้ว หลังจากที่ผมใช้ 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 เหล่านี้นี่เอง โดยอันดับแรกที่ผมจะทำก็คือการแจกแจงดูว่าในฐานข้อมูลนี้มีตารางอะไรบ้าง และในแต่ละตารางมีฟิลด์อะไรบ้าง มาเริ่มกันเลยดีกว่าครับ

A Hacker's Diary ตอน SQL Injection


คำเตือน: สิ่งที่ท่านจะได้อ่านต่อไปนี้เป็นเพียงเหตุการณ์สมมติเท่านั้น และผู้เขียนไม่ได้มีเจตนาที่จะเผยแพร่ความรู้เพื่อนำใช้ในทางที่ผิด หากมีผู้ใดนำไปความรู้จากบทความนี้ไปประยุกต์ใช้ในทางที่ผิด หรือกระทำการใด ๆ ที่ผิดกฎหมาย หรือ ศีลธรรม ทางผู้เขียนไม่ขอรับผิดชอบใด ๆ ทั้งสิ้น

วันนี้ก็เหมือนกับทุก ๆ วันผมตื่นมาอาบน้ำแต่งตัวกินข้าวเช้าเสร็จแล้วไม่มีอะไรทำก็เข้ามาท่องเน็ตตามปกติ พอดีนึกขึ้นได้ว่าอยากได้หนังสืออยู่เล่มหนึ่งชื่อว่า "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 ก็ไม่ใช่เป็นเรื่องที่ยากเย็นอะไร แต่ผลลัพท์ที่ได้นั่นรุนแรงทีดียว ปัญหาก็คือโปรแกรมเมอร์มือใหม่ส่วนใหญ่ไม่รู้ด้วยซ้ำว่า SQL Injection คืออะไร?

เรียนรู้ Web Application Security แบบสนุก ๆ ด้วย WebGoat

WebGoat คืออะไร?

WebGoat คือ J2EE เว็บแอพพลิเคชั่นที่ถูกเขียนใ้ห้มีช่องโหว่ที่มักพบบ่อยๆ เพื่อใช้เป็นแบบฝึกหัดในการศึกษาเกี่ยวกับความปลอดภัยบนเว็บแอพพลิเคชั่น โดยมี Open Web Application Security Project (OWASP) เป็นผู้ดูแลโครงการ โปรแกรม WebGoat จะประกอบด้วยบทเรียนที่เกี่ยวกับช่องโหว่ต่าง ๆ ที่พบบ่อยในเว็บแอพพลิเคชั่น ซึ่งผู้ใช้โปรแกรม WebGoat จะต้องศึกษาหัวข้อนั้น ๆให้เข้าใจอย่างถ่องแ้ท้เพื่อที่จะโจมตี WebGoat ด้วยวิธีนั้น ๆได้ จึงจะผ่านบทเรียนดังกล่าว

ญาณรักข์ วรรณสาย
Syndicate content