HTB-Book Write up

HTB-Book Write up

in

Enumeration

image


SQL Truncation

로그인 페이지에서 이메일의 글자 제한이 20글자 인것을 확인

sql1

일반 계정을 생성하여 웹페이지 탐색 결과 admin의 이메일 아이디를 발견

sql2

SQL 절단 공격을 이용하여 20글자의 이후의 문자열은 잘라 없어지니 스페이스(+공백)을 추가하여 계정 생성 시 admin의 계정으로 생성 시도

sql3

url 인코딩을 이용하여 공격을 진행해보았지만 공격이 진행되지 않음. URL 인코딩을 제외하고 재시도

sql4 sql4 1

20글자 제한때문에 공백 이후의 문자열은 없어지게 되고 공백만 남게되어 admin의 계정이 중복 생성되어 admin계정으로 접근 가능

sql5

권한이 User로 표시되지만 gobuster를 통해 발견한 admin 로그인 페이지에서는 admin@book.htb 계정으로 접근 가능

image image


XSS

사용자가 collections 메뉴에서 책의 제목과 글쓴이를 입력하여 업로드 시 Admin 계정에서 사용자가 입력한 값이 PDF 파일로 생성이 됨

이미지 1 이미지 2 이미지 3

Server Side XSS(Dynamic PDF)

사용자의 입력한 JS 코드가 PDF를 통해 볼 수 있으므로 로컬 파일을 읽을 수 있음

이미지 4

//btoa = base64 변환이므로 삭제
<script>
x=new XMLHttpRequest;
x.onload=function(){document.write(this.responseText)};
x.open("GET","file:///etc/passwd");x.send();
</script>

이미지 5

/etc/passwd 파일을 읽고 reader의 계정에서 .ssh파일을 추측

이미지 6

해당 파일을 읽어왔지만 id_rsa의 형식에 맞지 않아 사용이 불가하여 변환을 시켜줘야함

이미지 7

pdftohtml 을 이용하여 html 로 변환 후 정규식을 사용하여
을 줄변환으로 변경

이미지 8 이미지 9

:%s/<br\/>/\r\n/g

이미지 10

해당 id_rsa 값으로 ssh를 사용하여 reader 계정으로 접근 가능

이미지 11 이미지 12