refer to http://www.jinglingshu.org/?p=761
转自:网络安全攻防研究室 http://www.91ri.org/6438.html
记得09年时wp爆过一个重置管理口令的漏洞, 现在用法差不多, 也是我刚刚发现, 网上也没找到有讲述关于这个的.
前提:是在有注入点(注入点的话可以通过寻找插件漏洞获得。), 密码解不开, 无法output的情况下获取shell的情况下使用的.
这个其实也不算漏洞, 就是结合起来能利用到而已. 因为wp的找回密码系统对管理员账户同样生效, 而发送至邮箱的key在数据库中同样保存下来, 所以就可以直接更改管理员密码
步骤如下:
1) inject出wp-users表里ID为1[或许更改, 随机应变]的user_login或user_email; [未知管理员后台账户的情况下]
2) 在wp-login.php处点击 ‘忘记密码’ [lost password],如果被隐藏或没有可以直接访问wp-login.php?action=lostpassword页面, 输入管理员账户或管理员邮箱, 点击’获取新密码’ .
3) 再次inject出wp-users表里ID为1或目标值的user_activation_key.
4) 访问wp-login.php?action=rp&key=KEY&login=NAME 。将KEY替换为注射出的user_activation_key的值, 将NAME替换为管理员账号并访问该页面.
-例:http://www.91ri.org/ wp-login.php?action=rp&key=ixUrwKCCycGqlGwWQ6vx&login=Adm1n_oRg
[tip:有个俄罗斯人写的程序Wordpress P&E可以搜索目标wp站的插件, 并注明是否有漏洞, 不过只有153个插件, 然后1337有个程序可以搜索joomla和wp等站的危险插件, 是php程序, 在sourceforge就有的下, 大家可以去下载一个. 然后就是在1337,exploit-db,goole上搜索该插件是否有漏洞了.]
91ri.org:backtrack下有一款名为wpscan的扫描工具,感觉还不错,推荐给大家,希望能帮助大家在日WP站点时多个方法和思路。:)
作者9999 link:team.f4ck.net
ps:自己实践过程如下:
由于本人懒得构造有注入漏洞的页面所以说一下大概,上述方法适用于网站存在注入漏洞,可以获取管理员用户名、加密的口令、注册的邮件等信息(在wp-users表中),但是不能够破解密码,同时由于没有权限不能通过outfile来获取shell。这种情况下可以通过重置管理员密码来达到最终设置管理员密码的目的。
(1)注入获取管理员用户名和注册邮箱。(一般在wp-users表中ID为1的即为管理员,但也要视具体情况而定)
(2)在wp-login.php处点击 ‘忘记密码’,或直接访问wp-login.php?action=lostpassword页面。输入管理员用户名或注册邮箱。
(3)重新注入获取wp-users表中管理员对应的user_activation_key.
(4)构造语句重置管理员密码:wp-login.php?action=rp&key=KEY&login=NAME 。其中KEY替换为注射出的user_activation_key的值, 将NAME替换为管理员账号并访问该页面.