▌ TRANSMISSION · [HTB]
[STARTING_POINT] Tier2 Oopsie
Nmap
sudo nmap 10.129.95.191 -p- -Pn -sV -sC --open --min-rate 2000
Task
- proxy : intercept web traffic
- spidering - 로그인 페이지 존재 유무 확인
- 로그인 페이지 접속해보니 다행히 guest 로그인 가능
- 하지만 upload는 admin만 가능
- account 탭으로 이동해보면 guest의 id와 이름 확인 가능
- cookie 상태 확인 (
role:guest와user:2233으로 동일한 것 확인) 해당 두 값이 일치하는지 확인하는 것으로 보임
- cookie 상태 확인 (
- account url 확인해보면
id=2로 get방식으로 보내는 것을 알 수 있음- 해당 값을 1로 바꾸면 admin 정보 확인 가능
- admin 정보로 쿠기 정보 수정한 뒤 새로고침
- 이후 upload를 방문하면 업로드 가능.
- 로그인 페이지 접속해보니 다행히 guest 로그인 가능
- uploads : 보통 업로드되면 저기 들어감… 아니면 gobuster로 찾기
webshell
- webshell
- Reverse Shell
nc -lnvp 1337(공격자)- https://github.com/BlackArch/webshells/blob/master/php/php-reverse-shell.php (upload 및 접근, 타겟)
python3 -c 'import pty;pty.spawn("/bin/bash")'(타겟)- 리버스 쉘의 표준입출력은 터미널 장치가 아니라 소켓에 붙어있기 때문에 굉장히 불안정하다.
su같은 명령은 password를 받아야하는데 입력을 그냥 표준입력 스트림처럼 받지 않고 터미널에서 직접 받는 것을 요구하는 경우가 많다. 그래서 권한상승까지 이어지려면 su를 써야하고, 파이썬을 이용해 TTY를 생성하고 /bin/bash를 그 위에 붙여 정상 터미널로 동작시키기 위해 해당 코드를 사용한다.
- 리버스 쉘의 표준입출력은 터미널 장치가 아니라 소켓에 붙어있기 때문에 굉장히 불안정하다.
- Reverse Shell
Lateral Movement
- Lateral Movement
- gobuster 이용 :
../cdn-cgi/login/db.php내부에 robert 계정 획득 가능 (cat * | grep -i passw*: -i 대소문자 구분 x)su명령으로 로그인 후 robert 홈디렉터리에 가보면 user.txt에서 플래그 획득 가능
- gobuster 이용 :
Privilege Escalation
- Privilege Escalation
- 추가로
/etc/group에 robert가 속한 그룹을 보면 “bugtracker” 라는 그룹에 속해있음을 알 수 있음 find: 해당 명령으로 디렉터리를 순회하며 파일 탐색-group bugtracker라는 옵션을 사용하여 bugtracker 그룹의 파일들을 검색- 그러면 결과로
/usr/bin/bugtracker파일을 발견할 수 있음 - 하지만 ls -l 명령으로 권한을 확인해보면, SetUID(Set Owner User ID)가 걸려있어서 root 권한으로 실행됨.
echo $PATH로 환경 변수를 확인해보면, /usr/bin/ 이 등록되어 있어서 전역에서 bugtracker 실행 가능- 명령어 실행시 : 환경 변수에 등록된 명령인지 가장 먼저 확인
- bugtracker를 실행해서 id를 하나씩 입력하다보면, 12번 id에서 cat error가 발생.
- 오류 내용을 보면 /bin/cat 이런 방식이 아닌 cat 으로만 호출되고 있는 것을 알 수 있음.
- 시나리오
/tmp는 임시 파일을 저장하는 공간으로, 압축 푸는 과정에서 생기는 중간 파일, 에디터 임시 저장 파일 등등이 저장되는 공간이다./tmp는 보통drwxrwxrwt권한을 가진다.- sticky bit : 누구나 만들수는 있지만 남의 파일을 건들 수 없다.
- bugtracker는 cat 명령을 실행함. 하지만 bugtracker 프로세스의 권한은 root, 즉 여기서 실행된 cat 명령 또한 root 권한으로 실행됨.
- 권한이 자유로운
/tmp에 cat 이라는 이름의 파일을 만들고, 내용을 다음과 같이 수정/bin/bash - 실행 권한 부여 :
chmod +x cat이제 /tmp/cat이 실행되면 쉘이 실행됨. /tmp를export명령을 통해 환경 변수에 등록.export PATH=/tmp:$PATH그러면 cat이 실행될 때 PATH에서 먼저 찾게되고 /bin/cat 보다 우선으로 탐색되어 실행되게 됨.- bugtracker를 실행한 뒤 id를 입력하면 cat이 실행. (root 권한으로)
- 추가로
- flag
/root디렉터리에 user.txt에서 플래그 획득 가능
spidering
웹사이트를 자동으로 돌아다니면서 링크, 페이지, 디렉터리 구조를 수집하는 행위
burp suite
- browser에서 프록시를 설정해두면, burpsuite에 거쳐서 접속을 하기 때문에 분석에 용이하다.
- Target - Site map에 들어가면 스파이더링한 결과들을 볼 수 있음
← ALL POSTS