wordpress后台登录密码前端js加密+php后端解密
2019-8-26
| 2023-4-13
0  |  0 分钟
type
Post
status
Published
date
Aug 26, 2019
slug
2019/wordpress-frontend-encrypt
summary
万恶的等保
tags
WordPress
开发
category
技术分享
icon
password
 
由于特殊原因,wordpress后台登录密码不能被明文抓包...
于是我采用 rsa 前端 js 加密 + php 后端解密 的方式进行
 
那只能大费周章去改wordpress代码了= = 。。。。
 
由于 wordpress 登录时 wp-login.php 是直接提交表单给自己的
于是想到用 jquery 去修改表单数据, 直接上代码。

wordpress根目录 wp-login.php 文件

此处需要用到两个库文件 jQueryjsencrypt 在表单代码后面的 js 处 添加
<script type="text/javascript" src="./wp-includes/js/jquery/jquery-3.4.1.min.js"></script> <script type="text/javascript" src="./wp-includes/js/jsencrypt.min.js"></script> <script type="text/javascript"> /* * writeBy:TARI * date: 2019/08/26 * usage: $("#user_pass").change方法对密码进行 rsa 公钥加密传输 */ $("#user_pass").change(function(){//失去焦点触发,就是点击登陆按钮后触发 // 数据处理 var pubkey = '你的公钥' var encrypt = new JSEncrypt(); encrypt.setPublicKey(pubkey); var encrypted = encrypt.encrypt($('#user_pass').val()) $("#user_pass").val(encrypted); //重新赋值 }); <!-- 下面还有wp_attempt_focus()等函数, 或者新建一对 js 标签也行,不过我没测试过 --> </script>

wordpress根目录/wp-includes/pluggable.php 文件

function wp_authenticate($username, $password) { $username = sanitize_user($username); $password = trim($password); // 这里后添加如下代码: // 私钥不能因为好看而添加乱七八糟的缩减之类的 $private_key = "私钥内容"; $decrypt_data = ''; // 判断私钥是否是可用的,可用返回资源id $pi_key =  openssl_pkey_get_private($private_key); // 解密数据, 这里要进行 base64 解码是因为浏览器会默认帮你的数据进行编码 openssl_private_decrypt(base64_decode($password), $decrypt_data, $private_key); $password = $decrypt_data; //下面一堆代码 balabala }
再抓包密码就是加密状态啦! 在 wordpress 找密码验证的函数和文件找了挺久的....
 
技术分享
  • WordPress
  • 开发
  • 2019年第三届广东省强网杯网络安全大赛WEBwriteupCISP-IRE考证记(23.5.31更新中)
    目录