ห่างหายไปจากตอนที่หนึ่งนานมากๆ เรามาพบกันในตอนที่สองเลยครับ
Broken Access Control
คือ การที่เราสามารถเข้าไปใช้สิทธิของผู้อื่นได้ โดยเพียงแค่รู้ url ของเค้า เช่น สมมุติเรา login โดยใช้ role user ซึ่งจะไม่เห็น link สำหรับสร้าง user แต่เราไปรู้ว่าใช้ url อะไรใจการเข้า module นั้น เราก็จะสามารถเข้าไปจัดการ user โดยใช้แค่ role user
วิธีทดสอบ
ให้เปิด IE 2 หน้าต่าง โดยหน้าต่างแรก login เป็น user ธรรมดา อีกหน้าต่างหนึ่ง login เป็น user ที่มีสิทธิสูงกว่าเช่น admin จากนั้น copy link ใน module ซึ่งมีใน admin แต่ไม่มีใน user มารันใน หน้าจอของ user ถ้าสามารถเข้าได้ แสดงว่าเกิด Broken Access control
วิธีแก้ไข
ควรจะเช็คสิทธิของผู้ใช้ในทุกหน้าจอ ไม่ใช่แค่ซ่อน url เอาไว้
Error Handling
ระบบต้องไม่เปิดเผยข้อมูล Technical Error Code ที่หน้าเว็บให้ client เห็นควรมีการดักจับ แล้ว แสดงเป็นข้อความเฉพาะที่จำเป็นเพื่อสื่อให้ผู้ใช้เข้าใจ
วิธีทดสอบ
ทดสอบทำให้เกิด error ขึ้นใน web application เพื่อดูว่าจะแสดงข้อความ error แบบใด
วิธีแก้ไข
1. ควรทำหน้า error กลางที่ดักจับ error แล้วแสดงเป็นข้อความที่ผู้ใช้เข้าใจ โดยไม่แสดง error code ใดๆ ที่หน้าจอ แต่อาจจะเขียนลงไฟล์แทน
2. สำหรับ .NET เมื่อนำขึ้น production ควรปิดข้อความ error โดยสร้าง page มารับ error แล้วแก้ web.config เป็นดังด้านล่าง
Web server configuration
ควรจะป้องกันเรื่อง Directory traversal คือ ไม่ควรให้สามารถเข้าเว็บไปยัง directory อื่นๆ ได้
วิธีทดสอบ
ทดลองเข้าเว็บโดยระบุ url จนถึงแค่ชื่อ directory ไม่ระบุชื่อไฟล์ web page หรือ ชื่อ action path เช่น แทนที่จะเข้า ด้วย url แบบนี้ http://www.test.com/document/index.html ก็เข้าโดยใช้ แบบนี้แทน http://www.test.com.document/ เพื่อดูว่าสามารถ browse ไฟล์ใน directory นั้นได้หรือเปล่า
วิธีแก้ไข
1. สำหรับ .NET นั้นใน IIS จะมี option ให้ set ได้ว่าจะให้ directory สามารถ browse ผ่านเว็บได้หรือไม่ ดังรูป ซึ่งเราไม่ควรติ๊กเลือกให้มัน สามารถ browse ได้
2. สำหรับ SunOne สามารถ Disable Directory browsing ได้โดยเข้าไปที่ Web Admin จากนั้นเลือก manage web ที่ต้องการ แล้วเลือก tab Virtual Server Class-> แล้วคลิ๊ก ปุ่ม Manage จากนั้นคลิ๊ก tab Content Mgmt->Document Preferences-> แล้วเลือก Directory Indexing เป็น None โดยต้องใส่ชื่อไฟล์ในช่อง “File to use for error response when indexing is none:” ด้วย
Encryption
- ระบบต้องเข้ารหัสข้อมูลที่เป็นความลับ เช่น รหัสผ่าน, Connection Strings และ ข้อมูลอยู่ในระดับ Confidential หรือ Secret
- Salted Hash Techniques – ถ้าต้องมีการส่งผ่าน password หรือข้อมูลสำคัญจากระบบหนึ่งไปยังอีกระบบหนึ่งนอกจากการ encrypt ข้อมูลแล้ว ควรเพิ่มอักขระพิเศษใส่เข้าไป โดยตกลงกันในตอนส่งและตอนรับ
วิธีทดสอบ
Password ใน database ต้องถูกเข้ารหัสในแบบที่อ่านไม่เข้าใจ
วิธีแก้ไข
- ควรเข้ารหัส password
- ใช้ salt hash techniques กับ password ที่ส่งผ่านข้ามระบบ
Monday, 5 May 2008
Security Testing ตอนที่ 2
Tags: articles, author: prahs, security, testing
Monday, 10 March 2008
Security Testing ตอนที่ 1
Security Testing(ตอนที่ 1)
สวัสดีครับผม Mr. Invert prahs กลับมาเขียน blog แล้วครับหลังจากที่หายหน้าหายตาไปกันตั้งนานเพราะว่าไปลง Project กับคุณ tofu เลยไม่มีเวลาว่างมาเขียน blog (ปล. จริงๆก็อู้ด้วยส่วนหนึ่ง) แต่เชื่อแล้วจริงๆว่าถ้าคิดจะเขียน blog ก็เหมือนมีลูกจริงๆ เพราะว่าต้องค่อยป้อนบทความใหม่ๆเข้ามาเรื่อยๆ เหมือนมีห่วงผูกคอ เอาหละเริ่มออกทะเลไปไกลแล้วมาเข้าเรื่องกันดีกว่า ซึ่งอย่างที่ผมบอกไปว่าได้ไปลง project จริงๆจังๆกับคุณ tofu ซึ่งถือเป็น project แรกของผมกับคุณ tofu ทำให้ผมผู้ซึ่งเป็นเด็กจบใหม่ (จากปีที่แล้ว) ได้เห็นมุมมองเกี่ยวกับด้านการทำ Web Application ที่กว้างขึ้นและได้เรียนรู้หลายๆสิ่งหลายๆอย่างมากมายซึ่งถ้ามีเวลาว่างๆจะมานั่งเขียน blog มาเล่าให้ฟังว่าป็นยังไง ซึ่งเรื่องแรกที่ผมจะนำมาเล่าก็คือ Security Testing ผมเองก็เพิ่งจะรู้ว่าเวลาเขียน Web Application เกี่ยวกับเงินๆทองๆนี่มันยุ่งยากมันจุกจิกอย่างนี้นี่เอง
ในการทดสอบ Application ที่เราพัฒนานั้นนอกจากเราจะต้องทำการทดสอบ bug ของ Application แล้ว ถ้าหาก Application นั้นมีส่วนที่เกี่ยวข้องกับระบบการเงิน เราอาจจะต้องมีการทดสอบด้าน security ด้วยซึ่งการทดสอบ security นี้ไม่ว่าจะเป็น Windows Application (หรือบางคนจะเรียกว่า Desktop Application) หรือ Web Application นั้นจะมีลักษณะการทดสอบที่คล้ายๆกันเพียงการทดสอบ Web Application นั้นอาจจะมีเรื่องที่ยุ่งยากหรือจุกจิกกว่ากันเยอะ ซึ่งการทดสอบหลักๆจะแบ่งออกเป็น 7 หัวข้อหลักๆดังนี้
URL & Parameter Manipulation
เป็นการ check ว่าในการส่ง parameter แบบ get ที่ส่งผ่าน URL หรือส่งผ่าน Hidden field นั้นมีข้อมูลที่สำคัญส่งมากับ URL parameter หรือไม่เพราะว่าอาจจะเป็นจุดบอดที่สามารถให้บรรดาเหล่า Hacker นั้นใช่จุดบอดเหล่านี้สาวเข้าไปถึงข้อมูลสำคัญของเราได้
ซึ่งถ้าหากว่าจำเป็นจริงๆที่จะต้องทำการส่งผ่าน URL parameter หรือ hidden field จริงๆก็ควรที่จะทำการ encrypt ข้อมูลที่ส่งผ่าน URL parameter หรือ hidden field เพื่อเพิ่มความปลอดภัยแต่ว่าถ้าเลี่ยงได้ก็ควรไปใช้ Session ในการเก็บข้อมูลเหล่านี้แทน
ข้อแนะนำเกี่ยวกับการ encrypt data เนื่องจาก algorithm ในการ encrypt data มีมากมายก็จริงแต่ algorithm ส่วนใหญ่มักจะมีคนแก้ได้แล้วเป็นส่วนมากดังนั้นในการหา algorithm encrypt data มาใช้ในงานที่ serious จริงๆ ควรที่จะหา encrypt data ที่มี salted hash techniques โดยสามารถเพิ่มความปลอดภัยของข้อมูลได้มากขึ้นเป็นร้อยเป็นพันเท่าครับ โดยการใส่ keyword เข้าไปผสมลงใน data ก่อนจะผ่านกรรมวิธีการ encrypt data เพื่อให้แก้ไขได้ยากยิ่งขึ้นซึ่งเราเรียก keyword ที่เราไปผสม data นี้ว่า salt (ซึ่งเป็นตัวเดียวกันกับคำว่า เกลือ ครับ ก็เหมือนเวลาที่เรากินอาหารแล้วอยากให้อาหารอร่อยขึ้นเราก็เหยาะเกลือลงไป แต่ในที่นี้เพื่อที่จะทำให้การถอด data ยากขึ้น) โดยถ้าสนใจอยากลองเล่นก็ลองไปดูตัวอย่างและวิธีการในเวบนี้ครับ http://www.securitydocs.com/library/3439 หรือถ้าต้องการดูอย่างมุมมองกว้างๆก็แนะนำเวบนี้เลย http://www.developerfusion.co.uk/show/4679/1/%20
หรือจะเป็นอีกวิธีคือเก็บข้อมูลที่เป็น URL Parameter ทั้งหมดลงไปใน hidden field ทั้งหมดจากนั้นก็ใส่ script ป้องกันการ view source ลงไปในหน้า page นั้น (เช่นที่เราเห็นกันบ่อยคือกันห้าม click ขวา) เพื่อป้องกันการรู้ชื่อ parameter ของ hidden field ในหน้านั้นๆ แต่ขอบอกว่าวิธีนี้ไม่ค่อยจะใช้ได้ผลสักเท่าไร เพราะว่าถ้าหากผู้ใช้ไปปิดความสามารถในการ run javascript ที่ browser แล้วก็ไม่สามารถกันได้อยู่ดี และ script ส่วนใหญ่จะไม่รองรับทุก browser ด้วยครับคือบางครั้งกัน IE กับ firefox ได้แต่อาจจะกัน Opera ไม่ได้ถ้าคนเขียนไม่ได้เขียนรองรับทุก OS
สรุป ถ้าจะกันปัญหาทางด้าน URL & Parameter Manipulation มีสองวิธีที่แก้ได้แน่นอนคือ เก็บข้อมูลที่เป็นความลับใส่ session หรืออีกวิธีก็ทำการ encrypt data เพื่อป้องกันไม่ให้แก้ข้อมูลออกได้ง่ายๆ
SQL Injection
เป็นการใส่คำสั่ง sql เพื่อรันให้ทำงาน โดยกรอกเข้าไปในช่องของ text box เพื่อทำอะไรบางอย่าง เช่น สามารถ login เข้าไป, หรือ รันคำสั่งเพื่อ drop table เป็นต้น ปัญหาแบบนี้จะเจอบ่อยครับในกรณีที่ programmer เขียน SQL ที่ใช้ใน program แบบไม่ได้ดักจับ escape characters บางตัว เช่น double quote (“), single quote (‘) เป็นต้น ซึ่งการที่เราไม่ได้ดักจับหรือจัดการ escape characters นั้นอาจจะทำให้เกิดผลดังตัวอย่างด้านล่างดังนี้
String sql = “select * from user where password = ‘” + password + ”’ ”;
ซึ่ง variable ที่ชื่อว่า password นั้นเป็นตัวรับค่าข้อมูลมาจาก user สมมติว่า user คนนั้นกรอกค่าลงไปดังนี้
Pwd12345’ or ‘1’=’1
ซึ่งหากลองแทน variable password ลงใน variable sql ดูผลที่ได้ก็จะเป็นดังนี้
select * from user where password = ‘Pwd12345’ or ‘1’=’1’
ซึ่งถึงแม้ว่า password จะผิดแต่ว่า user ก็สามารถ login เข้าไปเพราะว่า or ‘1’=’1’ มันเป็นจริงเสมอนอกจาก SQL Injection จะเกิดขึ้นกับคำสั่ง SQL แล้วบางครั้งการเรียกใช้ store procedure ก็เกิด SQL Injection เหมือนกันถ้าหากว่าไม่ได้ระมัดระวังเรื่อง escape characters
วิธีป้องกัน ในบาง DB นั้นมี security ที่รองรับการป้องกัน SQL Injection อยู่แล้วเช่น MySQL ที่เพิ่งเริ่มมีใน version 5.0 โดยต้องใช้ method ชื่อ real_escape_chars() เพื่อช่วยในการจัดการเกี่ยวกับ escape characters หรือในบางภาษาก็มีการจัดการ escape characters ใน SQL ให้เรา เช่น ภาษา Java ซึ่งในภาษา Java นั้นก็จะมี Prepare Statement ที่ช่วยจัดการในเรื่องของการทำ Query แต่สำหรับภาษาไหนหรือ DB ตัวไหนที่ไม่ได้รองรับการป้องกัน SQL Injection ก็ควรที่จะต้องเขียน program ในส่วนที่จัดการ escape characters กันเอาเองซึ่งผมก็มีตัวอย่าง code ของ Java มาให้ดู
http://pastebin.com/f30a7a3be
ที่ผมให้ตัวอย่างมาให้ที่เป็นในกรณีของ Java นั้นไม่ได้หมายความว่าให้ใช้ตัวนี้แทน prepare statement นะครับยกตัวอย่างเพื่อเป็นแนวทางการเขียนเพื่อนำไปดัก Escape Characters ในภาษาอื่นครับ แต่ว่าการดัก Escape Characters นั้นส่วนใหญ่จะดักกันตรงที่เครื่องหมาย double quote (“), single quote (‘) และ semicolon (;) มากกว่าครับส่วนที่เหลือถ้าอยากจะดักเพิ่มก็แล้วแต่ความเหมาะสมครับ เช่น ใน MS SQL นั้นมี “--” แทน comment ซึ่งเราควรที่จะดักเพิ่ม เป็นต้น ซึ่งนอกจากวิธีที่ผมได้กล่าวมาแล้วนั้นยังมี trick เล็กๆน้อยๆอีกครับ คือการกำหนดสิทธิ user ให้มี role ตามที่ได้ใช้จริงๆเท่านั้นเพื่อป้องกันว่า เช่น บางครั้งการเขียน program เราอาจจะฝั่ง business process ใน store procedure ของฝั่ง DB ก็ได้ ซึ่งบางทีใน store procedure นั้นอาจจะมี business process ที่ต้องไปรัน command ของ OS ได้ ดังนั้น store procedure นั้นควรที่จะมอบสิทธิให้กับ user ที่ใช้จริงๆเท่านั้น เพราะว่าในตอนทดลองเราอาจจะขี้เกียจมานั่งกำหนดสิทธิให้สิทธิทุกอย่างหมดเลย ดังนั้นก่อนนำเข้าสู้ระบบนำไปใช้จริงก็อย่าลืมกำหนดสิทธิใหม่ด้วยครับ
ปล. Code ด้านบนนั้นที่จริงใช้ Regular Expression น่าจะดีกว่าครับในการตรวจจับแต่ว่าผมไม่เคยลองเล่น Regular Expression ของ Java ซักทีเคยเล่นแต่ javascript ครับใครที่เคยเล่นแล้วช่วยแนะนำผ่าน comment ได้ครับ
Cross-site scripting (XSS)
เป็นใส่ script บางอย่างเข้าไปในเว็บ เช่น อาจจะใส่ javascript เข้าไปในช่อง text box ดังนี้ <script>alert(“Hello World -Popup”)</script> เพื่อสร้าง popup window แต่ว่าบางครั้ง hacker อาจจะนำ script บางอย่างเข้าไปเพื่อหวังผลบางอย่าง เช่น ดึงข้อมูล cookie ออกมาจาก client site โดยใช้ javascript, vbscript หรือภาษา script อื่นๆ
วิธีแก้ไข ใช้วิธีการ Convert HTML Tags ซึ่งผู้ที่กรอกเข้ามาถ้าหากมีส่วนหนึ่งส่วนใดให้แปลงตามรูปแบบในตารางด้านล่างนี้ก่อนค่อยนำเข้า database
ซึ่งวิธีนี้ข้อเสียเราต้องมานั่งเขียน program เพื่อแปลง code เองซึ่งค่อยข้างจะยุ่งยากนิดนึงแต่ก็อาจมีทางเลือกอีกในการกัน XSS คือใช้
http://pastebin.com/f7249386c
จากตัวอย่าง Code ด้านบนนั้นที่จริงใน Apache นั้นมี Opensource ที่รองรับ Convert HTML Tags อยู่ครับชื่อว่า class StringEscapeUtils อยู่ใน package Apache Commons ครับ http://commons.apache.org/lang/api/org/apache/commons/lang/StringEscapeUtils.html
ซึ่งจะทำให้เราไม่ต้องมาเขียน code ให้เหนื่อย (อันที่จริงผมลองค้นหาใน apache commons แล้วนะแต่ว่าตอนแรกไม่เจอเลยต้องมานั่งเขียนเองเพิ่งมาเจอที่หลัง) โดยใช้ method escapeHtml() มันก็จะจัดการให้เราโดยที่เราไม่ต้องไปเขียน code เองแล้วก็อย่างที่บอกไปด้านบนครับมันมี method escapeSql() ที่ไว้ใช้แก้ SQL Injection ด้วย เหอะๆๆ เพิ่งไปเจอครับตอนแรกที่ผมลองค้นดูนึกว่ามันแยกเป็น class แต่ว่าที่จริงมันเอาไปรวมอยู่ใน class เดียวกันแล้วแบ่งแยกเป็น method ครับ
Tags: articles, author: prahs, security, testing
Tuesday, 6 November 2007
Crack password Oracle database ตั้งแต่ 8i ถึง 11g
คงเป็นที่ทราบกันดีว่า password ที่เราเก็บไว้ในฐานข้อมูลเพื่อไว้ใช้ในการทำ authentication (ระบุตัวตน) นั้นในปกติการเก็บ password นั้นเราจะไม่เก็บกันตรง ๆ เช่นเราตั้ง password ว่า siam เวลาเก็บลงใน database จริงแล้วจะไม่เก็บคำว่า siam โดยคำว่า siam นั้นจะถูกแปลงเป็นคำอื่น ๆ โดยจะไม่เหลือเค้าโครงเดิมเลย โดยการแปลงนี้ก็มี algorithm (วิธีการ) ต่าง ๆ มากมายกันไปซึ่งเราจะเรียกวิธีการนี้ว่า การ hash password แต่ว่ามันอาจจะยังไม่เพียงพอ ทำให้บางคนนั้นก็ได้เพิ่ม keyword เข้าไปผสมลงใน password ก่อนจะผ่านกรรมวิธีการ hash password เพื่อให้แก้ไขได้ยากยิ่งขึ้นซึ่งเราเรียก keyword ที่เราไปผสม password นี้ว่า salt (ซึ่งเป็นตัวเดียวกันกับคำว่า เกลือ ครับ ก็เหมือนเวลาที่เรากินอาหารแล้วอยากให้อาหารอร่อยขึ้นเราก็เหยาะเกลือลงไป แต่ในที่นี้เพื่อที่จะทำให้การถอด password ยากขึ้น)
ซึ่งวิธีการนี้อาจะนำไปใช้ร่วมกับข้อมูลที่ป็นความลับ เพื่อทำการเข้ารหัส เพื่อไม่ให้คนอื่นที่สามารถทะลุทะลวงล้วงเข้ามาในฐานข้อมูลของเรา นั้นอ่านข้อมูลนี้ได้ ถึงได้ข้อมูลมาอาจจะต้องมานั่งเสียเวลาในการแก้ algorithm ตัวนี้มากขึ้น แต่ไม่น่าเชื่อว่าเจ้าแห่ง database อย่าง Oracle นั้น password ที่ถูกทำการ hash ไว้แล้วนั้นจะถูกแก้ออกมาได้อย่างง่ายดายและที่สำคัญไม่ใช่มีแค่ tool เดียวเท่านั้นที่สามารถแก้ได้ซึ่งแสดงออกมาดังตารางด้านล่างดังนี้ จะเห็นได้ว่าโปรแกรมที่ชื่อ worrauthbf version 0.2 นั้นใช้เวลาแค่ 3s วินาทีเท่านั้นเอง แต่ว่าที่เร็วกว่านั้นก็เพราะใช้ CPU ประมวลผลแบบ Dualcore แต่ถ้าเป็นแบบที่ไม่ใช่ CPU ที่เป็นแบบ Dualcore หละก็ orabf 0.7.6 จะเร็วกว่าครับ แต่ว่า password ที่ crack ได้เร็วนั้นขึ้นอยู่กับว่าจำนวน password นั้นยาวหรือสั้นมากแค่ไหนด้วยครับ ซึ่งถ้าใครอยากลองว่าจะ crack ได้จริงหรือเปล่าลองไปโหลดโปรแกรมที่เว็บนี้เลยครับ
เอาหละโม้มามากแล้วลงมือทำกันจริงๆ กันดีกว่าเดี๋ยวจะหาว่าผมมาโม้อีกโดน schema ที่ผมจะเอามาลองนั้นคือ schema HR โดยผมจะเปลี่ยน password เป็น “HRACLE” ตัวใหญ่หมดครับและ database ที่ลองคือ Oracle 11g R1 ครับโดยตอนแรกนั้นให้เราไปติดตั้งโปรแกรม worrauthbf version 0.2 ลงในเครื่องก่อนครับหลังจากนั้นก็ไปทำตามขึ้นตอนนี้ครับ
- เตรียมข้อมูลเพื่อที่จะทำการถอด password ที่ทำการ hash แล้วให้กลับมาเป็น password ปกติโดยให้เรา login เข้าไปใน database ก่อนโดยเราต้องมีสิทธิ์เป็น admin ด้วยนะครับไม่งั้นดึงข้อมูลไม่ได้ โดยเราต้องใช้ข้อมูลตามรูปแบบดังนี้ครับ
username:password hash:11g password hash:sid:server:
username :: นั้นเป็นชื่อของ username ที่เราต้องการจะแก้ hash password ครับ
password hash :: อันนี้คือ password ที่ถูกทำการ hash แล้วครับ
11g password hash :: ที่นี้ก็คือ salt ที่ผมบอกนั้นเองครับโดย salt ตัวนี้จะไม่ซ้ำกันตามแต่ที่ระบบจะสร้างขึ้นมา
sid :: คือชื่อของ Oracle database instance เช่น orcl
server :: นั้นเป็นชื่อของ server ที่ database นั้นอยู่ครับ
หมายเหตุ ในแต่ละ version ของ database นั้นอาจจะต้องการ parameter ที่แตกต่างกันเพื่อที่จะใช้เป็นข้อมูลที่จะทำการแก้ hash password ครับโดย salt นี้ Oracle เพิ่งจะมาเริ่มมีใน Oracle database 11g ครับ
แต่ว่าโชคดีครับที่เราไม่ต้องไปหา parameter เหล่านี้เองให้เราใช้คำสั่ง sql นี้ครับแต่ต้องอย่าลืมว่าต้อง login เป็น username ที่มีสิทธิ์เป็น admin ครับ ดังนี้
select u.name||':'||u.password||':'||substr(u.spare4,3,63)||':'||d.name||':'||
sys_context('USERENV','SERVER_HOST')||':'
from sys.user$ u, sys.V_$DATABASE d
where u.type#=1;
ซึ่งเมื่อ run ใน database ที่ผมทดสอบผลที่ได้คือ
HR:E313D0596944C41D:6E7036A1EB587DCCE6D84DFF73E6F80207BB8F980B5643D01AE23F747FAC:ORCL:vista: - หลังจากนั้นก็จะใช้ command prompt run โปรแกรมเพื่อที่จะทำการ crack hash password ตามขั้นตอนนี้ครับ
- เข้าไปใน home directory ที่เราติดตั้ง worrauthbf version 0.2 ไว้
- run คำสั่ง woraauthbf แล้วตามด้วย parameter ต่างๆ ดังนี้
- -p :: คือชื่อ file ที่เก็บข้อมูลที่เราเตรียมไว้ข้างต้นซึ่งในที่นี้คือ 11gHash.txt
- -t :: ในที่นี้คือเป็นการระบุว่า hash password ที่เราต้องต้องการแก้นั้นเป็น version อะไรในที่นี้ให้ระบุว่า 11g10g
- -c :: เป็นการระบุว่า password ที่เราจะแก้ hash password นั้นมี character ชนิดใดบ้างซึ่งแบ่งได้เป็น สามชนิดคือ
- "alpha" คือ [A-Z]
- "alphanum" คือ [A-Z0-9]
"all" คือ [A-Z0-9!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/]
ซึ่งให้เราเลือกว่าทดลองตามความเหมาะสมครับถ้าสมมติเรารู้ว่า password เรามีแค่ตัวอักษรและตัวอักษรปนกันก็ให้เลือก alphanum ส่วนในที่นี้เรารู้อยู่แล้วว่า password ของเรามีตัวอักษรอย่างเดียวก็เลือก alpha ครับ
- -d :: นั้นเป็นการระบุ dictionary file ครับซึ่งจะระบุหรือไม่ระบุก็ได้แต่ถ้าเราระบุมาก็จะทำให้แก้ hash password ได้เร็วขึ้นมากแต่ในที่นี้ผมไม่ใส่นะครับ
ที่จริง parameter นั้นมากกว่านี้อีกซึ่งถ้าใครสนใจก็ลองข้าไปดูที่เว็บนี้ครับ
หมายเหตุ คือผมลองแก้ hash password หลายตัวพร้อมกันครับผลที่ได้กว่าจะแก้ได้แต่ละตัวช้ามากครับ
สรุป
ถ้าไม่มี dictionary file ช้ามากถึงมากที่สุด
ใช้กับ password ที่เป็นตัวใหญ่ได้อย่างเดียวนั้นก็คือถ้าเป็น 11g แล้วตั้ง password case sensitive หละก็จะแก้ไม่ได้ดังนั้นถึงจะบอกว่ารองรับ 11g แต่ก็ไม่เต็มร้อยครับต้องรอ version ใหม่ดีกว่า
ความยาวของ password รองรับแค่ 10 ตัวอักษรเท่านั้นถือว่าน้อยมากซึ่งตอนนี้มีตัว crack hash password ของ database Oracle ออก version ใหม่มาคือ checkpwd ซึ่งผมก็ยังไม่ได้ลองครับลองไปเล่นดูตามนี้เลยครับ http://www.red-database-security.com/software/checkpwd200a12.zip
อ้างอิง
http://www.petefinnigan.com/weblog/archives/00001103.htm
http://soonerorlater.hu/index.khtml?article_id=513
Tags: articles, author: prahs, database, oracle, security
Thursday, 18 October 2007
Oracle E-Business Suite 12.0.3 RUP3
เมื่อวันที่ 16 ที่ผ่านมา, Oracle E-Business Suite ได้ออก Update Pack ชุดใหญ่มาครับ
ตามไป download ได้ที่ metalink ส่วนรายละเอียดและคู่มือการดูที่ Doc ID: 445192.1

Thursday, 26 July 2007
แนะนำให้ลง patch 10.1.3.3 บน Oracle Application Server 10.1.3.X
ใครที่กำลังใช้งาน Oracle Application Server 10.1.3.X ดังรายการต่อไปนี้
- Oracle Application Server 10g Release 3 (10.1.3.0.0)
- Oracle Application Server 10g Release 3 (10.1.3.1.0), which included the Oracle SOA Suite
- Oracle Application Server 10g Release 3 (10.1.3.2.0), which included the Oracle WebCenter Suite
- Any Oracle Application Server 10g Release 3 (10.1.3.n) standalone installation
- Any Oracle Application Server 10g Release 3 (10.1.3.n) that has been patched with 10g Release 3 (10.1.3) Patch Set 1 (10.1.3.1.0) or 10g Release 3 (10.1.3) Patch Set 2 (10.1.3.2.0)
เพราะจะแก้ปัญหา bugs ของ components เหล่านี้ทั้งหมด
- Oracle Application Server 10g Enterprise Edition
- Oracle Containers for J2EE
- Oracle ESB
- Oracle HTTP Server
- Oracle JDeveloper
- Oracle TopLink
- Oracle XML Developers Kit
- Oracle BPEL Process Manager
- OracleAS Integration Platform
- OracleAS Single Sign-On
- Oracle Web Services
รายละเอียดดูที่ metalink นะครับ patch#6148874
Tags: application server, author: kim, middleware, oracle, patch, security, soa
Wednesday, 18 July 2007
Oracle E-Business Suite (EBS) R12 ออก update packs 12.0.2 แล้ว
วันนี้มีข่าวแจ้งให้ทราบ ว่า Oracle E-Business Suite ได้ออก update packs 12.0.2 แล้ว,
โดยโมดูลที่จะถูก patch ก็จะมี
- Applications DBA
- Applications Technology
- Business Intelligence
- Customer Relationship Management
- Financials
- Human Resources
- Procurement
- Projects
- Supply Chain Management
- Supply Chain Planning
รายละเอียดตามไปดูที่ metalink doc id: 430114.1 นะครับ
แต่คาดว่าลูกค้า Oracle EBS ในไทย คงยังไม่ได้ implment R12 กันเพราะว่ายังใหม่มาก
ส่วนใหญที่ได้พบเจอก็จะเป็น 11i, 11.5.10.2 น่ะครับ, ที่ใหม่ที่สุด
บทความที่เกี่ยวข้อง
Tuesday, 17 July 2007
ในที่สุด Oracle Database 11g ก็สามารถใช้ password แบบ case sensitive ได้
ใช้งาน Oracle Database มาซะนาน,
คุณเคยสังเกตหรือไม่ว่า password ที่ใส่ไป เช่น scott/tiger มันไม่ case sensitive
แต่ใน version 11g ที่ได้เปิดตัวไปแล้วนั้น
จะเพิ่มคุณสมบัติ (features) เรื่อง security มากขึ้น ขอหยิบจาก white paper มาให้ดูนะครับ
"Increased password security with support for case-sensitive, multibyte passwords, and strong password-hashing algorithms, such as Secure Hash Algorithm (SHA-1) and salt
Additional secure-by-default configuration settings supporting password policies and audit options"
อย่างแรกที่โดนใจผมมากเลยก็คือ สามารถกำหนด password แบบ case sensitive ได้แล้ว
ถัดมาอีกคุณสมบัตินึงที่จะหยิบมาคุยก็คือใน veesion 11g นี้,
จะสามารถทำ fingerprint password ด้วย SHA-1 algorithm
โดยมีความยาวของผลลัพธ์ (message digest) ถึง 160 bit
จึงมีความปลอดภัยกว่า MD5 128 bit สูงมากครับ
บทความที่เกี่ยวข้อง
Tags: 11g, author: kim, database, oracle, security
Saturday, 15 April 2006
Update ข่าว security สัปดาห์นี้
วันนี้อยากจะขอ update ข่าว security ที่สำคัญประจำสัปดาห์นะครับ ค่อนข้างคึกคักพอสมควร
Microsoft ออก IE patch (http://www.microsoft.com/athome/security/update/bulletins/200604.mspx)
แก้ 10 ช่องโหว่ใน Web browser รวมทั้ง bug สำคัญที่ถูกโจมตีไปแล้ว
นอกจากนี้ Microsoft ยังประกาศว่ามีช่องโหว่สำคัญใน Outlook Express และ bug ใน component ของ
Frontpage กับ SharePoint 8 ใน 10 ของช่องโหว่ใน IE สามารถโดนโจมตีเพื่อควบคุม Window OS จาก
Web browser ได้ โดยผู้โจมตีจะสร้างเว็บไซต์เพื่อหลอกให้ผู้ใช้ที่เข้าดูติดกับ และควบคุม PC ของผู้ใช้นั้น
จาก IE มาถึงคู่แข่งสำคัญ Mozilla ก็ไม่น้อยหน้า ออก update เพื่ออุดรูโหว่ใน Firefox รวมทั้งเพิ่ม
เวอร์ชันสำหรับใช้กับ Macs ที่อยู่บน Intel processor ด้วย
รูโหว่ที่ร้ายแรงที่สุดคือ bug ที่ทำให้ผู้โจมตีสามารถควบคุมเครื่องคอมพิวเตอร์นั้นได้
รูโหว่ทั้งหมดจะถูกแก้ไขใน version Firefox 1.5.0.2 (http://www.mozilla.com/firefox/)
ซึ่งออกเมื่อวันพฤหัสบดีที่ผ่านมา
สุดท้าย เป็นของ DB ชื่อดัง Oracle ซึ่งไม่รู้พลาดอีท่าไหน ถึงประกาศข่าวช่องโหว่ใน Oracle ของ DB ซะละเอียด
แถมยังบอกวิธี และ code สำหรับโจมตีช่องโหว่นั้นซะอีก แต่ตอนนี้ยังไม่ออก patch มาแก้
วันนี้คุณอุดรู(โหว่) แล้วหรือยัง?
ที่มา http://news.com.com/This+week+in+software+flaws/2100-1002_3-6061266.html
http://news.com.com/Critical+megapatch+sews+up+10+holes+in+IE/2100-1002_3-6060038.html?tag=nl