ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programming++ SQL INJECTION : คำสั้นๆที่น่ากลัว ++
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: ++ SQL INJECTION : คำสั้นๆที่น่ากลัว ++  (อ่าน 1826 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
@Roverpost
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 89
ออฟไลน์ ออฟไลน์

กระทู้: 1,816



ดูรายละเอียด เว็บไซต์
« เมื่อ: 26 ตุลาคม 2015, 12:34:05 »

สวัสดีครับ สำหรับโปรแกรมเมอร์หลายๆท่าน อาจจะรู้จักคำนี้  "SQL INJECTION" หรือบางท่านอาจจะเคยได้ยินแต่ไม่เคยพบเจอกับตัวเอง สำหรับกระทู้นี้ผมอยากจะโพสเพื่อถือเป็น Case Study ครั้งใหญ่สำหรับนักพัฒนาระบบที่ไม่คาดคิดมาก่อนว่า ระบบของเราจะโดน Hack ถึงแม้ว่าจะไม่ได้เว็บดังใหญ่โตอะไร แต่ก็มีมือดีมา Hack หาผลประโยชน์เข้าตัวเองได้ครับ ถึงแม้ว่ามันจะเล็กน้อย แต่ก็ไม่ควรมองข้ามเลย

เริ่มจากตัวผมนั้น เป็นผู้พัฒนาและคิดค้นระบบ Roverpost ผมไม่ได้ใช้ framework อะไรครอบระบบผมไว้เลย เหตุผลเพราะว่า ถ้าจะใช้ framework ซักตัว จะต้องเสียเวลาศึกษา 1-2 เดือนกว่าจะเชี่ยวชาญ ซึ่งพอคำนวณคิดดูแล้ว ถ้าเขียนแบบ Hardcode แล้ว Refactor code ดีๆ ก็น่าจะเร็วกว่าด้วยซ้ำ ผมจึงตัดสินใจเขียนสดๆเอง

แน่นอนครับทุกหน้าก็มี GET กับ POST แต่มันสามารถโดน SQL Injec เข้ามาได้ ลองหาในกูเกิ้ลดูครับว่า พวก Hacker เขาทำกันยังไง ส่วนวิธีแก้ผมทำตามนั้ครับ ไม่รู้ว่าจะป้องกันได้ขนาดไหน
โค๊ด:
http://www.palthai.com/articles_view.php?id=17

แต่อีก 1 ทางที่น่าจะปลอดภัยที่สุดคือเอาเข้า Cloudflare ครับ

ผมรู้ได้ไงว่าโดนเจาะเข้ามา
ด้วยความบังเอิญ ผมลองตรวจสอบ User ที่ใช้โพสเว็บบอร์ดดู ปรากฏว่าพบ หัวข้อกระทู้แปลกที่ User ผมโพสเรียงติดต่อกันประมาณ 3-4 กระทู้ ผมจึงกดเข้าไปดู แล้วพบว่า หัวข้อและเนื้อหากระทู้ที่โพสไปนั้นไม่ได้มาจากระบบของผมเลย ผมเลยเช็คดู IP ครับว่า IP นั้นมาจาก Server ของผมจริงหรือป่าว ปรากฏว่า คนละ IP กัน จากภาพ

ภาพที่ 1:


ภาพที่ 2:


ภาพที่ 3:


ภาที่ 1 กับ 2 เป็นกระทู้ที่ผมไปพบ และลอง Loginเข้าไปตรวจสอบดูว่า ip ที่โพสมากจาไหน เมื่อได้ ip แล้ว ก็เอา โดเมนลิงค์ที่ผมพบในกระทู้ไปเช็คดูด้วย ดังภาพที่ 3 ปรากฏว่าชุดเลข IP ตรงกัน นั่นหมายความ เจ้าของเว็บไซต์นี้เป็นคนนำไปใช้ ซึ่งเจ้าของเว็บไซต์นี้ได้ออกแบบและทำระบบคล้ายๆกับผม

หลังจากนั้นผมก็ได้ทำการค้นหา Facebook และเบอร์โทรศัพท์ และได้พูดคุยกับเขา เหมือนกับว่าน้องเขากำลังจะสอบเข้า ม. ไม่แน่ใจเห็นยังใส่ชุด นักเรียนอยู่ น้องเขาบอกกับว่าผม มีคนมาขายให้กับเค้า นั่นแปลว่า มีคนอีก 1 คนที่เกี่ยวข้องด้วย แต่น้องคนนี้เป็นแค่คนที่ซื้อมา จนสืบไปสืบมาก็ได้คุยกับคนที่แฮคจริงๆ โดยใช้ SQL INJECTION เข้ามาครับ


สุดท้ายแล้ว ผมอยากให้จะนักพัฒนาระบบทุกท่าน อย่ามองข้ามเรื่องเล็กๆน้อยๆนะครับ เพราะสิ่งที่เราไม่คิดว่ามันจะเกิด มันก็เกิดขึ้นได้ครับ

ขอบคุณ๕รับ
« แก้ไขครั้งสุดท้าย: 26 ตุลาคม 2015, 14:40:51 โดย 2T^d » บันทึกการเข้า

Shibot โปรแกรมแชทบอท พร้อมระบบไลฟ์สด ที่สามารถเพิ่มยอดขายได้จริง
smapan
Global Moderator
เจ้าพ่อบอร์ดเสียว
*****

พลังน้ำใจ: 643
ออฟไลน์ ออฟไลน์

กระทู้: 8,272



ดูรายละเอียด เว็บไซต์
« ตอบ #1 เมื่อ: 26 ตุลาคม 2015, 13:44:12 »

ต้องระวังครับ
บันทึกการเข้า

จูมล่าโฮส สยามโฮสเว็บ modty.com
รวมที่พัก เช่ารายวัน ที่พักเช่ารายเดือนมากที่สุดแจ่มจริง
***Tel 083-757-1515 ติดปัญหา Joomla ตรงไหนรับปรึกษาฟรี โทรมาเถอะครับ ถ้าตอบได้ช่วยแน่นอน ไม่มีกั้ก. ***
fangbif
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 283
ออฟไลน์ ออฟไลน์

กระทู้: 2,321



ดูรายละเอียด
« ตอบ #2 เมื่อ: 26 ตุลาคม 2015, 15:17:05 »

บ้านเรามีนักสืบทางนี้โดยตรงมั๊ยคะ ควรจะมีนะ ใครเก่งๆ เรื่องแฮคเรื่องอะไรแบบนี้ลองจัดดู น่าจะมีลูกค้าเยอะ  Tongue
บันทึกการเข้า
CopterMaster
สมุนแก๊งเสียว
*

พลังน้ำใจ: 66
ออฟไลน์ ออฟไลน์

กระทู้: 627



ดูรายละเอียด
« ตอบ #3 เมื่อ: 26 ตุลาคม 2015, 20:07:30 »

จขกท. ก็ระวังเว็บตัวเองด้วยนะครับ ผมมีเฟส 4 เฟส ทักไปเตือนทุกเฟส แต่ก็ยังไม่แก้
ปล.เฟสผมปลิวไป 3 ละ
บันทึกการเข้า

ติด Banner ให้เว็บผม 1 เดือน
แลกกับ สคริปหาเพื่อนออนไลน์ (จ้างเขียน)
สนใจ PM
meawjosa
ก๊วนเสียว
*

พลังน้ำใจ: 2
ออฟไลน์ ออฟไลน์

กระทู้: 280



ดูรายละเอียด
« ตอบ #4 เมื่อ: 26 ตุลาคม 2015, 20:10:15 »

Script Injection ก็น่ากลัวนะครับ  wanwan009 wanwan009
บันทึกการเข้า
@Roverpost
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 89
ออฟไลน์ ออฟไลน์

กระทู้: 1,816



ดูรายละเอียด เว็บไซต์
« ตอบ #5 เมื่อ: 26 ตุลาคม 2015, 21:50:58 »

จขกท. ก็ระวังเว็บตัวเองด้วยนะครับ ผมมีเฟส 4 เฟส ทักไปเตือนทุกเฟส แต่ก็ยังไม่แก้
ปล.เฟสผมปลิวไป 3 ละ

ขอบคุณครับสำหรับคำเตือน ตอนนี้ผมได้ทำการแก้ไขแล้ว แต่ไม่รู้ว่าครบหมดหรือป่าว
แต่ผมก็พอรู้ครับว่า กลุ่มไหนบ้างที่เป็นคนทำเรื่องแบบนี้
« แก้ไขครั้งสุดท้าย: 26 ตุลาคม 2015, 22:06:05 โดย 2T^d » บันทึกการเข้า

Shibot โปรแกรมแชทบอท พร้อมระบบไลฟ์สด ที่สามารถเพิ่มยอดขายได้จริง
icez
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 296
ออฟไลน์ ออฟไลน์

กระทู้: 2,879



ดูรายละเอียด
« ตอบ #6 เมื่อ: 26 ตุลาคม 2015, 22:21:07 »

- sql injection ไม่ทำให้ได้ code นะคัรบ โดยทั่วไปก็ได้แค่พวกข้อมูลในฐานข้อมูล แต่ถ้าซวยหน่อยก็อาจมีข้อมูลการเข้าระบบที่อยู่ในฐานข้อมูล ที่เอาไปใช้ทำอย่างอื่นต่อได้
- cloudflare ก็ไม่ได้ช่วยกัน sql injection ให้ได้ดีเท่าไหร่
- สุดท้ายถ้า code ยังรั่ว ยังไงมันก็ยังรั่วครับ ระบบป้องกันภายนอกดีแค่ไหนแต่ข้างในเน่าเฟะก็เท่านั้น เหมือนสร้างกำแพงล้อมบ้านอย่างดีแต่คนในบ้านติดเชื้อซอมบี้เดินไปมา
« แก้ไขครั้งสุดท้าย: 26 ตุลาคม 2015, 22:21:46 โดย icez » บันทึกการเข้า

THZHost SSD Hosting ไทย/สิงคโปร์ พร้อม firewall ป้องกันการยิงเว็บ + scan ไวรัสในเว็บ
@Roverpost
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 89
ออฟไลน์ ออฟไลน์

กระทู้: 1,816



ดูรายละเอียด เว็บไซต์
« ตอบ #7 เมื่อ: 26 ตุลาคม 2015, 22:38:16 »

- sql injection ไม่ทำให้ได้ code นะคัรบ โดยทั่วไปก็ได้แค่พวกข้อมูลในฐานข้อมูล แต่ถ้าซวยหน่อยก็อาจมีข้อมูลการเข้าระบบที่อยู่ในฐานข้อมูล ที่เอาไปใช้ทำอย่างอื่นต่อได้
- cloudflare ก็ไม่ได้ช่วยกัน sql injection ให้ได้ดีเท่าไหร่
- สุดท้ายถ้า code ยังรั่ว ยังไงมันก็ยังรั่วครับ ระบบป้องกันภายนอกดีแค่ไหนแต่ข้างในเน่าเฟะก็เท่านั้น เหมือนสร้างกำแพงล้อมบ้านอย่างดีแต่คนในบ้านติดเชื้อซอมบี้เดินไปมา

ครับคุณไอซ์ sql injec ทำให้ได้ database ไปครับ
สุดท้ายก็ต้องกลับมามองที่ Code ที่เราเขียนครับว่า ดีแล้วหรือยัง สำหรับผมแล้วต้องพัฒนาอีกเยอะ เก็บประสบการณ์ไปครับ ^+^
บันทึกการเข้า

Shibot โปรแกรมแชทบอท พร้อมระบบไลฟ์สด ที่สามารถเพิ่มยอดขายได้จริง
ossytong
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 138
ออฟไลน์ ออฟไลน์

กระทู้: 1,151



ดูรายละเอียด
« ตอบ #8 เมื่อ: 26 ตุลาคม 2015, 22:49:04 »

SQL INJECTION : คือการทำให้คำสั่ง SQL ที่จะนำไป Query กับ DB ถูกบิดเบือนเป็นค่าอื่นเพื่อหวังผลในการแสดงผลค่าที่ไม่ควรถูกนำมาแสดงออกมา เพื่อใช้เป็นช่องทางในการ exploit ต่อไป หรือ สามารถใช้คำสั่ง sql ในการเขียนไฟล์เพื่อ วาง backdoor หรือ Shell ลงไปได้

ทีนี้ Case ของ จขกท. ผมมีความเห็นประมาณนี้ครับ

1. CloudFlare ไม่ได้กัน SQL INJECTION ครับ
2. โอกาส Code หลุดที่เกิดจาก SQL INJECTION มีน้อยกว่าช่องโหว่ที่ จขกท. โดนวางไฟล์ Shell ลงไปจากนั้นถูก Download Code ทั้งหมด รวมถึง DB ออกมา

อย่างหลายกรณี ผมเองเคยลองไปดู พวก script ที่ขายๆกัน แล้วเค้าจะมี Demo ผมก็ลองเทสดูเลย วิ่งหาช่อง Upload แล้ว Up Shell ขึ้นไป หลายๆที่ upload ไปได้ซะงั้น ก็จบครับ
หรือเขียน Write ตรงๆไปได้เลยก็มีเพราะเปิด 777 ไว้ ก็สบายครับ

ผมสามารถ Download ทั้งหมดลงได้ทันทีด้วยซ้ำ ครับ
หรือ เกิดจาก XSS ที่เค้าแทรกเอาไว้ แล้วใช้เทคนิค Session Hijacking จากนั้นจะได้ Session Admin จากนั้นเค้าก็ เข้าใข้งานในสิทธิ Admin แล้วหาจุดที่วาง Shell ขึ้นไปก็เป็นไปได้ครับ
« แก้ไขครั้งสุดท้าย: 26 ตุลาคม 2015, 22:54:50 โดย ossytong » บันทึกการเข้า
vii
Verified Seller
สมุนแก๊งเสียว
*

พลังน้ำใจ: 132
ออฟไลน์ ออฟไลน์

กระทู้: 947



ดูรายละเอียด เว็บไซต์
« ตอบ #9 เมื่อ: 27 ตุลาคม 2015, 09:25:06 »

SQL INJECTION : คือการทำให้คำสั่ง SQL ที่จะนำไป Query กับ DB ถูกบิดเบือนเป็นค่าอื่นเพื่อหวังผลในการแสดงผลค่าที่ไม่ควรถูกนำมาแสดงออกมา เพื่อใช้เป็นช่องทางในการ exploit ต่อไป หรือ สามารถใช้คำสั่ง sql ในการเขียนไฟล์เพื่อ วาง backdoor หรือ Shell ลงไปได้

ทีนี้ Case ของ จขกท. ผมมีความเห็นประมาณนี้ครับ

1. CloudFlare ไม่ได้กัน SQL INJECTION ครับ
2. โอกาส Code หลุดที่เกิดจาก SQL INJECTION มีน้อยกว่าช่องโหว่ที่ จขกท. โดนวางไฟล์ Shell ลงไปจากนั้นถูก Download Code ทั้งหมด รวมถึง DB ออกมา

อย่างหลายกรณี ผมเองเคยลองไปดู พวก script ที่ขายๆกัน แล้วเค้าจะมี Demo ผมก็ลองเทสดูเลย วิ่งหาช่อง Upload แล้ว Up Shell ขึ้นไป หลายๆที่ upload ไปได้ซะงั้น ก็จบครับ
หรือเขียน Write ตรงๆไปได้เลยก็มีเพราะเปิด 777 ไว้ ก็สบายครับ

ผมสามารถ Download ทั้งหมดลงได้ทันทีด้วยซ้ำ ครับ
หรือ เกิดจาก XSS ที่เค้าแทรกเอาไว้ แล้วใช้เทคนิค Session Hijacking จากนั้นจะได้ Session Admin จากนั้นเค้าก็ เข้าใข้งานในสิทธิ Admin แล้วหาจุดที่วาง Shell ขึ้นไปก็เป็นไปได้ครับ

กรณี upload shell นี้ผมสงสัยว่า
ถ้าเขียนโค้ดกันตอนอัพโหลดไว้ โดยไม่ได้ตรวจแต่ extension อย่างเดียว แต่ตรวจ mime type ด้วย อย่างนี้จะยังบุกรุกเข้ามาโดยวิธีนี้ได้อีกไหมครับ?
เพราะผมดูใน Youtube วิดีโอนี้ https://www.youtube.com/watch?v=cADIR6Zrqjg แล้วก็สงสัยในขั้นตอน Live HTTP headers ว่ามันทำงานยังไง ถ้าใช้วิธีนี้ในแบบตรวจ mime type ด้วย จะรอดไหม? ถ้าไม่รอด ทางแก้คืออะไร?
บันทึกการเข้า

amazegu
สมุนแก๊งเสียว
*

พลังน้ำใจ: 80
ออฟไลน์ ออฟไลน์

กระทู้: 875



ดูรายละเอียด
« ตอบ #10 เมื่อ: 27 ตุลาคม 2015, 09:59:32 »

SQL INJECTION : คือการทำให้คำสั่ง SQL ที่จะนำไป Query กับ DB ถูกบิดเบือนเป็นค่าอื่นเพื่อหวังผลในการแสดงผลค่าที่ไม่ควรถูกนำมาแสดงออกมา เพื่อใช้เป็นช่องทางในการ exploit ต่อไป หรือ สามารถใช้คำสั่ง sql ในการเขียนไฟล์เพื่อ วาง backdoor หรือ Shell ลงไปได้

ทีนี้ Case ของ จขกท. ผมมีความเห็นประมาณนี้ครับ

1. CloudFlare ไม่ได้กัน SQL INJECTION ครับ
2. โอกาส Code หลุดที่เกิดจาก SQL INJECTION มีน้อยกว่าช่องโหว่ที่ จขกท. โดนวางไฟล์ Shell ลงไปจากนั้นถูก Download Code ทั้งหมด รวมถึง DB ออกมา

อย่างหลายกรณี ผมเองเคยลองไปดู พวก script ที่ขายๆกัน แล้วเค้าจะมี Demo ผมก็ลองเทสดูเลย วิ่งหาช่อง Upload แล้ว Up Shell ขึ้นไป หลายๆที่ upload ไปได้ซะงั้น ก็จบครับ
หรือเขียน Write ตรงๆไปได้เลยก็มีเพราะเปิด 777 ไว้ ก็สบายครับ

ผมสามารถ Download ทั้งหมดลงได้ทันทีด้วยซ้ำ ครับ
หรือ เกิดจาก XSS ที่เค้าแทรกเอาไว้ แล้วใช้เทคนิค Session Hijacking จากนั้นจะได้ Session Admin จากนั้นเค้าก็ เข้าใข้งานในสิทธิ Admin แล้วหาจุดที่วาง Shell ขึ้นไปก็เป็นไปได้ครับ

กรณี upload shell นี้ผมสงสัยว่า
ถ้าเขียนโค้ดกันตอนอัพโหลดไว้ โดยไม่ได้ตรวจแต่ extension อย่างเดียว แต่ตรวจ mime type ด้วย อย่างนี้จะยังบุกรุกเข้ามาโดยวิธีนี้ได้อีกไหมครับ?
เพราะผมดูใน Youtube วิดีโอนี้ https://www.youtube.com/watch?v=cADIR6Zrqjg แล้วก็สงสัยในขั้นตอน Live HTTP headers ว่ามันทำงานยังไง ถ้าใช้วิธีนี้ในแบบตรวจ mime type ด้วย จะรอดไหม? ถ้าไม่รอด ทางแก้คืออะไร?
ผมเคยโดน เช็ค mime แล้วยังไม่รอดครับ ต้อง file_get_contents เอามาเช็คเลยว่าข้างในวาง backdoor ไว้หรือเปล่า  Tongue Tongue Tongue
บันทึกการเข้า
vii
Verified Seller
สมุนแก๊งเสียว
*

พลังน้ำใจ: 132
ออฟไลน์ ออฟไลน์

กระทู้: 947



ดูรายละเอียด เว็บไซต์
« ตอบ #11 เมื่อ: 27 ตุลาคม 2015, 11:05:09 »

SQL INJECTION : คือการทำให้คำสั่ง SQL ที่จะนำไป Query กับ DB ถูกบิดเบือนเป็นค่าอื่นเพื่อหวังผลในการแสดงผลค่าที่ไม่ควรถูกนำมาแสดงออกมา เพื่อใช้เป็นช่องทางในการ exploit ต่อไป หรือ สามารถใช้คำสั่ง sql ในการเขียนไฟล์เพื่อ วาง backdoor หรือ Shell ลงไปได้

ทีนี้ Case ของ จขกท. ผมมีความเห็นประมาณนี้ครับ

1. CloudFlare ไม่ได้กัน SQL INJECTION ครับ
2. โอกาส Code หลุดที่เกิดจาก SQL INJECTION มีน้อยกว่าช่องโหว่ที่ จขกท. โดนวางไฟล์ Shell ลงไปจากนั้นถูก Download Code ทั้งหมด รวมถึง DB ออกมา

อย่างหลายกรณี ผมเองเคยลองไปดู พวก script ที่ขายๆกัน แล้วเค้าจะมี Demo ผมก็ลองเทสดูเลย วิ่งหาช่อง Upload แล้ว Up Shell ขึ้นไป หลายๆที่ upload ไปได้ซะงั้น ก็จบครับ
หรือเขียน Write ตรงๆไปได้เลยก็มีเพราะเปิด 777 ไว้ ก็สบายครับ

ผมสามารถ Download ทั้งหมดลงได้ทันทีด้วยซ้ำ ครับ
หรือ เกิดจาก XSS ที่เค้าแทรกเอาไว้ แล้วใช้เทคนิค Session Hijacking จากนั้นจะได้ Session Admin จากนั้นเค้าก็ เข้าใข้งานในสิทธิ Admin แล้วหาจุดที่วาง Shell ขึ้นไปก็เป็นไปได้ครับ


กรณี upload shell นี้ผมสงสัยว่า
ถ้าเขียนโค้ดกันตอนอัพโหลดไว้ โดยไม่ได้ตรวจแต่ extension อย่างเดียว แต่ตรวจ mime type ด้วย อย่างนี้จะยังบุกรุกเข้ามาโดยวิธีนี้ได้อีกไหมครับ?
เพราะผมดูใน Youtube วิดีโอนี้ https://www.youtube.com/watch?v=cADIR6Zrqjg แล้วก็สงสัยในขั้นตอน Live HTTP headers ว่ามันทำงานยังไง ถ้าใช้วิธีนี้ในแบบตรวจ mime type ด้วย จะรอดไหม? ถ้าไม่รอด ทางแก้คืออะไร?

ผมเคยโดน เช็ค mime แล้วยังไม่รอดครับ ต้อง file_get_contents เอามาเช็คเลยว่าข้างในวาง backdoor ไว้หรือเปล่า  Tongue Tongue Tongue

แปลกจัง เช็คด้วย finfo_file() รึเปล่าครับ?
เพราะว่า finfo_file กับ getimagesize จะเป็นการอ่านค่า mime type จากในไฟล์โดยตรง ไม่ใช่จาก $_FILES
และตัว getimagesize จะเป็นการหาค่าขนาดภาพได้ด้วย
แต่ผมก็ไม่แน่ใจกับการอัพโหลด shell เพราะในวิดีโอดังกล่าวมันมีการ replay ได้ด้วยโดยเปลี่ยนนามสกุลไฟล์เอาเลยจาก header เลยไม่มั่นใจว่าทั้งสองอย่างจะกันได้มั้ยน่ะครับ
« แก้ไขครั้งสุดท้าย: 27 ตุลาคม 2015, 11:07:39 โดย vii » บันทึกการเข้า

@Roverpost
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 89
ออฟไลน์ ออฟไลน์

กระทู้: 1,816



ดูรายละเอียด เว็บไซต์
« ตอบ #12 เมื่อ: 27 ตุลาคม 2015, 11:10:35 »

SQL INJECTION : คือการทำให้คำสั่ง SQL ที่จะนำไป Query กับ DB ถูกบิดเบือนเป็นค่าอื่นเพื่อหวังผลในการแสดงผลค่าที่ไม่ควรถูกนำมาแสดงออกมา เพื่อใช้เป็นช่องทางในการ exploit ต่อไป หรือ สามารถใช้คำสั่ง sql ในการเขียนไฟล์เพื่อ วาง backdoor หรือ Shell ลงไปได้

ทีนี้ Case ของ จขกท. ผมมีความเห็นประมาณนี้ครับ

1. CloudFlare ไม่ได้กัน SQL INJECTION ครับ
2. โอกาส Code หลุดที่เกิดจาก SQL INJECTION มีน้อยกว่าช่องโหว่ที่ จขกท. โดนวางไฟล์ Shell ลงไปจากนั้นถูก Download Code ทั้งหมด รวมถึง DB ออกมา

อย่างหลายกรณี ผมเองเคยลองไปดู พวก script ที่ขายๆกัน แล้วเค้าจะมี Demo ผมก็ลองเทสดูเลย วิ่งหาช่อง Upload แล้ว Up Shell ขึ้นไป หลายๆที่ upload ไปได้ซะงั้น ก็จบครับ
หรือเขียน Write ตรงๆไปได้เลยก็มีเพราะเปิด 777 ไว้ ก็สบายครับ

ผมสามารถ Download ทั้งหมดลงได้ทันทีด้วยซ้ำ ครับ
หรือ เกิดจาก XSS ที่เค้าแทรกเอาไว้ แล้วใช้เทคนิค Session Hijacking จากนั้นจะได้ Session Admin จากนั้นเค้าก็ เข้าใข้งานในสิทธิ Admin แล้วหาจุดที่วาง Shell ขึ้นไปก็เป็นไปได้ครับ


กรณี upload shell นี้ผมสงสัยว่า
ถ้าเขียนโค้ดกันตอนอัพโหลดไว้ โดยไม่ได้ตรวจแต่ extension อย่างเดียว แต่ตรวจ mime type ด้วย อย่างนี้จะยังบุกรุกเข้ามาโดยวิธีนี้ได้อีกไหมครับ?
เพราะผมดูใน Youtube วิดีโอนี้ https://www.youtube.com/watch?v=cADIR6Zrqjg แล้วก็สงสัยในขั้นตอน Live HTTP headers ว่ามันทำงานยังไง ถ้าใช้วิธีนี้ในแบบตรวจ mime type ด้วย จะรอดไหม? ถ้าไม่รอด ทางแก้คืออะไร?

ผมเคยโดน เช็ค mime แล้วยังไม่รอดครับ ต้อง file_get_contents เอามาเช็คเลยว่าข้างในวาง backdoor ไว้หรือเปล่า  Tongue Tongue Tongue

แปลกจัง เช็คด้วย finfo_file() รึเปล่าครับ?
เพราะว่า finfo_file กับ getimagesize จะเป็นการอ่านค่า mime type จากในไฟล์โดยตรง ไม่ใช่จาก $_FILES
และตัว getimagesize จะเป็นการหาค่าขนาดภาพได้ด้วย
แต่ผมก็ไม่แน่ใจกับการอัพโหลด shell เพราะในวิดีโอดังกล่าวมันมีการ replay ได้ด้วยโดยเปลี่ยนนามสกุลไฟล์เอาเลยจาก header เลยไม่มั่นใจว่าทั้งสองอย่างจะกันได้มั้ยน่ะครับ


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

Shibot โปรแกรมแชทบอท พร้อมระบบไลฟ์สด ที่สามารถเพิ่มยอดขายได้จริง
icez
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 296
ออฟไลน์ ออฟไลน์

กระทู้: 2,879



ดูรายละเอียด
« ตอบ #13 เมื่อ: 27 ตุลาคม 2015, 14:38:06 »

getimagesize เจอฝัง php shell มากับ gif /jpeg comment ก็ไม่รอดครับ

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

THZHost SSD Hosting ไทย/สิงคโปร์ พร้อม firewall ป้องกันการยิงเว็บ + scan ไวรัสในเว็บ
smapan
Global Moderator
เจ้าพ่อบอร์ดเสียว
*****

พลังน้ำใจ: 643
ออฟไลน์ ออฟไลน์

กระทู้: 8,272



ดูรายละเอียด เว็บไซต์
« ตอบ #14 เมื่อ: 27 ตุลาคม 2015, 15:00:00 »

getimagesize เจอฝัง php shell มากับ gif /jpeg comment ก็ไม่รอดครับ

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

ขอบคุณที่ เตือนครับ  laugh

ถ้าใครยังไม่เข้าใจลองค้นหา "comment exif image" ดูครับ
« แก้ไขครั้งสุดท้าย: 29 ตุลาคม 2015, 08:17:00 โดย smapan » บันทึกการเข้า

จูมล่าโฮส สยามโฮสเว็บ modty.com
รวมที่พัก เช่ารายวัน ที่พักเช่ารายเดือนมากที่สุดแจ่มจริง
***Tel 083-757-1515 ติดปัญหา Joomla ตรงไหนรับปรึกษาฟรี โทรมาเถอะครับ ถ้าตอบได้ช่วยแน่นอน ไม่มีกั้ก. ***
cloudsphere
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 229
ออฟไลน์ ออฟไลน์

กระทู้: 6,198



ดูรายละเอียด เว็บไซต์
« ตอบ #15 เมื่อ: 27 ตุลาคม 2015, 20:24:55 »

ขอบคุณสำหรับข้อมูลดีๆครับ
บันทึกการเข้า

h8
สมุนแก๊งเสียว
*

พลังน้ำใจ: 60
ออฟไลน์ ออฟไลน์

กระทู้: 677



ดูรายละเอียด เว็บไซต์
« ตอบ #16 เมื่อ: 27 ตุลาคม 2015, 21:37:57 »

SQL INJECTION : คือการทำให้คำสั่ง SQL ที่จะนำไป Query กับ DB ถูกบิดเบือนเป็นค่าอื่นเพื่อหวังผลในการแสดงผลค่าที่ไม่ควรถูกนำมาแสดงออกมา เพื่อใช้เป็นช่องทางในการ exploit ต่อไป หรือ สามารถใช้คำสั่ง sql ในการเขียนไฟล์เพื่อ วาง backdoor หรือ Shell ลงไปได้

ทีนี้ Case ของ จขกท. ผมมีความเห็นประมาณนี้ครับ

1. CloudFlare ไม่ได้กัน SQL INJECTION ครับ
2. โอกาส Code หลุดที่เกิดจาก SQL INJECTION มีน้อยกว่าช่องโหว่ที่ จขกท. โดนวางไฟล์ Shell ลงไปจากนั้นถูก Download Code ทั้งหมด รวมถึง DB ออกมา

อย่างหลายกรณี ผมเองเคยลองไปดู พวก script ที่ขายๆกัน แล้วเค้าจะมี Demo ผมก็ลองเทสดูเลย วิ่งหาช่อง Upload แล้ว Up Shell ขึ้นไป หลายๆที่ upload ไปได้ซะงั้น ก็จบครับ
หรือเขียน Write ตรงๆไปได้เลยก็มีเพราะเปิด 777 ไว้ ก็สบายครับ

ผมสามารถ Download ทั้งหมดลงได้ทันทีด้วยซ้ำ ครับ
หรือ เกิดจาก XSS ที่เค้าแทรกเอาไว้ แล้วใช้เทคนิค Session Hijacking จากนั้นจะได้ Session Admin จากนั้นเค้าก็ เข้าใข้งานในสิทธิ Admin แล้วหาจุดที่วาง Shell ขึ้นไปก็เป็นไปได้ครับ


กรณี upload shell นี้ผมสงสัยว่า
ถ้าเขียนโค้ดกันตอนอัพโหลดไว้ โดยไม่ได้ตรวจแต่ extension อย่างเดียว แต่ตรวจ mime type ด้วย อย่างนี้จะยังบุกรุกเข้ามาโดยวิธีนี้ได้อีกไหมครับ?
เพราะผมดูใน Youtube วิดีโอนี้ https://www.youtube.com/watch?v=cADIR6Zrqjg แล้วก็สงสัยในขั้นตอน Live HTTP headers ว่ามันทำงานยังไง ถ้าใช้วิธีนี้ในแบบตรวจ mime type ด้วย จะรอดไหม? ถ้าไม่รอด ทางแก้คืออะไร?

ผมเคยโดน เช็ค mime แล้วยังไม่รอดครับ ต้อง file_get_contents เอามาเช็คเลยว่าข้างในวาง backdoor ไว้หรือเปล่า  Tongue Tongue Tongue

แปลกจัง เช็คด้วย finfo_file() รึเปล่าครับ?
เพราะว่า finfo_file กับ getimagesize จะเป็นการอ่านค่า mime type จากในไฟล์โดยตรง ไม่ใช่จาก $_FILES
และตัว getimagesize จะเป็นการหาค่าขนาดภาพได้ด้วย
แต่ผมก็ไม่แน่ใจกับการอัพโหลด shell เพราะในวิดีโอดังกล่าวมันมีการ replay ได้ด้วยโดยเปลี่ยนนามสกุลไฟล์เอาเลยจาก header เลยไม่มั่นใจว่าทั้งสองอย่างจะกันได้มั้ยน่ะครับ


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


 Path ใน server  ถ้าเป็น cloud แท้ จะเปลี่ยนทางตลอดที่ถูกเรียก
 ถ้าหากยังหา  Path  ได้ แสดงว่า เป็น cloud เทียม
 
บันทึกการเข้า

vii
Verified Seller
สมุนแก๊งเสียว
*

พลังน้ำใจ: 132
ออฟไลน์ ออฟไลน์

กระทู้: 947



ดูรายละเอียด เว็บไซต์
« ตอบ #17 เมื่อ: 28 ตุลาคม 2015, 23:45:06 »

getimagesize เจอฝัง php shell มากับ gif /jpeg comment ก็ไม่รอดครับ

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

หน้า: [1]   ขึ้นบน
พิมพ์