-
File Upload 취약점 실습IT/웹 해킹 2024. 2. 21. 15:45
[이 블로그는 해킹 공부하면서 가볍게 정리용으로 기록 및 내 생각을 끄적여 두기 위한 블로그(라 쓰고 일기라 읽는)이다.]
- 목차
- CTF 문제 및 시나리오
- 실습
1. CTF 문제 및 시나리오
게시판에 있는 파일 업로드 기능을 이용하여 한 줄 웹 쉘을 올려볼 것이다. 이때 기존 php 확장자가 올라가지 않아 프록시를 이용하여 파일을 올리고 다운로드 파일의 경로를 알아내어 파일에 직접 접근을 해서 플래그를 획득할 계획이다.
2. 실습
1) 게시판의 파일 업로드 버튼을 누르니 php 확장자 전체 비활성화된 화면이 보인다.
2) burp suite 의 intercept 기능을 써 패킷을 보자
자바스크립트를 사용하여 올라가는 파일을 필터링하는 것을 볼 수 있다. 이 코드에 php 확장자를 추가하여 포워딩을 해 보았다.
3) 활성화 된 php 확장자 파일들을 볼 수 있다.
3) 파일을 올리고 작성완료를 누르면 버프에서는 이런 패킷을 볼 수 있는데, content-type이 text/php로 되어있어 우회하기 위해 image/png 와 같은 이미지 파일 형식으로 바꿔주면 된다. 또는 이전 2)에서 html input 태그의 accept 속성을 image/png -> text/php로 바꿔주어야 한다. (+ 자바스크립트에서 return 값을 수정해 주는 방법도 있다.)
* MIME (multipurpose internet mail extensions) : 이전의 인터넷 패킷은 텍스트만 주고 받았지만 이미지 파일은 바이너리 값으로 이루어져 있어 텍스트로 인코딩하여 보내야 데이터값을 주고받을 수 있다. 그래서 공격을 위한 파일 업로드를 할 때 content-type을 맞게 수정해야 한다.
4) 글작성을 완료가 되었고 작성한 게시글을 읽어보자 그럼 다운로드 파일을 받을 수 있는 버튼이 있고 그 버튼에 오른쪽 마우스 클릭을 해보면 링크 주소를 복사할 수 있는 목록이 보일 것이다. 복사 후 url에 붙여넣기를 해보았다.
그럼 파일이 저장된 경로가 보일 것이고 직접 접근을 할 수 있다는 얘기이다.
5) 이제 파라미터에 get방식으로 cmd=find -name flag 를 입력 후 그 경로를 cat으로 출력하면 플래그가 나온다. 현재 문제는 풀었지만
블로그에 정리를 늦게하는 바람에 페이지가 닫혀 플래그까지 확인하는 것을 보여줄 수가 없다. 만약 페이지 접근이 된다면 추후 게시글 수정을 하여 플래그값까지 얻는 출력페이지를 올려보겠다.
(귀차니즘으로 인한 실수...)'IT > 웹 해킹' 카테고리의 다른 글
File Download 취약점 실습 (0) 2024.02.21 File Upload 취약점 실습2 (LFI=Local File Include) (0) 2024.02.21 File Upload 취약점 및 Webshell (0) 2024.02.20 CSRF 실습2 (CSRF 토큰 인증 우회) (2) 2024.01.24 CSRF 실습 (세션 인증 방식 우회) (0) 2024.01.23