Tag: security

  • OVAL Definition Generator Information

    เพิ่มเติมจาก
    https://sysadmin.psu.ac.th/2023/02/14/ubuntu-oval/
    OVAL Definition Generator Information (ทางขวาในรายงาน) เป็น Canonical USN OVAL Generator ซึ่งรายงานจะสรุปเป็นหมวดหมู่ช่องโหว่

    ต่างจากรายงานที่โครงการ Data Lake ส่งมาใช้ OVAL Definition Generator Information เป็น Canonical CVE OVAL Generator เน้นแสดงตาม CVE จึงไม่มีสรุปว่า CVE เกี่ยวกับช่องโหว่ใด

  • Google Search Console Alert New owner for

    เนื่องจากเว็บไซต์สถาบันการศึกษา ตกเป็นเป้าหมายในการโจมตี ตามรายงาน สกมช. ที่
    https://www.ncsa.or.th/service-statistics.html

    โดยเว็บไชต์จำนวนหนึ่งในมหาวิทยาลัยได้เคยถูกโจมตีแล้ว และกำลังจะถูกโจมตีได้อีกมากด้วยยังคงมีช่องโหว่ที่ยังไม่ได้รับการแก้ไข

    ผู้บริหารเทคโนโลยีสารสนเทศระดับสูง ประจำมหาวิทยาลัยสงขลานครินทร์ จึงได้ออกหนังสือเวียนแจ้งทุกส่วนงานในมหาวิทยาลัย
    [มอ 011/67-ว011]แนวปฏิบัติในการจัดทำเว็บไซต์มหาวิทยาลัยสงขลานครินทร์ (23 เม.ย. 67)
    https://docs.psu.ac.th/view/2b962109-f1d8-451e-a361-ca7ee053c9a2/

    เอกสารแนบ แนวปฏิบัติในการจัดทำเว็บไซต์มหาวิทยาลัยสงขลานครินทร์
    https://net.psu.ac.th/local/internet/Guidelines_for_PSU_Website_2024_v1.pdf
    เพื่อให้ได้ใช้แนวทางการตรวจสอบช่องโหว่เว็บไซต์ได้ด้วยตนเอง และผู้ดูแลเว็บไซต์ได้เร่งปรับปรุงให้ได้มาตรฐานและมีความปลอดภัย

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

    ทีมงาน PSU CIRT ได้รับการแจ้งเตือน เมื่อเว็บไซต์ภายใต้ชื่อโดเมนของมหาวิทยาลัย .psu.ac.th จากการใช้เครื่องมื่อ Google Search Console ที่

    https://search.google.com/search-console

    เพื่อให้ ผู้ดูแลเว็บไซต์ส่วนงาน ได้รับการแจ้งเตือนโดยตรง เพื่อแก้ไขได้อย่างรวดเร็ว

    ขอให้ผู้ดูแลเว็บไซต์ส่วนงานที่มี ชื่อโดเมนย่อยต่างๆ ของส่วนงาน หรือซับโดเมนพีเอสยู (Subdomain under psu.ac.th) ให้เลือกแบบ Domain
    และระบุชื่อโดเมนย่อยของส่วนงานที่ท่านรับผิดชอบ

    หรือหากเป็นชื่อเว็บไซต์ ที่มีชื่อระดับเดียวแล้วต่อด้วย .psu.ac.th ให้เลือกแบบ URL prefix
    และระบุชื่อเว็บไซต์เป็น URL ของส่วนงานที่ท่านรับผิดชอบ

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

    https://contentshifu.com/blog/google-search-console-introduction

    หากมีข้อสงสัยในการ Verify ส่งข้อความสอบถามมาใน Teams Chat PSU Admin วิทยาเขตต่างๆ ที่ท่านสังกัดอยู่ได้เลยครับ เพื่อจะได้ทราบคำแนะนำเพิ่มเติมไปพร้อมๆ กัน

    เมื่อแฮคเกอร์ลงโฆษณาลิงก์พนันออนไลน์ ผู้ดูแลเว็บไซต์ส่วนงานก็จะได้รับอีเมลเตือนทันที จาก Google Search Console Team ด้วยเรื่อง
    New owner for https://ชื่อเว็บไซต์ส่วนงาน.psu.ac.th/ตำแหน่งไฟล์หน้าโฆษณาลิงก์พนันออนไลน์

    To owner of ชื่อเว็บไซต์ส่วนงาน psu.ac.th,

    Google has identified that ***บัญชีอีเมลที่แฮคเกอร์ใช้ลงโฆษณา***@gmail.com has been added as an owner of
    https://ชื่อเว็บไซต์ส่วนงาน.psu.ac.th/ตำแหน่งไฟล์หน้าโฆษณาลิงก์พนันออนไลน์/เช่น/js/xamp/angkasa168/.

    Property owners can change critical settings that affect how Google Search interacts with your site. Ensure that only appropriate people have owner status, and that this role is revoked when it is no longer needed.

    ขอขอบคุณในความร่วมมือจากทุกๆ ท่านในการจัดทำเว็บไซต์ให้ได้มาตรฐาน และเพิ่มความปลอดภัยไซเบอร์ให้กับเว็บไซต์ภายใต้ชื่อโดเมน psu.ac.th ของ ม.อ.

  • Debian Oval

    https://wiki.debian.org/DebianOval

    1. ระบบปฏิบัติการ Debian 12.4
    2. ล็อคอินด้วย root หรือ user ที่สามารถเรียกใช้ sudo ได้
    3. ติดตั้ง openscap-scanner ด้วยคำสั่ง
     apt install -y openscap-scanner
    1. ดาวน์โหลดไฟล์ Definition จาก https://www.debian.org/security/oval/ เลือกไฟล์ให้ตรงกับรุ่น ของ Debian ที่ใช้งาน ตัวอย่างนี้ใช้ Bookworm (รุ่น 12.4) โหลดไฟล์ชื่อ oval-definitions-bookworm.xml.bz2
    2. ขยายไฟล์ที่ดาวน์โหลดมาด้วยคำสั่ง
    bunzip2  oval-definitions-bookworm.xml.bz2
    1. ต่อด้วยคำสั่ง
    oscap oval eval --report report.html oval-definitions-bookworm.xml
    1. นำไฟล์ report.html มาเปิดใน web browser
    1. ช่อง Result ต้องเป็น false ถึงจะ Ok ?
    2. จบขอให้สนุก
  • Ubuntu OVAL Update2

    จากโพสตั้งต้น เมื่อ 6 เดือนก่อนที่
    https://sysadmin.psu.ac.th/2023/02/14/ubuntu-oval/

    มาดูว่ามีอะไรเปลี่ยนแปลงไปบ้างในรายงาน OVAL

    1. OVAL Results Generator

    1.1. v1.2.16 เมื่อวันที่ 6Feb2023@1632 สำหรับ Ubuntu 20.04 LTS
    1.2. v1.2.17 เมื่อวันที่ 18Aug2023@0234 สำหรับ Ubuntu 22.04 LTS

    1. OVAL Definition Generator

    2.1. เมื่อวันที่ 6Feb2023@0635 มี 1049 Definitions, 2284 Tests, 2264 Variables สำหรับ Ubuntu 20.04 LTS
    2.2. เมื่อวันที่ 14Jul2023@0240 มี 513 Definitions, 1043 Tests, 735 Variables สำหรับ Ubuntu 22.04 LTS
    2.3. เมื่อวันที่ 16Aug2023@0037 มี 550 Definitions, 1123 Tests, 794 Variables สำหรับ Ubuntu 22.04 LTS

  • อย่าเชื่อเครื่องมือมากเกินไป …

    เมื่อเดือนมีนาคม 2561 ผมได้ทำการทดสอบเครื่องมือเจาะระบบ “N”  (ใช้ทดสอบว่าระบบเป้าหมายมีช่องโหว่ใดให้โจมตีบ้าง) ภายใต้ภาระกิจ “Honeypot” เพื่อทดสอบว่า เครื่องมือดังกล่าว สามารถรับรองความปลอดภัยของระบบปฏิบัติการของเครื่องเซิร์ฟเวอร์ ก่อนที่จะอนุญาตให้เข้าถึงได้จากอินเตอร์เน็ตได้หรือไม่

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

    วิธีการทดสอบ

    จัดให้มีเครื่องทดสอบ ชื่อ honeypot.in.psu.ac.th อยู่บน VM และใช้เครื่องมือเจาะระบบ “N” ตรวจสอบ 2 ครั้ง โดยครั้งแรก (Baseline 01) เป็นการติดตั้งระบบปฏิบัติการ Ubuntu 16.04 LTS แบบ Default และ Update ให้เป็นปัจจุบันที่สุด แล้วรีบแจ้งให้ “N” ตรวจสอบ ครั้งที่ 2 (Baseline 02) ทำการติดตั้ง Web Server, PHP, MySQL และติดตั้งช่องโหว่อย่างง่ายที่พัฒนาขึ้นเอง (https://github.com/nagarindkx/honeypot) ลงไป โดยภาพรวมดังภาพที่ 1 แล้วรีบแจ้งให้ “N” ตรวจสอบ

    ภาพที่1: ภาพรวมของ Honeypot

    honeypot.in.psu.ac.th ประกอบด้วยโครงสร้างไฟล์ ดังภาพที่ 2

    ภาพที่ 2: โครงสร้างไฟล์ของ honeypot

    เมื่อคลิก Login with SQL Injection Vulnerable  จะได้ภาพที่ 3 ซึ่งจะส่งไปที่ไฟล์ badform.html โดยในฟอร์มนี้จะมีช่องโหว่ SQL Injection ทำให้สามารถเข้าเป็น admin ได้โดยลองใส่ username/password ดังนี้

    ภาพที่ 3: http://honeypot.in.psu.ac.th/badform.html

    ซึ่งจะได้ผลว่า สามารถเข้าเป็น admin ได้โดยไม่ต้องทราบรหัสผ่านที่แท้จริง แต่อาศัยการเขียน SQL Statement ที่ไม่รัดกุม และไม่ตรวจสอบ Input ก่อน ดังภาพที่ 4

    ภาพที่ 4: ช่องโหว่ SQL Injection

    เมื่อคลิก  Simple Non Persistent XSS   จะได้ภาพที่ 5  ซึ่งจะส่งไปยัง simple.php โดยจะเห็นได้ว่า สามารถใส่ชื่อ นามสกุล ลงไปใน URL ได้เลย ผ่านตัวแปร name  (ต้องลองใช้กับ FireFox ถ้าเป็น Google Chrome จะมี XSS Auditor ไม่ได้รับผลกระทบ)

    ภาพที่ 5: ช่องโหว่ Non Persistent XSS

     

    ช่องโหว่นี้ ทำให้ Hacker นำเว็บไซต์นี้ไป ดักเอา Cookie Session ของผู้อื่น หรือ Session HiJacking ดังภาพที่ 6
    ด้วย URL นี้
    http://honeypot.in.psu.ac.th/simple.php?name=%3Cscript%3Ealert(escape(document.cookie))%3C/script%3E

    ภาพที่ 6: Session HiJacking

    หรือ เปลี่ยนเปลี่ยน URL ที่ “Click to Download” ไห้ยังเว็บไซต์ที่ต้องการได้ เช่นเป็น hacked.com เป็นต้น ดังภาพที่ 7 ด้วย URL นี้
    http://honeypot.in.psu.ac.th/simple.php?name=%3Cscript%3Ewindow.onload=function()%20{%20var%20link=document.getElementsByTagName(%22a%22);%20link[0].href=%27http://hacked.com%27}%3C/script%3E

    ภาพที่ 7: HTML Injection

    เมื่อคลิก Login to Test Permanent XSS จะได้ภาพที่ 8  ซึ่งจะส่งไปยัง goodlogin.php

    ภาพที่ 8:ช่องโหว่ Persistent XSS

    ซึ่ง เป็น Form ที่ป้องกัน SQL Injection และ ไม่ยอมรับ username/password ว่าง หากไม่ทราบรหัสผ่านจริงๆ ก็จะเข้าไม่ได้ ดังภาพที่ 9

    ภาพที่ 9: กรณี Login ไม่สำเร็จ

    หาก Login เป็น user1 สำเร็จ จะสามารถเปลี่ยน Display Name ได้ ดังภาพที่ 10
    ทดลองด้วย

    username: user1
    password: user1123**

    ภาพที่ 10: user1 เมื่อ Login สำเร็จ สามารถเปลี่ยน Display Name ได้

    หาก user1 ต้องการดัก Session HiJack จาก Admin สามารถทำได้โดย แก้ Display Name ดังนี้

    <a href=”#” onclick=alert(escape(document.cookie))>User1</a>

    เมื่อกดปุ่ม Update จะได้ภาพที่ 11

    ภาพที่ 11: user1 วาง Session HiJacking สำเร็จ

    เมื่อ admin เข้ามาในระบบ ด้วย

    username: admin
    password: admin123**

    จะได้ภาพที่ 12

    ภาพที่ 12: admin จะมองเห็นรายชื่อ users ทั้งหมด ในที่จะเห็น user1 ที่มี display name ของตนเองเป็น Link

    เมื่อ admin ติดกับดัก ลองคลิก link ที่เขียนโดย user1 ก็จะเปิดเผย (และสามารถส่ง session กลับไปให้ user1 ได้หลายวิธี) ก็จะได้ผลดังภาพที่ 13

    ภาพที่ 13: แสดง Session ของ Admin ซึ่งในช่วงเวลานั้นๆ user1 สามารถเข้ามาเป็น admin ได้โดยไม่ต้องทราบรหัสผ่านของ admin

    *** และ มี Backdoor ที่อยู่ใน /uploads/ ไฟล์ image.php ที่ ไม่ได้แสดงใน index.php หน้าแรก ซึ่งจะสามารถส่งคำสั่งเข้าไปให้ Execute ได้ เช่น ls -l ดังภาพที่ 14 หรือ แม้แต่ wget ไฟล์จากภายนอกมาไว้ในนี้ได้ เพื่อสร้าง Backdoor ในที่ต่างๆ ซึ่งเรียกว่า Remote Code Execution

    ภาพที่ 14: Backdoor ใน /uploads/image.php ที่ไม่ได้อยู่ใน index.php หน้าแรกของ honeypot

    ผลการทดสอบ

    จากผลการทดสอบด้วย “N” เมื่อ Mon, 12 Mar 2018 13:57:16 ICT ผลดังภาพที่ 15

    ภาพที่ 15: แสดงรายการช่องโหว่ “N”  ตรวจพบ ประกอบด้วย 1 High, 5 Medium Risk

    ผลการทดสอบสามารถสรุปเป็นตารางได้ ดังตารางที่ 1

    ตารางที่ 1: แสดงผลเปรียบเทียบสิ่งที่ honeypot วางไว้ กับสิ่งที่ “N” ตรวจพบ ตามตำแหน่งไฟล์ต่างๆ

    ตำแหน่งไฟล์Honeypot วาง“N” ตรวจพบ
    badform.htmlSQL Injectionยอมรับได้
    – Web Application Potentially Vulnerable to Clickjacking (เป็น Form ที่ยอมให้เว็บอื่นเอาไปใส่ใน iframe ได้)
    login.phpJavaScript Injectionเป็น False Positive
    เพราะ Login Fail

    – CGI Generic SQL Injection (blind)
    – CGI Generic XSS (quick test)
    – CGI Generic Cookie Injection Scripting
    – CGI Generic XSS (comprehensive test)
    – CGI Generic HTML Injections (quick test)
    ยอมรับได้
    – Web Application Potentially Vulnerable to Clickjacking (เป็น Form ที่ยอมให้เว็บอื่นเอาไปใส่ใน iframe ได้)


    ไม่เข้าไปตรวจ JavaScript Injection เพราะไม่ได้ตรวจสอบ SQL Injection จากหน้า badform.html
    simple.phpNon-Persistent XSSยอมรับได้
    – CGI Generic XSS (quick test)
    – CGI Generic Cookie Injection Scripting
    – CGI Generic XSS (comprehensive test)
    – CGI Generic HTML Injections (quick test)
    goodlogin.phpเป็น False Positive เพราะ Login Fail
    – CGI Generic SQL Injection (blind)

    ยอมรับได้
    – Web Application Potentially Vulnerable to Clickjacking (เป็น Form ที่ยอมให้เว็บอื่นเอาไปใส่ใน iframe ได้)
    home.phpPersistent XSSไม่เข้าไปตรวจ เพราะไม่สามารถเดารหัสผ่านที่ถูกต้องได้
    /uploads/image.phpBackdoor (Remote Code Execution)ไม่เข้าไปตรวจ เพราะไม่มี Link จากหน้าแรก

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

    1. น่าตกใจ ที่ “N” ไม่สามารถตรวจพบ SQL Injection ได้ในหน้า badform.html
    2. “N” ตรวจพบ XSS ในหลายรูปแบบในหน้า simple.php ซึ่งนับว่าดี
    3. “N” ตรวจสอบได้เฉพาะ URL ที่สามารถติดตามไปจากหน้าแรกได้เท่านั้น จะเห็นได้ว่า ไม่สาามารถเข้าไปตรวจสอบ home.php ซึ่งต้องเดารหัสผ่านให้ได้ก่อน และ /uploads/image.php ซึ่งไม่มีการเรียกจากหน้าแรก ซึ่งโดยทางปฏิบัติ Hacker เมื่อเจาะเข้ามาวางไฟล์ได้แล้ว จะเอา URL นั้นไปโพสต์ประกาศในกลุ่ม หรือ บนหน้าเว็บไซต์อื่นๆ เช่น zone-h.org เป็นต้น ทำให้ เราตรวจด้วย “N” ยังไงก็ไม่เจอ แต่ Google ตรวจเจอเพราะไปตรวจสอบเว็บไซต์ของกลุ่ม Hacker อีกที
    4. “N” ทำงานเป็นลำดับ ดังนั้น เมื่อ ไม่ตรวจพบ SQL Injection ในหน้า badform.html ก็ไม่ตรวจ JavaScript Injection ในหน้า login.php
    5. “N” เตือนเรื่องสามารถนำ Form ไปอยู่ใน iframe ของเว็บไซต์อื่นๆได้ ซึ่งนับว่าดี

    อภิปรายผลการทดสอบ

    การมีเครื่องมือในการเจาะระบบอย่าง “N” เป็นเรื่องดี ทำให้สามารถลดงานของผู้ดูแลระบบได้ อย่างน้อยก็เรื่องการตรวจสอบ Version ของ OS, Software ที่ใช้ ว่าได้รับผลกระทบต่อช่องโหว่ที่สำคัญ ซึ่งจะประกาศเป็นเลข CVE เอาไว้แล้ว ทำให้ตรวจสอบภาพรวมๆได้ และตรวจสอบได้ตาม Signature ที่บริษัทเค้ากำหนดมาเท่านั้น

    อย่างไรก็ตาม ในทางปฏบัติ “N” หรือ เครื่องมืออื่นๆที่ทำงานแบบ Outside-In อย่างนี้ จะไม่มีทางตรวจสอบ ช่องโหว่ ที่อยู่ “ภายใน” เครื่องได้ หากแต่ การตรวจสอบ Log File และ การตรวจสอบเครื่องเซิร์ฟเวอร์จากภายใน จึงเป็นสิ่งจำเป็นอย่างยิ่ง นอกจากจะทำให้เราตรวจพบช่องโหว่ต่างๆก่อนจะโดนรายงาน แล้ว ยังเป็น การสะสมความรู้ซึ่งสำคัญยิ่่งกว่า เพราะเราจะได้ทำการ ป้องกัน ก่อนที่จะต้องมาตามแก้ไข อย่างเช่นในปัจจุบัน

  • วิธีใช้งาน Kali Linux – OWASP Zap – Active Scan

    ใน Kali Linux มีเครื่องมือ Web Application Security Scanner ที่น่าสนใจตัวหนึ่ง คือ OWASP Zap (Open Web Application Security Project) เหมาะสำหรับการใช้งานตั้งแต่การทดสอบเบื้องต้น ไปจนถึงการโจมตีขั้นสูงได้

    *** คำเตือน : อย่าใช้เครื่องมือนี้กับระบบคอมพิวเตอร์ที่ท่านไม่ใช่เจ้าข้องเด็ดขาด ***

    ในบทความนี้ จะแสดงขั้นตอนการทดสอบ Web Application โดยใช้กระบวนการ Active Scan

    1. ใน Kali Linux เปิด Applications > 03 Web Application Analysis > owasp-zap
      2559-10-17-09_27_04
    2. เลือก No, I do not want to persist this session at this moment in time แล้วคลิก Start (ยังไม่ต้องใช้ในตอนนี้)
      2559-10-17-09_36_10-program-manager
    3. ในช่อง URL to attack ใส่ URL ของ Web Application ที่ต้องการทดสอบ แล้วคลิก Attack
      2559-10-17-09_40_10-program-manager
    4. ระบบจะทำการ Spider และ Active Scan ตามลำดับ ผลที่ได้ “ในเบื้องต้น” ก็จะแค่แสดงในส่วนของ Alerts ทั่วไปเกี่ยวกับการตั้งค่าที่อาจจะไม่เหมาะสม เช่น X-Frame-Options Header ไม่ได้ตั้งค่าไว้, มีการใช้ Private IP, ไม่ได้ป้องกัน XSS และอื่นๆเป็นต้น
      2559-10-17-09_42_55-kali-running-oracle-vm-virtualbox
    5. เนื่องจากเครื่องที่ทำการทดสอบนี้ จริงๆแล้ว มี Directory ย่อยๆ ลงไปอีกมากมาย ที่ไม่ได้ชี้ Link ไปจาก index.php ในหน้าแรกของ Web Site วิธีการที่จะให้ OWASP ZAP กวาดไฟล์เดอร์ย่อยๆออกมา ใช้คลิกขวาที่ Sites ที่ต้องการ แล้ว Attack > Forced Browse site จากนั้นจะปรากฏ Forced Browse Tab ขึ้นมา ให้เลือก directory-list-1.0.txt ซึ่งจะทำการ Brute Force ชื่อ Directory ที่เค้าไปเก็บรวบรวมมา
      2559-10-17-10_05_43-kali-running-oracle-vm-virtualbox
    6. จากนั้น ทำการ Attack ด้วย Spider อีกครั้ง
      2559-10-17-11_06_51-kali-running-oracle-vm-virtualbox
    7. จากนั้น ทำการ Attack ด้วย Active Scan อีกครั้ง
      2559-10-17-10_10_24-kali-running-oracle-vm-virtualbox
    8. แต่ให้ตั้งค่าใน Policy Tab ดังภาพ เพื่อให้ Threshold เป็น High และ Strength เป็น Insane (จะอธิบายละเอียดอีกครั้งในบทความต่อไป) คลิก Go ทั้ง 2 บรรทัด แล้วคลิก Start Scan
      2559-10-17-11_08_46-kali-running-oracle-vm-virtualbox
    9. ดูผลการ Scan ได้ที่ Alerts Tab ดังตัวอย่างพบว่ามีช่องโหว่สำคัญคือ Cross Site Scripting (Reflected), Path Traversal และ Remote File Inclusion โดยบอกวิธีการ Attack ที่ใช้ในการทดสอบ และวิธีการแก้ไขพร้อม
      2559-10-17-11_11_17-program-manager 2559-10-17-11_11_44-program-manager 2559-10-17-11_12_19-program-manager

    จะกลับมาอภิปราย และอธิบายรายละเอียดอีกครั้งในบทความต่อไป

    References:

    https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project

    https://github.com/zaproxy/zap-core-help/wiki

    https://www.owasp.org/index.php/Category:OWASP_DirBuster_Project

  • การ Encrypt/Decrypt ข้อมูลในไฟล์ Web.config

    การเข้ารหัส (Encrypt) ไฟล์ Web.config ถือเป็นวิธีการหนึ่งในการช่วยเพิ่มความปลอดภัยและช่วยป้องกันการถูกโจมตีจากผู้บุกรุกในการเชื่อมต่อกับฐานข้อมูล เนื่องจากไฟล์ web.config เป็นที่รวมการ config ค่าต่างๆ ของ web application ของเราไว้ เช่น ข้อมูลรหัสผ่านสำหรับการเชื่อมต่อฐานข้อมูล (ConnectionString), AppSetting, คีย์ API หรือข้อมูลสำคัญอื่นๆ ที่เกี่ยวกับการตั้งค่าต่างๆ โดยบทความนี้นำเสนอการเข้ารหัสและการถอดรหัส (Encrypt/Decrypt) ไฟล์ Web.config ด้วยคำสั่งผ่าน Command line โดยใช้ tools ที่มากับ .NET Framework ดังนั้นเครื่องคอมพิวเตอร์ของเราจะต้องมีการติดตั้ง .NET Framework ไว้อยู่ก่อนแล้ว สำหรับข้อมูลในไฟล์ Web.config จะถูกแบ่งออกเป็น section หลายๆ section ด้วยกัน โดยผู้เขียนจะขอยกตัวอย่างการ Encrypt/Decrypt ข้อมูลในส่วนของ section<connectionString>ดังนี้

     

    ก่อนทำการ Encrypt Web.config

    ที่ section <connectionStrings> ซึ่งเก็บข้อมูล config ค่าต่างๆ ของ Database sever ไว้ เช่น user/password เป็นต้น

    <configuration>
    <connectionStrings>
    <add name="SqlServices" connectionString="Data Source=localhost;PASSWORD=1234;Integrated Security=SSPI;Initial Catalog=Northwind;" />
    </connectionStrings>
    </configuration>

     

    Encrypt Web.config

    1.เปิด Command Prompt ขึ้นมา (อย่าลืมเปิดแบบ Run as administrator ด้วยนะคะ)

    2.พิมพ์คำสั่ง ดังนี้(Version ของ.NET Framework ขึ้นอยู่กับที่ลงไว้ที่เครื่อง) :

    cd C:\Windows\Microsoft.NET\Framework\v4.0.30319

    step1

    3.เข้าไปที่ directory path ที่เก็บไฟล์ web.config แล้วพิมพ์คำสั่ง ดังนี้

    aspnet_regiis.exe -pef connectionStrings  C:\inetpub\wwwroot

    step2

    หมายเหตุ: “connectionString” เป็น case sensitive ตัวพิมพ์เล็ก พิมพ์ใหญ่ ต้องพิมพ์ให้ถูกต้อง

     

    หลังทำการ Encrypt Web.config

    หลังจากทำการ Encrypt แล้วจะเห็นว่า ที่ section connectionString จะเป็นรหัสที่ไม่สามารถอ่านเข้าใจได้

    <connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider">
       <EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
         xmlns="http://www.w3.org/2001/04/xmlenc#">
         <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
         <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
           <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
             <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
             <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
               <KeyName>Rsa Key</KeyName>
             </KeyInfo>
             <CipherData>
               <CipherValue>SryXAF+wpnIpZ8P3HMP8ffMDBorz9j08/oX2vXDA+9LkMHY1i50qeCqYmOYnQXK4C6iNhyIZx9R+AcE7yY7AQeHzzPhZ/bZ04NPuOpd7wD+NL82CWeec/fToTIBbHvE6zNBgenUSE+8zTv9II357tsqpjH1xaII+zmZbgo5+fnhjAD8nVffqd+NQ0x+IXDwyBraeT50TlEXx4lJlAph7jqdglg1Xf/yjSTfwrOB2NcVIHVaVWN3CrelWgQKASftGXdDVingbRn2RXphyooTuVsZgJdzbFMpd7H6fJHggORSPwOud1ZU5vE4aNAMHDa4fb6FOA3I8R0urWD4sT34YRg==</CipherValue>
             </CipherData>
           </EncryptedKey>
         </KeyInfo>
         <CipherData>
           <CipherValue>iKttnP9CEMRfq+mhcHqN8f5GiwsySBLw0CWeiAxSQVIfoEQMNutubrRFruoNIb+m0XJnPL5FIypqqQ72dqZ4DSeQdUJwAVyO4HSlM5F3b+Jnogz9aMAuwdoww5QKdI94yH9fx8RwxhAzq1a9eApjLglAwTmKY84Wg/Lqpcn9wfvKyIZJyQaJCaLCEteGhB9bopjT9z+nmMZVQ2LrDEtKMEe1oltPoR8EvTel2/2jJ/gwvJK+vTw9sL2GMPJIoA/NZQWjR2CWaCGlEFIjmgqT8BjTwiSS6hEp90CEQVN14U9A71vXquH73X6ZAyIFScf2XJS1Y+iCaEFo6r8qIIiGdrAGUTgfa8r9EwHzb5emCzlQzEDWgzno5IUDxuMBNzJinFudgwPFkA/xhdAHcHnB+quFOGGKVZJw72o5Ix7IeWI1Frs2n8+JZMrpPNW5r4SHHLrMD/iPR5FSfDz/sQqR5f+3/N3i3aq0LX8NfthfYtS9N4oCdPBPbIReP1w05we1Q+PJMO4KVG4w3x8k9O7aT0zoi+5CuPgKR30IgbE0sL8fOeki5OKYfsscNMzV/6T23axh9Ky+axI9fAMarjjL5aeYfa8n6jeevpA4f2SmlkbvW6P72292Ihk3bD1HMghn7ibjZ2q6hLwTb9QWyQvSDjHPsqeoiuKBTNJZgsCqBA4QK8j6/9exufTsOe/SgTclHPfiXpSI7CgbaGd6JQ2P5QSDVwQNQPuaf4qFKsZdPWfdEGcCgxLVZtcU0Cd12AnpaWIpiVUjCz6pWl4YygEXsvntLQfLSQ7XX2Q8lA1DjqBOcDQXY9mMo6PvZi3IsqcdF/DEn931nwBPO09T2AqWJWuAaK/Vh4+olkVYFWuj/Eerp2UkG2ItJduUaRNWzXV9s1hQ/q/36S0RTxN0DgXPII6CowQWIV2d5ZYwSUKVgsiDM43GBPF4SFFJOUec37yzYv6XT3/BmDmNpq32a+VAUB/OP23k4mnTvm/Nay1Iy6E8sUOYSpCY1up6XAcFL1XsacpNKLpMTmH6LsROX9BhmdTNaWgCQaDNVNeAISoJ8HZ5lw/EX1f6Rtz4uWyvBfSOPPAWPkNQawexjVKl0FtR6fRSnAGMkgflURH5QNX5xm+y0sfZsNz9sAFZofoJLQ3rdV7ToFJE+JlEvPKRHFDVbxDCURQ5CynXFnqlLj+2LhBbyX0n6oHQwMgTTTIf/+PNcjOx3zBn6/V3T0PdD6fnjVtTDnbJzN7ct7SOuifW0OfCfyeKSs0IOzPm8BucZ4CODaTwjY1bz2kgGRTjuenCp1N1GIRhMJBIBJhWOs3nee6Y9DgtlpWc3SZRZeYkmOffT5xNwQeTLrIXvTZCByHZcN3+g8OG0HqlodUCbPgf8jK45dMeT8piyFwZem8Dotjz7mXOaJxF7C66SQKvFVfuJjXDmTbmdzqwt33z+w39TV8ueXGyB/5S1kpV/ul+c7LwTwked7bMJtFJpVwdFKFiUxMebDuu3vINlVSZJfo43SSmTD3rM2UXV8ol65KzlmacBhgCwXtLFg7/8uGQrrUVq9gqHsoPyEgt</CipherValue>
         </CipherData>
       </EncryptedData>
     </connectionStrings>
    

     

    Decrypt Web.config

    การถอดรหัส (Decrypt) ไฟล์ Web.config สามารถใช้คำสั่งเช่นเดียวกันกับการ Encrypt แต่เปลี่ยนจาก -pef เป็น -pdf ดังคำสั่งต่อไปนี้ :

    aspnet_regiis.exe -pdf connectionStrings  C:\inetpub\wwwroot

    หมายเหตุ: “connectionString” เป็น case sensitive ตัวพิมพ์เล็ก พิมพ์ใหญ่ ต้องพิมพ์ให้ถูกต้อง

    การ Decrypt จะทำได้เฉพาะที่เครื่องที่ทำการ encrypt เท่านั้น จะไม่สามารถ decrypt ไฟล์ web.config นี้จากเครื่องอื่นได้ หากเรานำไฟล์ไป Decrypt จากเครื่องอื่นก็จะพบ message Failed ดังรูป

    step3

    โดยการ Encrypt/Decrypt ด้วยการใช้คำสั่งผ่าน command line สามารถทำได้กับทุก section (ไม่เฉพาะ connectionString)ในไฟล์ Web.confog เพียงแต่เปลี่ยนคำสั่งในส่วนของ section ตามที่ต้องการ

     

    แหล่งข้อมูลอ้างอิง : https://msdn.microsoft.com/en-us/library/ff647398.aspx

  • นโยบายและแนวปฏิบัติในการรักษาความมั่นคงปลอดภัยด้านสารสนเทศ มหาวิทยาลัยสงขลานครินทร์ 23 มีนาคม 2561

    นโยบายและแนวปฏิบัติในการรักษาความมั่นคงปลอดภัยด้านสารสนเทศ มหาวิทยาลัยสงขลานครินทร์

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

    อ่านได้จากไฟล์ตามลิ้งค์นี้
    https://www.cc.psu.ac.th/pdf/PSU_IT_Sec_Policy_23Mar2018.pdf

    ซึ่งฉบับแรกผ่านเมื่อวันที่ 27 เมษายน 2558 และล่าสุดทบทวนเมื่อวันที่ 23 มีนาคม 2561

    โดยมหาวิทยาลัยสงขลานครินทร์อยู่ในบันทึกลำดับที่ 99 จากทั้งหมด 154 หน่วยงาน ตามประกาศ
    http://www.etcommission.go.th/etc-annoucement-sp-p1.html

    เป็นมหาวิทยาลัยแรกที่มีการทบทวนนโยบายตั้งแต่มีการเริ่มประกาศใช้

    ผู้ใช้ไอทีทุกระดับควรได้เปิดอ่าน ทำความเข้าใจ และนำไปปฏิบัติความปลอดภัยไอที ม.อ. ทุกคนมีส่วนร่วมกันดูแล ครับ 😀

    ก้าวต่อไปเพื่อเพิ่มความปลอดภัยข้อมูลส่วนบุคคลที่อยู่บนระบบไอที ม.อ. จะได้จัดทำแนวนโยบายและแนวปฏิบัติในการคุ้มครองข้อมูลส่วนบุคคลของหน่วยงานของรัฐซึ่งตามข้อมูลเมื่อวันที่ 27 ธันวาคม 2560 มีเพียง 14 หน่วยงานที่ผ่านความเห็นชอบแล้วตามประกาศ
    http://www.etcommission.go.th/etc-annoucement-dp.html

    และมุ่งไปสู่ความปลอดภัยไอทีของ ม.อ. ที่มีการดูแลอย่างใกล้ชิดตามแนวทาง Center for Internet Security : CIS Control v7
    ซึ่งผมได้เริ่มต้นแปลบางส่วน ให้ผู้สนใจเริ่มทำความคุ้นเคยได้จาก

    https://www.cc.psu.ac.th/pdf/CIS_Control_v7_1May2018.pdf

  • วิธีตรวจสอบขณะเข้าเว็บไซต์ที่มีหน้าเว็บ login ด้วย username

    วิธีตรวจสอบขณะเข้าเว็บไซต์ที่มีหน้าเว็บ login ด้วย username

    สำหรับเบราว์เซอร์ Chrome ให้สังเกตว่าจะมีรูปกุญแจล๊อค(สีเขียว) หน้าคำว่า https แสดงว่า เว็บเพจหน้านี้ปลอดภัย

    https-facebook

    หากแสดงเป็นอย่างอื่น เช่น กากบาทสีแดงคาดที่คำว่า https แสดงว่าไม่ปลอดภัย อาจจะกำลังโดนใครดักข้อมูล username และ password ของท่าน

    https-facebook-privacy-error

    ตัวอย่างเว็บไซต์ gmail

    https-gmail

    ตัวอย่างเว็บไซต์ต่างๆของ PSU ที่เรียกใช้ด้วย Chrome browser และ แสดง https กุญแจสีเขียว สถานะปลอดภัย

    https-dss https-edoc https-licensing https-passport https-sysadmin https-webmail

    สำหรับเบราว์เซอร์ Firefox ก็แสดงเป็นรูปกุญแจล๊อค แต่เป็นสีเทา ไม่แสดงเป็นสีเขียว ก็คือปรกติครับ (ผมไม่ได้ใส่รูปตัวอย่างสำหรับ Firefox)

    สำหรับเบราว์เซอร์ IE (Internet Explorer) ในขณะที่เขียนบทความนี้ (19 ธันวาคม 2557) ผมไม่แนะนำให้ใช้ครับ

    ขอให้ตรวจสอบทุกครั้งก่อนใช้งานใส่ username ลงไปนะครับ