Hacking/[Web]Natas

OverTheWire [Natas Level 13]

양선규 2023. 3. 17. 00:06
728x90
반응형

Natas Level 13 입니다.

뻘짓을 좀 많이 한 문제입니다..

 

 

Level 13

 

이미지 파일의 업로드만 허용한다고 합니다.

이미지 파일이 아닐 경우,

 

 

이미지 파일만 받는다

 

이와 같이 이미지 파일이 아니라고 뜹니다.

소스코드를 봐볼까요?

 

 

코드의 일부

 

전체적인 코드는 Level 12와 비슷합니다만, 

이미지 파일을 필터링하는 과정이 조금 특별합니다.

 

파일명 뒤에 붙은 확장자 기준이 아니라, 직접 파일의 시그니처를 확인하고 있습니다.

확장자별로 고유의 시그니처가 있는데요, 해당 코드는 업로드 파일이 이미지 파일의 시그니처인지 직접 확인하고 있습니다.

그렇다는 것은, 단순히 파일명 뒤의 확장자를 바꾸어선 아무런 소용이 없다는 뜻입니다.

따라서 파일의 시그니처를 직접 바꾸어야, 이 필터링을 우회할 수 있습니다.

 

그러기 위해선 "HxD" 라는 프로그램이 필요합니다.

파일을 16진수형태로 불러와 직접 시그니처부분까지 직접 수정할 수 있는 프로그램 입니다.

 

 

웹쉘 코드

 

이번에도 이 웹쉘을 쓰겠습니다. 

저번 레벨에서 사용한 것과 같은 것입니다. (주석만 제거함)

 

 

HxD

 

HxD 프로그램은 구글링하여 쉽게 다운받을 수 있습니다.

지금은 웹쉘 파일을 HxD 프로그램에 끌어와 연 상태입니다.

시그니처는 보통 맨 앞, 또는 맨 뒤에 있는데요

앞에 있는 경우는 헤더 시그니처, 뒤에 있는 경우는 푸터 시그니처 라고 합니다.

둘다 있는 경우도 있고 한군데만 있는 경우도 있는 것 같더군요. 저는 헤더 시그니처만 변경하겠습니다.

 

그리고 txt파일인 상태에서 변경할 것입니다.

txt는 기본적으로 시그니처가 없으므로, 시그니처를 조작하기 용이하기 때문입니다.

 

JPG 파일의 헤더 시그니처 값은

"FF D8 FF E0"  입니다. 이 값을 제일 앞부분에 추가로 써넣어주면 됩니다.

단!! 여기서 주의할 점!!!

 

절대 안된다

 

이렇게 기존 파일의 내용에 "덮어씌워" 버리면 안 됩니다!!

이러면 기존 파일의 내용이 손상되어 오류가 뜨거나 웹쉘 실행이 안됩니다.

전 이부분 실수 때문에 몇시간 뻘짓을 했는지 모릅니다...

맨 오른쪽 Decoded text 부분 보시면 앞쪽 <?php 부분이 없어졌죠? 저러면 안됩니다..

 

"FFD8FFE0" 을 복사해서 맨 앞부분을 클릭한 후 붙여넣기(Ctrl+V) 하도록 합시다.

 

수락

 

수락을 누릅시다.

 

 

잘 바뀌었다

 

자 그리고 저장버튼까지 눌러줍니다. 파일의 내용이 손상되지 않게 JPG 시그니처만 추가했습니다.

이제 업로드 해봅시다.

 

 

파일 업로드

 

단, 파일명 확장자까지 변경할 필요는 없습니다.

해당 문제에서는 파일명 기준 필터링이 아닌, 시그니처 기준 필터링을 수행하고 있기 때문입니다.

 

그리고 Burp Suite 를 켜고 Upload File을 눌러서 패킷을 잡아줍시다.

 

 

패킷 조작

 

저번 레벨과 같이, 업로드 가능한 파일 크기는 늘려주고 (20행)

확장자를 php로 바꿔줍시다. (24행)

시그니처를 JPG로 바꾸어 필터링을 통과할 것이지만, 결국 php 형태로 실행되어야 하기 때문에 파일명 확장자를 이와 같이 바꾸어야 합니다.

 

 

웹쉘 업로드 성공

 

웹쉘 업로드에 성공하였습니다!!

이제 해당 경로로 접근해봅시다.

링크를 클릭해도 되고, 경로를 URL에 직접 입력해도 됩니다.

 

 

웹쉘 실행 성공

 

웹쉘이 성공적으로 실행되었습니다^^

cat /etc/natas_webpass/natas14

를 입력해 password를 획득하도록 합시다.

 

 

password 획득

 

password를 획득하였습니다.

 

이번 문제는 뻘짓을 너무 많이 한 문제였습니다.

시그니처 조작해서 업로드까지 성공하고, 웹쉘 실행까지 했는데 계속 웹쉘이 무반응이어서;;;

시그니처가 틀린건가, 푸터 시그니처까지 입력해야 하나, 웹쉘이 잘못됐나... 아님 내가 뭔갈 실수했나 처음부터도 다시 해보고..  결국 문제는 시그니처가 파일의 데이터에 덮어씌워졌기 때문이었다니!!

 

뭐 다들 이러면서 배우는 거겠지만, 어이없는 이유로 시간을 허비하니 기운이 빠지긴 하네요ㅋㅋㅋㅋ

728x90
반응형

'Hacking > [Web]Natas' 카테고리의 다른 글

OverTheWire [Natas Level 15]  (0) 2023.03.27
OverTheWire [Natas Level 14]  (0) 2023.03.25
OverTheWire [Natas Level 12]  (0) 2023.03.16
OverTheWire [Natas Level 11]  (2) 2023.03.16
OverTheWire [Natas Level 10]  (0) 2023.03.15