Category: CMS (Joomla!, Moodle, Wordpress)

  • บาง plugin ก็ไม่อัปเดตขึ้นตาม WordPress

    plugin ชื่อ member access (member-access.1.1.6.zip) ทำให้ในขณะนี้ไม่สามารถเพิ่มบทความที่ให้เฉพาะสมาชิกอ่านได้เท่านั้น แต่ต้องเปิดเป็น public ได้อย่างเดียว มิฉะนั้นในหน้าแรก (Home) จะไม่เป็นหน้าว่าง ๆ ต้อง login จึงเห็นบทความทุกเรื่องได้

     

     

  • อย่าเชื่อ Tools จนเกินไป : กรณี joomscan

    ได้ยินหลายคนพูดถึงการใช้งานตรวจสอบ Website โดยเฉพาะ Joomla โดยใช้เครื่องมือที่ชื่อว่า joomscan

    ก็เลยลองติดตั้ง และ ทำการทดสอบกับ Web Server ใน VirtualBox ที่มีช่องโหว่ JCE ที่เจาะได้แน่ๆ เพื่อดูว่าเครื่องมือนี้ทำงานอย่างไร

    2559-10-12-11_14_13-desktop-running-oracle-vm-virtualbox

     

    ทำการโจมตีจาก Kali Linux ไปยังเครื่องเป้าหมาย ด้วย joomscan

    2559-10-12-11_15_33-start

     

    รายงานผลแจ้งว่า joomscan มีการ Update ล่าสุด เมื่อ Oct 22, 2012 นั่นคือเมื่อ 4 ปีที่แล้ว

    2559-10-12-11_06_50-start

    รายผลที่แจ้งช่องโหว่ ที่เจาะได้ มีดังนี้

    2559-10-12-16_46_50-clipboard

    แสดงให้เห็นว่า ด้วย Tools ตัวเดียวอาจจะไม่สามารถมั่นใจได้ว่า ระบบของเราปลอดภัยหรือไม่

    ฝากไว้พิจารณาครับ

     

     

     

  • แก้ไข wordpress post แล้ว update ไม่ได้ แอดมินต้องแก้ไขอย่างไร

    หลังจากย้าย WordPress site ไปลง ubuntu 16.04.1 ก็ได้เตรียมติดตั้งโปรแกรมต่าง ๆ แต่แล้วเมื่อลองจะแก้ไขบล็อก กลับทำไม่ได้ ขึ้นข้อความว่า

    “The sysadmin.psu.ac.th page isn’t working
    sysadmin.psu.ac.th is currently unable to handle this request.
    HTTP ERROR 500”

    เกิดอะไรขึ้นหล่ะ แล้วเราจะต้องทำอย่างไร

    ค้นหาเจอเว็บนี้ ที่บอกเราว่า ให้ลองเปิด DEBUG
    https://wordpress.org/support/topic/http-error-500-internal-server-error-whole-blog-is-down

    “So to understand where the reason of 500 error is I suggest go to wp-config.php in the root of your website and add there two lines:
    define(‘WP_DEBUG’, true);
    @ini_set(‘display_errors’, 1);
    After that you can see exactly place which linked with 500 error.
    After fixing I suggest return it how it was by default (only one line)
    define(‘WP_DEBUG’, false);”

    เมื่อใช้คำสั่งตรวจสอบ error.log ครั้งแรก ไม่เห็นอะไรเพิ่มเติม แต่พบ error 404 ของ plugin ที่ชื่อ WP Like Button ก็ลองปิด plugin นี้ดูเราจึงจะพบ error ก็เห็น error ต่าง ๆ ได้จากคำสั่งข้างล่างนี้

    tail -f /var/log/apache2/error.log

    Fatal error: Uncaught Error: Class ‘DomDocument’ not found in /var/www/wordpress/wp-content/plugins/google-sitemap-plugin/google-sitemap-plugin.php:144

    ค้นหาต่อว่าทำไมจึงขาด DomDocument ก็เจอเว็บนี้
    https://blog.namran.net/2009/03/10/php-fatal-error-class-domdocument-not-found-in-blabla/
    แนะนำว่า

    “the solution turn out to be yum install php-xml”

    ตรวจสอบดู เออนะ ไม่มี php-xml จริง ๆ ด้วย ด้วยคำสั่งนี้
    dpkg -l | grep php-xml
    dpkg -l | grep php7.0-xml

     

    ทีนี้เราก็ติดตั้ง php-xml ด้วยคำสั่ง
    sudo apt install php-xml
    จะได้
    libxslt1.1 php-xml php7.0-xml

    ทำให้สามารถใช้งานได้ปรกติแล้ว ซึ่งในกระบวนการ post และ ppdate post นั้น ได้แก้ไข post ให้แล้ว เพียงแต่ว่ามันไปทำต่อที่ google-sitemap-plugin ไม่สำเร็จจึงแสดงเป็น error ออกมา

    ขอบคุณเพื่อน ๆ ที่ช่วยกันแก้ไขเรื่องนี้ด้วยกันด้วยครับ

  • วิธีตรวจสอบเว็บไซต์ที่โดน Hack #18

    ได้รับแจ้งจาก ThaiCERT ว่ามีเว็บไซต์ภายในโดเมนของมหาวิทยาลัย เผยแพร่ Code อันตราย ดังต่อไปนี้
    2559-08-01 14_13_24-[THAICERT.OR.TH #93507] แจ้งปัญหา พบโปรแกรมหรือซอร์สโค้ดที่ต้องสงสัยบนโดเมน psu.
    จึงเข้าทำการตรวจสอบในเครื่องเว็บเซิร์ฟเวอร์ดังกล่าว พบการวางไฟล์ Backdoor ไว้ดังที่อธิบายใน วิธีตรวจสอบเว็บไซต์ที่โดน Hack #17 แล้ว

    แต่ที่เห็นผิดปรกติ ก็เป็นใน access.log ของ Apache ซึ่งพบว่า มีการเรียกใช้ xmlrpc.php เป็นจำนวนมาก ดังภาพ

    13838385_1246527315359434_1464114410_o

    จากการตรวจสอบ พบว่า xmlrpc.php เป็นช่องทางให้สามารถเรียกใช้ Function ต่างๆผ่านทาง HTTP และเป็นช่องทางให้ App ต่างๆสามารถติดต่อกับ WordPress ได้ แต่ก็เป็นช่องทางให้เกิดการเดารหัสผ่านจำนวนมากได้เช่นกัน (Brute Force Attack) โดยสามารถทดลอง ส่ง XML ที่มีโครงสร้าตามที่ API กำหนด เช่น wp.getUsersBlogs [1][2][3] สามารถดูจำนวน Blog ที่ User คนนั้นๆเขียนขึ้นมา แต่ ต้องระบุ username/password ซึ่งตรงนี้จะเป็นส่วนที่ทำให้เกิดการ Brute Force ได้ ด้วยคำสั่งต่อไปนี้ เป็นการเดารหัสผ่านไปยัง http://localhost/blog/xmlrpc.php


    echo "<methodCall><methodName>wp.getUsersBlogs</methodName><params><param><value> <string>admin</string></value></param>  <param><value><string>password</string></value></param></params></methodCall>" | POST http://localhost/blog/xmlrpc.php

    หากสำเร็จ จะได้คำตอบมาอย่างนี้

    2559-08-01 15_14_21-Clipboard

    หากเป็น WordPress รุ่นต่ำกว่า 4.0 เปิดให้ใช้ system.multicall ซึ่งทำให้สามารถเดารหัสผ่านจำนวนมาก ใน 1 Request ทำให้ระบบตรวจจับได้ยาก ดังนั้น หากไม่จำเป็นต้องใช้ xmlrpc.php ก็สมควรปิดการใช้งานที่ระดับ Apache โดยสร้างไฟล์ /etc/apache2/conf-enabled/xmlrpc.conf มีข้อมูลเป็น


    <FileMatch "xmlrpc\.php$">
    Order Deny,Allow
    Deny from All
    </FileMatch>

    จากนั้น Restart Apache ก็สามารถปิดการทำงานได้
    Reference
    [1] http://www.hackingsec.in/2014/08/wordpress-xml-rpc-brute-force-attack.html#
    [2] http://blog.dewhurstsecurity.com/2012/12/11/introduction-to-the-wordpress-xml-rpc-api.html
    [3] https://codex.wordpress.org/XML-RPC_WordPress_API

  • อัพ PHP 5.2 to 5.3

    ไม่แน่ใจว่าจะเอามะพร้าวมาขายสวนหรือเปล่านะคับ แต่ก็เผื่อว่าบางท่านเจอปัญหาเดียวกันแล้วแก้ไม่ได้สักที (แบบไม่ต้องติดตั้งโปรแกรมใหม่หมด)

    ด้วยตัวเองก่อนหน้านี้ติดตั้ง Apache 2.2 + PHP 5.2 + phpMyAdmin on Windows 8.1 เพื่อใช้งาน Joomla 2.5 แต่เมื่อต้องการจะติดตั้ง Joomla 3 และ Moodle ระบบกลับฟ้องว่าไม่ support PHP 5.2 จะต้องติดตั้ง PHP 5.3.10 ขึ้นไป[1] ด้วยความที่ไม่อยากติดตั้งใหม่ทั้งหมด เลยค้นหาวิธีการอัพ php 5.2 เป็น php 5.3 แต่ก็ไม่ประสบผลสำเร็จ -_-‘ หลายเว็บมีความซับซ้อนและยุ่งยากสำหรับผมมาก แต่ไปเจอมาเว็บนึง[2] ซึ่งมีวิธีการที่ง่ายมากๆ เลยอยากนำมาแชร์ให้สำหรับท่านไหนที่ประสบปัญหาเหมือนอย่างผม

    ขั้นตอนการ upgrade 

    1. เข้าเว็บ http://windows.php.net/downloads/releases/archives/  แล้วคลิกดาวน์โหลด

    php-5.3.29-Win32-VC9-x86.zip

    01

    2. เมื่อดาวน์โหลดไฟล์เสร็จแล้ว ก็ทำการ unzip

    3. เปลี่ยนชื่อโฟลเดอร์ เป็น php5

    4. copy โฟลเดอร์ php5

    5. ไปที่โฟลเดอร์ php5 เวอร์ชั่นก่อนหน้านี้ที่เราเคยติดตั้งไว้ โดยให้ทำการ rename เป็น php5_old    ในที่นี้จะอยู่ที่ C:\AppServ\

    6. past โฟลเดอร์ php5 ที่ได้จากการ ข้อ 2 และ 3

    02

    7. เข้าไปที่ Control Panel > Computer Management> Service เพื่อคลิก restart service ของ Apache2.2  หรือจะคลิกขวาที่ My Computer > Manage > Service ก็ได้เหมือนกันคับ

    03

    8. ทำการทดสอบการใช้งานโดย เปิดเว็บเบราเซอร์ แล้วพิมพ์ url : localhost/phpinfo.php จะปรากฏรายละเอียดเกี่ยวกับ php 5.3.29 ที่เราได้ทำการติดตั้ง

    04

    9. เสร็จสิ้นกระบวนการ ^^

    ปล. Joomla 1.5 และ 2.5 ที่ได้เคยติดตั้งไว้ ก็ยังสามารถใช้งานได้ปกติดีคับ

    Refer :
    [1] http://www.joomla.org/technical-requirements.html
    [2] http://www.websiteadministrator.com.au/articles/install_guides/installing_php535.html

  • วิธีใช้เครื่องมือในการเขียนบล็อกใน wordpress

    how-to-add-new-post-in-wordpress

    ผมได้เขียนคำแนะนำวิธีใช้เครื่องมือในการเขียนบล็อกใน wordpress ไป วันนี้อยากนำมาเล่าสู่กันฟังอีกสักรอบ เพราะว่ามีสมาชิกใหม่ๆเข้ามาร่วมเยอะ

    เคยเขียนเรื่อง “KM เรื่อง การใช้งานสำหรับผู้เขียน wordpress” (http://sysadmin.psu.ac.th/2012/11/16/km-how-to-authoring-in-wordpress/) Posted on November 16, 2012 by วิบูลย์ วราสิทธิชัย

    อันนี้จะเป็นคำแนะนำวิธีการตั้งชื่อ URL Link เป็นภาษาอังกฤษ แม้ว่า เราจะตั้งชื่อเรื่องเป็นภาษาไทย ต้องใช้วิธีการ manual ในการแก้ไข

    ตั้งค่าการเผยแพร่บทความให้อ่านได้เฉพาะสมาชิกที่ login (http://sysadmin.psu.ac.th/2013/01/04/set-post-to-private/) Posted on January 4, 2013 by วิบูลย์ วราสิทธิชัย

    อันนี้จะเป็นคำแนะนำวิธีการซ่อนบทความที่ไม่ต้องการเปิดเผยเนื่องจากเป็นข้อมูลเฉพาะเจาะจงในม.อ. เช่น workshop PSU Passport Authentication อย่างนี้กำหนดค่าให้ login ก่อนจึงอ่านได้

    และวันนี้มีมาเล่าสู่กันฟังเพิ่มเติมครับว่า เราสามารถใส่รูปภาพ เพื่อเป็นรูปแรกสำหรับหน้าบล็อกเรื่องที่เขียนครับ โดยคลิกที่คำว่า Set featured Image อยู่ด้านขวามือข้างล่างหน้าบล็อกที่กำลังเขียน ให้อัปโหลดรูป (ต้องย่อขนาดรูปให้เล็ก ประมาณสัก กว้าง 130px สูง 130px ด้วยเครื่องมือตกแต่งรูปที่ใช้เป็น ก่อนอัปโหลดนะครับ) ขึ้นไปเก็บบน sysadmin.psu.ac.th แล้วคลิกเลือกมาใช้ ลืมบอกไปว่า Featured Image จะโผล่ในหน้าแรก (Home)

    ลองใช้งาน ติดขัดอย่างไรก็สอบถามมานะครับ

     

  • How to Install VCNT Visitorcounter on joomla 3.x

    วิธีติดตั้ง VCNT Visitorcounter on Joomla 3.x

    สวัสดีครับ ในวันนี้ใครที่ใช้ Joomla 3 ที่ยังไม่มีตัวนับสถิติผู้เข้าชม ผมมีตัวนับสถิติ ที่ทำงานง่ายไม่ซับซ้อนมาแนะนำครับ โดยมันมีชื่อว่า VCNT Visitorcounter บางคนอาจจะเคยใช้ Vinaora Visitcounter มาก่อน แต่พอมา joomla 3 นี้ไอ่ตัว Vinaora ยังไม่ได้ทำ plugin มาเผื่อ joomla 3 ใครเผลอเอาไปติดตั้งเว็บของท่านอาจไม่ปรากฏอะไรซักอย่างในหน้าแรกเลยก็เป็นได้นะครับ (อย่าลองเชื่อผม) ตัวนับสถิติที่แนะนำวันนี้ก็ได้แก่  VCNT Visitorcounter ซึ่งดาวน์โหลดได้จาก http://joomla-extensions.kubik-rubik.de/vcnt-visitorcounter#backend-info  เมื่อดาวโหลดมาแล้วก็ทำการติดตั้ง มันจะไปเพิ่มอยู่ใน Module Manager ครับ

    vcnt-counter1และหากจะเข้าไป ปรับแต่งค่าให้ไปที่  Module Manager > VCNT Visitorcounter มันก็จะมีหลาย Tab ให้เราปรับเปลี่ยน ซึ่งเราvcnt-counter2ติดตั้งเสร็จแล้วเลือก Position ให้มัน มันก็จะไปปรากฏหน้าเว็บดังรูปนี้ครับ จบข่าว..

    vcnt-counter3

  • How to use Authentication Ldap in PSU แบบละเอียด

    วิธีใช้งาน Authentication – LDAP บน Joomla ใน มอ. บน Ubuntu Server 12.04.5 LTS แบบละเอียด (ผมคาดว่า version 14.04.1 LTS ก็น่าจะใช้ได้เหมือนกันนะ)

    สวัสดีครับไม่ได้เขียนนาน เพราะยังไม่ได้ศึกษาอะไรเพิ่มเติมมากนักเกี่ยวกับเซิร์ฟเวอร์ในช่วงที่ผ่านๆมาเนื่องจาก ทำงานทั่วไปซะเป็นส่วนใหญ่ พอดีเมื่อวันพุธที่ผ่านมาได้ติดตั้งและทดลองใช้ Ldap plugin บน joomla ให้มัน ยืนยันตัวตนผ่าน PSU Passport เพื่อให้เฉพาะบุคคลภายในมหาวิทยาลัยสามารถอ่านบทความหรือเนื้อหานั้นได้ เช่น พวกรายชื่อ อีเมล์ หรือ วาระการประชุมต่างๆ เริ่มเลยนะครับ

    0.กรอกแบบฟอร์มขอใช้บริการ ldap ให้เรียบร้อย และส่งไปยังศูนย์คอมเพื่อให้เจ้าหน้าที่ จัดทำ Policy ในการเข้าใช้งานให้กับเราก่อน โดยเราจะต้องลงชื่อเครื่องที่จะใช้บริการ ldap และหมายเลข IP Address และลงชื่อเป็นลายลักอักษร

    1. ติดตั้ง open-ssl ก่อนเพื่อที่จะใช้ Protocol https เพื่อเข้ารหัสข้อมูลผ่าน ssl ไม่งั้นเวลาเราใช้ ldap แบบเลือกเซิร์ฟเวอร์เป็น https จะไม่สามารถใช้งานได้ คำสั่งในการติดตั้งคือ apt-get install openssl
    2. ติดตั้ง php5-ldap ก่อน เพื่อจะใช้งาน ldap plugin บน joomla เพราะ joomla เป็น php คำสั่งในการติดตั้งคือ apt-get install php5-ldap ติดตั้งเสร็จแล้วให้ restart service apache ด้วยคำสั่ง service apache2 restart
    3. ติดตั้ง ldap-utils โดยคำสั่ง apt-get install ldap-utils
    4. แก้ไฟล์ /etc/ldap/ldap.conf โดยเพิ่มบรรทัดดังนี้

    TLS_REQCERT never

    1. ทดสอบด้วย ldapsearch ให้ติดตั้ง ldap-utils
    2. ทดสอบด้วยคำสั่ง

    ldapsearch -H “ldaps://xx.xx.xx.xx” -b “dc=psu,dc=ac,dc=th” -x

    (xxx นี่คือ server ldap ที่เราใช้ ถ้าใน มอ.จะเป็น ldaps://dc2.psu.ac.th)

    จะพบผลของการค้นหา

    # search result

    search: 2

    result: 4 Size limit exceeded

    # numResponses: 1004

    # numEntries: 1000

    # numReferences: 3

     

    ถ้าทำได้ครบดังนี้ถือว่าการเตรียมการใช้งาน ldap บนฝั่ง server เสร็จเรียบร้อย

    ————————————————————————————————————————————–

    จากนั้นเปิด joomla ของเรามาและเข้าไปที่ backend เพื่อทำการปรับแต่งค่า

    1. ไปที่ Extensions > Plugin Manager > Authentication – LDAP ของผมใช้ Joomla version 3.x.x จะได้หน้าตาแบบนี้

    Authentication-ldapให้ตั้งค่าให้ตรงตามรูปภาพ โดยสามารถเข้าไปดูรายละเอียดการตั้งค่าต่างๆใน plugin ตัวนี้ได้จาก บทความที่ คุณจัตตุพร ชูช่วย เขียนไว้ครับ http://sysadmin.psu.ac.th/2013/02/07/การเชื่อมต่อ-psu-passport-joomla-ldap/ ซึ่งมีหลากหลายเวอร์ชั่นมากตั้งแต่ Joomla 1.5.xx เป็นต้นมา จนถึง 3.x.x

    1. จากนั้นทดลองไปที่ Menus > และสร้าง Menu สำหรับยืนยันตัวตน และเลือก Menu Item type เป็นLogin Form และจัดปรับให้ Menu ที่เราจะยืนยันตัวตนแสดงในหน้าแรก

    loginmenu3.ทดลองเปิดเว็บและไปที่ Menu ยืนยันตัวตนดูครับจากนั้นลองยืนยันตัวตนดู ก็จะสามารถเข้าสู่ระบบได้เรียบร้อยแล้ว โดยหากเรามี Article ที่กำหนดให้เฉพาะสมาชิกอ่านมันก็จะปรากฏหลังจากที่เราทำการยืนยันตัวตนครับ

    login

    เมื่อใช้งานเสร็จแล้ว และต้องการยกเลิกการยืนยันตัวตน ให้กดที่ Menu เดิมอีกครั้งจะปรากฏปุ่ม ออกจากระบบให้เรากดครับ

    logoutpage

     

    เสร็จสิ้นภารกิจ แนะนำอีก 2 ข้อนะครับ

    1. การเปิดหน้า login เพื่อยืนยันตัวตนเข้าสู่ระบบ มันจะมี Menu ให้สมัครสมาชิกอยู่ด้วยให้เราปิดส่วนนี้ซะกันคนนอกมั่วเข้ามาสมัคร โดยไปที่ System > Global configuration > User Manager และให้เราปิดการรับสมัครสมาชิกดังรูป

    closeregist2.หากต้องการเขียน Article และเปิดให้เฉพาะผู้ใช้งานภาย มอ. เห็น แนะนำให้สร้าง Article หรือ Category และเลือก parent เป็น Menu ที่เราทำเป็น Menu ยืนยันตัวตน เวลาที่ User ใช้งานจะได้มองเห็นเนื้อหา ด้านล่าง Menu ที่เรายืนยันตัวตนเลยจะได้ไม่เสียเวลาไปมองหาไกล

    appear

     

    อ้างอิง

    http://share.psu.ac.th/blog/server-dev/21929

    http://sysadmin.psu.ac.th/2013/02/07/การเชื่อมต่อ-psu-passport-joomla-ldap/

  • วิธีตรวจสอบเว็บไซต์ที่โดน Hack #15

    เทคนิคนี้ ใช้ผ่าน Internet Information Services (IIS) Manager โดยการแก้ไข Request Filtering ในระดับ Web Server เลย โดยดำเนินการตามวิธีการต่อไปนี้

    1. เรียก Command ด้วย การกดปุ่ม Windows + R แล้ว พิมพ์ inetmgr แล้วกดปุ่ม Enter
    2. คลิกเว็บเซิร์ฟเวอร์ของเครื่องที่ต้องการใน Connection Tab (ตัวอย่างในภาพ คลิกที่ WUNCAWEBSEC)
    3. ต่อไป ภายใต้หัวข้อ IIS ให้ Double-Click ที่ Request Filtering
    4. คลิกที่ Rules tab
    5. เพิ่มกฏสำหรับ JCE Bot
      ซึ่ง ไม่ต้องการให้ PHP ทำงานภายใต้ URL ซึ่งมีข้อความว่า “images/stories”
      โดย ไปที่ Action ด้านขวามือ แล้ว คลิกที่ Add Filtering Rules …
      แล้วใส่ข้อมูลตามภาพ แล้วคลิกปุ่ม OK

    1. เพิ่มกฏสำหรับ Upload โฟลเดอร์
      ซึ่ง ไม่ต้องการให้ PHP ทำงานภายใต้ URL ซึ่งมีข้อความว่า “upload”
      โดย ไปที่ Action ด้านขวามือ แล้ว คลิกที่ Add Filtering Rules …
      แล้วใส่ข้อมูลตามภาพ แล้วคลิกปุ่ม OK
    2. ผลที่ได้ใน Rules tab

    ทดสอบผลการทำงาน

    สมมุติเดิมโดนวางไฟล์ Backdoor ไว้ที่

    http://localhost/corin/images/stories/backdoor.php

    แต่เมื่อตั้ง Rules ดังกล่าวแล้ว จะทำให้ Hacker ไม่สามารถเรียกใช้งาน PHP ที่วางไว้ใน images/stories ได้ โดยจะได้ Error เช่นนี้

    วิธีนี้มีข้อดีคือ สามารถป้องกันการใช้งาน PHP ใน images/stories (และใน upload โฟลเดอร์) แต่ยังสามารถเรียกไฟล์ภาพและไฟล์อื่นๆได้ตามปรกติ เช่น

    http://localhost/corin/images/stories/clownspin.gif

    ลองใช้งานดูครับ 😉