1년 전에 봤던 퀴즈에 질문이 있었어요. 이 문제를 해결하려고 하는데 막혔습니다. 다른 모든 것들은 프로그래밍과 관련되어 있지만 이것은 Unix 파일 권한과 관련이 있습니다. 아래는 시나리오입니다.
SSH 서버의 로그인 이름과 비밀번호가 제공됩니다.ssh your-username@server-addr
당신의 임무는 이름이 지정된 파일을 찾고 /home/abc/chekme
내용을 검색하는 것입니다.
SSH 원격 서버에 로그인하면 ls -l
해당 로그인에 권한이 없음을 나타내는 0개의 파일이 표시되지만, ls -l
위 파일을 실행하면 루트 사용자, 그룹 및 이름에 읽기 권한이 부여된 것을 볼 수 있습니다. 그룹의 구성원은 입니다 chekme
.
권한이 없고 그룹 구성원이 아니기 때문에 파일을 읽을 수 없습니다. 파일 을 탐색하는 동안 /etc/group
이름이 지정된 그룹이 있고 chekme
해당 그룹에 한 명의 사용자만 추가된 것을 발견했습니다. 사용자 이름은guest
여기에서 내 GUID를 그룹의 GUID로 변경하고, 그룹에 자신을 추가하고, su
사용자로 실행을 시도 guest
했지만 처음 두 개는 root
액세스가 필요하고 su
게스트는 사용자 비밀번호를 수행하므로 이들 중 어느 것도 작동하지 않았습니다.
이제 어떻게 해야 할까요?
로그인 자격 증명의 실제 문제:
파일:/home/hacker-weekly/주판
따라서 "/home/hacker-weekly/abacus" 파일을 읽고 거기에 파일 내용을 커밋해야 합니다.
아직 로그인 자격 증명을 얻지 못한 경우 아래의 "로그인 자격 증명 받기" 버튼을 클릭하여 얻으십시오. 그런 다음 다음 명령을 실행하여 머신에 로그인할 수 있습니다.
ssh "사용자 이름"@"서버 주소"
팁: UNIX 기반 시스템의 파일 권한에 대해 신중하게 생각하십시오.
로그인 자격 증명 서버: ec2-175-41-164-254.ap-southeast-1.compute.amazonaws.com 사용자 이름: ashwinscongo 비밀번호: ab12d6H
그룹 이름은 abacus이고, 이 그룹의 사용자는 guest입니다. /etc/passwrd를 시도했지만 아무것도 알아낼 수 없었습니다.
답변1
방법:
$ ls -l /home/hacker-weekly/abacus
-r--r----- 1 root abacus 373 Nov 12 2012 /home/hacker-weekly/abacus
$ id
uid=1554(gilles) gid=1555(gilles) groups=1555(gilles)
abacus
따라서 루트 권한을 얻거나 그룹 권한을 얻어야 합니다 . 하지만 어떻게?
팁(1단계): 권한을 높이는 방법은 무엇입니까?
완전한 솔루션(1단계):
존재해서는 안 되는 setuid 또는 setgid 실행 파일 찾기:
find / -xdev -perm /4000 -ls 2>/dev/null
두 가지 가능한 후보가 있습니다: /usr/local/abacus 및 /usr/bin/hacker-weekly - abacus . 후자를 실행하면 SSH 개인 키가 인쇄됩니다.
팁(2단계): 이 파일을 사용하는 가장 확실한 방법은 다른 계정에 로그인하는 것입니다. 어떤 계정?
완전한 솔루션(2단계):
/etc/passwd를 보고 어떤 계정이 있는지 확인합니다(시스템 계정 및 참가자 제외). abacus 그룹의 구성원을 찾으려면 /etc/passwd 및 /etc/group을 확인하십시오. 마침 손님이 있었어요.
따라서 개인 키를 ~/.ssh/id_rsa에 복사하고 권한을 올바르게 설정한 다음 ssh guest@localhost를 사용하세요. 빙고.
<광고>
이런 종류의 콘텐츠를 좋아한다면 우리는깃발 잡기게임으로sec.se (보안 스택 교환) CTF 팀(조직 세부정보는 메타 게시물을 참조하세요) 그러나 UNIX보다 더 많은 네트워킹, 리버스 엔지니어링 및 암호화가 관련됩니다.
답변2
원래 문제 설명은 여기에 있습니다.http://www.hackerearth.com/problem/algorithm/hack-unix/.
생각해보면 권한을 통해 파일에 접근할 수 있는 방법은 없는 것 같습니다. 로그인 후:
$ cd /home/hacker-weekly/
$ ls -la
total 28
drwxr-xr-x 2 hacker-weekly hacker-weekly 4096 Nov 12 2012 .
drwxr-xr-x 556 root root 20480 Sep 20 19:30 ..
-r--r----- 1 root abacus 373 Nov 12 2012 abacus
권한(Unix) 및 파일 시스템에 대해 내가 아는 바로는 이러한 권한으로 인해 파일에 직접 액세스할 수 있는 방법이 없습니다. 이러한 권한은 (1) 루트로 액세스 권한을 얻어야 하거나 (2) 그룹에 액세스할 수 있는 계정에 액세스해야 함을 알려줍니다 abacus
.
그룹 관점 살펴보기
그룹을 보는 동안 /etc/passwd
및 파일 /etc/group
에서 다음을 발견했습니다.
/etc/비밀번호
$ grep -E "ashwinscongo|guest|abacus" /etc/passwd
guest:x:1001:1001::/home/guest:/bin/sh
.guest:x:1436:1437::/home/.guest:/bin/bash
ashwinscongo:x:1544:1545::/home/ashwinscongo:/bin/bash
/etc/그룹
$ grep -E "ashwinscongo|guest|abacus" /etc/group
guest:x:1001:
abacus:x:1004:guest
.guest:x:1437:
ashwinscongo:x:1545:
guest
따라서 해당 계정에 대한 액세스 권한을 얻어야 할 것 같습니다 .
스도?
sudo 권한이 없습니다.
$ sudo -l
[sudo] password for ashwinscongo:
Sorry, user ashwinscongo may not run sudo on ip-10-144-3-172
로그인 손님
지금은 정면공격밖에 생각나지 않아서 시도해봤어2012년 가장 인기 있는 비밀번호 25개, 와 함께:
- 손님
- 주판
- ab12d6H
- 제거
- 주판
이들 중 어느 것도 작동하지 않습니다.
다른 각도?
- (1) 루트로 실행하거나 (2) 게스트로 실행하도록 권한이 있는 실행 파일을 찾으십시오(setuid/setgid 파일)!
- 게스트 액세스 권한 받기
- SSH를 사용하는 일종의 신뢰 관계? (ssh guest@localhost) 각도?
실용적인 솔루션
시간이 좀 걸렸지만 알아냈습니다. 내 사용자 이름은 slmingol입니다. 분명히 Giles도 그것을 얻었습니다!
상자에서 실행 파일을 찾아보면 필요한 모든 것을 찾을 수 있습니다. 이제 무엇을 해야 할지 알았으니 스스로 알아내는 것이 가장 좋습니다.
권한에 대한 힌트는 권한을 얻어야 한다는 의미에서만 의미가 있습니다. Google에서 찾을 수 있는 또 다른 단서는 SSH를 통해 게스트 계정에 로그인하는 데에도 유용합니다. @Gilles의 단서/답변을 보고 속이지 말고 계속해서 노력하시기 바랍니다.
정말 막히셨다면 스포일러 없이 몇 가지 추가 팁을 드릴 수 있습니다!