[normaltic 비기너 클래스 1기] 2023-08-16 Skill Course 2주차 과제 Task 4

2023. 9. 27. 12:04normaltic 비기너 클래스 1기/과제

Task 4

 

 

nmap -sCV 10.10.113.220 -T3 > scan_res
cat scan_res

 

포트 스캔을 진행한 결과 22, 80번, 3306번 포트가 열려있는 것을 확인할 수 있다. 우선 80번 포트가 열려있으니 해당 IP주소를 웹 브라우저에 입력해 보자.

 

 

searchsploit qdPM 9.2
cp /usr/share/exploitdb/exploits/php/webapps/50176.txt PE.txt

 

IP 주소를 입력했더니 qdPM이라는 웹 페이지가 서비스하고 있는 중이다. qdPM 서비스의 버전이 9.2 버전인걸 확인 가능하여 이 정보를 가지고 해당 서비스의 취약점이 어떤 것이 있는지 searchsploit 명령어를 사용하여 알아보았다.

 

첫 번째 라인의 취약점은 CSRF로 사이트 간 요청 위조라는 공격이다. 이 공격은 지금 상황에서는 필요 없는 공격이다.

 

두 번째 라인의 취약점은 암호 노출이라는 취약점인 것을 확인할 수 있다. 해당 공격의 내용을 알아보니 데이터베이스의 계정 정보가 http://<website>/core/config/databases.yml 해당 URL에서 다운로드할 수 있다고 한다.

 

 

cat databases.yml

 

다운로드한 파일의 내용을 출력했더니 qdpmadmin이라는 계정과 UcVQCMQk2STVeS6J라는 암호를 가지는 계정 정보를 얻을 수 있었다. 해당 정보를 가지고 mysql에 접속해 보자.

 

 

mysql -h 10.10.49.69 -u qdpmadmin -p

 

 

show databases;
use staff;
show tables;
select * from user;
select * from login;

 

mysql에 접속 후 어떤 스키마가 있는지 출력했더니 staff라는 스키마가 있는 걸 확인했다. 해당 스키마로 들어가서 테이블 리스트를 출력해보았다. 3개의 테이블만 있는걸 확인했으며 먼저 user라는 테이블을 조회했더니 유저의 이름 말고는 별다른 정보를 얻을 수 없었다. 두 번째로 login라는 테이블을 조회했더니 해시화된 암호를 얻을 수 있었다. 암호가 5개인 거 보니 user 테이블에서 조회했던 유저 정보에 대응하는 비밀번호라는 것을 생각해 볼 수 있다. 여기서 한 가지 추측할 수 있는 사실은 해시화된 비밀번호의 형식인데 마지막에 '==' 특수문자로 끝나는 해시는 base64 형식이라고 추측해 볼 수 있다. 

 

 

echo c3VSSkFkR3dMcDhkeTNyRg== | base64 --decode
echo N1p3VjRxdGc0MmNtVVhHWA== | base64 --decode
echo WDdNUWtQM1cyOWZld0hkQw== | base64 --decode
echo REpjZVZ5OThXMjhZN3dMZw== | base64 --decode
echo Y3FObkJXQ0J5UzJEdUpTeQ== | base64 --decode

 

base64로 인코딩 된 비밀번호를 다시 디코딩하였다.

 

 

cat user.txt

 

공격대상 데이터베이스에서 얻은 계정 정보들을 정리하였다. 이제 이 정보를 가지고 ssh 접속을 시도해 본다. 각 계정과 각 비밀번호가 어떻게 대응되는지 모르기 때문에 하나하나 대조해 본다.

 

 

대조 결과 travis라는 유저와 dexter라는 유저만이 공격대상 시스템의 계정으로 존재하는 것을 확인할 수 있었다. 이제 각 유저의 계정으로 ssh에 접속을 해보자.

 

 

각 계정으로 공격대상 시스템에 접속하여 쉘을 획득할 수 있었다.