พื้นฐาน Web Application Security

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

มีน้องคนหนึ่งอยากให้ผมช่วยสอนเรื่องนี้ ก็เลยอยาก draft ไว้ให้เบื้องต้นเพื่อเป็นแนวทางในการศึกษาต่อไป

ประตูที่มีกุญแจล็อคไว้ไม่ได้หมายความว่าห้องของเราจะปลอดภัย เราเคยได้ยินเรื่องแนวนี้หรือไม่?

  • เวลาคนลืมกุญแจห้องแล้วต้องเรียกช่างมาแงะ
  • แอบปั้มกุญแจด้วยดินน้ำมัน
  • ใช้ไพ่รูดตรงลูกบิดประตูห้องพักโรงแรม
  • ในหนังที่ตัวร้ายใช้เครื่องตัดเหล็ก หรือทหารใช้ระเบิดวางไว้ที่ประตู

Hack ให้เป็น

ต่อให้เราพยายามรักษาความปลอดภัยระบบของเราเข้มงวดเท่าไหร่ มันก็มีคน hack ระบบของเราได้แน่นอน ขึ้นกับว่าสิ่งที่ hack มานั้นคุ้มค่าพอที่จะเสี่ยงหรือไม่ อยากให้ลองไปดูหนังแนวจารกรรม hacker น่าจะได้แรงบันดาลใจมากขึ้นว่า กันยังไงก็เอาไม่อยู่

ที่พูดมาทั้งหมดนี้คือไม่ได้บอกว่าให้ถอดใจเถอะ แต่จะบอกว่าการเจาะระบบมันสามารถเกิดขึ้นได้ สิ่งที่เราต้องทำคือการรู้ทัน hacker และเตรียมตัวว่าเมื่อมีการ hack เกิดขึ้นเราจะรู้ได้อย่างไร จะกู้ระบบกลับอย่างไร ซึ่งสิ่งแรกที่สุดสำหรับ Web Security ต้องทำนั่นก็คือ

เขา Hack ยังไง?

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

  • SQL Injection
  • XSS
  • Malware
  • Backdoor
  • Remote Code Execution (RCE)

หากติดตามข่าวเรื่อง Security ช่วงนี้จะพบว่า Malware พวกเข้ารหัสไฟล์แล้วเรียกค่าไถ่จะมาแรงมาก ถ้าอยากหาแรงบันดาลใจก็ไปศึกษาเรื่อง Malware ตัวนี้ดูว่า มันเข้ามาเครื่องได้อย่างไร แล้วจะป้องกันอย่างไร

วิธีลัดในการที่จะเรียน hack นั้นคือเราต้องลองถูก hack ก่อนแล้วศึกษา pattern ว่า hacker เข้ามาได้อย่างไร แล้วทำอะไรต่อหลังจากที่เจาะเข้ามาได้

หนังสือ

แนะนำให้ไปอ่านหนังสือชุด “hacking exposed” ไปค้นในเว็บ amazon น่าจะเป็นหน้าตาของหนังสือเป็นชุด เลือกได้ตามใจว่าจะ hack อะไร 

Hack ระบบตัวเอง

อีกวิธีหนึ่งที่ง่ายที่สุดในการ hack นั่นก็คือการเขียน Backdoor ในระบบตัวเอง

  • เริ่มจากสร้างช่องทางในการไป get log file บน server หรือช่องทางสำหรับส่ง query ไปยัง database server เพื่อดึงข้อมูลออกมาดู หากทำได้ทั้งสองอย่าง เราก็จะเข้าใจ Backdoor และ SQL Injection
  • ถัดจากนั้น เมื่อทำ Backdoor เพื่อ get file และดึงข้อมูลจาก database เป็นแล้วก็ทำ Backdoor ที่เราสามารถส่งโค้ดโปรแกรมเอาไป run บน server อย่างเช่นโค้ดที่ไปตรวจสอบ server ว่าเป็น linux หรือ windows และใช้ version อะไรอยู่ หากทำได้เราก็จะทำ Remote Code Execution (RCE) เป็นแล้ว 

เว็บ

Remote Code Execution นี้ไม่จำเป็นต้องวาง backdoor อย่างเดียว ลองเข้า google แล้วพิมพ์ว่า 

remote code execution site:blognone.com

เราจะพบว่าเป็นการใช้ช่องโหว่ของ software และ framework ที่เปิดโอกาสให้ run code ใดๆ ก็ได้

ของจริง

ให้ไปเช่า server ราคา 5 usd/month ที่ https://www.digitalocean.com/ จากนั้นให้ลง tomcat ทิ้งไว้ซักหนึ่งเดือนแล้วรอดูความพยายามที่ hacker เจาะเครื่องของเราตั้งแต่

  • พยายาม login เข้า linux
  • และดู log http-access ของ tomcat ว่าเขาทำอะไรกับมันบ้าง
  • ถ้าโชคดีเราจะได้ Backdoor ที่ hacker ทิ้งไว้ให้ อันนี้ต้องดวงดีมากๆ เนื่องจากเราเช่าขำๆ เขารู้อยู่แล้วว่าไม่มีอะไรให้น่า hack 

สิ่งที่ต้องคิดต่อมาคือ hacker รู้ได้อย่างไรว่า

  • มีเครื่องเราอยู่ใน internet
  • เราเปิด tomcat ไว้

คำใบ้: scan tool

การป้องกัน

  • Update software ในโลกของความเป็นจริง เมื่อมีการ hack เกิดขึ้น ผู้พัฒนาก็จะทำการออก patch มาปิดช่องโหว่ที่ hacker นั้นใช้ hack เข้ามา ถ้าเรารู้ว่ามี patch เราก็แค่ทำการ update เพื่อป้องกันการเข้ามาอีกครั้งของ hack คนเดิมหรือเจ้าอื่น
  • เก็บ log ให้ละเอียด ว่า user เข้ามาเวลาจาก ip ใหน เวลาเท่าไหร่ เข้ามาทำอะไร ส่ง request อะไรเข้ามาแล้วได้อะไรกลับออกไป เพื่อที่เราจะได้เก็บเป็นหลักฐาน และประเมินสถานการณ์ถูกว่าควรจะทำอะไรต่อไป แล้วป้องกันอย่างไรต่อไป
  • ติดตามข่าวสารความปลอดภัย เช่นจากเว็บ https://www.thaicert.or.th/ เป็นต้น
Advertisements

One thought on “พื้นฐาน Web Application Security

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s