71
เครื่องมือทดสอบการเจาะระบบ Tool for Penetration test นายอานัฐชัย รังสิโรดม์โกมล สารนิพนธ์ฉบับนี้เป็นส่วนหนึ่งของการศึกษา หลักสูตรวิทยาศาสตรมหาบัณฑิต สาขาความมั่นคงทางระบบสารสนเทศ คณะวิทยาการและเทคโนโลยีสารสนเทศ มหาวิทยาลัยเทคโนโลยีมหานคร ปีการศึกษา 2558

เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

เครื่องมือทดสอบการเจาะระบบ Tool for Penetration test

นายอานัฐชัย รังสโิรดมโ์กมล

สารนพินธ์ฉบับนี้เป็นส่วนหน่ึงของการศึกษา หลักสูตรวิทยาศาสตรมหาบัณฑิต สาขาความมัน่คงทางระบบสารสนเทศ

คณะวิทยาการและเทคโนโลยีสารสนเทศ มหาวิทยาลยัเทคโนโลยมีหานคร

ปีการศึกษา 2558

Page 2: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

I

หัวข้อ เครื่องมือทดสอบเจาะระบบ Tool for Penetration test ชื่อนักศึกษา นายอานัฐชัย รังสิโรดม์โกมล รหัสนักศึกษา 5417810002 หลักสูตร วิทยาศาสตร์มหาบัณฑิต ปีการศึกษา 2558 อาจารย์ท่ีปรึกษา อาจารย์สุรการ ดวงผาสุข

บทคัดย่อ

สารนิพนธ์ฉบับนี้ได้ศึกษาเกี่ยวกับเครื่องมือการทดสอบเจาะระบบ กรณีศึกษาโดยการทดสอบการเจาะระบบของเว็บ all star shop และ try2hack.siamdev.net โดยใช้วิธีการตรวจสอบประเภท Network Mapping และ Penetration test เพ่ือศึกษาและลดช่องโหว่ของระบบที่เป็นความเสี่ยงต่อการบุกรุกจากผู้ไม่พ่ึงประสงค์ โดยใช้รูปแบบกระบวนการทดสอบเจาะระบบ คือ พอร์ตสแกน , Injection และ Cross-Site Scripting เพ่ือให้เกิดการปรับปรุงระบบให้มีความปลอดภัยที่สูงขึ้น และลดความเสี่ยงต่อทรัพย์สินขององค์กรนั้นๆ

Page 3: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

II

กิตติกรรมประกาศ

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

สุดท้ายข้าพเจ้าขอขอบพระคุณครอบครัวของข้าพเจ้าส าหรับก าลังใจที่ท าให้ข้าพเจ้าท าวิทยานิพนธ์เล่มนี้ส าเร็จไปได้ด้วยดี

อานัฐชัย รังสิโรดม์โกมล

Page 4: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

III

สารบัญ หน้า

บทคัดย่อ ........................................................................................................................................................... I กิตติกรรมประกาศ ........................................................................................................................................... II สารบัญ ........................................................................................................................................................... III สารบัญรูป ....................................................................................................................................................... V

บทที่1 บทน า (Introduction) ........................................................................................................................ 1

1.1 ความเป็นมาและความส าคัญของปัญหา ...................................................................................... 1

1.2 ปัญหาและแรงจูงใจ .................................................................................................................... 1

1.3 วัตถุประสงค์ของโครงงาน ........................................................................................................... 2

1.4 ขอบเขตของโครงงาน .................................................................................................................. 2

1.5 ภาพรวมของระบบที่จัดท า .......................................................................................................... 2

1.6 เนื้อหาของโครงงาน .................................................................................................................... 3

1.7 ประโยชน์ที่คาดว่าจะได้รับ .......................................................................................................... 3

บทที่ 2 พื้นฐานและทฤษฎีที่เกี่ยวข้อง ............................................................................................................. 4

2.1 วิธีการตรวจสอบการเจาะระบบ (Penetration testing methodology) .................................. 4

2.2 พอร์ตสแกน (Port scanning) .................................................................................................... 5

2.3 Open Web Application Security Project (OWASP) ......................................................... 12

2.4 รายละเอียดของ OWASP TOP 10 .......................................................................................... 12

2.5 Cross Site Scripting (XSS) .................................................................................................... 14

2.6 รายละเอียดประเภทของ XSS .................................................................................................. 15

2.7 SQL Injection ......................................................................................................................... 18

2.8 Blind SQL injection .............................................................................................................. 21

บทที่ 3 การด าเนินโครงงาน .......................................................................................................................... 24

3.1 ซอฟแวร์ ที่ใช้ในการพัฒนาประกอบด้วย .................................................................................. 24

3.2 ข้อก าหนดในการพัฒนา ............................................................................................................ 24

3.3 ขั้นตอนการท างานของโปรแกรม .............................................................................................. 25

บทที่ 4 ผลการทดลอง .................................................................................................................................. 39

4.1 รายละเอียดโปรแกรม ............................................................................................................... 39

4.2 ตัวอย่างผลการทดสอบด้วยโปรแกรม........................................................................................ 42

บทที่ 5 สรุปผลการด าเนินงาน ...................................................................................................................... 49

Page 5: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

IV

สารบัญ (ต่อ) หน้า

5.1 สรุปผลการทดสอบ ................................................................................................................... 49

5.2 ปัญหาที่พบเจอและแนวทางการแก้ไข ...................................................................................... 49

5.3 แนวทางการพัฒนาโปรแกรม .................................................................................................... 49

เอกสารอ้างอิง ............................................................................................................................................... 50

ภาคผนวก ..................................................................................................................................................... 51

ขั้นตอนการติดตั้ง python .............................................................................................................. 51

ขั้นตอนการติดตั้ง Nmap ................................................................................................................ 55

ขั้นตอนการติดตั้ง SQLmap ............................................................................................................ 63

Page 6: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

V

สารบัญรูป หน้า

รูปที่ 1.1 Flow การท างานโดยรวมของโปรแกรม ........................................................................................... 3

รูปที่ 2.1 การท างานของ The Vanilla หรือ TCP connect scan ................................................................. 6

รูปที่ 2.2 การท างานของ The TCP SYN (Half Open) scans หรือTCP SYN scan ..................................... 6

รูปที่ 2.3 การท างานของ TCP FIN scan ........................................................................................................ 7

รูปที่ 2.4 การท างานของ TCP NULL scan .................................................................................................... 8

รูปที่ 2.5 การท างานของ TCP ACK scan ...................................................................................................... 9

รูปที่ 2.6 การท างานของ TCP ACK scan .................................................................................................... 10

รูปที่ 2.7 การท างานของ UDP ICMP Port scanning .................................................................................. 11

รูปที่ 2.8 ตัวอย่าง XSS tag ........................................................................................................................... 15

รูปที่ 2.9 ตัวอย่าง XSS tag <body> ........................................................................................................... 15

รูปที่ 2.10 ตัวอย่าง XSS tag <table> ......................................................................................................... 16

รูปที่ 2.11 ตัวอย่าง Source code ที่มีช่องโหว่ประเภท XSS ....................................................................... 16

รูปที่ 2.12 ตัวอย่างช่องโหว่ XSS ในช่องค้นหา ............................................................................................. 16

รูปที่ 2.13 ตัวอย่างช่องโหว่ DOM-based XSS ............................................................................................ 17

รูปที่ 2.14 แสดงค าสั่ง SQL โดยพื้นฐาน ....................................................................................................... 18

รูปที่ 2.15 แสดงค าสั่งเมื่อมีการป้อนข้อมูล ................................................................................................... 18

รูปที่ 2.16 แสดงการประมวลผลจากฐานข้อมูล ............................................................................................ 19

รูปที่ 2.17 แสดงค าสั่งการรับค่าจากผู้ใช้งาน และค่าส่งไปให้ฐานข้อมูลประมวลผล ...................................... 19

รูปที่ 2.18 แสดงค าสั่งท าให้เกิดการประมวลผลเลือกค้นหา ข้อความที่ตรงกับฐานข้อมูล .............................. 20

รูปที่ 2.19 แสดงค าสั่งเมื่อมีการใส่ “name' OR 'a'='a” ............................................................................. 20

รูปที่ 2.20 แสดงค าสั่งที่ท าให้ข้อมูลที่ป้อนเข้าไปเป็นจริงเสมอ ...................................................................... 20

รูปที่ 2.21 แสดงค าสั่ง DELETE FROM items ............................................................................................. 21

รูปที่ 2.22 แสดงตัวอย่างinput URL ............................................................................................................ 21

รูปที่ 2.23 แสดงส่งค าสั่งค่าไปยังฐานข้อมูล .................................................................................................. 22

รูปที่ 2.24 แสดงค าสั่ง False ........................................................................................................................ 22

รูปที่ 2.25 แสดงค าสั่ง SQL ที่เป็น False ..................................................................................................... 22

รูปที่ 2.26 แสดงค าสั่ง Microsoft SQL Server ............................................................................................ 22

รูปที่ 2.27 แสดงค าสั่ง BENCHMARK() ......................................................................................................... 23

รูปที่ 3. 1 Flow การท างานโดยรวมของโปรแกรม ........................................................................................ 25

Page 7: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

VI

สารบัญรูป (ต่อ) หน้า

รูปที่ 3.2 Flow chart อธิบายการท างานของการสแกน ............................................................................... 27

รูปที่ 3.3 Flow chart อธิบายการท างานของการเก็บข้อมูลจากหน้าเว็บ ...................................................... 29

รูปที่ 3.4 Flow chart อธิบายการท างานของการเก็บข้อมูลที่เป็น form (1) ................................................ 30

รูปที่ 3.5 Flow chart อธิบายการท างานของการเก็บข้อมูลจากหน้าเว็บที่เป็น form (2) ............................. 31

รูปที่ 3.6 Flow chart อธิบายการท างานของการเก็บข้อมูลจากหน้าเว็บที่เป็น link (1) ............................... 32

รูปที่ 3.7 Flow chart อธิบายการท างานของการเก็บข้อมูลจากหน้าเว็บที่เป็น link (2) ............................... 33

รูปที่ 3.8 Flow chart อธิบายการท างานตรวจสอบ XSS ............................................................................ 35

รูปที่ 3.9 Flow chart อธิบายการท างานตรวจสอบ SQL injection ........................................................... 37

รูปที่ 4.1 หน้าตาหลักโปรแกรม (1) ............................................................................................................... 39

รูปที่ 4.2 หน้าตาหลักโปรแกรม (2) ............................................................................................................... 40

รูปที่ 4.3 ตัวอย่างการเลือกเทคนิคการ scan ................................................................................................ 40

รูปที่ 4.4 ตัวอย่างโปรแกรมช่อง Agent Vender .......................................................................................... 41

รูปที่ 4.5 ตัวอย่างโปรแกรมช่อง Attack ....................................................................................................... 42

รูปที่ 4.6 ตัวอย่างผลการ scan ด้วย default web ...................................................................................... 42

รูปที่ 4.7 ผลการ scan ด้วย well Known ................................................................................................... 43

รูปที่ 4.8 ผลจากโปรแกรมที่จ าลองการเข้าถึงหน้าเว็บ allstarshop ............................................................. 43

รูปที่ 4.9 ตัวอย่าง log โปรแกรมท่ีโจมตีด้วย XSS ........................................................................................ 44

รูปที่ 4.10 ผลจากโปรแกรมที่โจมตีด้วย XSS ................................................................................................ 44

รูปที่ 4.11 หน้าเว็บไซต์ http://sqlzoo.net/hack/passwd.pl ................................................................... 45

รูปที่ 4.12 ตัวอย่าง log ของโปรแกรมท่ีโจมตีด้วย SQL injection ............................................................... 45

รูปที่ 4.13 ตัวอย่างผลการโจมตีด้วย SQL injection .................................................................................... 45

รูปที่ 4.14 ตัวอย่างผลการโจมตีด้วย SQL blind .......................................................................................... 46

รูปที่ 4.15 หน้าเว็บ http://try2hack.siamdev.net/basic/level8-mmcnc.php..................................... 47

รูปที่ 4.16 ผลการตรวจสอบ sql injection เว็บ try2hack .......................................................................... 48

รูปที่ 4.17 ผล sql injection เว็บ try2hack ................................................................................................ 48

รูปที่ ก-1 การติดตั้ง python ........................................................................................................................ 51

รูปที่ ก-2 เลือก path การติดตั้ง python ..................................................................................................... 52

รูปที่ ก-3 เลือกข้อมูลที่จะท าการติดตั้ง python ........................................................................................... 53

รูปที่ ก-4 เสร็จสิ้นการติดตั้ง python ............................................................................................................ 54

Page 8: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

VII

สารบัญรูป (ต่อ) หนา้

รูปที่ ก-5 การติดตั้ง nmap ........................................................................................................................... 55

รูปที่ ก-6 เลือกไฟล์ที่จะติดตั้งใน nmap ....................................................................................................... 56

รูปที่ ก-7 path ที่จะติดตั้งใน nmap ............................................................................................................ 57

รูปที่ ก-8 ติดตั้ง winpcap (1) ...................................................................................................................... 58

รูปที่ ก-9 ติดตั้ง winpcap (2) ...................................................................................................................... 59

รูปที่ ก-10 เสร็จสิ้นการลองโปรแกรม nmap ............................................................................................... 60

รูปที่ ก-11 เลือกการสร้าง short cut namp................................................................................................ 61

รูปที่ ก-12 เสร็จสิ้นการติดตั้ง nmap ............................................................................................................ 62

รูปที่ ก-13 ไฟล์ sqlmap .............................................................................................................................. 63

รูปที่ ก-14 ตัวอย่าง path sqlmap .............................................................................................................. 63

Page 9: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

1

บทที1่ บทน า (Introduction)

1.1 ความเป็นมาและความส าคัญของปัญหา ในปัจจุบันระบบเทคโนโลยีสารสนเทศได้มีการพัฒนาไปอย่างรวดเร็วและได้เข้ามามีบทบาทส าคัญในการด าเนินงานขององค์กรต่างๆที่มีการให้บริการผ่านเครือข่ายอินเตอร์เน็ต รวมถึงการใช้งานระบบสารสนเทศภายในองค์กรเอง ดังนั้นเรื่องของความมั่นคงปลอดภัยสารสนเทศจึงเป็นเรื่องส าคัญอย่างยิ่ง เนื่องจากภัยคุกคามคอมพิวเตอร์ในปัจจุบันมีการพัฒนาไปอย่างรวดเร็วและหลากหลาย ซึ่งอาจก่อให้เกิดผลกระทบต่อการด าเนินงานของทางองค์กร ได้ ทางองค์กรต่างๆจึงได้เล็งเห็นความส าคัญของการรักษาความมั่นคงปลอดภัยของระบบสารสนเทศที่ให้บริการแก่ลูกค้าภายนอกและระบบสารสนเทศที่ใช้ภายในองค์กร จึงเป็นเหตุผลหนึ่งที่ต้องมีการตรวจสอบความมั่นคงปลอดภัยของระบบสารสนเทศ เพ่ือค้นหาช่องโหว่ที่อาจจะเกิดผลกระทบต่อองค์กรและการให้บริการแก่ลูกค้า พร้อมทั้งด าเนินการแก้ไขช่องโหว่ดังกล่าว หรือลดความเสี่ยงที่อาจจะเกิดขึ้น ในโครงงานนี้ผู้จัดท า ได้ท าการทดลองการตรวจสอบความมั่นคงปลอดภัยส่วนหนึ่งของเว็บไซต์ all star shop และเว็บไซต์ try2hack.siamdev.net โดยใช้วิธีการตรวจสอบประเภท Network Mapping และ Penetration test โดยใช้รูปแบบกระบวนการทดสอบเจาะระบบ คือ พอร์ตสแกน, Injection และ Cross-Site Scripting (XSS) เพ่ือศึกษาและลดช่องโหว่ของระบบที่เป็นความเสี่ยงต่อการบุกรุกจากผู้ไม่พ่ึงประสงค์ ให้เกิดการปรับปรุงระบบให้มีความปลอดภัยที่สูงขึ้น และลดความเสี่ยงต่อทรัพย์สินขององค์กรนั้นๆ 1.2 ปัญหาและแรงจูงใจ

1.2.1 การตรวจสอบความมั่นคงปลอดภัยของระบบมีต้นทุนและค่าใช้จ่ายที่สูง 1.2.2 การตรวจสอบความมั่นคงปลอดภัยของระบบจ าเป็นต้องใช้ผู้มีความรู้เฉพาะทาง 1.2.3 ในบางองศ์กรขาดบุคลากรทางด้านเขียนเว็บหรือการติดตั้งระบบอย่างปลอดภัย 1.2.4 Tools ที่มีการตรวจสอบและการทดสอบช่องโหว่ที่รวมอยู่ใน tool เดียวกันนั้น มี

ราคาสูง 1.2.5 เพ่ือให้ผู้ดูแลระบบปรับปรุงระบบสารสนเทศให้มีความมั่นคงปลอดภัยมากข้ึน

Page 10: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

2

1.3 วัตถุประสงค์ของโครงงาน 1.3.1 เพ่ือพัฒนาโปรแกรมที่สามารถตรวจสอบเครือข่ายและช่องโหว่ของเว็บไซต์ได้ใน

โปรแกรมเดียวกัน 1.3.2 เพ่ือตรวจสอบช่องโหว่ เว็บ ไซต์ ที่ มีช่องโหว่ประเภท Reflected XSS, SQL

Injection และ SQL Blind 1.4 ขอบเขตของโครงงาน

โปรแกรมของโครงงานนี้ต้องสามารถใช้งานตรวจสอบตามหัวข้อดังต่อไปนี้ 1.4.1 โปรแกรมต้องสามารถท าการ scan port ในรูปแบบ TCP และ UDP ได ้1.4.2 โปรแกรมต้องสามารถตรวจสอบ XSS ประเภท Reflected XSS ในรูปแบบ

method GET ได้ 1.4.3 โปรแกรมต้องสามารถตรวจสอบช่องโหว่ SQL ประเภท SQL Injection และ SQL

Blind ในรูปแบบ method GET และ POST ได ้1.5 ภาพรวมของระบบท่ีจัดท า

โปรแกรมจะแบ่งการท างานแบ่งออกเป็น 4 ส่วนคือ 1.5.1 Scan port : ท าหน้าที่ตรวจสอบเครื่อง server ที่ให้บริการ 1.5.2 Web : ท าหน้าที่ตรวจสอบ port ที่ต้องการโจมตีว่าเปิดให้บริการเว็บจริงหรือไม่ 1.5.3 XSS : ตรวจสอบช่องโหว่เว็บด้วยเทคนิค XSS 1.5.4 SQL injection : ตรวจสอบชอ่งโหว่เว็บด้วยเทคนิค SQL ซ่ึงสามารถอธิบายได้ตามรูปที่ 1.1

Page 11: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

3

รูปที่ 1.1 Flow การท างานโดยรวมของโปรแกรม 1.6 เนื้อหาของโครงงาน

1.6.1 บทที่1 กล่าวถึงความของปัญหา ความส าคัญของปัญหา ปัญหาและแรงจูงใจ วัตถุประสงค์ของโครงงาน ขอบเขตและประโยชน์ที่คาดว่าจะได้รับ

1.6.2 บทที่ 2 พ้ืนฐานและทฤษฎีที่เกี่ยวข้อง 1.6.3 บทที่ 3 การด าเนินงาน 1.6.4 บทที่ 4 ผลการด าเนินงาน 1.6.5 บทที่ 5 สรุปผลโครงงาน 1.6.6 บทที่ 6 เอกสารอ้างอิง 1.6.7 บทที่ 7 ภาคผนวก

1.7 ประโยชน์ที่คาดว่าจะได้รับ 1.7.1 สามารถตรวจสอบเว็บไซต์ ช่องโหว่ XSS ประเภท Reflected XSS, SQL ประเภท

SQL Injection และ SQL Blind 1.7.2 ตรวจสอบเครื่องแม่ข่ายว่ามีการเปิด port อ่ืนนอกจากที่ตั้งใจไว้ได้ 1.7.3 ลดค่าใช้จ่ายจากการซื้อโปรแกรม 1.7.4 สามารถเพ่ิมการโจมตีในรูปแบบอื่นๆได้ 1.7.5 ผู้ดูแลเว็บไซต์สามารถตรวจสอบช่องโหว่ได้ด้วยตัวเอง

Page 12: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

4

บทที่ 2 พื้นฐานและทฤษฎีที่เกี่ยวข้อง

กล่าวน า

ปัญหาด้านความปลอดภัยของข้อมูล (Information Security) ได้เข้ามามีบทบาทที่ส าคัญและสร้างความเสียหายให้กับงานระบบสารสนเทศ ทั้งนี้ท าให้องค์กรต่าง ๆ ต้องท าการบริหารความเสี่ ยงระบบสารสนเทศ (IT Risk Management) โดยใช้ วิธีการตรวจสอบประเภท Network Mapping แ ล ะ Penetration test ที่ เป็ น ส่ ว น ห นึ่ ง ข อ ง Information Systems Security Assessment Framework (ISSAF) [1] ซ่ึงเป็นมาตรฐานที่ยอมรับในระดับสากล 2.1 วิธีการตรวจสอบการเจาะระบบ (Penetration testing methodology)

การทดสอบการเจาะระบบ (Penetration Testing) [1] เป็นการป้องกันและหาช่องโหว่ (Vulnerabilities) ของระบบคอมพิวเตอร์ ซึ่งสามารถช่วยลดภัยคุกคามที่อาจจะเกิดขึ้นในระบบคอมพิวเตอร์ได้เป็นต้น โดยวิธีการทดสอบการเจาะระบบประกอบด้วย 9 ขั้นตอนดังนี้

2.1.1 การค้นหาข้อมูล (Information Gathering) 2.1.2 การท าแผนผังเครือข่าย (Network Mapping) 2.1.3 การระบุช่องโหว่ (Vulnerability Identification) 2.1.4 การทดสอบเจาะระบบ (Penetration test) 2.1.5 การยกระดับสิทธิ์ (Gaining Access & Privilege Escalation) 2.1.6 การขยายผลข้อมูลเพ่ิมเติม (Enumerating Further) 2.1.7 การยึดครองเป้าหมาย(Compromise Remote Users/Sites) 2.1.8 การสร้างช่องทางเชื่อมต่อ (Maintaining Access) 2.1.9 การลบประวัติ (Covering Tracks)

Page 13: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

5

โดยในกรณีศึกษานั้นเลือกใช้วิธีการทดสอบการเจาะระบบแบบ Network mapping และ penetration test เนื่องจาก เพ่ือให้ทราบถึงการบริการของ server และจากนั้นเพ่ือท าการทดสอบการเจาะระบบของ server เพ่ือดูช่องโหว่ที่เกิดขึ้น

การท าแผนผังเครือข่าย (Network Mapping) เป็นขั้นแรกในการหาข้อมูลที่เป็นไปได้ทั้งหมดของเป้าหมาย จากนั้นใช้วิธีการทางเทคนิคต่าง ๆเพ่ือท าการเก็บรายละเอียดของเครือข่ายนั้น ๆรวมไปถึงอุปกรณ์ท้ังหมดที่มีการเชื่อมต่อ

การทดสอบเจาะระบบ (Penetration test) Penetration test หรือ Pen test เป็นการทดสอบการเจาะระบบเพ่ือตรวจสอบว่าช่องโหว่หรือจุดอ่อนนั้นว่ามีผลกระทบหรือไม่ ซ่ึงผู้ที่ท าการทดสอบนั้นจะต้องยกระดับสิทธิ์ในการเข้าถึงโดยการหลีกเลี่ยงระบบรักษาความปลอดภัยในที่ต่าง ๆ และจะต้องขยายผลของการเข้าถึงให้มากที่สุดเท่าท่ีจะเป็นไปได้

2.2 พอร์ตสแกน (Port scanning) พอร์ตสแกน หรือ Port scanning [2, 3, 4] เป็นกระบวนในการเชื่อมต่อไปยังพอร์ตของ

TCP หรือ UDP ของเครื่องเป้าหมายโดยตรงซึ่งมีวัตถุประสงค์ในการตรวจสอบระบบปฏิบัติการของเป้าหมาย ตรวจสอบบริการหรือแอพพลิเคชั่นในระบบที่สามารถเชื่อมต่อหรืออยู่ในสถานะที่สามารถใช้งานได้บนเครื่องเป้าหมาย ซึ่งการตรวจสอบพอร์ตที่เปิดอยู่นั้นถือเป็นสิ่งส าคัญในการตรวจระบบปฏิบัติการและแอพพลิเคชั่นที่เปิดใช้งานอยู่เพราะระบบปฏิบัติการหรือแอพพลิเคชั่นที่เปิดใช้งานอยู่อาจมีจุดอ่อนหรือช่องโหว่ที่ท าให้บุคคลที่ไม่ได้รับอนุญาตเข้าถึงได้ เช่น แอพพลิเคชั่นที่มีเวอร์ชั่นการท างานที่ไม่สมบูรณ์ ดังนั้นเพ่ือการท างานอย่างมีประสิทธิภาพสูงสุดจึงจ าเป็นต้องมีการพัฒนารูปแบบของพอร์ตสแกนอย่างต่อเนื่องซึ่งโดยเทคนิคพอร์ตสแกนนั้นสามารถแบ่งออกได้ดังนี้

2.2.1 TCP connect scan เป็นเทคนิคการสแกนพอร์ตขั้นพ้ืนฐานโดยการเชื่อมต่อนั้น ระบบจะส่ง connect system call ไปควบคุมทุกๆพอร์ตของเป้าหมายถ้าพอร์ตนั้นมีการตอบสนองการเชื่อมต่อก็ถือว่าสมบูรณ์ ในการสแกนพอร์ตนั้นผู้โจมตีจะส่ง SYN packet ไปยังพอร์ตเป้าหมาย ถ้าพอร์ตมีการตอบสนองกับ SYN-ACK packet นั้นหมายถึงพอร์ตสามารถเปิดการใช้งานได้ ถ้าการสแกนสมบูรณ์จะมีการเชื่อต่อโดยการส่ง ACK packet ไปยัง attacker แต่ถ้าพอร์ตปิดการใช้งานจะมีการเชื่อมต่อโดยการส่ง RST packet ไปยัง attacker แทน ซึ่งวิธีการนี้เป็นวิธีการที่รวดเร็วแต่มีข้อเสียคือการสแกนนี้ตรวจพบได้ง่าย ตามรูปที่ 2.1

Page 14: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

6

รูปที่ 2.1 การท างานของ The Vanilla หรือ TCP connect scan

2.2.2 The TCP SYN (Half Open) scans หรือTCP SYN scan ซึ่ งเทคนิค SYN scan หรือที่รู้จักกันในชื่อของ half-open scanning เนื่องจากเป็นการสแกนที่มีการเชื่อมต่อไม่สมบูรณ์ไปยังพอร์ต ในการสแกนนั้น ผู้โจมตีจะส่ง SYN packet ไปยังเป้าหมายเพ่ือเป็นการเริ่มต้นการเชื่อมต่อและรอการตอบสนองจากเป้าหมาย โดยถ้ามีการตอบสนองนั้นหมายความว่าพอร์ตถูกเปิดการใช้งานจะมีการ SYN-ACK packet กลับมายังผู้โจมตี แต่ถ้าพอร์ตถูกปิดจะมีการส่ง RST (reset) กลับมายังผู้โจมตีแทน ตามรูปที่ 2.2

รูปที่ 2.2 การท างานของ The TCP SYN (Half Open) scans หรือTCP SYN scan

Page 15: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

7

2.2.3 TCP FIN scan เป็นเทคนิคที่แตกต่างจากเทคนิคการสแกนอ่ืน ๆ โดย FIN scan จะ

ส่ง FIN packet ไปยังเป้าหมาย ถ้ามีการตอบสนองโดยส่ง RST กลับมายังผู้โจมตีแสดงว่าพอร์ตถูกปิดแต่ถ้าไม่มีการตอบสนองใด ๆ เลยแสดงว่าพอร์ตถูกเปิดการใช้งาน การไม่ตอบของเป้าหมายนั้นอาจท าให้เกิดความสบสนว่าพอร์ตนั้นถูกเปิดอยู่หรือเกิดจากที่ถูกกีดกันโดย firewall ด้วยเหตุนี้จ าท าให้เทคนิคนี้ไม่ค่อยมีประสิทธิภาพเท่าท่ีควร ตามรูปที่ 2.3

รูปที่ 2.3 การท างานของ TCP FIN scan

Page 16: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

8

2.2.4 TCP NULL scan เทคนิคนี้จะคล้ายกับเทคนิค FIN scan โดยจะส่ง NULL ไปยังเครื่องเป้าหมาย ถ้าพอร์ตถูกปิดอยู่จะมีการส่ง RST packet กลับมายังผู้โจมตี แต่ถ้าพอร์ตเปิดอยู่ ก็จะไม่มีการตอบสนองใด ๆ ตามรูปที่ 2.4

รูปที่ 2.4 การท างานของ TCP NULL scan

Page 17: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

9

2.2.5 TCP ACK scan เทคนิค ACK scan: แตกต่างจากเทคนิคการสแกนอ่ืน ๆ เนื่องจาก การสแกนไม่ใช่ส าหรับการตรวจการเปิดปิดของพอร์ตแต่จะเป็นการตรวจสอบ การกรอง หรือไม่มีการกรองของพอร์ตแทน โดยการส่ง ACK ไปยังเป้าหมาย ถ้าพอร์ตมีการกรองจะไม่มีการตอบสนองเกิดข้ึนหรือส่ง ICMP error ไปยังผู้โจมตี แต่ถ้าพอร์ตไม่มีการกรอง จะมีการส่ง RST กลับมายังผู้โจมตี โดยพอร์ตที่ไม่มีการกรองนั้นอาจจะถูกเปิดหรือปิดอยู่ก็ได้ ซึ่งเทคนิคการสแกนนี้จะบ่งชี้ว่ามี firewall หรือไม่ ตามรูปที่ 2.5

รูปที่ 2.5 การท างานของ TCP ACK scan

Page 18: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

10

2.2.6 The TCP XMAS เทคนิค XMAS scan จะส่ง FIN, URG and PUSH packed ไปยังกลุ่มเป้าหมาย ถ้าพอร์ตปิดจะมีการตอบสนองโดยการส่ง RST มายังผู้โจมตี แต่ถ้าพอร์ตเปิดจะไม่มีการตอบสนองใด ๆ เกิดข้ึน ตามรูปที่ 2.6

รูปที่ 2.6 การท างานของ TCP ACK scan

Page 19: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

11

2.2.7 UDP ICMP Port scanning เทคนิคUDP scan จะส่ง UDP packet ไปยังทุก ๆพอร์ตของกลุ่มเป้าหมาย ถ้าพอร์ตปิดอยู่จะมีการส่ง ICMP port unreachable error กลับมายังผู้โจมตีแต่ถ้าพอร์ตนั้นถูกเปิดอยู่จะไม่มีการตอบสนองใด ๆ เกิดขึ้น ซึ่งหลักการเขียนกลับของ UDP scan นั้นเป็นการสแกนที่ช้าเนื่องจากเมื่อมีไม่การตอบสนองต่อพอร์ตที่มีการเปิดอยู่ ผู้โจมตีจะมีการส่ง packed ซ้ า ๆส่งผลให้มีความล่าช้าเกิดข้ึน ตามรูปที่ 2.7

รูปที่ 2.7 การท างานของ UDP ICMP Port scanning

Page 20: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

12

2.3 Open Web Application Security Project (OWASP) OWASP [5, 6] เป็นองค์กรหนึ่งในสหรัฐอเมริกาซึ่งเป็นองค์กรที่ไม่แสวงหาผลก าไรโดยมี

วัตถุประสงค์ในการเป็นองค์กรสากลที่เป็นศูนย์รวมใการร่วมมือจากนักพัฒนาเว็บแอพพลิเคชั่นทั่วโลกในการสร้างเว็บแอพพลิเคชั่นให้มีความปลอดภัย รวมไปถึงการจัดสัมมนาและอบรมเกี่ยวกับความปลอดภัยเว็บแอพพลิเคชั่นและเผยแพร่ความรู้เกี่ยวกับช่องโหว่ที่พบได้บ่อยและวิธีการป้องกัน โดยในปี 2013 OWASP ได้เผยแพร่เอกสาร OWASP TOP 10 2013 ที่อธิบายรายละเอียดช่องโหว่ที่พบได้บ่อยและมีความรุนแรง 10 อันดับดังนี้

2.3.1 Injection 2.3.2 Broken Authentication and Session Management 2.3.3 Cross-Site Scripting (XSS) 2.3.4 Insecure Direct Object References 2.3.5 Security Misconfiguration 2.3.6 Sensitive Data Exposure 2.3.7 Missing Function Level 2.3.8 Cross-Site Request Forgery (CSRF) 2.3.9 Using Components with Known Vulnerabilities 2.3.10 Unvalidated Redirects and Forwards

2.4 รายละเอียดของ OWASP TOP 10 2.4.1 Injection ช่องโหว่ประเภท Injection เช่น SQL, OS, และ LDAP injection

เกิดข้ึนเมื่อมีข้อมูลที่ไม่น่าเชื่อถือไปยังฐานข้อมูลบนเว็บไซต์ซึ่งท าให้บุคคลที่ไม่หวังดีสามารถเรียกดูข้อมูลที่เป็นความลับ, ลบหรือแก้ไขข้อมูลในฐานข้อมูลที่ส าคัญบนเว็บไซต์ได้ซึ่งบางครั้งมีการส่ง code เพ่ือไปท างานบนเครื่องแม่ข่ายของกลุ่มเป้าหมายโดยอาจน าไปสู่การโจรกรรมข้อมูลจนไปถึงการเข้าควบคุมเครื่องแม่ข่ายของกลุ่มเป้าหมายได้

2.4.2 Broken Authentication and Session Management ช่ องโหว่ป ระเภทการล้มเหลวในการระบุตัวตนและการบริหารจัดการ session โดยผู้โจมตีจะท าการขโมยรหัสผ่านหรือแอบดูข้อมูล session บน url ของกลุ่มเป้าหมาย

2.4.3 Cross-Site Scripting (XSS) เป็นช่องโหว่ที่เกิดขึ้นเมื่อแอพพลิเคชั่นมีข้อมูลที่ไม่น่าเชื่อถูกส่ง web browser โดยไม่มีการตรวจสอบ ซึ่ง XSS อนุญาตให้ผู้ผู้โจมตีฝัง JavaScript ลงในเว็บไซต์ของกลุ่มเป้าหมายส่งผลให้เกิดการขโมยข้อมูล session ของผู้ใช้งานคนอ่ืนท าให้เกิดความเสียหายต่อผู้ใช้งานเว็บไซต์อย่างรุนแรง

2.4.4 Insecure Direct Object References เป็นช่องโหว่ที่มีการเข้าถึงข้อมูลหรือรหัสโดยตรงเช่น การเข้าถึงข้อมูลหรือเอกสารที่เป็นความลับของเป้าหมาย ซึ่งผู้โจมตีจะท าการเข้าถึงขอ

Page 21: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

13

มูลโดยไม่ต้องผ่านการตรวจสอบการเข้าระบบหรือการป้องกันอ่ืน ๆและผู้ โจมตียังสามารถเปลี่ยนแปลงรหัสในการระบุตัวตนได้อีกด้วย

2.4.5 Security Misconfiguration เป็นช่องโหว่ของการการตั้งค่าความปลอดภัยของ web application, web server, web server software, database จะส่งผลกับความปลอดภัยของเว็บแอพพลิเคชั่น ซึ่งการตั้งค่าที่ผิดพลาดของส่วนประกอบต่าง ๆ ที่เกี่ยวข้อง ตัวอย่างเช่น การลืมลบ default user หรือไม่ท าการอัพเดท security patch โดยผู้โจมตีก็จะสามารถโจรกรรมข้อมูลหรือหยุดการท างานของเว็บแอพพลิเคชั่นได้

2.4.6 Sensitive Data Exposure เป็นช่องโหว่ที่เกี่ยวกับการรั่วโหลของข้อมูลที่เก็บอยู่ในเครื่องแม่ข่ายและข้อมูลที่ส่งผ่านอินเทอร์เน็ตซึ่งเว็บแอพพลิเคชั่นหลายเว็บไม่มีการป้องส่วนประกอบของข้อมมูลที่มีความ Sensitive เช่น ข้อมมูลของเครดิตการ์ด โดยผู้โจมตีมนั้นจะสามารถขโมย, เปลี่ยนแปลงการเข้าถึงของรหัสข้อมูลได้ หรือการใช้ weak algorithm ในการเข้ารหัส ซึ่งท าให้ข้อมูลที่เป็นความลับตกอยู่ในสภาวะเสี่ยงต่อการโจรกรรม

2.4.7 Missing Function Level ช่องโหว่นี้เป็นช่องโหว่เกี่ยวกับการให้สิทธิ์ในการใช้งานเว็บแอพพลิเคชั่น อย่างไรก็ตามเว็บแอพพลิเคชั่นจ าเป็นต้องมีการตรวจสอบการเข้าถึงระบบบนเครื่องแม่ข่ายหากไม่มีการตรวจสอบหรือผ่านการ log in เข้าระบบ ด้วยสิทธิ์ admin จะท าให้ก็ผู้โจมตีหรือใครก็ตามที่เป็น user ของเว็บไซต์สามารถเข้าไปใช้งานฟังก์ชันของ admin ได้โดยไม่ต้องผ่านการตรวจสอบการเข้าระบบ

2.4.8 Cross-Site Request Forgery (CSRF) เป็นช่องโหว่ที่ผู้โจมตีสามารถส่งค าสั่งไปยังกลุ่มเป้าหมาย รวมทั้งการ session cookie และท าให้มีการระบุตัวแบบอัติโนมัติโดยที่กลุ่มเป้าหมายไม่ได้ตั้งใจที่จะท า เช่นการโอนของกลุ่มเป้าหมายไปยังบัญชีของผู้โจมตี

2.4.9 Using Components with Known Vulnerabilities เป็นช่องโหว่ที่ เกิดจากเว็บแอพพลิเคชั่นท างานร่วมกับส่วนประกอบอ่ืน ๆที่มีช่องโหว่ เช่น libraries, framework หรือส่วนประกอบอื่น ๆ ของ software ที่มีช่องโหว่

2.4.10 Unvalidated Redirects and Forwards เป็นช่องโหว่ที่ผู้ โจมตีสามารถท าการ redirect และส่งไปยังเพจหรือเว็บไซต่าง ๆ โดยจะให้กลุ่มเป้าหมายเข้าไปยังเพจที่ไม่น่าเชื่อถือโดยไม่ผ่านการตรวจสอบซึ่งผู้โจมตีสามารถร้องให้กลุ่มเป้าหมายติดตั้งมัลแวร์ เนื่องเข้าใจว่าเป็นเว็บไซต์ที่ redirect มาจากเว็บไซต์ที่น่าเชื่อถือก็อาจจะตกเป็นเหยื่อของมัลแวร์ได้

Page 22: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

14

ในกรณีศึกษาของวิทยานิพนธ์นี้เลือกใช้การทดสอบช่องโหว่ของ Injection และ Cross-Site Scripting เนื่องเป็นวิธีที่ง่ายสะดวกรวดเร็วในการทดสอบ 2.5 Cross Site Scripting (XSS)

Cross-site Scripting [7] หรือที่เรียกว่า XSS เป็นช่องโหว่ที่อนุญาตให้ผู้โจมตี สามารถใส่ JavaScript ให้ท างานภายใต้ domain ของกลุ่มเป้าหมาย ซึ่งมีผลท าให้ผู้โจมตีนั้นสามารถขโมยข้อมูลของกลุ่มเป้าหมายอื่นได้

2.5.1 สาเหตุของช่องโหว่ XSS ในปัจจุบันเว็บแอพพลิเคชั่นหลายเว็บมีช่อโหว่ประเภท XSS เกิดข้ึน เนื่องจากเว็บ

แอพพลิเคชั่นนั้นอนุญาตให้ผู้โจมตีสามารถใส่ JavaScript ให้ท างานภายใต้ domain บนเว็บแอพพลิเคชั่นได้ดังนั้นเนื่องจาก JavaScript มีความสามารถในการเข้าถึง document Object Model (HTML DOM) จึงท าให้ผู้โจมตีสามารถแทรก JavaScript เพ่ือท าตามจุดประสงค์ต่าง ๆที่ต้องการได้ เช่น ขโมยข้อมูลที่ส าคัญของเป้าหมาย, หลอกให้กลุ่มเป้าเข้าไปยังลิงค์ที่มีความเสี่ยง, เข้าไปจัดการแก้ไขไฟล์ที่ส าคัญในเว็บเบราว์เซอร์ของกลุ่มเป้าหมายได้ หรือสุดท้ายที่ร้ายแรงมากคือ เขียน JavaScript KeyLocker เพ่ือใช้ดักจับ username และ password ในการท าธุรกรรมต่าง ๆ

2.5.2 ประเภทของ Cross-site Scripting ลักษณะการโจมตีของ Cross-site Scripting คือการการแทรก JavaScript ลงใน

เว็บแอพพลิเคชั่นต่าง ๆของกลุ่มเป้าหมาย โดยสามารถจ าแนกลักษณะของการโจมตีแบบ Cross-site Scripting ออกเป็น 3 ประเภทดังนี้

Stored XSS ผู้โจมตีจะท าการแทรก JavaScript ลงในฐานข้อมูลของเว็บแอพพลิเคชั่นเพื่อให้เรียก Source code ขึ้นมาได้ภายหลัง

Reflected XSS ผู้ โ จ ม ตี จ ะ ท า ก า ร แ ท รก JavaScript โด ย ไม่ เก็ บ JavaScript ลงในฐานข้อมูล

DOM-based XSS ผู้โจมตีจะท าการแทรก JavaScript ลงใน JavaScript อีกที

Page 23: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

15

2.6 รายละเอียดประเภทของ XSS 2.6.1 Stored XSS

ผู้ โจมตี จะ ใส่ JavaScript [8] ลงใน ฐานข้ อมู ล ของเว็ บ แอพพลิ เคชั่ น ของกลุ่มเป้าหมาย ซึ่งจะถูกเก็บไว้อย่างถาวรบนเซิร์ฟเวอร์เป้าหมาย เช่นในฐานข้อมูล, ในฟอรั่มข้อความ, การเข้าสู่ระบบของผู้เข้าชมหรือ ข้อมูลการแสดงความคิดเห็นข้อมูล เป็นต้น โดยส่วนใหญ่ เกิดในพวก Webboard จากนั้น เมื่อกลุ่มเป้าหมายมีการเรียกใช้งานเว็บแอพพลิเคชั่น ก็จะรัน JavaScript ตามค าสั่งที่ผู้โจมตีเขียนไว้ ท าให้กลุ่มเป้าหมายได้รับ JavaScript ที่เป็นอันตราย โดยทั่วไปแล้วบางครั้ง Stored XSS ถูกเรียกว่า Persistent หรือ Type-I XSS

ตัวอย่างวิธีการฝัง JavaScript ลงในฐานข้อมูล ผู้โจมตีจ าท าการฝัง JavaScript ไว้เพ่ือให้กลุ่มเป้าหมายท าการเรียกใช้งาน โดยผู้โจมตีจะฝัง

ด้วย tag ยกตัวอย่างเช่น

รูปที่ 2.8 ตัวอย่าง XSS tag

จากรูปที่ 2.8 จะเห็นได้ว่าเมื่อเปิดหน้าเว็บไซต์ จะมีการไปเรียกค าสั่งที่อยู่ในไฟล์ xss.js และท าการฝั่งคุกกี๊ลงไปในเครื่อง

รูปที่ 2.9 ตัวอย่าง XSS tag <body>

Page 24: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

16

จากรูปที่ 2.9 ตัวอย่างของค าสั่งแจ้งเตือนที่ฝั่งในส่วนของ <body> เมื่อท าการเปิดหน้าเว็บไซต์ จะมี message box โปชว์ข้อความขึ้นมาว่า “XSS”

รูปที่ 2.10 ตัวอย่าง XSS tag <table>

จากรูปที่ 2.10 ตัวอย่างของค าสั่งแจ้งเตือนที่ฝั่งในส่วนของ <table> เมื่อท าการเปิดหน้าเว็บไซต์ จะมี message box โปชว์ข้อความขึ้นมาว่า “XSS”

2.6.1 Reflected XSS ผู้โจมตีจะท าการแทรก JavaScript ลงในเว็บแอพพลิเคชั่นผ่านทางลิงค์ search

หรือ URL แล้วน าไปฝั่ง link เพ่ือหลอกล่อให้ผู้ใช้งานกด link ดังกล่าว

รูปที่ 2.11 ตัวอย่าง Source code ที่มีช่องโหว่ประเภท XSS

จากรูปที่ 2.11 ช่องโหว่ดังกล่าวจะท าให้ hacker สามารถสร้าง URL ให้ผู้ใช้งาน link ไปเว็บไซต์ของ hacker พร้อมทั้งส่ง web cookie

รูปที่ 2.12 ตัวอย่างช่องโหว่ XSS ในช่องค้นหา

Page 25: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

17

จากรูปที่ 2.12 จะพบว่าตัวแปร “keyword” สามารถเรียกเว็บ “badguy.com” ขึ้นมาแสดงผลแทนหน้า “someweb” ได้ ตัวอย่างดังกล่าวจะกระทบก็ต่อเมื่อผู้ใช้งานกด link ที่ hacker ได้ฝั่งไว้

2.6.2 DOM-based XSS โดย DOM-based XSS นั้น ผู้โจมตีจะท าการฝัง JavaScript ลงไปที่ JavaScript

ของ เว็บแอพพลิเคชั่นอีกที ซึ่ง JavaScript ที่แทรกเข้าไปนั้นมีความสามารถในการแก้ไข Object ใน HTML DOM ได้

รูปที่ 2.13 ตัวอย่างช่องโหว่ DOM-based XSS

จากรูปที่ 2.13 จะพบว่า hacker เขียนค าสั่ง “decodeURI” และ “document.write” ท าให้เมื่อมีเว็บ server เรียกใช้งาน จะถูกเขียนไฟล์ลงไปยัง sever นั้น กรณีนี้จะเกิดขึ้นได้ถ้าเว็บนั้นอนุญาตให้มีการเรียกไฟล์จากท่ีอ่ืนที่ไม่ใช่ส่วนของเว็บตัวเอง

Page 26: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

18

2.7 SQL Injection การโจมตีแบบ SQL Injection [9, 10, 11] นั้นเป็นไม่เพียงแต่เป็นช่องโหว่ที่พบมากที่สุดแต่

ยังเป็นช่องโหว่ที่อันตรายและร้ายแรงมากท่ีสุดอีกด้วย ทั้งนี้การโจมตีแบบ SQL Injection นั้นผู้โจมตีจะท าการแทรก SQL query หรือ SQL statement ไปยังเว็บแอพพลิเคชั่นโดยผ่านทางช่อง input ถ้าผู้โจมจีสามารถแทรก SQL query ได้ส าเร็จ ผู้โจมตีจะสามารถอ่านข้อมูลที่ส าคัญของฐานข้อมูล สามารถเปลี่ยนแปลงฐานข้อมูลโดยการ เพ่ิม, ปรับปรุง หรือแม้กระทั่งลบข้อมูลจากฐานข้อมูลได้และยังสามารถประมวลผลโดยใช้สิทธิ์ของผู้มีสิทธิ์เข้าถึงจากฐานข้อมูลนั้น เช่น การปิด Database Management System (DBMS) สามารถกู้ข้อมูลจากไฟล์ที่ปรากฎบนไฟล์ในระบบ DBMS และในบางกรณีสามารถออกค าสั่งกับระบบปฏิบัติการได้

2.7.1 ตัวอย่าง SQL Injection ตัวอย่างท่ี 1 ค าสั่ง SQL โดยพื้นฐานตามรูป ประกอบไปด้วย select, form ตามรูปที่ 2.14

รูปที่ 2.14 แสดงค าสั่ง SQL โดยพื้นฐาน

เมื่อท าการป้อนข้อมูลชื่อ และนามสกุล จะมีการค าสั่งที่ส่งไปยังฐานข้อมูล ตามรูปที่ 2.15

รูปที่ 2.15 แสดงค าสั่งเมื่อมีการป้อนข้อมูล

Page 27: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

19

เมื่อมีการแสดงค าสั่งก็จะเกิดการประมวลผลจากฐานข้อมูล โดยผลที่ปรากฎคือผิดพลาดหรือไม่ถูกต้องเนื่องมาจาก single-quote ที่อยู่ระหว่าง evil และ ex ตามรูปที่ 2.16

รูปที่ 2.16 แสดงการประมวลผลจากฐานข้อมูล ตัวอย่างท่ี 2 โดยทั่วไปโค้ดของ C# จะมีการเขียนรับค่าจากผู้ใช้งาน และน าค่านั้นส่ งไปให้ฐานข้อมูล

ประมวลผล ตามรูปที่ 2.17

รูปที่ 2.17 แสดงค าสั่งการรับค่าจากผู้ใช้งาน และค่าส่งไปให้ฐานข้อมูลประมวลผล

Page 28: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

20

ส่วนที่น่าสนใจคือส่วนที่รับค่าจากผู้ใช้งาน ที่ส่งค่าค้นหา ข้อความท่ีตรงกับฐานข้อมูล ตามรูปที่ 2.18

รูปที่ 2.18 แสดงค าสั่งท าให้เกิดการประมวลผลเลือกค้นหา ข้อความที่ตรงกับฐานข้อมูล เมื่อมีการใส่ค่าที่ท าให้เกิดการเปรียบเทียบถูกผิด เช่น “name' OR 'a'='a” จะปรากฎค าสั่ง

ตามรูปที่ 2.19

รูปที่ 2.19 แสดงค าสั่งเมื่อมีการใส่ “name' OR 'a'='a” จากค าสั่ง OR 'a'='a' ที่ต่อท้ายจะท าให้ข้อมูลที่ป้อนเข้าไปเป็นจริงเสมอ ซึ่งค าสั่งจะ

เปรียบเสมือนการดึงข้อมูลตามรูปที่ 2.20

รูปที่ 2.20 แสดงค าสั่งที่ท าให้ข้อมูลที่ป้อนเข้าไปเป็นจริงเสมอ

Page 29: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

21

ตัวอย่างท่ี 3 หากผู้โจมตีใส่ค าสั่ง DELETE FROM items; ก็จะสามารถลบข้อมูลทั้งหมดจากฐานข้อมูล

รูปที่ 2.21 แสดงค าสั่ง DELETE FROM items 2.8 Blind SQL injection

Blind SQL (Structured Query Language) injection [9, 10, 12] คือ ชนิดการโจมตีแบบ SQL Injection ชนิดหนึ่งซึ่งจะโจมตีในลักษณะจากถามค าถามฐานข้อมูลเป็น ถูกหรือผิด ในบางกรณีจะใช้การหน่วงเวลาช่วยด้วย แล้ววิเคราะห์ค าตอบจากการตอบสนองเว็บแอพพลิเคชั่น การโจมตีรูปแบบนี้บ่อยครั้งเกิดขึ้นเมื่อเว็บแอพพลิเคชั่นมีการก าหนดค่าให้แสดงข้อความที่ผิดพลาดของระบบ

ผู้ โจมตี ใช้ Blind SQL injection เมื่ อ เว็บแอพพลิ เคชั่ นแสดง error messages จากฐานข้อมูลว่าค าสั่งของ SQL Query's syntax นั้นไม่ถูกต้อง ลักษณะของ Blind SQL injection นั้นเกือบจะคล้ายกับ SQL Injection ปกติแต่จะแตกต่างกันเพียงอย่างเดียวคือวิธีการดึงฐานข้อมมูล เมื่อฐานข้อมมูลไม่มีการส่งออกข้อมูลไปยังยังหน้าเว็บเพจผู้โจมตีจะสามารถขโมยข้อมูลจากฐานข้อมมูลโดยใช้ค าถาม true or false questions แต่อย่างไรก็ตามการโจมตีในลักษณะนี้เป็นไปได้ยากแต่ก็ไม่ได้หมายความว่าเป็นไปไม่ได้ที่จะสามารถขโมยข้อมูลได้ ตัวอย่าง Blind SQL injection

ตัวอย่างของเว็บที่มีการรับค่าผ่าน URL โดยค่าตัวแปรจะอยู่หลังเครื่องหมาย “?” ตามรูปที่ 2.22

รูปที่ 2.22 แสดงตัวอย่างinput URL

Page 30: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

22

รูปแบบที่เข้ามายังฐานข้อมูลจะเป็น ตามรูปที่ 2.23

รูปที่ 2.23 แสดงส่งค าสั่งค่าไปยังฐานข้อมูล

ผู้โจมตีอาจจะใส่ค าสั่งซึ่งจะให้แสดงผลออกมาเป็น False เพ่ือให้เว็บนั้นแสดงหน้า error ของฐานข้อมูลออกมา ตามรูปที่ 2.24

รูปที่ 2.24 แสดงค าสั่ง False โดยค าสั่ง SQL ที่ถูกส่งไปยังฐานข้อมูลจะพบได้ว่า 1=2 เป็น False จะเป็นตามรูปที่ 2.25

รูปที่ 2.25 แสดงค าสั่ง SQL ที่เป็น False

การโจมตีประเภท Blind SQL injection นั้นต้องอาศัยการหยุดเวลาที่จ าเพาะต่อฐานข้อมูลแล้วส่งผลกลับมาซึ่งแสดงให้เห็นว่าการท า SQL injection นั้นส าเร็จ โดยผู้โจมตีจะใช้วิธีการระบุแต่ละตัวอักษรของข้อมูลโดยใช้ลอจิก เช่น ถ้าตัวอักษรตัวแรกของฐานข้อมมูลตัวแรกคือ A จะต้องรอ 10 วิ หรือ ถ้าตัวอักษรตัวแรกของฐานข้อมมูลตัวแรกคือ B จะต้องรอ 10 วิ เป็นต้น ซึ่งเป็นไปตามค าสั่ง Microsoft SQL Server ตามรูปที่ 2.26

รูปที่ 2.26 แสดงค าสั่ง Microsoft SQL Server

Page 31: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

23

ใช้ time-taking operation เช่น BENCHMARK() ในฐานข้อมูล mysql การตอบสนองของ server จะล่าช้า 5 วินาทีถ้าการแสดงผลเป็นจริง ตามรูปที่ 2.27

รูปที่ 2.27 แสดงค าสั่ง BENCHMARK()

Page 32: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

24

บทที่ 3 การด าเนินโครงงาน

ในการด าเนินโครงงานนี้ได้พัฒนาโปรแกรมเพ่ือตรวจสอบช่องโหว่เว็บไซต์ โดยโปรแกรมของโครงงานนี้ใช้ open source 2 ตัวช่วยในการตรวจสอบระบบความม่ันคงปลอดภัยของเว็บไซต์ ได้แก่ Nmap ในการตรวจสอบพอร์ตที่เครื่องแม่ข่ายได้ท าการเปิดไว้ และ SQLmap ช่วยในการตรวจสอบช่องโหว่ช่องรับค่าข้อมูลหรือตัวแปรที่รับข้อมูล ในกรณีที่เครื่องแม่ข่ายเปิดให้บริการเว็บ ระบบของโครงงานนี้จะท าการตรวจสอบช่องโหว่ XSS และ SQL เป็นแบบกึ่งอัตโนมัติ กล่าวคือ เมื่อท าการ scan port เสร็จแล้ว ระบบจะมีให้เลือกโจมตีว่าจะท าการโจมตี port ไหน จากนั้นจะส่งค าสั่งร้องเพ่ือท าการตรวจสอบว่า port ที่เปิดนั้นให้บริการเว็บหรือไม่ 3.1 ซอฟแวร์ ทีใ่ช้ในการพัฒนาประกอบด้วย

3.1.1 Visual studio c# 3.1.2 Nmap 3.1.3 Python 3.1.4 SQLmap

3.2 ข้อก าหนดในการพัฒนา โครงงานนี้จัดท าเพ่ือพัฒนาเครื่องมือที่ช่วยลดขั้นตอนการตรวจสอบทดสอบเจาะระบบ โดย

มุง่เน้นไปที่การตรวจสอบช่องโหว่ injection และ XSS อ้างอิงใน [5] ในส่วนของ Injection จะใช้รูปแบบของการตรวจสอบ SQL ซึ่งระบบจะสามารถตรวจสอบ

โดยใช้เทคนิค SQL Injection (รูปแบบ true/false, UNION), SQL Blind (รูปแบบ time-taking, แสดงผล error ของระบบ) ทั้ง method ที่เป็น get และ post

ในส่วนของ XSS จะใช้รูปแบบ Reflect ในการตรวจสอบ method ที่เป็น get เท่านั้น

Page 33: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

25

3.3 ขั้นตอนการท างานของโปรแกรม

ลักษณะการท างานของโปรแกรมเจาะระบบ ระบบจะท าการสแกนพอร์ต จากนั้นเก็บข้อมูลเว็บ แล้วท าการทดสอบเจาะระบบเพ่ือดูช่องโหว่ XSS กับ SQL ซึ่งภาพรวมของการท างานอธิบายไว้ ตามรูปที่ 3.1

รูปที่ 3. 1 Flow การท างานโดยรวมของโปรแกรม

Page 34: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

26

โดยที่ข้ันตอนการท างานของโปรแกรมสามรถท าตามข้ันตอนได้ดังนี้ 3.3.1 ขั้นตอนแรกของโปรแกรมจะท าการ scan port เพ่ือตรวจสอบว่าเว็บแม่ข่ายเปิด

ให้บริการพอร์ตใดบ้างเพ่ือที่จะสามารถเลือกใช้ช่องทางในการทดสอบเจาะระบบได้ โดยขั้นตอนของการสแกนมีดังนี้

ท าการระบุเป้าหมายของการสแกน เช่น url หรือ IP Address

จากนั้นท าการเลือกชนิดของการสแกนในระบบ ซึ่งโปรแกรมมีรูปแบบการสแกนด้วยกัน 4 รูปแบบคือ TCP, UDP, Well know port และสแกนเฉพาะเว็บ 80/443

เมื่อเลือกชนิดได้แล้วจากนั้นก็ท าการสแกน

โดยผลการสแกนจะมีด้วยกัน 3 แบบ คือ Open, Close และ Filtered แต่ในโครงงานนี้จะเลือก port ที่ open เพราะจะสามารถเข้าถึงระบบได้โดยใช้ช่องทางนี้ โดยระบบจะท าการบันทึกเฉพาะพอร์ตที่เปิดเท่านั้น

Page 35: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

27

โดยลักษณะการท างานของการสแกนนั้น อธิบายไว้ใน flow chart ตามรูปที่ 3.2

รูปที่ 3.2 Flow chart อธิบายการท างานของการสแกน

Page 36: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

28

3.3.1. ท าการเก็บข้อมูลที่ต้องการจากหน้าเว็บ เพ่ือเป็นการตรวจสอบว่า port นั้นให้บริการเว็บไซต์ จึงจ าเป็นต้องส่ง HTTP

format เข้าไปตรวจสอบก่อนท าการเก็บข้อมูลของ form, link และ input ที่เกี่ยวข้อง โดยการท างานของการตรวจสอบมีขั้นตอนดังนี้

ท าการเลือก port ที่จะท าการเข้าถึงระบบ (open port)

ท าการส่งค าสั่ง “get / HTTP/1.1” และลงท้ายด้วย “\n\n” ซึ่งเป็น HTTP format เพ่ือดึงข้อมูลจากหน้าเว็บว่าใช่หน้าเว็บจริงหรือไม่

ถ้าเป็นหน้าเว็บจริงโปรแกรมจะท าการบันทึก from, method, input และ href หากไม่ใช่ก็จะมีการระบบจะไม่ท างานต่อ

Page 37: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

29

โดยลักษณะการท างานของเก็บข้อมูลจากหน้าเว็บนั้น อธิบายไว้ใน flow chart ดังรูป

รูปที่ 3.3 Flow chart อธิบายการท างานของการเก็บข้อมูลจากหน้าเว็บ

Page 38: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

30

รูปที่ 3.4 Flow chart อธิบายการท างานของการเก็บข้อมูลที่เป็น form (1)

Page 39: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

31

จากรูปที่ 3.4 และ รูปที่ 3.5 อธิบายได้ดังต่อไปนี้เมื่อได้ข้อมูลจากหน้าเว็บ ระบบจะท าการตัดเป็นบรรทัดเพ่ิอใช้ในการตรวจสอบ หา “<from ” ใน บรรทัดของ “form” จะตรวจสอบว่าเป็น method เพ่ือใช้ และท าการเก็บ input Name ในบรรทัดต่อๆจนกระทั้ง เจอค าว่า “</form” ให้ท าการเก็บข้อมูลไว้ที่ array wForm

รูปที่ 3.5 Flow chart อธิบายการท างานของการเก็บข้อมูลจากหน้าเว็บที่เป็น form (2)

Page 40: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

32

รูปที่ 3.6 Flow chart อธิบายการท างานของการเก็บข้อมูลจากหน้าเว็บที่เป็น link (1)

จากรูปที่ 3.6 อธิบายได้ดังต่อไปนี้ เมื่อได้ข้อมูลจากหน้าเว็บ ระบบจะท าการตัดเป็นบรรทัดเพ่ิอใช้ในการตรวจสอบ หา “href= ” และท าการเก็บค่าตัวแปรหลังตัวอักษร “?” ถ้ามี จากนั้นระบบจะท าการเก็บข้อมูลไว้ที่ array wLink

Page 41: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

33

รูปที่ 3.7 Flow chart อธิบายการท างานของการเก็บข้อมูลจากหน้าเว็บที่เป็น link (2)

Page 42: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

34

3.3.2. ท าการตรวจสอบ XSS injection เพ่ือเป็นการตรวจสอบดูว่ามีช่องโหว่ของ XSS จากหน้าเว็บหรือไม่ โดยทั่วไปแล้ว

XSS มี 3 ประเภทดังนี้ 1. Store 2. Reflect และ 3.DOM bass ซึ่งโปรแกรมจ าท าการตรวจสอบ XSS แบบ reflect เท่านั้นโดยขั้นตอนการท างานเป็นดังนี้

เมื่อท าการตรวจสอบการเก็บข้อมูลจากเว็บแล้ว

โปรแกรมจะตรวจสอบว่าเป็น method แบบใด method put หรือ method get

ถ้าเป็น method put จะส่งค าสั่ง java script ไปยัง input ของฐานข้อมูล แต่ถ้าเป็น method get จะส่งค าสั่งไปที่ URL

จากนั้นดูว่าเว็บจะ return XSS กลับมาหรือไม่

ถ้ามีช่องโหว่ XSS โปรแกรมจะท าการบันทึก แต่ถ้าไม่มีก็ต้องท าการเปลี่ยนค าสั่งใหมท่ี่มีไปเรื่อยๆ

Page 43: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

35

โดยลักษณะการท างานการตรวจสอบ XSS อธิบายไว้ใน flow chart ดังรูป

รูปที่ 3.8 Flow chart อธิบายการท างานตรวจสอบ XSS

จากรูปที่ 3.8 อธิบายได้ดังต่อไปนี้ หลังจากที่เก็บข้อมูลได้ทั้ง Form ที่ต้องมีการใส่ค่าตัวแปรก่อนส่ง และ link ที่แบบมีตัวแปรส่งผ่าน URL และแบบไม่ต้องส่งตัวแปร โปรแกรมจะท าการตรวจสอบก่อนว่า method ที่ต้องใช้ ใช้แบบไหน เพราะรูปแบบการส่งค่าจะแตกต่างกัน ซึ่งโปรแกรมใช้รูปแบบการตรวจสอบแบบ Reflect XSS

Page 44: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

36

ถ้าเป็น method get ระบบจะลองโจมตีทีละตัวแปร เมื่อโจมตีจนครบแล้วจะท าการโจมตี link หรือ form ถัดไป

ถ้าเป็น method post ระบบยังไม่รองรับเนื่องจากเป็นการโจมตีรูปแบบ Stored XSS ซึ่งจะพัฒนาให้รองรับในอนาคต 3.3.3. ท าการตรวจสอบ SQL injection เพ่ือเป็นการตรวจสอบดูว่ามีช่องโหว่ของ SQL injection จากหน้าเว็บหรือไม่ โดยขั้นตอนการท างานเป็นดังนี้

เมื่อท าการตรวจสอบการเก็บข้อมูลจากเว็บแล้ว

โปรแกรมจะตรวจสอบว่าเป็น method แบบใด method put หรือ method get

ถ้าเป็น method put จะส่งค าสั่ง SQL ไปยัง input ของฐานข้อมูล แต่ถ้าเป็น method get จะส่งค าสั่งไปที่ URL

จากนั้นท าการตรวจสอบค่าจาก SQLMAP เพ่ือตรวจสอบว่ามีช่องโหว่ sql injection หรือไม่

ถ้ามีช่องโหว่ SQL โปรแกรมจะท าการบันทึก แต่ถ้าไม่มีระบบจะแจ้งว่าหน้าเว็บดังกล่าวไม่ได้รับผลกระทบ

Page 45: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

37

โดยลักษณะการท างานการตรวจสอบ SQL injection อธิบายไว้ใน flow chart ดังรูป

รูปที่ 3.9 Flow chart อธิบายการท างานตรวจสอบ SQL injection

Page 46: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

38

จากรูปที่ 3.9 อธิบายได้ดังต่อไปนี้ หลังจากที่เก็บข้อมูลได้ทั้ง Form ที่ต้องมีการใส่ค่าตัวแปรก่อนส่ง และ link ที่แบบมีตัวแปรส่งผ่าน URL และแบบไม่ต้องส่งตัวแปร โปรแกรมจะท าการตรวจสอบก่อนว่า method ที่ต้องใช้ ใช้แบบไหน เพราะรูปแบบการส่งค่าจะแตกต่างกัน

โปรแกรมใช้รูปแบบการตรวจสอบ SQL รูปแบบ injection และ blind โปรแกรมจะท างานเหมือนกันทั้ง method get และ port แตกต่างกันที่รูปแบบการส่งผ่านตัวแปร

ในการตรวจสอบ SQL injection โปรแกรมจะส่งชุดค าสั่ง ที่ใช้ในการเปรียบเทียบเพ่ือให้สามารถเข้าสู่ระบบด้วยสิทธิ์ของผู้ใช้งานในเว็บไซต์นั้น เช่น ส่งค าสั่ง ‘ or 1=1 เป็นต้น

ในการตรวจสอบ SQL blind จะใช้ชุดค าสั่งในการถามแบบหน่วงเวลา เช่น ถามว่าตัว อักษร ตัวแรกคือ A ใช่หรือไม่ ถ้าใช้ให้ตอบกลับเมื่อเวลาผ่านไป 3วินาที ถ้าไม่ใช่ให้ตอบกลับมาเมื่อเวลาผ่านไป 1 วินาทีเป็นต้น

Page 47: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

39

บทที่ 4 ผลการทดลอง

4.1 รายละเอียดโปรแกรม 4.1.1 หน้าตาโปรแกรมตรวจสอบช่องโหว่หน้าหลักจะประกอบไปด้วย 3 tab คือ หน้า

หลักส าหรับใส่ข้อมูล, หน้า ผลการตรวจสอบ และ หน้าผลการตรวจสอบตาม OWASP 2013 4.1.2 หน้าหลักประกอบไปด้วย ช่องใส่เว็บที่ต้องการตรวจสอบ หรือ ip ที่ต้องการ

ตรวจสอบ รูปแบบการสแกน การเปลี่ยน agent name ใช้ส าหรับการตรวจสอบ ปุ่ม run ที่ใช้ส าหรับการโจมตี port ที่เปิดอยู่ และ log การตรวจสอบ ตามรูปที่ 4.1

ช่อง target คือ ช่องใส่ IP หรือเว็บไซต์ที่ต้องการตรวจสอบ

Scan Type คือ ช่องเลือกชนิดของการ scan

Agent Vender คือ ช่องเลือกว่าจะใช้ agent ของค่ายไหนในการเข้าไปตรวจสอบ

Agent Version คือ ช่องเลือก version ของ agent

Attack คือ ช่องผลจากที่ท าการสแกนแล้วว่ามี port ไหนเปิดอยู่บ้าง

ช่องของ log คือ ช่องแสดงผลลัพธ์ของการโจมตี

รูปที่ 4.1 หน้าตาหลักโปรแกรม (1)

Page 48: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

40

รูปที่ 4.2 หน้าตาหลักโปรแกรม (2) จากรูปที่ 4.2 เมื่อเว็บไซต์นั้นมีช่องโหว่ Injection หรือ XSS อักษรนั้นจะเปลี่ยนเป็นสีแดง

ถ้าไม่มีผลกระทบช่องโหว่จะเป็นสีเขียว

รูปที่ 4.3 ตัวอย่างการเลือกเทคนิคการ scan

Page 49: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

41

จากรูปที่ 4.3 แสดงถึงเทคนิคที่โปรแกรมนี้สามารถท าการ scan ได้

Well Known คือ scan TCP port มาตรฐานที่ปัจจุบันมีการใช้งาน เช่น port 80, 443, 8080, 8443 เป็นต้น

All TCP คือ scan port TCP ตั้งแต่ port 0-65535

All UDP คือ scan port UDP ตั้งแต่ port 0-65535

All TCP/UDP คือ scan port TCP และ UDP ตั้งแต่ port 0-65535

Default Web คือ scan port TCP 80, 443 ที่ใช้อยู่ในปัจจุบัน

รูปที่ 4.4 ตัวอย่างโปรแกรมช่อง Agent Vender

จากรูปที่ 4.4 ช่อง Agent Vender คือ ช่องที่ระบบมีให้เลือกว่าจะใช้ user agent ไหนที่ท าการเชื่อมตอ่เว็บไซต์ ซึ่งผลการตอบกลับจากคนละ agent อาจไม่เหมือนกัน

Page 50: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

42

รูปที่ 4.5 ตัวอย่างโปรแกรมช่อง Attack จากรูปที่ 4.5 ช่อง attack คือผลลัพธ์ จากการ scan port ซึ่งในรูปแสดงผลลัพธ์จากการ

scan port ด้วยชนิด Well Know 4.2 ตัวอย่างผลการทดสอบด้วยโปรแกรม

ตัวอย่างได้ท าการตรวจสอบเว็บไซต์ allstarshop โดยเลือกท าการ scan port แบบ “Default Web” จากวงรีในรูปจะพบว่า เว็บดังกล่างได้เปิด port 80 และ 443 ตามรูปที ่4.6

รูปที่ 4.6 ตัวอย่างผลการ scan ด้วย default web

ตัวอย่างการ scan port เว็บไซต์ try2hack ด้วย scan port แบบ “well Known” ตามรูปที่ 4.7

Page 51: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

43

รูปที่ 4.7 ผลการ scan ด้วย well Known ผลจากโปรแกรมที่จ าลองการเข้าถึงหน้าเว็บ allstarshop เพ่ือท าการเก็บค่าตัวแปรที่ส าคัญ

ในการตรวจสอบ จะพบว่าเมื่อท าการส่งค าสั่ ง GET /allstartshop/ HTTP/1.1 ซึ่ งเป็น HTTP format ถ้า port ที่ท าการเข้าถึงเป็นเว็บไซต์ เครื่อง sever จะตอบกลับมาเป็น HTTP/1.1 ตามรูปที่ 4.8 เป็นต้น

รูปที่ 4.8 ผลจากโปรแกรมที่จ าลองการเข้าถึงหน้าเว็บ allstarshop

Page 52: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

44

รูปที่ 4.9 ตัวอย่าง log โปรแกรมที่โจมตีด้วย XSS

จากรูปที่ 4.9 เป็น log จากโปรแกรมส่งค าสั่ง Script และมีผลต่อเว็บไซต์ ในตัวอย่างนี้ โปรแกรมได้ส่งค าสั่ง เช่น ‘><script>alert(‘xss’)</script> เป็นต้น ซึ่งเมื่อเรียกหน้าเว็บไซต์จะมี dialog ขึ้นข้อความมา

รูปที่ 4.10 ผลจากโปรแกรมที่โจมตีด้วย XSS จากรูปที่ 4.10 ผลจากช่องโหว่ Reflected XXS เมื่อเปิดหน้าเว็บไซต์ ซึ่งในทางปฏิบัติ

อาจจะให้ท าการส่งค่า cookie ของผู้ที่มากด link ที่ hacker ไปฝากไว้

Page 53: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

45

รูปที่ 4.11 หน้าเว็บไซต์ http://sqlzoo.net/hack/passwd.pl

รูปที่ 4.12 ตัวอย่าง log ของโปรแกรมท่ีโจมตีด้วย SQL injection

จากรูปที่ 4.12 ได้ท าการทดสอบเว็บไซต์ http://sqlzoo.net/hack/passwd.pl ด้วยค าสั่ง SQL injection โดยในรูปแสดงถึง payload ที่สามารถเอาไปใส่ในหน้าเว็บจริงได้

รูปที่ 4.13 ตัวอย่างผลการโจมตีด้วย SQL injection

จากรูปที่ 4.13 แสดงถึงผลลัพธ์เมื่อท าการ login จาก payload ที่ได้จากโปรแกรม จะพบว่าสามารถเข้าสู่ระบบได ้

Page 54: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

46

รูปที่ 4.14 ตัวอย่างผลการโจมตีด้วย SQL blind จากรูปที่ 4.14 แสดงถึงผลลัพธ์ที่โจมตีด้วยเทคนิค SQL blind โดยตัวอย่างระบบได้ท าการ

list databases ที่อยู่ในเว็บไซต์ http://sqlzoo.net/hack/passwd.pl ออกมา

Page 55: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

47

4.2.1 หน้าเว็บของ http://try2hack.siamdev.net/basic/level8-mmcnc.php

รูปที่ 4.15 หน้าเว็บ http://try2hack.siamdev.net/basic/level8-mmcnc.php

Page 56: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

48

4.2.2 ตัวอย่างผลการตรวจสอบเว็บไซต์ try2hack จะพบว่า log จะมีการแจ้งมา 2 บรรทัดคือ บรรทัดแรก ตัวแปรชื่อ user ไมไ่ด้รับผลกระทบ sql injection ส่วนบรรทัดที่ 2 จะแจ้งว่า ตัวแปร password ได้รับผลกระทบ โดยค าสั่งที่ส่งไปคือค าสั่งเปรียบเทียบ

รูปที่ 4.16 ผลการตรวจสอบ sql injection เว็บ try2hack

รูปที่ 4.17 ผล sql injection เว็บ try2hack จากรูปที่ 4.17 คือผลหลังจาก ใส่ชุดค าสั่ง -2702’ or 9377=9377 จะสามารถเข้าผ่านหน้า login ของระบบได้

Page 57: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

49

บทที่ 5 สรุปผลการด าเนินงาน

5.1 สรุปผลการทดสอบ 5.1.1 ระบบสามารถท าการสแกนพอร์ตได้ 5.1.2 ระบบสามารถตรวจสอบ XSS แบบ method get ได้ 5.1.3 SQL injection สามารถตรวจสอบแบบ method get และ post ได้ 5.1.4 SQL Blind สามารถตรวจสอบแบบ method get และ post ได้

5.2 ปัญหาที่พบเจอและแนวทางการแก้ไข 5.2.1 เมื่อใช้ thread จะไม่สามารถรอให้ thread

วิธีแก้ไข เปลี่ยนมาใช้ BackgroundWorker แทน 5.2.2 เมื่อท าการใส่ path เว็บลงไปในช่อง scan port พบว่าระบบ scan ไม่สามารถท างานได้

วิธีแก้ไข เขียนโปรแกรมตัด string ที่เป็น domain ออกมา 5.2.3 ใช้ค าสั่ง sqlmap มีบางกรณีระบบต้องรอค่า input บางอย่างจากผู้ใช้งาน

วิธีแก้ไข ท าการเก็บรวบรวมข้อมูลที่ต้องรอค าสั่งจากผู้ใช้งานและให้ระบบส่งค าสั่งต่อไปเองเพ่ือให้ระบบสามารถท างานต่อไปได้

5.2.4 ถ้าในหน้าเพจนั้นมีลิงค์ไปเว็บอ่ืนที่นอกเหนือจากเว็บนั้น ๆตัวโปรแกรมจะท าการตรวจสอบลิงค์นั้นด้วย วิธีแก้ไข ต้องเขียนตัวแกรมส าหรับตรวจสอบก่อนท าการสแกน

5.2.5 ระบบยังไม่สามรถรองรับ cookie ร่วมด้วย วิธีแก้ไข บางเว็บให้ใช้วิธีการระบุ cookie ไปก่อน

5.3 แนวทางการพัฒนาโปรแกรม

5.3.1 ใน XSS ท าให้สามารถตรวจสอบ method post ได้ 5.3.2 พัฒนาตัวตรวจสอบช่องโหว่ตามมาตรฐาน OWASP เพ่ิมเติม 5.3.3 แก้ไขปัญหาการรอค่าจากโปรแกรมอ่ืน 5.3.4 แก้ไขการเรียกใช้เว็บเบราว์เซอร์ 5.3.5 เพ่ิมเรียกการตรวจสอบช่องโหว่อ่ืนๆจาก python

Page 58: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

50

เอกสารอ้างอิง

[1] Information Systems Security Assessment Framework (ISSAF), [online]. Available: http://cuchillac.net/archivos/pre_seguridad_pymes/2_hakeo_etico/lects/metodologia_oissg.pdf [2] M. d. Vivo, E. Carrasco, G. Isern, and G. O. d. Vivo, "A review of port scanning techniques," SIGCOMM Comput. Commun. Rev., vol. 29, pp. 41-48, 1999. [3] J. Gadge and A. A. Patil, "Port scan detection," in 2008 16th IEEE International Conference on Networks, 2008, pp. 1-6 [4] S. Kumar and S. D. Sudarsan, "An Innovative UDP Port Scanning Technique," International Journal of Future Computer and Communication, vol. 3, p. 381, 2014 [5] The OWASP Foundation: OWASP Top 10 - 2013. (2013), [online]. Available: http://owasptop10.googlecode.com/files/OWASPTop10-2013.pdf / [6] 2003 – 2013 The OWASP Foundation, [online]. Available: http://i0.wp.com/blog.wisered.com/wp-content/uploads/2016/01/Screen-Shot-2559-01-14-at-12.51.19-PM.png?resize=1170,699 [7] Top 10 2013 A3 Cross Site Scripting (XSS), [online]. Available: https://www.owasp.org/index.php/XSS [8] M. Johns, B. Engelmann, and J. Posegga, "Xssds: Server-side detection of cross-site scripting attacks," in Computer Security Applications Conference, 2008. ACSAC 2008. Annual, 2008, pp. 335-344. [9] S. N. Narayanan, A. R. Pais, and R. Mohandas, "Detection and Prevention of SQL Injection Attacks Using Semantic Equivalence," Computer Networks and Intelligent Computing: 5th International Conference on Information Processing, August 5-7, 2011, pp. 103-112. [10] W. Halfond, J. Viegas, and A. Orso, "A Classification of SQL Injection Attacks and Countermeasures," International Symposium on Secure Software Engineering, 2006. [11] SQL injection, [online]. Available: https://www.owasp.org/index.php/SQL_Injection [12] SQL bind, [online]. Available: https://www.owasp.org/index.php/Blind_SQL_Injection

Page 59: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

51

ภาคผนวก ขั้นตอนการติดตั้ง python Link: https://www.python.org/ftp/python/2.7.12/python-2.7.12.msi

รูปที่ ก-1 การติดตั้ง python

จากรูปที่ ก-1 เป็นขั้นตอนการติดตั้งโปรแกรม python ส าหรับ all user โดยเลือกที่ Install for all user จากนั้นกด Next >

Page 60: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

52

รูปที่ ก-2 เลือก path การติดตั้ง python

จากรูปที่ ก-2 เป็นขั้นตอนเลือกท่ีอยู่ส าหรับติดตั้งโปรแกรม python โดยในที่นี้เลือกท่ี Drive C โดยการกดไปที่ C:\Python27\ (หรือเลือกตาม default ที่โปรแกรมเลือกมาให้) จากนั้นกด Next >

Page 61: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

53

รูปที่ ก-3 เลือกข้อมูลที่จะท าการติดตั้ง python

จากรูปที่ ก-3 เป็นขั้นตอนการเลือกว่าจะลงอะไรบ้างส าหรับการติดตั้งโปรแกรม python

โดยในที่นี้เราจะท าการเลือกท้ังหมด จากนั้นกด Next >

Page 62: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

54

รูปที่ ก-4 เสร็จสิ้นการติดตั้ง python

จากรูปที่ ก-4 เป็นขั้นตอนสุดท้ายส าหรับการติดตั้งโปรแกรม python โดยกดเลือก Finish เพ่ือเป็นการสิ้นสุดการติดตั้ง

Page 63: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

55

ขั้นตอนการติดตั้ง Nmap Link: https://nmap.org/download.html

รูปที่ ก-5 การติดตั้ง nmap

จากรูปที่ ก-5 เป็นขั้นตอนการบอกรายละเอียดข้อตกลงของการใช้งานโปรแกรม nmap เมื่ออ่านรายละเอียดเรียบร้อย จากนั้นกด I Agree เพ่ือยอมรับข้อตกลง

Page 64: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

56

รูปที่ ก-6 เลือกไฟล์ที่จะติดตั้งใน nmap

จากรูปที่ ก-6 เป็นขั้นตอนการเลือกว่าจะลงอะไรบ้างส าหรับการติดตั้งโปรแกรม nmap โดยในที่นี้เราจะท าการเลือกทั้งหมด จากนั้นกด Next >

Page 65: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

57

รูปที่ ก-7 path ที่จะติดตั้งใน nmap จากรูปที่ ก-7 เป็นขั้นตอนเลือกที่อยู่ส าหรับติดตั้งโปรแกรม nmap โดยในที่นี้เลือกที่ Drive C โดยการกดไปที่ C:\Program Files (x86)\Nmap (หรือเลือกตาม default ที่ โปรแกรมเลือกมาให้ ) จากนั้นกด Install

Page 66: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

58

รูปที่ ก-8 ติดตั้ง winpcap (1)

จากรูปที่ ก-8 เป็นขั้นตอนการบอกรายละเอียดข้อตกลงของการใช้งานโปรแกรม winpcap เมื่ออ่านรายละเอียดเรียบร้อย จากนั้นกด I Agree เพ่ือยอมรับข้อตกลง

Page 67: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

59

รูปที่ ก-9 ติดตั้ง winpcap (2)

จากรูปที่ ก-9 เป็นขั้นตอนเลือกว่าจะให้โปรแกรม WinPcap service “NPF” เริ่มต้นเมื่อใด โดย Start the WinPcap service “NPF” now (เริ่มต้นทันที) และ Start the WinPcap service “NPF” at startup (เริ่มต้นเมื่อมีการเปิดเครื่อง) โดยในที่นี้จะท าการเลือกทั้งสองช่อง จากนั้นกด Next >

Page 68: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

60

รูปที่ ก-10 เสร็จสิ้นการลองโปรแกรม nmap

จากรูปที่ ก-10 เป็นขั้นตอนรอการติดตั้งโปรแกรม Nmap โดยรอให้แถบสีเขียวเต็มและข้อความขึ้นว่า complete จากนั้นกดเลือก Next >

Page 69: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

61

รูปที่ ก-11 เลือกการสร้าง short cut namp

จากรูปที่ ก-11 เป็นขั้นตอนการเลือกสร้าง short cut ของโปรแกรม Nmap โดยเลือก Start Menu Folder และ Desktop จากนั้นกดเลือก Next >

Page 70: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

62

รูปที่ ก-12 เสร็จสิ้นการติดตั้ง nmap

จากรูปที่ ก-12 เป็นขั้นตอนสุดท้ายส าหรับการติดตั้งโปรแกรม nmap โดยกดเลือก Finish เพ่ือเป็นการสิ้นสุดการติดตั้ง

Page 71: เครื่องมือทดสอบการเจาะระบบ · 2016-08-12 · เจาะระบบของเว็บ all star shop และ try2hack.siamdev.net

63

ขั้นตอนการติดตั้ง SQLmap

Link: https://github.com/sqlmapproject/sqlmap/zipball/master เมื่อท าการโหลดไฟล์เรียบร้อยแล้ว ให้ท าการ unzip ไฟล์ด้วยการคลิก mouse ขวา แล้ว

เลือก extract ไฟล์ตามรูปที่ ก-13

รูปที่ ก-13 ไฟล์ sqlmap

ตัวอย่างในโครงงานได้ท าการย้าย folder ไปยังที ่ D:\programs\sqlmap เพราะโปรแกรมของโครงงานได้ติดตั้ง sqlmap อยู่ที่ D:\programs\sqlmap ตามรูปที่ ก-14

รูปที่ ก-14 ตัวอย่าง path sqlmap