JunOS์™€ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋Š” Juniper ๋„คํŠธ์›Œํฌ ์žฅ์น˜์˜ ์›น ์ธํ„ฐํŽ˜์ด์Šค ์ทจ์•ฝ์„ฑ

JunOS ์šด์˜ ์ฒด์ œ๊ฐ€ ํƒ‘์žฌ๋œ Juniper ๋„คํŠธ์›Œํฌ ์žฅ์น˜์— ์‚ฌ์šฉ๋˜๋Š” J-Web ์›น ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ทจ์•ฝ์ ์ด ํ™•์ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ค‘ ๊ฐ€์žฅ ์œ„ํ—˜ํ•œ ์ทจ์•ฝ์ (CVE-2022-22241)์€ ์‚ฌ์šฉ์ž๊ฐ€ ์—†์ด ์‹œ์Šคํ…œ์—์„œ ์›๊ฒฉ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. ํŠน๋ณ„ํžˆ ์„ค๊ณ„๋œ HTTP ์š”์ฒญ์„ ์ „์†กํ•˜์—ฌ ์ธ์ฆํ•ฉ๋‹ˆ๋‹ค. Juniper ์žฅ๋น„ ์‚ฌ์šฉ์ž๋Š” ํŽŒ์›จ์–ด ์—…๋ฐ์ดํŠธ๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์›น ์ธํ„ฐํŽ˜์ด์Šค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๊ฐ€ ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ์—์„œ ์ฐจ๋‹จ๋˜๊ณ  ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ํ˜ธ์ŠคํŠธ๋กœ๋งŒ ์ œํ•œ๋˜๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

์ทจ์•ฝ์ ์˜ ๋ณธ์งˆ์€ ์ธ์ฆ๊ฒ€์‚ฌ ์ „ ๋‹จ๊ณ„์—์„œ ์ ‘๋‘์‚ฌ๋ฅผ ์ฝ˜ํ…์ธ  ํ˜•์‹์œผ๋กœ ํ•„ํ„ฐ๋งํ•˜์ง€ ์•Š๊ณ  /jsdm/ajax/logging_browse.php ์Šคํฌ๋ฆฝํŠธ์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์ „๋‹ฌํ•œ ํŒŒ์ผ ๊ฒฝ๋กœ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค๋Š” ์ ์ด๋‹ค. ๊ณต๊ฒฉ์ž๋Š” ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์žฅํ•˜์—ฌ ์•…์„ฑ phar ํŒŒ์ผ์„ ์ „์†กํ•˜๊ณ  "Phar deserialization" ๊ณต๊ฒฉ ๋ฐฉ๋ฒ•(์˜ˆ: "filepath=phar:/path/pharfile.jpg ์ง€์ •)์„ ์‚ฌ์šฉํ•˜์—ฌ phar ์•„์นด์ด๋ธŒ์— ์žˆ๋Š” PHP ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. "๋ผ๊ณ  ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.)

๋ฌธ์ œ๋Š” PHP ํ•จ์ˆ˜ is_dir()์„ ์‚ฌ์šฉํ•˜์—ฌ ์—…๋กœ๋“œ๋œ ํŒŒ์ผ์„ ํ™•์ธํ•  ๋•Œ ์ด ํ•จ์ˆ˜๊ฐ€ "phar://"๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ๋กœ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ Phar Archive์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ ์—ญ์ง๋ ฌํ™”ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. file_get_contents(), fopen(), file(), file_exists(), md5_file(), filemtime() ๋ฐ filesize() ํ•จ์ˆ˜์—์„œ ์‚ฌ์šฉ์ž ์ œ๊ณต ํŒŒ์ผ ๊ฒฝ๋กœ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ์œ ์‚ฌํ•œ ํšจ๊ณผ๊ฐ€ ๊ด€์ฐฐ๋ฉ๋‹ˆ๋‹ค.

๊ณต๊ฒฉ์ž๋Š” phar ์•„์นด์ด๋ธŒ ์‹คํ–‰์„ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ ์™ธ์—๋„ ์ด๋ฅผ ์žฅ์น˜์— ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์•„์•ผ ํ•œ๋‹ค๋Š” ์ ์—์„œ ๊ณต๊ฒฉ์ด ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค(/jsdm/ajax/logging_browse.php์— ์•ก์„ธ์Šคํ•˜์—ฌ ๊ฒฝ๋กœ๋งŒ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Œ). ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ํŒŒ์ผ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค). ์žฅ์น˜์— ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ฐ€๋Šฅํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค์—๋Š” ์ด๋ฏธ์ง€ ์ „์†ก ์„œ๋น„์Šค๋ฅผ ํ†ตํ•ด ์ด๋ฏธ์ง€๋กœ ์œ„์žฅํ•œ phar ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ํ•ด๋‹น ํŒŒ์ผ์„ ์›น ์ฝ˜ํ…์ธ  ์บ์‹œ์— ๋Œ€์ฒดํ•˜๋Š” ๊ฒƒ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

๊ธฐํƒ€ ์ทจ์•ฝ์ :

  • CVE-2022-22242 โ€“ error.php ์Šคํฌ๋ฆฝํŠธ ์ถœ๋ ฅ์—์„œ โ€‹โ€‹ํ•„ํ„ฐ๋ง๋˜์ง€ ์•Š์€ ์™ธ๋ถ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋งํฌ๋ฅผ ๋”ฐ๋ผ๊ฐˆ ๋•Œ ์‚ฌ์šฉ์ž ๋ธŒ๋ผ์šฐ์ €์—์„œ ํฌ๋กœ์Šค ์‚ฌ์ดํŠธ ์Šคํฌ๋ฆฝํŒ… ๋ฐ ์ž„์˜ JavaScript ์ฝ”๋“œ ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: โ€œhttps:// JUNOS_IP/error.php?SERVER_NAME= alert(0) " ๊ณต๊ฒฉ์ž๊ฐ€ ๊ด€๋ฆฌ์ž๊ฐ€ ํŠน๋ณ„ํžˆ ์„ค๊ณ„๋œ ๋งํฌ๋ฅผ ์—ด๋„๋ก ์œ ๋„ํ•˜๋Š” ๊ฒฝ์šฐ ์ด ์ทจ์•ฝ์ ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ด€๋ฆฌ์ž ์„ธ์…˜ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ๊ฐ€๋กœ์ฑŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • CVE-2022-22243, CVE-2022-22244 jsdm/ajax/wizards/setup/setup.php ๋ฐ /modules/monitor/interfaces/interface.php ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ†ตํ•œ XPATH ํ‘œํ˜„์‹ ๋Œ€์ฒด๋ฅผ ํ†ตํ•ด ๊ถŒํ•œ์ด ์—†๋Š” ์ธ์ฆ๋œ ์‚ฌ์šฉ์ž๊ฐ€ ๊ด€๋ฆฌ ์„ธ์…˜์„ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • CVE-2022-22245 Upload.php ์Šคํฌ๋ฆฝํŠธ์—์„œ ์ฒ˜๋ฆฌ๋˜๋Š” ๊ฒฝ๋กœ์˜ ".." ์‹œํ€€์Šค๊ฐ€ โ€‹โ€‹์ œ๋Œ€๋กœ ์‚ญ์ œ๋˜์ง€ ์•Š์•„ ์ธ์ฆ๋œ ์‚ฌ์šฉ์ž๊ฐ€ PHP ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ์— PHP ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: ๋‹ค์Œ์„ ์ „๋‹ฌ). ๊ฒฝ๋กœ "ํŒŒ์ผ ์ด๋ฆ„=\. .\..\..\..\www\dir\new\shell.php").
  • CVE-2022-22246 - jrest.php ์Šคํฌ๋ฆฝํŠธ์˜ ์ธ์ฆ๋œ ์‚ฌ์šฉ์ž์— ์˜ํ•œ ์กฐ์ž‘์„ ํ†ตํ•ด ์ž„์˜์˜ ๋กœ์ปฌ PHP ํŒŒ์ผ์ด ์‹คํ–‰๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์™ธ๋ถ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” "require_once()" ํ•จ์ˆ˜์— ์˜ํ•ด ๋กœ๋“œ๋œ ํŒŒ์ผ์˜ ์ด๋ฆ„์„ ํ˜•์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค(์˜ˆ: ์˜ˆ: "/jrest.php?payload =alol/lol/any\..\..\..\..\any\file")

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€