Minio web应用命令执行(Webrce)漏洞

20230502,五一期间,人在家中坐,祸从天上来。

背景

公司上任架构师在阿里云搭建了包含三个节点的Minio集群作为OSS服务,接手后基本就是巡查一下然后定期更新版本,偶尔磁盘空间不足的话扩容一下,一切都是那么平稳且无趣。

问题发现

阅读全文 »

Redis配置不当致使Root被提权漏洞

记录一下一次补漏洞的经历,难得有这么经典的案例

背景

公司和某银行之间有些合作,委托银行部署了一个专门用于收罚款的程序。公司出服务器(阿里云ECS),银行出应用,因为公司毕竟是大客户,银行也没提收钱的事情,就这么免费帮忙部署了这么个应用。

当然有人占了银行的便宜,那么有人就要被银行占便宜,谁是这个倒霉的人呢,他就是银行外包。于是这个应用的开发和部署都是银行外包搞定的,当时和外包对接的老哥提了必须基于docker部署该应用,方便以后迁移到k8s。

阅读全文 »

Canal介绍与使用

简介

upload successful

**canal [kə’næl]**,译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费

早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigger 获取增量变更。从 2010 年开始,业务逐步尝试数据库日志解析获取增量变更进行同步,由此衍生出了大量的数据库增量订阅和消费业务。

阅读全文 »

Docker Swarm的介绍与使用

What

  • Docker(容器) Swarm(集群)——简单来说,Docker swarm就是容器集群(包含了集群管理和编排功能),由Docker公司研发并且在Dokcer v1.12版本后自带此服务(早期作为一项独立服务叫做swarmkit,需要单独安装)。

  • 集群管理:创建新集群、升级集群的主节点和工作节点、执行节点维护(例如内核升级)和升级运行集群的版本等。

  • 容器编排:应用一般由单独容器化的组件(通常称为微服务)组成,这些组件必须按特定顺序在网络中进行组织并照计划运行,这种对多个容器进行组织的流程即称为容器编排(使用Docker Compose实际就是容器编排)。

    For Example:

    standalone-mysql-5.7.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
version: "2"
services:
nacos: # 服务名称
image: nacos/nacos-server:latest # 使用的镜像
container_name: nacos-standalone-mysql # 容器名称
env_file: # 环境变量文件加载
- ../env/nacos-standlone-mysql.env
volumes: # 宿主与容器文件挂载
- ./standalone-logs/:/home/nacos/logs
- ./init.d/custom.properties:/home/nacos/init.d/custom.properties
ports: # 宿主与容器间端口映射
- "8848:8848"
- "9555:9555"
depends_on: # 依赖的服务
- mysql
restart: on-failure # 重启策略
mysql: # 数据库基础服务
container_name: mysql
image: nacos/nacos-mysql:5.7
env_file:
- ../env/mysql.env
volumes:
- ./mysql:/var/lib/mysql
ports:
- "3306:3306"
prometheus: # prometheus 用于监控nacos服务,为grafana提供基础数据
container_name: prometheus
image: prom/prometheus:latest
volumes:
- ./prometheus/prometheus-standalone.yaml:/etc/prometheus/prometheus.yml
ports:
- "9090:9090"
depends_on:
- nacos
restart: on-failure
grafana: # 监控面板,配合prometheus使用
container_name: grafana
image: grafana/grafana:latest
ports:
- 3000:3000
restart: on-failure

Key Concepts

阅读全文 »

引言

一个成熟的python项目可能会依赖很多特定的环境,然而项目运行的结果不仅取决于代码,和运行代码的环境也息息相关。这很有可能会造成,开发环境上的运行结果和测试环境、线上环境上的结果都不一致的现象。为了解决这个问题,我们可以将python项目打包成docker镜像,这样即使在不同的机器上运行打包后的项目,我们也能够得到一致的运行结果。

准备工作

安装docker

可以使用如下脚本一键安装

阅读全文 »

Markowitz’s Mean-Variance Model Derivation in Python

Written by Jiang Rongrong(2019E8010663001)

Interested by “Lecture 3.Quadratic Programing and Portfolio Selection Theory”,I’ve consulted a number of books about Markowitz’s Mean-Variance Model.Therefore,I want to make some discussion about what I’ve learnt and the expeirments when I tried to figure out this model.

Theory Summary

Markowitz made the following assumptions while developing the Mean-Variance Model:

阅读全文 »

前言

可怜今夕月,向何处,去悠悠?是别有人间,那边才见,光影东头?是天外。空汗漫,但长风浩浩送中秋?飞镜无根谁系?姮娥不嫁谁留?
——宋·辛弃疾

中秋佳节,花好月圆,行书一幅赠与(zhuang)友人(bi)。
书法作品

我一个程序员,写得了代码不说,还能写一手好字,这么多才多艺的程序员到哪里去找!?

所以这显然是装出来的,我们这类人最擅长的就是利用代码来解决问题,这书法当然是用代码写的。

阅读全文 »

前言

7月4日
新开这本日记,也为了督促自己下个学期多下些苦功。先要读完手边的莎士比亚的《亨利八世》。
7月13日
打牌。
7月14日
打牌。
7月15日
打牌。
7月16日
胡适之啊胡适之!你怎么能如此堕落!先前订下的学习计划你都忘了吗?子曰:“吾日三省吾身。”不能再这样下去了!
7月17日
打牌。
7月18日
打牌。

以上摘自胡适先生的留学日记,明明是别人的故事,主人公却好像是自己。

于是抽空就有了此文,虽然还是咸鱼,但至少死鱼眼里泛出些许光彩了。

正文

阅读全文 »

What’s Selenium

Selenium automates browsers. That’s it! What you do with that power is entirely up to you. Primarily, it is for automating web applications for testing purposes, but is certainly not limited to just that. Boring web-based administration tasks can (and should!) be automated as well.

Selenium has the support of some of the largest browser vendors who have taken (or are taking) steps to make Selenium a native part of their browser. It is also the core technology in countless other browser automation tools, APIs and frameworks.

以上摘自Selenium官方首页

一句话概括:Selenium可以自动控制浏览器,一般用于自动化测试,但是你想用它做其他的事情(比如爬虫、比如代替做一些无聊重复的基于网站的工作)当然也是OK的,总之根据你的需要自己鼓捣去吧。

阅读全文 »