Thursday, June 10, 2010

Web Attack Simulation ด้วย WebGoat

WebGoat เป็นระบบเรียนรู้การโจมตีเว็บเซอร์ฟเวอร์สำเร็จรูป (บน Tomcat) เขียนด้วยจาวา เพื่อใช้สำหรับการศึกษาการโจมตีเว็บแอ็พพลิเคชั่นบนเว็บเซอร์ฟเวอร์

การติดตั้ง (บน Ubuntu 8)
  1. ดาวน์โหลดจาวา JDK (ใช้คำสั่ง wget http://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/VerifyItem-Start/jdk-1_5_0_22-linux-i586.bin?BundledLineItemUUID=lf6J_hCwKPUAAAEpN4kOxSTv&OrderID=MaKJ_hCwBrkAAAEpJIkOxSTv&ProductID=EW5IBe.nXqsAAAEk2Q5UGl.X&FileName=/jdk-1_5_0_22-linux-i586.bin หรือดาวน์โหลดด้วยบราวเซอร์) ต้องใช้เวอร์ชั่น 1.6 ถ้าใช้ 1.5 ตามที่บอกไว้ใน readme.txt เดิมจะรันได้เฉพาะทอมแค็ท
  2. ไปที่ไดเร็กทอรี่ที่ดาวน์โหลดมา (ในที่นี้ /usr/local/) ติดตั้ง JDK ด้วยคำสั่ง sh ./jdk-6u20-linux-i586.bin แล้วตอบ yes เพื่อติดตั้ง jdk จะได้ไดเร็กทอรี่ /usr/local/jdk1.6.0_20
  3. ดาวน์โหลด WebGoat 5.2 (ใช้คำสั่ง wget http://sourceforge.net/projects/owasp/files/WebGoat/WebGoat%205.2/WebGoat-OWASP_Standard-5.2.zip/download) สมมุติว่าไฟล์นี้อยู่ที่ /root/download/WebGoat-OWASP_Standard-5.2.zip
  4. เมื่อได้ไฟล์แล้วย้ายไปที่ไดเร็กทอรี่ /root แตกไฟล์ออกด้วยคำสั่ง unzip /root/download/WebGoat-OWASP_Standard-5.2.zip ก็จะได้ไดเร็กทอรี่ /root/WebGoat-5.2 ซึ่งมีทอมแค็ทเว็บเซอร์ฟเวอร์ในตัวและมี webgoat
  5. จากนั้นแก้ไขไฟล์ /root/WebGoat-5.2/webgoat.sh ให้มีบรรทัดนี้ JAVA_HOME="/usr/local/jdk1.6.0_20" และอีกบรรทัด export JAVA_HOME หรือพิมพ์ใน shell ว่า export JAVA_HOME="/usr/local/jdk1.6.0_20"
  6. ภายใต้ไดเร็กทอรี่ /root/WebGoat-5.2 เริ่มรัน WebGoat ด้วยคำสั่ง sh ./webgoat.sh start8080 (ในที่นี้ผมมี Apache รันอยู่แล้วที่พอร์ต 80 จึงหลีกเลี่ยงให้ใช้พอร์ต 8080 แทน)
  7. ทดสอบด้วยการเปิดเว็บไปที่ http://localhost:8080/WebGoat/attack แล้วล็อกอินด้วยผู้ใช้ guest และรหัสผ่าน guest
การตั้งค่าให้ให้สามารถเข้าใช้ WebGoat ได้จากเครื่องอื่น
ค่า default ของการติดตั้งจะให้เฉพาะเครื่องที่รัน WebGoat เท่านั้นที่จะสามารถเข้าใช้เว็บนี้ได้ หากต้องการให้เครื่องอื่นสามารถเข้าใช้ได้ (เช่น ให้นักศึกษาเข้าทดสอบการใช้งาน) ต้องแก้ไขไฟล์ /root/WebGoat-5.2/tomcat/conf/server_8080.xml ตามขั้นตอนดังนี้
  1. รันคำสั่ง ifconfig เพื่อหาหมายเลขไอพีของเครื่อง (ในที่นี้สมมุติให้เป็น 10.134.68.11)
  2. ใช้ nano หรือ vi แก้ไขไฟล์ /root/WebGoat-5.2/tomcat/conf/server_8080.xml แก้หมายเลขไอพี 127.0.0.1 ทั้งหมดให้เป็น 10.134.68.11
  3. บันทึกไฟล์นี้ แล้ว restart WebGoat ใหม่
  4. เข้าสู่เว็บด้วย URL: http://10.134.68.11:8080/WebGoat/attack

การรัน
  1. เป็น root หรือ superuser
  2. เข้าไปที่ไดเร็กทอรี่ /root/WebG0at-5.2
  3. รันคำสั่ง sh ./webgoat.sh start8080
  4. ล็อกอินด้วยผู้ใช้ guest และรหัสผ่าน guest
การใช้งานเบื้องต้น
ล็อกอินไปที่เครื่องด้วยผู้ใช้ guest และรหัสผ่าน guest เมนูด้านซ้ายเป็นรายการของบทเรียน ซึ่งเมื่อคลิกที่เมนูแล้วจะแตกเป็นบทเรียนย่อยอีกชั้นหนึ่ง บทเรียนใดที่ได้ผ่านแล้วจะมีเครื่องหมายถูกกาไว้ข้างหน้า แท็บด้านบนจะเป็นเมูนสำหรับแต่ละบทเรียน ซึ่งผู้ใช้สามารถขอดู คำแนะนำ (hint) ดูเฉลย ดูแผนบทเรียน ได้ตามต้องการ

การสร้าง user
ผู้ใช้ของ WebGoat บริหารจัดการผ่านไฟล์ tomcat/conf/tomcat-users.xml หากต้องการเพิ่มผู้ใช้ให้แก้ไขไฟล์ xml นี้

บทเรียนออนไลน์เพิ่มเติมสำหรับ WebGoat
  1. Web Attack Simulation WalkThrough series, by Yehg

References: