plugin ชื่อ member access (member-access.1.1.6.zip) ทำให้ในขณะนี้ไม่สามารถเพิ่มบทความที่ให้เฉพาะสมาชิกอ่านได้เท่านั้น แต่ต้องเปิดเป็น public ได้อย่างเดียว มิฉะนั้นในหน้าแรก (Home) จะไม่เป็นหน้าว่าง ๆ ต้อง login จึงเห็นบทความทุกเรื่องได้
plugin ชื่อ member access (member-access.1.1.6.zip) ทำให้ในขณะนี้ไม่สามารถเพิ่มบทความที่ให้เฉพาะสมาชิกอ่านได้เท่านั้น แต่ต้องเปิดเป็น public ได้อย่างเดียว มิฉะนั้นในหน้าแรก (Home) จะไม่เป็นหน้าว่าง ๆ ต้อง login จึงเห็นบทความทุกเรื่องได้
จาก วิธีใช้งาน Kali Linux – OWASP Zap – Active Scan ได้แสดงให้เห็นว่า เมื่อตรวจเจอช่องโหว่ Cross Site Scripting (XSS) บนเครื่องเป้าหมาย
จากที่ได้เคยบรรยายไปใน Web Hacking and Security Workshop เรื่อง วิธีตรวจสอบเว็บไซต์ที่โดน Hack #9 : วิธีการ Hack ด้วย SQL Injection และ Cross-Site Scripting ซึ่งแสดงให้เห็นว่า หากมีช่องโหว่ดังกล่าว ทำให้สามารถใส่ JavaScript ลงไปได้
ซึ่งอาจจะดูไม่น่าจะอันตรายอะไร แต่ ถ้า Hacker พบช่องโหว่ XSS (reflected) นี้บน Website ของเรา แล้วส่ง URL ที่แนบ JavaScript ไปหลอกผู้ใช้ของเรา อาจจะเป็นทาง Email ก็จะเป็นปัญหาได้
ต่อไปนี้ จะแนะนำอีกเครื่องมือหนึ่ง ที่ชื่อว่า BeEF XSS Framework ใน Kali Linux ดังวิธีการใช้งาน “เบื้องต้น” ให้เห็นอันตรายของช่องโหว่นี้ ดังนี้
ในการตรวจสอบ ความแข็งแกร่งของระบบป้องกันการโจมตี เรื่องหนึ่งคือความสามารถในการกัน Brute Force หรือ ความพยายามเดารหัสผ่าน
OWASP Zap สามารถใช้เป็นเครื่องมือในการทำ Brute Force ได้ โดยใช้เครื่องมือที่ชื่อว่า Fuzz
ขั้นตอนมีดังนี้
ใน Column Payloads จะเห็นว่า รหัสผ่านเป็น admin,123456 สามารถเอาไปทดสอบได้
ในตัวอย่างนี้ ถ้ามีระบบป้องกันการเดารหัสผ่าน เช่น fail2ban ก็จะสามารถลดความเสี่ยงได้ (บ้าง)
ในการตรวจสอบ Web Application ที่ต้องมีการ Authentication โดยใช้งานผ่าน Web Form จะต้องกำหนดค่าให้ OWASP Zap รู้ว่า จุดใดเป็น Login Form และ Field ใดที่ใช้เป็น Username และ Password ก่อน หลังจากนั้น จะสามารถกำหนดได้ว่า จะโจมตีด้วย Username ใดบ้าง เพื่อใช้ในการทดสอบ
ขั้นตอนในการตั้งค่าและโจมตีมีดังนี้
References:
https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project
https://github.com/zaproxy/zap-core-help/wiki
ใน Kali Linux มีเครื่องมือ Web Application Security Scanner ที่น่าสนใจตัวหนึ่ง คือ OWASP Zap (Open Web Application Security Project) เหมาะสำหรับการใช้งานตั้งแต่การทดสอบเบื้องต้น ไปจนถึงการโจมตีขั้นสูงได้
*** คำเตือน : อย่าใช้เครื่องมือนี้กับระบบคอมพิวเตอร์ที่ท่านไม่ใช่เจ้าข้องเด็ดขาด ***
ในบทความนี้ จะแสดงขั้นตอนการทดสอบ Web Application โดยใช้กระบวนการ Active Scan
จะกลับมาอภิปราย และอธิบายรายละเอียดอีกครั้งในบทความต่อไป
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
ปัญหาของ PSU Webmail ในช่วง 9-15 สิงหาคม 2559 ที่ผ่านมา คือ เมื่อเริ่มเข้าสู่เวลาราชการ ในวันทำการ พบว่า มีการตอบสนองที่ช้า บางครั้งต้องรอถึง 15-20 วินาที หรือ ผู้ใช้บางท่านแจ้งว่า Timeout ไปเลย หรือไม่ก็ใช้งานไปสักพัก ถูกดีดกลับมาหน้า Login ใหม่
แต่เมื่อพ้นเวลาราชการ พบว่าการตอบสนองก็เร็วขึ้นดังเดิม รวมถึงในช่วงวันหยุดก็เร็วอย่างที่ควรเป็น
ขอบคุณทาง NetAdmin ที่ทำระบบตรวจสอบไว้ที่หน้า Data Center เพื่อตรวจจับความเร็วในการตอบสนองบริการ PSU Webmail ด้วย SmokePing ผลที่ได้เป็นดังภาพ
จะเห็นว่า มีความหน่วงในการตอบสนอง เฉพาะในวันเวลาราชการเท่านั้น … ทำไม ???
ทำการตรวจสอบด้วยคำสั่ง
ps aux |grep apache| wc -l
เพื่อดูว่า มีจำนวน Apache อยู่กี่ Process พบว่า ในช่วงเวลาที่ระบบหน่วง มี Process เกือบคงที่ที่ 150 แต่ในช่วงที่ระบบทำงานได้เร็ว มีจำนวนประมาณ 50 process
จากการศึกษา พบว่า Apache2 ที่ใช้ MPM Prefork นั้น จะจำกัดค่า MaxRequestWorkers ไว้ โดยหากไม่กำหนดค่าใดๆจะตั้งไว้ที่ 256 แต่เมื่อตรวจสอบในไฟล์
/etc/apache2/mods-enabled/mpm_prefork.conf
พบว่า
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 150
MaxConnectionsPerChild 0
</IfModule>
ทำให้เพดานของจำนวน Process ไปจำกัดที่ 150 ดังที่ตรวจสอบเบื้องต้น เมื่อมีผู้ใช้มากขึ้นกว่าเดิม จึงทำให้ Process ไม่เพียงพอต่อความต้องการ เป็นผลให้เกิดการหน่วงขึ้น
จึงทำการแก้ไข MaxRequestWorkers เป็น 256 แล้ว Restart Apache
ผลทำให้ จำนวน Apache Process ขึ้นไปถึง 200 Process และการตอบสนองเร็วขึ้นตามที่ควรเป็นดังภาพ (หลังเวลา 14:45)
ทั้งนี้ การกำหนดจำนวน MaxRequestWorkers นั้น ต้องสัมพันธ์กับ RAM ของ Server ด้วย โดยมีสูตรคร่าวๆ คือ จำนวน RAM ในหน่วย MB หารด้วยขนาดของ Apache Process โดยเฉลี่ย
เช่น
มี RAM 4GB = 4 x 1024 = 4096
ขนาดเฉลี่ย Apache Process = 20
ดังนั้น MaxRequestWorkers = 4096/20 = 204
แต่จริงๆแล้ว ควรเผื่อ Memory ไว้ให้ OS และอื่นๆด้วย (อาจจะไม่เต็ม 4096) หากขยับค่า MaxRequestWorkers แล้วยังพบว่า จำนวน Process ยังขึ้นไปเต็มเพดานอยู่ ควรพิจารณาเพิ่ม Memory ด้วย
ประมาณนี้ครับ
UPDATE:
ผลการปรับแก้ไข ทำให้ เวลาในการตอบสนอง จากที่หน่วง 10 วินาที เหลือ เพียง 50 มิลลิวินาที ดังภาพ
ปัจจุบันพบว่า รูปแบบของ Backdoor เปลี่ยนไป จากเดิมเป็น Base64 ซึ่งสามารถตรวจจับได้จาก Pattern ของ eval และ base64_decode ไปเป็น การใช้ eval ร่วมกับการใช้เทคนิคที่เรียกว่า Obfuscate หรือ การทำให้ PHP Code ปรกติ แปลงไปเป็นรูปแบบที่ซับซ้อนยิ่งขึ้น ทำให้การตรวจสอบด้วยเทคนิคเดิมไม่เจอ
จาก วิธีตรวจสอบเว็บไซต์ที่โดน Hack #2 แสดงให้เห็นรูปแบบเดิม ดังภาพ
จะเปลี่ยนมาเป็นแบบนี้
ดังนั้น อาจจะต้องปรับเปลี่ยนคำสั่งในการค้นหาเป็น
find /var/www -name "*.php" -user www-data -type f | xargs grep GLOBAL
แต่ก็พบว่า มีการซ่อน base64_decode ในรูปแบบนี้ก็มี
ถึงแม้จะเลี่ยงการใช้ base64_decode ตรงๆแต่ก็ยังต้องใช้ eval อยู่ดี ดังนั้น จึงต้องใช้คำสั่งต่อไปนี้ในการค้นหา
find /var/www -name "*.php" -user www-data -type f | xargs grep eval > eval.txt
ซึ่งอาจจะได้ไฟล์มาจำนวนมาก ทั้งทีใช่และไม่ใช่ Backdoor เก็บไว้ในไฟล์ eval.txt ดังภาพ
จึงต้องใช้วิธี แก้ไขไฟล์ eval.txt ดังกล่าว โดยลบบรรทัดที่ไม่ใช่ Backdoor ออก ให้เหลือแต่บรรทัดที่น่าสงสัยว่าจะเป็น Backdoor ไว้ แล้ว Save จากนั้นใช้คำสั่งต่อไปนี้เพื่อเก็บไฟล์ทั้งหมดไว้ก่อน ในไฟล์ suspect.tar.gz
cut -d: -f1 eval.txt | xargs tar -zcvf suspect.tar.gz
จากนั้น ทำ List ของไฟล์ที่ต้องเข้าตรวจสอบจริงๆ เก็บในไฟล์ชื่อ eval2.txt ด้วยคำสั่ง
cut -d: -f1 eval.txt > eval2.txt
แล้วจึงแก้ไขไฟล์ หรือ ลบทิ้งต่อไป
ได้ไปร่วมงาน WUNCA ครั้งที่ 33 ที่จัดที่จุฬาลงกรณ์มหาวิทยาลัยเมื่อ 13-15 กรกฎาคม 2559 และได้บรรยายในส่วน Technical Talk หัวข้อ Open Source: Smart Computer Lab จึงอยากนำมาเล่าสู่เพื่อน ๆ ฟัง เผื่อว่าเพื่อน ๆ จะช่วยแนะนำบอกต่อว่า มีระบบจัดการห้องบริการคอมพิวเตอร์ที่ดีน่าใช้ชื่อ PSU12-Sritrang Server
เอกสารประกอบการบรรยาย
[pdf-embedder url=”https://sysadmin.psu.ac.th/wp-content/uploads/2016/07/open-source-smart-computer-lab.pdf”]
Link to Youtube video
แผ่นพับแนะนำ PSU12-Sritrang Server สำหรับห้องบริการคอมพิวเตอร์ เพื่อบอกว่าระบบนี้ทำอะไรได้บ้าง คลิกเปิดอ่านแผ่นพับ
หวังว่าคงจะได้รับข่าวดีนะครับ ขอบคุณครับ
ในการพัฒนาแอปพลิเคชันหรือระบบงานหนึ่งขึ้นมา การจัดการ File source code ไม่ว่าจะเป็นการสร้าง การแก้ไข การควบคุม file version ต่างๆ ถือเป็นเรื่องสำคัญ ซึ่งในบทความนี้นำเสนอการใช้งาน Visual Studio 2015 ในการเชื่อมต่อไปยัง GitHub Server
Git คือ Version Control ตัวหนึ่ง มีหน้าที่ในการจัดเก็บการเปลี่ยนแปลงของ file source code มีการ backup code ให้เรา สามารถที่จะเรียกดูหรือย้อนกลับไปดูเวอร์ชั่นต่างๆของ project เรา รวมถึงสามารถ track ได้ว่าไฟล์นั้นๆใครเป็นคนเพิ่มหรือแก้ไข ถูกสร้างโดยใคร ถูกปรับปรุงโดยใคร
GitHub คือ web open source ที่ให้บริการพื้นที่จัดเก็บ source code ของ project ที่เราได้พัฒนา โดยมีระบบควบคุม (version control) แบบ Git ซึ่งทำให้การพัฒนา project ต่างๆ สามารถแชร์ file source code ได้ง่ายขึ้น
เครื่องมือที่ใช้ในการเชื่อมต่อ GitHub Repository ด้วย Visual Studio 2015
ขั้นตอนการเชื่อมต่อ GitHub Repository ด้วย Visual Studio 2015
1.ติดตั้ง GitHub Extension for Visual Studio ที่ได้ดาวน์โหลดจากลิงค์ข้างบน
2. เมื่อติดตั้งเสร็จจะขึ้นดังรูป
3.เปิด Visual Studio 2015 ขึ้นมา ไปยังแท็บ Team Explorer แล้วกด Manage Connections ที่ไอคอนรูปปลั๊ก ดังรูป
4.ที่เมนู GitHub ให้คลิก Login
5.กรอกข้อมูล GitHub Account ที่จะเชื่อมต่อ แล้วกดปุ่ม Login
6.เมื่อ Login สำเร็จ จะแสดง GitHub repository ทั้งบน GitHub server และ repository บนเครื่อง local ของเราเองดังรูป
7.เข้าไปที่ https://github.com/ แล้ว Login ด้วย GitHub Account ของเราแล้วไป tab>> Repository เพื่อสร้าง Repository ที่จะเก็บ Project ที่เราต้องการจะเพิ่มเข้าไปจาก Visual Studio โดยกรอก repository name และกดปุ่ม Create repository
8. เราจะได้ repository เปล่าๆ ที่เราสร้างขึ้นดังรูป
9. เปิด project ที่ต้องการเพิ่มเข้า repository ขึ้นมา คลิกขวาที่ solution เลือก add solution to source control ดังรูป
10.จะปรากฎหน้าต่างให้เราเลือก Source Control ที่เราเลือก Git แล้วกดปุ่ม OK
11.ให้เรากรอก Commit Message เสร็จแล้วให้เลือกไปที่ commit ซึ่งจะมีตัวเลือกการ commit หลายแบบ ได้แก่ Commit, Commit and Push และ Commit and Sync ในที่่นี่ผู้เขียนเลือก Commit and Push ซึ่งเป็นการ commit และโยน file source code ขึ้นไปยัง web server repository ด้วย เพื่อแสดงให้ผู้อ่านเห็นว่ามีการเชื่อมต่อกันแล้วจริง
12. หลังจากกด Commit and Push จะมี message แจ้งเตือนว่า “There is no remote repository configured. Publish this repository to share your commits.” ซึ่งหมายถึงเรายังไม่ระบุและ reomte ไปยัง repository ที่เราต้องการจะเพิ่ม ให้เราเลื่อนมาด้านล่างและระบุ url ของ repository ที่เราได้สร้างไว้ก่อนหน้านี้บน web GitHub แล้วกดปุ่ม Publish ดังรูป
13. เมื่อกดปุ่ม Publish รอจนเสร็จสิ้นแล้วจะปรากฎหน้าต่าง ดังรูป
ให้คลิกมาที่แท็บ Solution Explorer จะสังเกตุเห็นว่าไฟล์แต่ละไฟล์จะมีรูปกุญแจแล้ว แสดงว่า file source code ของเราถูกเพิ่มเข้า Git source control เรียบร้อยแล้ว
14. กลับไปที่เว็บไซต์ GitHub แล้วไปยัง repository ที่เราได้สร้างและเพิ่ม project จาก Visual Studio เข้าไป จะปรากฎ File source code ที่เรา Commit and Push มาจาก Visual Studio แล้ว
เป็นอันเสร็จสิ้นการเชื่อมต่อและเพิ่ม project เข้าไปยัง GitHub Repository ด้วย Visual Studio 2015 แล้วค่ะ ^^
แหล่งข้อมูลอ้างอิง : https://visualstudio.github.com/