Bagaimana cara mengetahui kekuatan kata sandi Wordpress (sudah tersimpan)?

10

Saya bertanggung jawab atas keamanan banyak server hosting bersama. Sebagian besar dari mereka memiliki situs web WordPress. Setiap server memiliki setidaknya 500 situs web WordPress.

Dalam pengalaman saya, masalah dengan WordPress dimulai dengan kata sandi yang lemah. Sebagian besar kata sandi admin situs web sangat lemah dan menggunakan kata sandi situs web yang lemah dieksploitasi dan digunakan untuk berbagai aktivitas jahat.

Sekarang rencanaku adalah mencari tahu kata sandi yang lemah di situs WordPress dan dengan paksa mengubah kata sandi admin menjadi kata sandi kuat lainnya. Sehingga, WordPress dapat diamankan dan server saya tidak akan mengalami masalah.

Apa cara untuk mengetahui kekuatan kata sandi WordPress yang disimpan?

Mani
sumber

Jawaban:

8

Hash Bruteforce

Anda bisa memaksa hash yang disimpan dalam database.

WordPress menggunakan phpass untuk hashing. Per default, WordPress tidak menggunakan blowfish atau sejenisnya, tetapi hanya md5 dengan jumlah iterasi 8192. Jika Anda hanya ingin menemukan kata sandi yang benar-benar buruk, bruteforcing tentu layak dilakukan.

Tetapi saya akan menganggap ini sebagai pelanggaran yang agak besar terhadap kepercayaan yang diberikan pengguna kepada Anda, jadi saya tidak akan merekomendasikan pendekatan ini.

Analisis kata sandi mereka saat masuk

Anda dapat menambahkan skrip yang memotong semua permintaan ke skrip login WordPress, dan masuk atau menganalisis kata sandi, karena mereka berada dalam plaintext pada saat itu.

Tentu saja, ini hanya menangkap kata sandi yang lemah begitu pengguna benar-benar masuk. Jika mereka telah meninggalkan situs mereka atau agak tidak aktif, mungkin perlu beberapa saat bagi Anda untuk mengetahui bahwa mereka menggunakan kata sandi yang lemah.

Saya akan menganggap ini sebagai pelanggaran yang bahkan lebih besar daripada bruteforcing hash, dan itu juga membawa beberapa masalah keamanan dengan itu (jika Anda menyimpan kata sandi dalam plaintext, ini jelas akan menjadi masalah, tetapi bahkan jika tidak, Anda dapat secara tidak sengaja menyimpan beberapa informasi dari analisis yang dapat membantu penyerang).

Menerapkan Kebijakan Kata Sandi (dan memaksa pengguna untuk mengubah kata sandi mereka)

Anda dapat menerapkan kebijakan kata sandi. Ketika pengguna mengirimkan kata sandi baru, Anda akan memeriksa apakah kata sandi tersebut sesuai dengan kebijakan Anda atau tidak (idealnya, ini akan terjadi di sisi server, bukan sisi klien melalui JavaScript).

Menulis kebijakan kata sandi yang baik itu sulit, jadi perhatikan kebijakan yang ada untuk membantu Anda di sini.

Tentu saja, kata sandi lama tidak terpengaruh oleh kebijakan tersebut, jadi Anda harus memaksa pengguna untuk mengubah kata sandi lama mereka untuk mematuhi kebijakan tersebut.

Batasi Kerusakan

Menegakkan kata sandi yang kuat tentu bisa menjadi ide yang bagus, tetapi idealnya, contoh WordPress yang diretas tidak benar-benar memengaruhi Anda sebagai webmaster.

Anda harus membatasi kerusakan setelah penyerang memperoleh akses ke instalasi WordPress. Idealnya, Anda ingin hanya satu instance yang terpengaruh, bukan seluruh server Anda (jadi Anda mungkin khawatir tentang penyerang yang meletakkan konten tidak senonoh di situs web - seperti yang dilakukan pengguna yang valid -, tetapi bukan tentang eksekusi kode, atau tindakan jahat lainnya aktivitas).

Ini adalah topik yang agak luas, tetapi beberapa poin termasuk DISALLOW_FILE_EDIT:, membatasi penggunaan plugin (karena mereka jauh lebih aman dikodekan dari WordPress itu sendiri), melarang JavaScript (misalnya dengan multisite, hanya admin super yang berhak memposting JavaScript, bukan admin), dll.

tim
sumber
4

Saya tidak yakin ini bahkan mungkin. Ketika Anda memilih kata sandi, kata sandi itu disimpan di dalam basis data. Tidak ada rekayasa terbalik ketika datang ke algoritma hash.

Dalam pengalaman saya, skrip untuk kekuatan kata sandi terletak di www.example.com/wp-admin/js/password-strength-meter.js, dan ini adalah tautannya.

Anda dapat mengubah level dan persentase kata sandi di sini, sehingga Anda dapat menetapkan kekuatan kata sandi wajib ke 100/100.

Dan, jika Anda ingin klien Anda memeriksa kekuatan kata sandi, ada aplikasi lucu yang dapat memberi Anda kekuatan kata sandi di sini.

Tidak mungkin melakukan reverse enginering di sini, dan di samping itu, ada beberapa plugin yang memaksa pengguna untuk mendapatkan kata sandi yang kuat.

Josip Ivic
sumber
1
Ini tampaknya seperti hal sederhana yang dapat dilakukan oleh host web dan pemilik situs untuk membantu melindungi diri mereka sendiri. Pertanyaan dan jawaban yang sangat bagus! Saya tidak yakin itu pernah dibahas di sini sebelumnya. Setidaknya sudah lama tidak ditanggapi. Bersulang!!
closetnoc
1
Jawaban di atas baik, Tapi itu tidak menyelesaikan masalah saya. Sebagian besar situs web WordPress sudah diinstal atau dalam 100 hari instalasi WP sedang berlangsung di server saya. Asumsikan saya mengubah kekuatan kata sandi menggunakan kata sandi-strength-meter.js, masih tidak berguna bagi saya. Bcoz, pwd sudah diatur. Ini hanya akan berguna untuk passwd baru, bukan untuk yang sudah ditetapkan.
Mani
1
Tapi, tidak mungkin Anda bisa mengetahui semua kata sandi dari basis data karena kata sandi itu hash. Anda dapat mengatur ini dan kemudian mengirim ulang ke semua pengguna untuk mengubah kata sandi mereka sehingga mereka dapat memiliki kata sandi yang kuat. Saya tidak melihat cara lain dalam hal ini. Periksa jawaban di bawah juga.
Josip Ivic
2
@Josip Ivic, satu-satunya cara adalah mengatur ulang pwd dan menginformasikan admin seperti yang Anda katakan.
Mani
1
Untuk pengguna baru, saya hanya akan menyesuaikan skrip pada wp di server sehingga wajib untuk memiliki kata sandi yang kuat, dan untuk pengguna lama, saya akan mengirim ulang mereka surat sehingga mereka dapat mengubah kata sandi mereka menjadi yang kuat. Seperti yang saya katakan, tidak ada cara mudah untuk melakukan ini, tapi itu bisa dilakukan. :)
Josip Ivic
3

Berita baiknya adalah Anda dapat mengubah kata sandi pengguna, berita buruknya adalah Anda tidak dapat melihatnya.
Wordpress sangat kuat sehingga bahkan dalam database menyimpan kata sandi dengan enkripsi satu arah itu bukan hanya hash md5 yang dapat Anda konversi, itu bahkan bukan data serial, untuk kata sandi test123Anda akan mendapatkan sesuatu seperti $P$BjW8o9Dm1vC5bwAcP1iAdNVm0lbvn, juga bahkan jika Anda mengubah bidang kata sandi dalam database tanpa menggunakan enkripsi, itu tidak akan berfungsi.

Cara mengubah kata sandi

Saya yakin Anda mengetahui hal ini, tetapi saya akan meninggalkannya di sini. Anda dapat memasukkan dashboard wordpress Anda dengan hak admin, pergi ke pengguna, menemukan pengguna dan bagian ini agak buruk untuk tujuan Anda karena Anda harus mengklik menghasilkan kata sandi baru, itu akan memberi Anda sup acak huruf dan simbol dan Anda dapat edit dengan Anda sendiri tetapi bahkan kemudian Anda tidak dapat melihat kata sandi.

knif3r
sumber
Lupa menyebutkan Anda dapat menggunakan plugin seperti iThemes untuk meminta pengguna memasukkan kata sandi yang kuat, juga memungkinkan perlindungan brute force dan fitur keren lainnya yang mungkin menarik bagi Anda.
knif3r
3

Saat kata sandi di-hash, satu-satunya cara untuk menguji keamanan mereka adalah dengan memaksa mereka. Kumpulkan daftar kata sandi yang lemah dan umum digunakan dan ujilah dengan hash yang tersimpan di basis data Anda.

Kecuali jika Anda menggunakan daftar kata sandi yang sangat lengkap, ini tidak akan menangkap semua kata sandi yang lemah, tetapi akan menyaring yang terlemah dari mereka.

Tom van der Zanden
sumber
Ini adalah solusi yang membutuhkan banyak waktu.
Josip Ivic
Inilah yang disebut membangun meja pelangi.
Ashfame
@Ashfame Tidak, tidak. Tabel pelangi adalah pendekatan yang jauh lebih canggih yang belum tentu paling cocok untuk skenario ini.
Tom van der Zanden
@ TomvanderZanden Mungkin ini bukan pendekatan yang cocok, tetapi bagaimana ini tidak akan menjadi meja pelangi?
Ashfame
@Ashfame Karena tabel pelangi jauh lebih canggih daripada "memeriksa daftar kata sandi terhadap basis data Anda". Tabel pelangi, misalnya, menggunakan rantai hash dan fungsi pengurangan. Perhatikan juga bahwa membuat tabel pelangi membutuhkan waktu lebih dari sekadar memeriksa semua kata sandi terhadap basis data Anda. Menggunakan tabel pelangi yang sudah dikomputasi mungkin masuk akal, tetapi mungkin berlebihan untuk situasi ini.
Tom van der Zanden
1

Anda tidak dapat secara paksa mengubah kata sandi admin wp, kecuali Anda tidak memiliki kontrol di setiap basis data wordpress, yang disimpan dalam phpmyadmin.

Dan tidak, tidak ada cara cepat untuk mengetahui kata sandi minggu di 500 situs wordpress. Josip menyebutkan satu tautan ke checkout kekuatan kata sandi, tetapi situs itu tidak menggunakan md5 crypto algo untuk memeriksa kekuatan kata sandi.

Periksa Tautan SO ini , ( Wordpress menggunakan MD5 ) dan Anda akan melihat hasilnya berbeda dari aplikasi itu. Jadi seperti yang Anda lihat p#aSS*Word14tidak aman daripada Dance With Me TonightJadi jangan gunakan aplikasi pihak ketiga untuk memeriksa kata sandi Wordpress Anda, karena mungkin mereka menggunakan algoritma crypto lain untuk memeriksa / mengasumsikan kekuatan kata sandi.

Anda juga harus memiliki semua kata sandi, dan mengujinya satu per satu, tidak ada trik sulap untuk mengetahuinya dengan cepat.

Hal lain adalah bahwa, Jika satu situs WordPress diretas maka itu tidak mempengaruhi situs wp lain di server yang sama (Kecuali serangan DOS). Saya telah melihat banyak orang mulai wp di shared hosting, dan situs mereka semakin diretas, tetapi masih situs tetangga mereka berjalan dengan baik, karena setiap wp memiliki database sendiri di phpmyadmin.

Goyllo
sumber
Didn't affect other WP site on same server:Kebetulan! Tergantung pada jenis serangan / retasan & maksud dari peretas / bot.
Ashfame
Saya berbicara tentang keamanan wordpress, bukan keamanan tingkat root. Tapi saya yakin, sebagian besar dari semua penyedia hosting menggunakan mekanisme kotak pasir untuk tidak mempengaruhi situs web lain di server yang sama.
Goyllo
1

Seperti yang ditunjukkan oleh jawaban sebelumnya: Anda tidak dapat membaca kata sandi yang disimpan.

Solusi alternatif dapat berupa:

  1. Terapkan saran dari Josip Ivic untuk menerapkan kata sandi yang kuat.
  2. Hapus semua kata sandi (atau hanya kata sandi untuk pengguna dengan hak istimewa tertentu).
  3. Dan akhirnya, beri tahu pengguna yang terpengaruh bahwa kebijakan kata sandi baru berlaku dan arahkan mereka /wp-login.php?action=lostpassworduntuk mereset kata sandi mereka.
Ruang maya
sumber
1

Kata sandi WordPress di-hash, seperti halnya aplikasi yang masuk akal ketika harus menyimpan kata sandi karena menyimpan kata sandi teks yang jelas sangat tidak aman karena pengguna Anda mungkin memiliki kata sandi yang sama untuk layanan lain yang mereka gunakan (pikirkan gmail?).

Tidak mungkin untuk mengkonversi hash kembali ke kata sandi, kalau tidak orang bisa menyimpannya dalam teks yang jelas. Kata sandi sebelumnya digunakan untuk hash MD5tapi itu terbukti tidak aman oleh tim keamanan, jadi algoritma hashing diperbarui phpass.

Kiat: WordPress masih dapat mengelola untuk hash dengan benar bahkan jika Anda memperbarui MD5 (% password%) ke dalam kolom sql.

Sekarang cara praktis untuk mendekati apa yang Anda coba lakukan untuk satu situs adalah untuk memang memaksa perubahan kata sandi dengan mengubah kolom ke sesuatu yang lain dan menegakkan persyaratan kekuatan kata sandi pada halaman di mana mereka akan memperbarui kata sandi mereka. Tetapi kasus penggunaan Anda mengharuskan melakukan ini pada begitu banyak instalasi WP dan pemilik situs tersebut mungkin tidak menghargai Anda melakukan ini tanpa persetujuan mereka. Jadi, Anda pasti harus membatasi ruang lingkup dampak dari tindakan Anda.

1) Perbarui kata sandi hanya untuk admin, editor, tetapi Anda mengharuskan Anda untuk menemukan siapa pengguna itu. Kirimkan email kepada mereka dan kemudian jalankan pembatasan kata sandi pada halaman atur ulang kata sandi / halaman pendaftaran dll. Ingat seseorang dapat memiliki formulir itu di tempat lain di situs (pikirkan juga formulir AJAX). Membuat perintah WP-CLI yang membantu Anda di sini dalam menjalankan rencana ini, daripada memuat lingkungan WP dan menjalankan skrip.

2) Membuat tabel pelangi yang terdiri dari kata sandi hash untuk string yang dikenal (kata sandi). Dan pada dasarnya Anda harus mencocokkan hashing dengan kata sandi pengguna tertentu dan mengevaluasi kekuatan kata sandi itu. Membuat tabel adalah langkah paling lambat di sini karena Anda harus hash setiap kata sandi yang mungkin ada, simpan di disk (beberapa GB tergantung pada panjang & kombinasi kata sandi yang Anda gunakan) dan kemudian lakukan hasilnya. 99% yakin ini merupakan solusi berlebihan untuk kebutuhan Anda.

Kiat: Anda tahu garam dan rahasia yang kita miliki dalam wp-config.phparsip. Mengubahnya membatalkan sesi login, kalau-kalau Anda membutuhkannya.

Asfame
sumber
1

Cobalah untuk memaksa dengan menggunakan serangan kamus

Apa cara yang lebih baik untuk menilai kekuatan kata sandi Anda? :-) Ya saya tahu, itu akan memakan waktu ...

Jika tidak, Anda bisa mengasumsikan semua kata sandi lemah (saya akan mengatakan bahwa itu akan menjadi asumsi yang sangat akurat ) dan buat sendiri kata sandi Anda, simpan hash dalam database dan berikan kata sandi teks biasa ke admin menggunakan "aman" saluran

Kalau tidak, anggap lagi semua kata sandi lemah dan paksa admin untuk mengubahnya, dan gunakan validator kekuatan kata sandi yang sangat pemilih di situs web itu sendiri.

Gianluca Ghettini
sumber