
1. 기본 개념
1) web crawler(=web spider = web robot)
: www을 자동으로 탐색해주는 프로그램.
- 웹 크롤링 = 웹 스파이더링
2) suid = set owner user id
: 해당 명령을 실행하는 누구든 항상 소유자 권한으로 실행되는 것.
> s: 실행권한 o + suid
> S: 실행권한은 x + suid
3) PATH
: 유닉스 계열 os에서 사용하는 환경 변수. 간단히 생각해서 명령어 파일들을 어디서 찾을지 적어놓은 목록
ex)
/usr/local/bin:/usr/bin:/bin
-> 리눅스가 명령어 찾을 때 다음 순서대로 파일 찾을 거임
1. /usr/local/bin
2. /usr/bin
3. /bin
2. 문제 풀이

ssh, http 2개가 보임.
가진 정보 없으니 http로 ㄱㄱ.


홈페이지 아래 설명을 보면 로그인해야한다 뜸.
근데,, gobuster로는 로그인 페이지 같은 게 안 보임.

라이트업을 보니, 이번에는 burp suite를 쓸 거라 함.
우선 파이어폭스 설정 변경 먼저. 브라우저가 프록시를 통해 트래픽을 바로바로 전송하도록 하려한다.



프록시 인터셉트는 off해줌.
이제 브라우저 방금 사이트 새로고침 해보면, burp suite에 새로 뜰거임.

보면 윗 줄에 로그인 디렉터리 경로가 보임.
gobuster로는 워드리스트에 cdn-cgi 같은 경로가 없어서 못 찾았나보다,,
대신 burp 는 내가 사이트 동작해서 브라우저가 자동으로 요청한 모든 경로를 전부 기록하기 때문에 로그인 디렉터리 찾는 데에 사용가능한 좋은 방식 같다..! 업로드 디렉터리 같은 건 자동 요청 되는 경우가 적어서 걘 gobuster같은 걸로 찾아줘야 할 듯..!
해당 url 검색 ㄱㄱ

아는 정보 없고, 기본도 안 되니 그냥 guest로 접속 먼저 ㄱㄱ.
페이지가 다양하게 뜬당.

업로드 해서 리버스 셸 하려 했는데, 보면 운영자 권한 필요함.

우선 쿠키 혹은 세션 정보를 획득해야 한다고 함.
우클릭 > inspect
storage로 감.

브라우저 url을 보면 내가 접속한 id에 대해 값이 부여되어 있음 (contents 변수는 그냥 내가 어느 페이지에 있는 지 보여주는 거)

보면 client ID랑 번호가 같긴 하다,,

이걸 1로 바꿔보면?

엄,,, 라업과는 다르게 존이 보임...
페이지 contents에서 해야 하는 것 같당 변수 자체가 다른 듯.

이 정보를 어떻게 활용하냐? 바로 우리 세션 값을 저 값으로 수정해 볼거임.
role 에는 user -> admin으로,
guest는 2233 -> 34322로 ㄱㄱ


일단 업로드 페이지로는 진입 성공!
리버스 셸만 업로드 하면 됨.
지금 난 패럿 os이니, 기본 리버스 셸 코드 파일이 존재한다 함.
/usr/share/webshells/php/php-reverse-shell.php

열어서 ip만 바꾸장 (sudo 로 열어야 함)


업로드 성공!

이제 업로드 된 페이지 url을 알아야 함. 그래야 요청해서 다운받을 수 있으니!
근데 이미 앞에서 gobuster로 찾음.
금지되든 말든, url요청 걸거라 상관 ㄴㄴ.

우선 포트 먼저 리스닝 해주고!

curl요청 하면 됨. 근데 보니까 걍 url로 바로 쳐서 해도 되더라 ㅇㅇ.
처음 할 떄는 안 되서 다시 해보니 됨. 삭제 될 수 있다 하긴 하더라 라업에서.
재빨리 해야하나??


일단 shell업글먼저.

이제는 디렉터리를 뒤져야 함,,,
뭔가 credentials정보를 얻어야 하는데,,, 이럴 때는 이전에 찾은 웹 페이지 디렉터리를 뒤져보면 좋음.
특히 login경로 아니까 거기로 ㄱㄱ.

여기서 좋은 팁!
파일 하나하나 뒤지는 것 보다, grep 써서 passw라는 키워드 포함된 걸 찾는 게 더 효율 굿. ㅎㅎ
-i: 대소문자 구별 x

id: admin
passwd: MEGACORP_4dm1n!!
=> 바로 admin이 아니라, 유저를 찾을 거임.
이 정보는 /etc/passwd로 가서 찾아보자.
/etc/passwd: 시스템 사용자 계정 정보 저장 파일


유저 같은 robert가 보임.
아래 mysql도 있는데,,, 이 db도 봐야 하나..
일단 저걸로 su해서 시도해봤으나 ㄴㄴ,,,
그럼 걍 파일 코드 하나하나 뒤지는 게 나음. admin파일은 일단 별 거 없어보이고,,
다음은 db.php임.

찾았다! su시도 ㄱㄱ

유저는 성공!

이제 루트로 상승 ㄱㄱ
앞에서 나온 방식을 쭉 보니~ id로 그룹확인해서 권한 상승을 노리는 방식이 많은 것 같음. 여기도 그렇게 해주자.

bugtracker가 그룹이름이란다.
find / -group bugtracker 2>/dev/null
=>
find / : 루트 부터 시작해서 파일 전~부 검색.
-gruop bugtracker: 그룹이 bugtracker인 파일만 찾기
=> 리눅스 시스템 상 파일은 소유자와 그룹이 존재함.
2>/dev/null: 에러 숨기기

그룹명과 똑같은 bugtracker라는 파일이 존재함.
이 파일을 보자. suid가 있으면 될텐데,,
ls -la /usr/bin/bugtracker && file /usr/bin/bugtracker
=>
&&: 명령 2개 연달아 실행
앞 명령어: 권한 검색
뒤: 파일 종류 분석

오! 다행이도 setuid이다.
즉, 파일 소유자 권한으로 실행가능하다는 소리인데, 보면 권한 옆에 적힌 소유자가 root다. ㅇㅋ 완벽!
저 파일로 권한 상승해서 shell 따보자.
우선 그전에, 저 파일 실행 먼저 해봄.


이 결과가 뭘 나타낸건지 보아하니, 파일 내용을 읽어서 보여준거라 함.
내가 준 번호가 뭔가 파일 번호같은 거였나 봄.
라업에서 보니 에러가 나는 경우가 좀 다르다 함,, 이걸 힌트없이 어케 아나 싶지만 일단 따라 해봄.

cat이라는 프로그램이 실행되며 없다 뜸.
여기서 중요한 게 ! cat이 경로는 따로 없이, 프로그램 명만 달랑 적혀있다는 것이다.
즉, PATH라는 환경변수를 참조하고 있다는 소리가 됨.
=> 여기서 저 cat 프로그램 정상 경로보다 먼저 찾아지도록, 경로 하이재킹! 이라는 걸 해볼거임.
일단 PATH값 확인 해봄.

저기 맨 앞에 다른 경로를 추가할 거임.
우선 조작된 cat파일을 생성하자. 우린 /tmp라는 디렉터리 밑에 할 거임. bash 셸 명령어로..

권한도 줘야 함 주의!!

그리고 /tmp라는 경로는 PATH에 새로 추가 ㄱㄱ
export PATH=/tmp:$PATH
=> path의 맨 앞에 /tmp 경로 추가하기


이제 다시 bugtracker를 실행시키면, root권한으로 bash셸을 열 수 있게 됨.
id는 안 중요하고 cat 프로그램만 실행시키면 됨.

이제 그냥 디렉터리에서 플래그 찾으면 끝~~
근데 여기서 중요한 점!! 우리가 cat프로그램을 수정해버렸기 때문에,,, cat 명령어로 파일 쓰면 그 조작된 애가 실행됨.

절대 경로로 해주자...ㅋㅋ







'Hack The Box > Lab' 카테고리의 다른 글
| Facts (0) | 2026.05.23 |
|---|---|
| Voleur (0) | 2026.05.16 |
| Included - LFI 2 & tftp & lxd (1) | 2026.05.07 |
| Planning - ffuf & netstat & cron (0) | 2026.05.07 |
| Base - swp & reverse shell 2 (0) | 2026.05.04 |