티스토리 뷰
id : bandit19
password : awhqfNnAbc1naukrpqDYcF95h7HoMTrC
(2023.05 기준)
다음 단계로의 접속을 얻기 위해서는 홈디렉토리에서 setuid binary 를 사용해야만 합니다.
홈디렉토리에 존재하는 bandit20-do 파일을 ./bandit20-do 식으로 인자 없이 실행해보세요.
이번 단계의 패스워드는 setuid binary 를 사용한 다음에 일반적인 장소(/etc/bandit_pass) 에서 찾을 수 있습니다.
setuid 개념과 풀이과정을 같이 살펴봅시다.
우선 bandit19 의 홈디렉토리를 살펴봅시다.
bandit20-do 는 실행가능한 binary 파일입니다.
우리는 bandit19 이므로 소유자 그룹 권한에 의해서 해당 파일을 실행시킬 수 있습니다.
실행전에 /etc/bandit_pass/bandit20 부터 살펴보면,
역시 bandit20 권한으로 정확히 관리되고 있어서 bandit19 로는 읽을 수가 없습니다.
bandit20-do 를 실행해보니 간단한 사용법이 나옵니다.
다른 유저로서 커맨드를 실행한다는 설명과 예시가 있네요.
사용 예시를 따라해볼까요? id 라는 명령어를 실행한 결과가 나오는군요
bandit20-do 는 명령어를 인자로 받아서 그대로 실행해주는 기능을 수행하는 것을 알 수 있습니다.
id 명령어를 그냥 한번 실행해보겠습니다.
bandit20-do 를 통해 id 명령어를 실행시켰을때는 euid 라는 항목이 추가로 보이네요.
euid 는 effective user id 의 약자로 실제 작동되는 user id 라는 의미입니다.
이게 문제에서 요구하는 setuid 와 같은 개념인데,
setuid 에 대해 간단히 설명하면 해당 파일의 소유자 권한을 빌려서 실행하는 것입니다.
다시 한번 bandit20- do 를 살펴보면
bandit20-do 파일의 권한은 특이하게 -rwsr-x--- 로 표기되어 있습니다.
첫글자 - 는 파일을 의미하고,
소유자 권한세트는 rws 이네요.
소유자 그룹 권한세트는 r-x,
기타사용자 권한세트는 --- 입니다.
소유자 권한이 rwx 가 아니라 rws 로 표기되는데
이 s 가 setuid 를 나타내는 특수한 bit 입니다.
해당파일은 실행권한이 부여되어 있지만
누군가가 실행하면 그 순간은 해당파일 소유주(bandit20) 의 권한으로 실행이 되는 겁니다.
bandit20-do 의 그룹권한은 r-x 이고,
user bandit19 는 group bandit19 에 속해있어서 실행이 가능합니다.
(그래서 기본 사용법 안내가 나왔죠)
다만, bandit19 가 bandit20-do 파일을 실행했을때는
원소유주 bandit20 의 권한을 부여받아서 실행한 겁니다.
그래서 위에서 bandit20-do 를 통해 id 명령을 실행했을때 euid=11020(bandit20) 가 추가로 나타난 것입니다.
헤깔리는 분들은 whoami 로 실행하면 정확한 결과를 비교할 수 있습니다.
이제 bandit20-do 를 이용하면 setuid 로 bandit20 유저의 권한으로 작업을 할 수 있다는 것을 알았으므로
기존에 막혀있던 bandit20 패스워드 파일을 여는 것은 손쉬운 일입니다.
bandit20 패스워드 GbKksEFF4yrVs6il55v6gwY5aVje5f0j 를 획득했습니다.
setuid 외에도 소유자그룹 버전의 특수비트인 setgid,
디렉토리 권한관리를 위한 sticky bit 도 있습니다.
이 부분은 아래 링크를 참조하면 도움이 될 것 같습니다.
https://websecurity.tistory.com/14
'수업 노트 > bandit' 카테고리의 다른 글
[lesson21] bandit level 21 → 22 (1) | 2023.11.26 |
---|---|
[lesson20] bandit level 20 → 21 (0) | 2022.02.04 |
[lesson18] bandit level 18 → 19 (0) | 2021.09.28 |
[lesson17] bandit level 17 → 18 (0) | 2021.09.28 |
[lesson16] bandit level 16 → 17 (0) | 2021.09.21 |
- Total
- Today
- Yesterday
- SSL
- natas7
- over the wire
- BASE64
- OverTheWire
- 웹보안공부
- 풀이
- 리터럴
- HTTPS
- Strings
- tr
- 웹보안
- grep
- java
- nc
- tar
- OpenSSL
- 리눅스
- bz2
- gz
- Encode
- Bandit
- ssh
- find
- solution
- Linux
- 압축파일
- Natas
- 32bit
- X32
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |