
shellshock - 1 pt [writeup]
shellshock์ ๋ํ ๊ฐ๋ ๊ณผ ์๋ฆฌ๋ฅผ ๋จผ์ ์์๋ณด์.
shellshock (CVE-2014-6271)
์ถ์ฒ https://baobob1024.tistory.com/42
: GNU bash shell์์ ํ๊ฒฝ๋ณ์๋ฅผ ํตํด ๊ณต๊ฒฉ์๊ฐ ์๊ฒฉ์ผ๋ก ๋ช ๋ น์ด๋ฅผ ์คํํ ์ ์๋ ์ทจ์ฝ์
๊ฐ๋จํ ๋ช ๋ น์ด๋ง์ผ๋ก ์์คํ ์ ์ฅ์ ํ ์ ์์ด shellshock์ทจ์ฝ์ ์ CVSS ๋ฑ๊ธ 10์ ์ ๋ฐ์๋ค.
โท ํจ์์ฒ๋ผ ๋ณด์ด๋ ๋ณ์(ํ๊ฒฝ๋ณ์)๋ฅผ ์ ์ํ ๋ ๋ฐ์ํ๋ ์ทจ์ฝ์
ํ๊ฒฝ๋ณ์์ ํจ์๋ฅผ ์ ์ํ๋ ๋ฐฉ๋ฒ
$ x() { echo abcd; }
์์ ์ฌ์ง๊ณผ ๊ฐ์ด export์ -f(function) ์ต์ ์ผ๋ก ํ๊ฒฝ๋ณ์์ ํจ์๋ฅผ ๋ฑ๋กํ๊ณ ํจ์(x)๋ฅผ ํธ์ถํ๋ฉด ํจ์ ์์ ๋ด์ฉ์ ํ์ธํ ์ ์๋ค.
shellshock์ ์๋ฆฌ
- Bash์ ํ๊ฒฝ ๋ณ์์ ํจ์์ฒ๋ผ ๋ณด์ด๋ ๋ณ์๋ฅผ ์ ์ํ๋ค.
- ํจ์์ฒ๋ผ ๋ณด์ด๋ ๋ณ์ -> ํจ์๋ฌธ๋ฒ์ผ๋ก ์์๋๋ ๋ด์ฉ( '() {๋ก ์์๋๋ ๋ณ์')์ ์ ์ด์ ์ ์ํด์ค๋ค. (์์์)
- ํจ์์ฒ๋ผ ๋ณด์ด๋ ํ๊ฒฝ๋ณ์์ ์ธ๋ฏธ์ฝ๋ก ๊ณผ ๋ช ๋ น์ด๋ค์ ์ถ๊ฐํด์ฃผ๊ณ bash subshell์ ์คํํ๋ฉด ํจ์๋ก ์ ์๋๋ฉด์ ๋ค์ ์๋ ๋ช ๋ น์ด๋ค๊น์ง ์คํ๋๋ค.
ex)
$ export x='() { echo abcd;};pwd;id'
// pwd : ํ์ฌ์ ์๊ธฐ๊ฐ ์์นํ ๊ฒฝ๋ก๋ฅผ ๋ณด์ฌ ์ฃผ๋ ๋ช
๋ น์ด
// id : ์์ ์ uid์ gid๋ฅผ ๋ณด์ฌ์ฃผ๋ ๋ช
๋ น์ด
์ด์ ๋ฌธ์ ๋ฅผ ์ดํด๋ณด์.
ssh shellshock@pwnable.kr -p2222 (pw: guest)๋ฅผ ์ ๋ ฅํด์ ์ ์์ ์ฑ๊ณตํ๋ค.
ls -al์ ์ฌ์ฉํด์ ์กด์ฌํ๋ ํ์ผ๊ณผ ๋๋ ํ ๋ฆฌ ๋ด์ฉ์ ์ถ๋ ฅํ๋ค.
flag๊ฐ ์๋ ๊ฑธ ํ์ธํ ์ ์๊ณ , shellshock.c๋ผ๋ ํ์ผ์ด ์์ด์ ํ์ธํด๋ณด์๋ค.
#include <stdio.h>
int main(){
setresuid(getegid(), getegid(), getegid());
setresgid(getegid(), getegid(), getegid());
system("/home/shellshock/bash -c 'echo shock_me'");
return 0;
}
setresuid, setresgid๋ผ๋ ํจ์๊ฐ ์๋ ๊ฑธ ํ์ธํ๋ค.
* SET Real uid, Effective uid, Saved set-User-ID
- ํ๋ก์ธ์ค์ "real UID", "effective UID", "saved set-user-ID"๋ฅผ ๋ณ๊ฒฝํ๋ ํจ์
--> ํด๋น ํจ์๊ฐ ํ์ฌ ๋์ ์ค์ธ ํ๋ก์ธ์ค์ ๊ถํ์ ๋ณ๊ฒฝํ๋ ๊ธฐ๋ฅ์ ํ๋ค๋ ๊ฑธ ์๊ฒ ๋์๋ค.
์คํ๊ฒฐ๊ณผ์ ํจ๊ป ์์ ์ฝ๋๋ฅผ ๋ถ์ํด๋ณด์
bash -c (-c : ๋ช ๋ น์ด ์คํ ์ต์ )๋ฅผ ํตํด 'echo shock_me'๋ฅผ ์คํํ๋ ์ฝ๋์ด๋ค.
์ด์ ์ ์ดํด๋ณธ shellshock ์ทจ์ฝ์ ์ ์๋ฆฌ๋ฅผ ์ด์ฉํด์ ํ๊ฒฝ๋ณ์๋ก ํจ์๋ฅผ ์ ์ธํ ๋ค์ ๋ช ๋ น์ด๋ฅผ ํตํด flag๋ฅผ ์ด์ด๋ณด๊ณ ์ ํ๋ค.
flag๋ฅผ ์ด๋ ค๋ฉด cat๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํด์ผํ๊ณ , ๊ทธ ์ ์ flag๊ฐ ์๋ ๊ณณ์ผ๋ก ์์น๋ฅผ ์ด๋์์ผ์ผ ํ๋ค.
๋ฐ๋ผ์ ๋ค์๊ณผ ๊ฐ์ด ์ ๋ ฅํด์ฃผ๊ณ shellshock์ฝ๋๋ฅผ ์คํํด์ฃผ์๋ค.
'Pwnable' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[pwnable] bof (0) | 2022.05.18 |
---|---|
[pwnable] leg (0) | 2022.05.06 |
[pwnable] fd (0) | 2022.05.04 |
[pwnable] File Descriptor (0) | 2022.05.04 |