안녕하세요 이번에는 tryhackme에 있는 Basic Pentesting을 해보려고 합니다.
늘 그랬다시피 open vpn 하고 join room 하고 IP 얻겠습니다.
1. 정보 수집, 서비스 분석
늘 그랬다시피 nmap을 사용해서 어느 포트 번호가 열려 있고 어느 서비스가 있는지 확인하겠습니다.
nmap -sV [IP번호] > scan_res
이렇게 하면 nmap의 결과가 scan_Res 파일에 저장하게 됩니다.
cat문으로 확인하시면 돼요.
보아하니.. 22번 포트 ssh이 있고요 80번 포트가 열려 있네요.
나머지는 잘 모르겠지만 Samba라는 서비스가 있고요.
일단 먼저 웹 사이트에 취약점이 많이 보이기에 먼저 저 사이트로 들어가 보겠습니다.
뭔가 공사 중인 거 같네요.. 아직 안 만든 건지도 모르겠고요.
그럼 gobuster을 이용해서 어느 디렉터리가 있는지 확인하면 되겠죠!
gobuster dir -u http://[IP주소]/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
한 번 development을 들어가 보겠습니다.
일단 txt 파일이니깐 들어가서 봐볼게요
j.txt 먼저
간단하게 해석을 하자면 K가 J에게 너 비밀번호가 쉬우니깐 빨리 바꿔 같네요.
여기서 저희는 J라는 사람의 계정 비밀번호가 쉬운 것을 유추할 수 있습니다.
이번에는 dev.txt로 들어가 볼게요
음 뭔가 쓸만한 정보는 아파치 버전 2.5.12을 사용하겠다는 이야기이네요
이번엔 공유 폴더가 있나 확인해 보겠습니다. 정확힌 smb 파일이죠.
칼리 리눅스에 smb 파일을 찾아주는 명령어가 있습니다. smbclient입니다.
smbclient -L [IP주소]
비밀번호는 모르니 그냥 엔터 누르면 됩니다.
Anonymous라는 파일이 있네요
한번 들어가 볼게요. 들어갈 때도 마찬가지로 smbclient을 이용하면 됩니다.
smbclient //[IP주소]/[폴더 이름]
그럼 안에 뭐가 있는지 확인해 보겠습니다.
뭘까요.. smbclient 안에 내장된 명령어인 get을 이용해 다운로드해 보겠습니다.
get [가져올 파일 이름]
exit이나 ctrl + c 눌러 smbclient을 나온 뒤 파일을 봐보겠습니다.
공유 폴더에 올리지 말아 달라는 이야기이네요.
그럼 이번에는 smbclient 명령어 쓰면 같이 딸려오는 enum4linux 명령어를 이용하겠습니다.
enum4linux는 smb 파일과 관련된 모든 정보를 찾아내고 출력해 줍니다.
enum4linux [IP주소]
조금 오래 기다리셔야 될 거예요
kay라는 계정 jan이라는 계정이 있는 것을 확인했습니다.
2. Exploit
이제 계정을 탈취해 보겠습니다.
제일 만만하게 보이는 Jan을 탈취할게요.
사이트에는 메시지만 있지 뭔가 특별한 취약점이 안 보였어요.
그럼 ssh의 취약점을 이용해 보겠습니다. ssh은 Telnet의 상위 버전으로 보다 안전하게 원격으로 파일을 실행하게 해 주고
사용자 이름 혹은 ID와 패스워드 입력해 접속도 가능합니다. 물론 이 ID와 패스워드는 암호화되어 있고요.
저희가 방금 찾은 jan 계정으로 쉬운 패스워드는 찾은 다음 들어가면 되겠죠?
이번에는 hydra라는 명령어를 이용하겠습니다.
hydra는 간단히 말해 비밀번호들을 일일이 넣어 보는 반복 명령어입니다.
https://www.youtube.com/watch?v=xAgiwjIfWwQ&t=321s
참고는 여기서 하시면 돼요
hydra -l jan -P /usr/share/wordlists/rockyou.txt [ip주소] ssh -t 64 -V
쭉 찾다 보니!
이제 접속을 해보겠습니다.
[22][ssh] host: 10.10.234.106 login: jan password: armando
이거는 따로 파일에 저장을 해두겠습니다.
ssh로 접속을 하는 방법은 간단합니다.
ssh jan@[ip주소]
연결을 하겠냐 질문 나오면 yes 답하시고 패스워드 작성까지 하시면 들어가집니다.
이왕 이렇게 된 거 kay라는 사람의 계정도 탈취해 보겠습니다.
cat /etc/passwd 작성하시면 어느 계정들이 있는지 확인 가능합니다.
UID 가 1000번 대 이상은 사용자가 만든 계정이고요 1000번 대 이하의 계정들은 컴퓨터만의 계정입니다.
그러니 저희는 1000번 대 이상만 보시면 되는데
밑에 보니 kay라는 계정이 있네요!
그럼 kay의 홈 디렉터리로 가보겠습니다.
cd /home/kay
그리고 어느 파일이 있는지 ls -al까지 입력해 확인해 보겠습니다.
bash_history 통해 kay의 이용 목록을 볼 수 있겠네요
더군다나 ssh 디렉터리가 있네요. 보통 ssh 디렉터리에 ssh의 비밀번호나 키를 담아둡니다.
바로 들어가 보겠습니다.
id_rsa는 ssh의 공개 키을 뜻하겠네요!
보통 ssh는 암호화 통해 통신을 하는데 보통 키를 이용해서 통신을 합니다.
그 키가 저기에 있는 거고요
그리고 ssh는 이 키 값만 알면 비밀번호 없이 들어갈 수도 있습니다.
어쨌든 이 파일을 다운로드하겠습니다.
터미널 닫지 마시고 새로운 터미널 여신 다음 scp 명령어로 ssh 통신에 cp라는 복사 명령을 쓰겠습니다.
scp jan@10.10.234.106:/home/kay/.ssh/id_rsa ~
형식은 scp [ssh계정]@[ip주소]:[파일다운할위치] [저장위치]
그리고 kay 계정으로 들어갈 때 이 키을 같이 말하면 비밀번호 없이 들어가질 거예요.
왜냐하면 키만 있으면 들어가지게 되어 있는 게 ssh 이거든요
ssh kay@[ip주소] -i id_rsa
하시면 될 거예요
왜 이렇게 패스워드를 입력하라고 나오면 경고문을 자세히 보니 Permissions 0644인 id_rsa는 too open
그러니깐 권한 0644는 너무 개방적이어서 못 들여보내게 하는 겁니다.
그러면 저 파일의 권한을 0600으로 바꾸면 되겠죠.
chmod 0600 id_rsa
그리고 다시 접속!
이번에도 패스워드를 작성을 하라고 하나네요.
근데 조금 다른 패스워드입니다. passphrase을 입력하라는 거죠.
ssh 측에서도 알고 있습니다. 이 키만 알면 그 계정은 비밀번호 없이도 들어가 지는 것을요.
그래서 방지하기 위해 키를 암호화한 겁니다. 방금 전에 보신 엄청 긴 키값이 암호화된 ssh의 키값이에요.
그래서 키가 있으니깐 들여는 보내주는데 적어도 키의 진짜 값을 적어는 보라는 이야기입니다.
보안을 위한 거죠.
이때 저희는 전 포스팅에 이용한 복호화 해주는 존더리퍼 명령어를 사용하겠습니다. (LazrAdmin에 사용했었어요)
일단 존더리퍼 사용하려면 파일이 필요하죠. [ID]:[암호화 된 PW] 이렇게 작성된 파일이 필요합니다.
저 긴 키값을 적기엔 너무 힘든 것을 알고 존더리퍼에서 명령어를 만들었습니다.
ssh2john id_rsa > id_rsa.hash
이렇게 하면 알아서 자신이 쓸 수 있는 파일을 만들어 줍니다.
john id_rsa.hash --wordlist=/usr/share/wordlists/rockyou.txt
이러면 알아서 해줍니다.
beeswax 라는 값이 나오네요
그럼 다시 접속해 보겠습니다.
3. Post_Exploit
이제 본격적으로 root 권한을 탈취할게요.
제가 방금 말씀드린 대로. bash_history에 사용자가 뭘 했는지 볼 수 있다고 했잖아요?
한 번 봐보겠습니다.
중간에 눈에 띄는 게 있네요
SetUid 을 vim에 설정을 했네요!
그럼 저희는 좋은 사이트에 들어가서 setuid 설정된 vim으로 root 탈취하는 명령어를 찾아보겠습니다.
GTFOBins
pg Shell File read SUID Sudo
gtfobins.github.io
SUID 클릭한 후
저희는 ./vim 이 아니라 위에 히스토리에 보셨다시피 /usr/bin/vim 위치였죠?
그러니
/usr/bin/vim -c ':py import os; os.execl("/bin/sh", "sh", "-pc", "reset; exec sh -p")'
이렇게 적기만 하면 끝입니다.
무슨 일이 벌어졌는지 몰라도 성공을 했습니다.
참고로 만약 저 명령어가 안 먹힌다면
/usr/bin/vim -c ':py3 import os; os.execl("/bin/sh", "sh", "-pc", "reset; exec sh -p")'
이렇게 해보세요 위에 것은 최신 버전이고 이거는 예전 버전입니다.
________________________________________________________________________________________________
이렇게 해서 ssh을 이용해 계정 탈취도 해보고 setuid 설정된 것을 찾아서 root 권한을 탈취했습니다.
hydra 공격 툴로 비밀번호 알아낸 게 크죠!
그러니 여기서 대응방법은 간단합니다.
비밀번호를 어렵게 하자입니다.
그리고 서버 버전을 최신으로 바꾸는 겁니다.
감사합니다!
'보안지식 > pentest' 카테고리의 다른 글
Pentest 툴 정리 (1) | 2023.08.28 |
---|---|
pentest 실습 (GLITCH) (0) | 2023.06.26 |
pentest 실습 (Rootme) (0) | 2023.06.22 |
pentest 실습 (LazyAdmin) - Post Exploit (0) | 2023.06.21 |
pentest 실습 (LazyAdmin) - Exploit 까지 (0) | 2023.06.20 |