카테고리 없음

정보보안 스터디 - 24주차 1일 - tryhackme task 7

wonder12 2023. 3. 24. 03:22

 

☞ TMH Task7 

 

 

일단 포트스캔부터 먼저합니다.

nmap -sS -sC 10.10.251.27

 

빠르게 디폴트 스크립트와 같이해서 

PORT   STATE SERVICE
21/tcp open  ftp
| ftp-syst: 
|   STAT: 
| FTP server status:
|      Connected to ::ffff:10.4.17.200
|      Logged in as ftp
|      TYPE: ASCII
|      No session bandwidth limit
|      Session timeout in seconds is 300
|      Control connection is plain text
|      Data connections will be plain text
|      At session startup, client count was 1
|      vsFTPd 3.0.3 - secure, fast, stable
|_End of status
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
| -rw-rw-r--    1 1000     1000            0 Mar 12 03:23 hiya
|_-rw-r--r--    1 0        0              45 Mar 12 02:43 temporary_pw.txt
22/tcp open  ssh
| ssh-hostkey: 
|   256 ab36d4c2a3438887d0892ebbb2ce0351 (ECDSA)
|_  256 3ae52103c4deb9531ac6a966cbea1f1b (ED25519)
80/tcp open  http
| http-robots.txt: 1 disallowed entry 
|_/dev/
|_http-title: Apache2 Ubuntu Default Page: It works

 

이렇게 뜨네요. FTP 관련 스크립트가 미리 들어갔다 나와서 안의 파일을 보여줍니다.

여기서 FTP 익명 로그인이 열려있고 

anoanymous:no password 로 접속이 가능하다는 뜻입니다.

 

그리고 기본적으로 

root:root
admin:admin
admin:password
ftp:ftp
이렇게 FTP에 접속하면 dafault 크리덴셜들을 국룰로 시도해봅니다.

 

 

80 인터넷은 

이렇게 뜨지만 기본 페이지일 뿐이므로 속지맙시다. 별거 없습니다.

 

 

여기서 해볼 수 있는 방법이 

searchsploit(exploit-db) 검색이 떠오릅니다.

 

-sV 스캔으로 버전을 확인합니다.

21/tcp open  ftp     vsftpd 3.0.3
22/tcp open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
80/tcp open  http    Apache httpd 2.4.41 ((Ubuntu))

 

검색 해보니

vsftpd > DOS

openSSH > 최신버전이라 없음 

apache > 근처 버전RCE는 다 안먹힘

RCE로 권한 상승을 노릴 주요 취약점은 보이지 않습니다.

 

 

gobuster방법으로는 디렉토리, 페이지 검색 > 없음, 있더라도 403 forbidden

/dev/ 라는 디렉토리 없음.

 

 

 

사실 FTP anonymous가 되기 때문에 먼저 바로 생각봐야할 것은 

FTP에 접속하여

1) 상위 경로로 올라갈 수 있는지 > X

2) 가져올 파일 확인

3) 숨겨진 파일 확인 ls -a 

하는 것 입니다.

 

FTP에서만 접속이가능하다면 mget을 활용합시다. 그 외로도 여러 명령어가 있긴합니다.

 

 

특별히 가져올 파일은 없는 것 같고

SSH 비번 정보가 있기 때문에 인증을 노립니다.

 

docx안에 xml이 있는데 vi 로 읽을 수도 있지만 

보기 좋게 zip파일로 바꿔 xml을 브라우저에서 읽어줍니다.

 

또는 워드파일은 libreoffice로 확인이가능합니다.

libreoffice --cat [.file]

--cat 은 dumping 바로 볼 수 있게 해줍니다.

 

안보일 때는 파일의 metadata 확인해보려면

exiftool로 확인해볼 수 있습니다. > 만든사람, 날짜를 파악합니다.

 

 

그러면

ssh id라고 하는 이름정보가 뜨고 : base64로 인코딩된 패스워드가 뜨니다.

디코딩해줍니다.

harry:catchme!@#

 

 

이것을 FTP유저로도 통하겠지만 putty처럼 쉘을 바로 얻을 수 있는 SSH로 시도해보는 것이 우선입니다.

 

 

 

삽질

 

왜냐하면 FTP유저로 들어가서

SSH를 어떻게 들어가야할지 삽질했기 때문입니다.

ssh_host_rsa_key

어짜피 ssh 개인키는 권한상 못가져오고

ssh_host_rsa_key.pub

public키는 get이 가능하지만 해커에게는 쓸모가 없습니다. 

 

harry 유저로 FTP로 들어가서는 상위 경로까지 파일을 확인할 수 있었기 때문에

여러가지 설정파일을 확인해봤습니다.

 

FTP

vsftpd.conf

 

웹 

/etc/apache2/apache2.conf

/var/www/html

/usr/share/

/var/log

 

SSH

ssh_config, sshd_config 등 

 

하지만 SSH설정에서는 root계정 접속은 허용되고, 비밀번호 인증도 허용했기 때문에

비밀번호로 들어가는 거였습니다.

 

 

 

 

 SSH 접속 후 SUID 권한 상승

 

SSH로 들어왔다면 바로 첫번째 user.txt를 찾습니다.

 

find / -name user.txt 2> /dev/null 에서 나오는 3개 디렉토리를 확인해보면 되구요

 

 

grep -r GROOT{

하지만 이렇게 적은 user.txt갯수일 경우에는 일일이 확인할 수 있지만

너무 많을 때는 다 못합니다. 따라서 파일안에 매칭이 되는 텍스트를 찾아주는 grep -r을 씁니다.

 

 

 

 

만약 flag.txt가 /root 디렉토리에 있을 경우 디렉토리에 들어갈 수 없기 때문에 find로도 나오지 않습니다.

따라서 안에 있겠다고 가정하고 찾는것입니다.

 

escalate privilige에서 또 중요한 부분은

sudo -l 

을 해서 원래는 필요하지만 예외로 패스워드없이 루트권한으로 사용이 가능한 바이너리를 확인할 수 있습니다.

 

확인해보니 find라는 명령어 였고

sudo find가 가능하다는 얘기입니다.

 

find / -type f -perm -4000 -exec ls -h {} \; 2> /dev/null

보통 타입이 파일인걸 찾고
파일을 찾으면 리스팅을 해줘

 

 

 

이어서 확인해보면 find 가 sudo가 가능할 경우에는 쉘 실행이 가능합니다.

그러니까 find .  후에 결과를 찾으면 쉘을 실행해달라는 소리입니다.

sudo로 쉘이 실행되었기 때문에 root권한이 확실하구요. 권한상승이 되었습니다.!

 

 

 

 

 

 

base64 로 뭔가 권한을 얻을 수 있는 SUID가 나오네요.

루트 쉘 획득은 불가능하고 읽기 권한만 가능합니다.

물론 /etc/shadow 읽어서 john the reaper를 이용한  SSH bruteforcing 노려볼만 합니다.

 

 

base64 text.txt
또는 base64 "text.txt"

txt 파일을 인코딩합니다.

 

 

 

마침 flag가 base64로 2번쌓여져 이뤄져있기 때문에 확인합니다.

 

 

 

 

 

 

 

 

 

 

 at으로도 SUID로 루트쉘 권한 상승을 노려보려고 했습니다.

 

 

 

참고로 at은 

명령어 결과는 나오지 않고 파일로 출력만 가능합니다.

그리고 SUID가 적용되어도 실행자체가 안됩니다.

 

 

echo "명령어" | at now

 

at now

명령어 

ctlr+D

 

at now -f input.sh

쉘스크립트를 만들어보기도 했지만 실패했습니다.

> at은 위험하지 않은 것이였습니다.

 

 

binary 는 그냥 명령어라고 생각하면 됩니다.