1 Oracle เป็นเรื่องง่ายที่จะแนะนำ Oracle ให้เป็นฐานข้อมูล RDBMS ที่ค่อนข้างใหม่ซึ่งมีส่วนแบ่งการตลาดค่อนข้างมาก และมักใช้ในฐานข้อมูลขนาดใหญ่บางแห่ง นอกเหนือจากการรองรับภาษา SQL ต่างๆ เป็นอย่างดีแล้ว ยังมีแพ็คเกจ กระบวนการจัดเก็บที่หลากหลาย และยังรองรับการสร้าง Java และไลบรารี่อันทรงพลังดังกล่าวยังมอบความสะดวกสบายที่ดีสำหรับการแฮ็กอีกด้วย
ออราเคิลมีบัญชีเริ่มต้นจำนวนมากและขั้นตอนการจัดเก็บจำนวนมาก ระบบสร้างขึ้น บัญชีเริ่มต้นจำนวนมากเปิดสู่สาธารณะ ในช่วงไม่กี่ปีที่ผ่านมา ช่องโหว่ของ Oracle จำนวนมากได้รับการเผยแพร่ รวมถึงโอเวอร์โฟลว์และ SQL มีข้อบกพร่องมากมาย รวมทั้งการฉีดยา ที่นี่ ช่องโหว่การแทรก SQL มีความสำคัญอย่างยิ่ง เนื่องจากใน Oracle โดยไม่ต้องเพิ่มคำหลักอื่น AUTHID CURRENT_USER กระบวนการที่เก็บไว้ที่สร้างขึ้นจะทำงานในฐานะผู้สร้างเมื่อทำงาน และสาธารณะไม่สามารถเข้าถึงกระบวนการที่เก็บไว้เหล่านี้ ทั้งหมดมีสิทธิ์ในการโทร ดังนั้นหาก มีการฉีดเข้าไปในกระบวนการจัดเก็บในตัว จึงเป็นเรื่องง่ายสำหรับผู้ใช้ทั่วไปในการอัพเกรดเป็นสิทธิ์ของระบบ Oracle Oracle มีบัญชีในตัวจำนวนมาก ซึ่งบางบัญชีมีรหัสผ่านเริ่มต้นและมีสิทธิ์ในการเชื่อมต่อ ด้วยวิธีนี้ หากพอร์ต Oracle ไม่ได้รับการปกป้องโดยไฟร์วอลล์และสามารถเชื่อมต่อจากระยะไกลได้ หากคุณเข้าสู่ระบบ เข้าสู่ระบบจากระยะไกลแล้วใช้ SQL ของกระบวนการที่เก็บไว้ในระบบเพื่อฉีดช่องโหว่ระบบจะล้มเหลว แน่นอนว่าการเข้าสู่ระบบ Oracle ต้องใช้ SID แต่ tnslintener ของ Oracle ไม่ได้ตั้งรหัสผ่าน โดยค่าเริ่มต้น ดังนั้น คุณสามารถใช้ tnscmd .pl ใช้คำสั่ง services เพื่อค้นหา SID ของระบบ (ในเวอร์ชันที่ใหม่กว่า ข้อบกพร่องนี้ได้รับการแก้ไขแล้ว) นี่เป็นโหมดคลาสสิกของการบุกรุก Oracle
2 พื้นหลังทางเทคนิคของ Oracle Web Hacking
ตารางระบบที่หลากหลายของ Oracle ข้อมูลเกือบทั้งหมดใน Oracle ถูกจัดเก็บไว้ในตารางระบบ สถานะปัจจุบันของการทำงานของฐานข้อมูล ข้อมูลผู้ใช้ปัจจุบัน ข้อมูลฐานข้อมูลปัจจุบัน ข้อมูลเกี่ยวกับฐานข้อมูลและตารางที่ผู้ใช้สามารถเข้าถึงได้... ตารางระบบเป็นส่วนสำคัญของฐานข้อมูลทั้งหมดเกือบ รับข้อมูลทั้งหมดโดยการสืบค้นตารางระบบที่จำเป็นเร่งด่วน ตัวอย่างเช่น sys.v_$option มีข้อมูลบางอย่างเกี่ยวกับฐานข้อมูลปัจจุบัน เช่น รองรับ java หรือไม่ เป็นต้น all_tables มีข้อมูลตารางทั้งหมด all_tab_colmuns มีข้อมูลคอลัมน์ทั้งหมด ฯลฯ ซึ่งช่วยให้เรามีวิธีที่ใหญ่มากในการ รับข้อมูล ความสะดวกในภายหลังจะเกี่ยวข้องกับคำอธิบายวิธีใช้ตารางระบบเพื่อรับข้อมูลที่ละเอียดอ่อน
ในบรรดาช่องโหว่ต่างๆ ของ Oracle เป็นเรื่องเร่งด่วนที่จะพูดถึงการแทรกขั้นตอนที่เก็บไว้ จริงๆ แล้วไม่มีความลึกลับ ขั้นตอนและฟังก์ชันที่เก็บไว้ยังได้รับอินพุตจากผู้ใช้แล้วส่งไปยังเซิร์ฟเวอร์ฐานข้อมูลเพื่อทำการวิเคราะห์และดำเนินการ ถูกเลือก หากสคีมาถูกสร้างเป็นสตริง SQL และนำไปใช้ จะทำให้ง่ายต่อการผสมข้อมูลและคำสั่ง ส่งผลให้มีการแทรก SQL แต่ขึ้นอยู่กับว่าการฉีดเกิดขึ้นที่ใด ลักษณะของช่องโหว่ของการฉีดก็แตกต่างกันเช่นกัน Oracle ใช้ PL/SQL และช่องโหว่เกิดขึ้นในภาษา DML เช่น select เนื่องจากไม่รองรับการใช้งานหลายภาษา หากคุณต้องการรันภาษาของคุณเอง เช่น GRANT DBA TO LOVEHSELL และภาษา DDL อื่นๆ คุณต้องสร้างฟังก์ชันหรือขั้นตอนการจัดเก็บของคุณเอง หากคุณไม่มีสิทธิ์ที่เกี่ยวข้อง คุณยังสามารถใช้การแทรกเคอร์เซอร์และใช้แพ็คเกจ dbms_sql เพื่อหลีกเลี่ยงข้อจำกัดได้ การฉีดส่วนใหญ่เป็นแบบจำกัดข้างต้น คุณต้องพึ่งพาแพ็คเกจหรือเคอร์เซอร์อื่น ๆ ที่สร้างขึ้นเองเพื่อให้บรรลุวัตถุประสงค์ในการเพิ่มสิทธิ์ อย่างไรก็ตาม ยังมีช่องโหว่อยู่บ้าง แต่สภาพแวดล้อมการฉีดนั้นหลวมมากซึ่งก็คือผู้ใช้ การป้อนข้อมูล การวางบล็อก pl/sql แบบไม่ระบุชื่อระหว่างจุดเริ่มต้นและจุดสิ้นสุด ในกรณีนี้ การฉีดสามารถแทรกลงในคำหลายคำได้โดยตรงโดยแทบไม่มีข้อจำกัดใดๆ เลย จะเห็นได้ว่านี่เป็นช่องโหว่ที่ส่องประกายเกิดขึ้น ปัญหาสำหรับเว็บของเราเทคโนโลยีการฉีดได้นำความฉลาดดังกล่าวกลับมา
โอเค สิ่งที่กล่าวมาข้างต้นเป็นเทคโนโลยีที่ไม่เหมาะสมของ Oracle แต่ในสภาพแวดล้อมปัจจุบันจำนวนมาก บริการทางเว็บเปิดกว้างต่อโลกภายนอก และฐานข้อมูลบอสแบ็กเอนด์ได้รับการปกป้องโดยไฟร์วอลล์ เป็นไปไม่ได้ที่จะสูญเสียข้อมูลโดยละเอียดของฐานข้อมูลมากเกินไป และไม่สามารถเข้าสู่ระบบได้โดยตรงอีกต่อไป ฐานข้อมูลกำลังดำเนินการอยู่ ในขณะนี้ ถึงเวลาที่จะต้องพิจารณาใช้ช่องโหว่ที่หยุดเว็บเพื่อโจมตีฐานข้อมูลสำรอง ตอนนี้เรามาดูวิธีการพัฒนาการฉีดในสภาพแวดล้อมเว็บของ Oracle กัน! Oracle สามารถทำงานได้ดีในสภาพแวดล้อมของเว็บต่างๆ และผลกระทบของสภาพแวดล้อมเว็บต่างๆ ที่มีต่อการฉีดของเรานั้นไม่ได้ดีนัก ใน asp, .net และ jsp ก็คือ The พารามิเตอร์ที่เข้ามาจะไม่ถูกกรองเลย แต่เนื่องจากภาษา .net และ jsp เป็นภาษาหมวดหมู่ที่แข็งแกร่ง แม้ว่าภาษา SQL จะไม่ได้ถูกกรองเมื่อพูดถึงการแทรกตัวเลข ข้อผิดพลาดจึงอาจเกิดขึ้นเมื่อยอมรับพารามิเตอร์ เหตุผลที่การแทรกปรากฏขึ้น คลาสสตริงมีพารามิเตอร์เพิ่มเติม ในสภาพแวดล้อม php ทั้งหมด ' จะถูกหลีกเป็น ' ในสภาพแวดล้อมของ oracle ' จะไม่ถูกหลบหนี (การหลีกเลี่ยงที่ถูกต้องในสภาพแวดล้อมของ oracle ควรเป็น '') แต่ในตัวของเราเอง การใช้ 'ในวาทกรรมการฉีดสามารถ ได้รับความเสียหายจากการถูกแปลงเป็น ' จึงไม่สามารถใช้งานได้ระหว่างการฉีด' ยกเว้นว่าไม่มีข้อจำกัดในสภาพแวดล้อมของเว็บ ในแง่ของฐานข้อมูล หากวาทกรรมถูกดำเนินการในโหมดพารามิเตอร์ จะไม่สามารถฉีดเข้าไปได้เว้นแต่จะใช้โหมดการเชื่อมต่อสตริง (เนื่องจากโหมดการเชื่อมต่อสตริงค่อนข้างง่าย และเนื่องจากเหตุผลทางประวัติศาสตร์บางประการ โปรแกรมเมอร์จำนวนมาก แบบฟอร์มนี้มักเป็นที่ต้องการ ) โหมดการเชื่อมต่อสตริงจะแบ่งออกเป็นสองประเภท พารามิเตอร์อยู่ในคำ DML เช่น เลือก อัปเดต และแทรก และพารามิเตอร์อยู่ในบล็อกที่ไม่ระบุชื่อ pl/sql ข้อผิดพลาด แล้วเราก็สามารถตัดสินประเภทของวาทกรรมปัจจุบันตามข้อผิดพลาดได้อย่างง่ายดายซึ่งจะกล่าวถึงในภายหลัง ค่อนข้างหายากในบล็อกที่ไม่ระบุชื่อ pl/sql แต่ก็ไม่ได้ตัดออกว่าการแทรกดังกล่าวไม่มีขีดจำกัด คุณสามารถใช้การสนทนาหลายรายการและทำอะไรก็ได้ ซึ่งไม่แตกต่างจากการเข้าสู่ระบบในเครื่อง
3 แนวคิดพื้นฐานของ Oracle Web Hacking
ส่วนถัดไปจะพูดถึงวิธีการกำหนดเป้าหมาย การกำหนด parameter ของการฉีดนั้นขึ้นอยู่กับทุกคน สิ่งสำคัญคือ จะทราบได้อย่างไรว่าฐานข้อมูลเป็นของ Oracle หรือไม่ รองรับ --category การตีความ แต่ไม่สนับสนุน; หลายๆ คำ Oracle มีตารางระบบจำนวนมาก เช่น all_tables โดยการเข้าถึงตารางเหล่านี้ คุณยังสามารถระบุได้ว่ามันเป็นของ Oracle หรือไม่ นอกจากนี้ ฟังก์ชันบางอย่างใน Oracle ยังสามารถทำได้ ยังสามารถใช้เพื่อกำหนดได้ เช่น utl_http.request ภาษา รายละเอียดเล็กๆ น้อยๆ ยังสามารถใช้เพื่อแยกแยะระบบได้ เช่น ||. เป็นสัญลักษณ์การรวมใน Oracle แต่ไม่ใช่ในฐานข้อมูลอื่น และ chr(123)| |chr(123)=chr(123)|. |chr(123) หากสามารถดำเนินการได้สำเร็จ ควรเป็น Oracle นอกจากนี้ สคริปต์บางตัวไม่สามารถจัดการกับข้อความแสดงข้อผิดพลาดเมื่อเกิดข้อผิดพลาดในการสืบค้นฐานข้อมูล และอาจรั่วไหลได้เช่นกัน ฐานข้อมูลสำรองที่แท้จริงนี้สามารถมองเห็นได้ชัดเจน
สิ่งต่อไปที่ต้องพิจารณาอย่างเร่งด่วนคือประเภทของจุดฉีด โดยปกติแล้ว พารามิเตอร์ที่เราป้อนจะเป็นตัวเลขหรืออักขระเพียงอย่างเดียว (สิ่งที่คนอื่นเรียกว่าการฉีดประเภทการค้นหาจริงๆ ควรจัดเป็นอักขระ) หมวดตัวเลขไม่ต้องคิดอะไรเลย ง่ายๆ เลยคือตีความให้ปิดเสียงพูดให้ถูกต้อง มักจะเพิ่ม ' และ - อักขระการฉีดเหล่านี้ เพื่อจัดระเบียบสถานการณ์การฉีดของคุณเอง ในสถานการณ์ที่ซับซ้อนบางอย่าง เช่น พารามิเตอร์ที่ปรากฏในคำและตรรกะของ SQL หลายรายการ คุณจะต้องจัดโครงสร้างคำที่แทรกให้เหมาะสมกับสถานการณ์อย่างรอบคอบ โปรดจำไว้ว่า เราต้องการเพียงสภาพแวดล้อมที่สมบูรณ์ซึ่งสามารถจัดเรียงคำสั่ง sql ต่างๆ ได้อย่างง่ายดาย