Dò lỗ hổng WordPress với WPScan

Nói đến bảo mật nói chung và bảo mật trong WordPress nói riêng, ngoài các cách bảo mật WordPress thông dụng để hạn chế thấp nhất tỷ lệ bị tấn công thì chúng ta còn phải xét đến một khía cạnh khác cũng là nguyên nhân khiến bạn website bạn bị hack đó là website có lỗ hổng. Đúng vậy, dù bạn có cấu hình bảo mật thế nào nhưng không vá lỗi các lỗ hổng trên bảo mật thì bạn cũng sẽ bị tấn công.
Nếu bạn đang sử dụng WordPress trên các máy chủ riêng sử dụng Linux (hoặc có quyền truy cập vào máy chủ với SSH) thì có thể sử dụng một công cụ hỗ trợ bạn dò lỗ hổng trên website WordPress rất bá đạo tên là WPScan.

WPScan có chức năng gì?

WPScan có rất nhiều chức năng mà bạn sẽ rất quan tâm như:
  • Kiểm tra mã nguồn website để tìm lỗ hổng XSS, SQL Injection, Local Attack,…blah blah….nói chung là phát hiện ra các lỗ hổng đã được công bố tại https://wpvulndb.com/.
  • Điều tra các plugin đã được cài đặt.
  • Tự tấn công Brute Force Attack với các dữ liệu có sẵn để đánh giá độ mạnh của mật khẩu.
Ngắn gọn là như vậy nhưng khi sử dụng bạn sẽ thấy rất hay vì cơ sở dữ liệu các lỗ hổng trong WordPress tại WPVULDB rất lớn. Bạn sẽ biết được plugin nào có lỗ hổng (kể cả bạn đã vá lỗi) để xem bạn có chắc chắn đã sử dụng phiên bản vá lỗi hay chưa, từ đó bạn sẽ biết mình cần làm gì.
Lưu ý rằng công cụ này chỉ hỗ trợ bạn kiểm tra, chứ không hỗ trợ bạn vá lỗi. Nên nếu phát hiện ra lỗi thì cố gắng đọc kỹ thông tin trả về xem bạn có thật sự đã vá chưa, nếu chưa thì nên tìm xem plugin/theme của bạn đang sử dụng có bản vá chưa.

Cài đặt WPScan

Để cài đặt WPScan, bạn hãy chắc chắn rằng máy của bạn là Linux và đã cài đặt RubyGit.
Nếu bạn dùng Shared Host thì không cần làm các bước dưới, chỉ cần cài plugin Plugin Security Scanner.
Sau đó bạn cài đặt bằng cách gõ lần lượt các lệnh sau.

Ubuntu 12.04 hoặc thấp hơn

sudo apt-get install libcurl4-openssl-dev libopenssl-ruby libxml2 libxml2-dev libxslt1-dev ruby-dev
git clone https://github.com/wpscanteam/wpscan.git
cd wpscan
sudo gem install bundler && bundle install --without test

Ubuntu 14.04 hoặc cao hơn

sudo apt-get install libcurl4-openssl-dev libxml2 libxml2-dev libxslt1-dev ruby-dev build-essential
git clone https://github.com/wpscanteam/wpscan.git
cd wpscan
sudo gem install bundler && bundle install --without test

CentOS / Fedora

sudo yum install gcc ruby-devel libxml2 libxml2-devel libxslt libxslt-devel libcurl-devel patch
git clone https://github.com/wpscanteam/wpscan.git
cd wpscan
sudo gem install bundler && bundle install --without test

Mac OS

Đối với Mac thì bạn dùng các lệnh như trên, không cần dùng lệnh đầu tiên để cài các ứng dụng cần thiết.
Và bây giờ, khi cần sử dụng thì bạn hãy truy cập vào thư mục wpscan/ rồi mới sử dung được vì chúng ta phải chạy file wpscan.rb có trong đó.
ruby wpscan.rb --update

Các lệnh wpscan

Quét kiểm tra website.

ruby wpscan.rb --url thachpham.com

Kiểm tra lỗi trong plugin

ruby wpscan.rb --url thachpham.com --enumerate p

Scan lỗi từ một thư mục wp-content chỉ định

Nếu website của bạn đã đổi tên thư mục wp-content thì bạn có thể sử dụng lệnh sau để scan vào tên thư mục đó thay vì scan thư mục wp-content
ruby wpscan.rb -u thachpham.com --wp-content-dir du-lieu
Ngoài ra còn có khá nhiều lệnh khác mà bạn có thể xem thêm tại https://github.com/wpscanteam/wpscan.
Nếu có phát hiện ra plugin đã từng có lỗi, bạn sẽ nhận được thông tin thế này (nếu phiên bản bạn đang dùng không có lỗi):
[+] Name: wordpress-seo
 | Location: https://thachpham.com/wp-content/plugins/wordpress-seo/
 | Changelog: https://thachpham.com/wp-content/plugins/wordpress-seo/changelog.txt

[!] We could not determine a version so all vulnerabilities are printed out

[!] Title: WordPress SEO - Security issue which allowed any user to reset settings
 Reference: https://wpvulndb.com/vulnerabilities/6837
 Reference: http://wordpress.org/plugins/wordpress-seo/changelog/
[i] Fixed in: 1.4.5

[!] Title: WordPress SEO < 1.4.7 - Reset Settings Feature Access Restriction Bypass
 Reference: https://wpvulndb.com/vulnerabilities/6839
 Reference: https://secunia.com/advisories/52949/
[i] Fixed in: 1.4.7

[!] Title: WordPress SEO by Yoast <= 1.7.3.3 - Blind SQL Injection
 Reference: https://wpvulndb.com/vulnerabilities/7841
 Reference: https://www.exploit-db.com/exploits/36413/
[i] Fixed in: 1.7.4
Còn nếu phiên bản bạn đang dùng có lỗi thì nó sẽ cho bạn biết chính xác tập tin nào và đoạn nào bị lỗi để bạn biết mà nghiên cứu.
Nhìn chung plugin khá hữu dụng mặc dù chức năng chỉ có như vậy nhưng bạn nên cài vào và scan thử xem website của chúng ta có thật sự sạch hay không nhé.