티스토리 뷰
level4를 해봅시다.
level4는 어려운 것 같아 조금 힘들었어요ㅠㅠ
먼저 똑같이 ls명령어를 치고
hint가 있어 cat hint로 열어본다.
여기서 백도어란?
말 그대로 뒷문이라는 것으로
정상적인 인증 절차를 거치지 않고 컴퓨터와 암호 시스템 등에 접근할 수 있도록 하는 장치입니다.
설계자나 관리자에 의해 남겨진 시스템의 보안 허점,,,
그렇다면 cd /etc/xinetd.d로 들어가서
백도어가 있는지 살펴본다.
ls -al backdoor를 입력해보니 파일이 있었다.
cat backdoor로 내용을 열어본다.
service finger란 서비스 이름으로 /etc/service파일에 등록된 이름과 같아야 한다.
disable = no는 xinetd의 제어를 받을 것인가를 정해준다.
no로 되어있으니 제어를 해달라는 것이다.
socket_type = stream은 사용하는 TCP/IP소켓 stream(TCP), dgram(TCP)
wait = no yes면 xinetd가 요청되어 있는 한 데몬이 끝날 때까지 다른 요청을 받지 않고
no면 각 요청에 대해 데몬이 동작한다.
user = level5는 데몬의 UID
server = /home/level4/tmp/backdoor 는 서비스가 실행될 때 어떤 위치의 프로그램을 불러올지를 결정한다.
xinetd란 서비스에 접속을 요청할 때 xinetd가 중간에서 허가된 사용자인지 검사를 합니다.
여기서 중요한 것이 user와 server이다.
server를 실행하면 user권한으로 실행이 된다.
즉, setUID를 말한다.
그럼 server의 파일이 실행할 때 my-pass를 출력하게 프로그램으로 해놓으면 level5로 my-pass를 실행하여 password를 얻을 수 있을 것이다.
cd /home/level4/tmp/backdoor로 들어가
ls -al backdoor를 보니 없다.
그렇다면 cat > backdoor.c로 파일을 작성해보자
#include<unistd.h>
int main(void){
system("my-pass");
return 0;
}
입력을 한 뒤에 gcc -o backdoor backdoor.c로 컴파일을 한다.
이제 finger명령어를 치면 이 프로그램이 실행될 것이다.
하지만 백도어가 실행되지 않고 원래 기능이 실행이 된다.
finger명령어라고 해서 다 xinetd를 거치는 것이 아니다.
기본 finger는 disable이 yes라서 외부에서 접속하면 실행이 됮 않지만
backdoor서비스는 disable이 no라서 외부에서 접속하면 backdoor서비스가 실행이 된다.
finger명령어는 외부 서버의 유저들의 정보도 가져올 수 있는 기능이 있다.
finger [user]@[host]
그래서 finger @localhost를 입력하여준다.
localhost란 자신의 컴퓨터를 나타내는 127.0.0.1 IP를 담은 alias변수이다.
level5의 password가 떴다.
'모각코' 카테고리의 다른 글
| ftz level5 (0) | 2019.01.08 |
|---|---|
| 모각코 1월 8일 (0) | 2019.01.08 |
| ftz level3 (0) | 2019.01.03 |
| ftz level2 (0) | 2019.01.03 |
| 모각코 1월 3일 (0) | 2019.01.03 |
