본문 바로가기

카테고리 없음

[웹취약점] 파일 업로드의 취약점과 해결방안

읽기전에!! 주의사항!!

현재 실습환경은 직접 제작한 홈페이지 환경에서 취약점을 찾는 방식입니다. 외부 사이트가 아닌 제가 서버를 열어서 하는 실습입니다. 다른 외부 사이트에서 실습하시면 법척 처벌을 받으실 수 있으니 절대 따라하지 마세요

만약 처벌을 받게 되셔도 저는 미리 경고를 했기 때문에 저와는 무관함을 알려드립니다.

또한 이글을 읽고 실습을 따라하시는 것은 주의사항을 읽으셨다고 간주하여 본 블로거와는 관련이 없음을 말씀드립니다.

다시한번 말씀드리지만 일반 홈페이지에 절대 하지 마세요 범죄입니다.


파일업로드의 취약점?

오늘 해보는 시나리오는 이렇습니다.
웹쉘을 이용해서 서버의 디렉토리를 보겠습니다.

먼저 웹쉘을 홈페이지에 업로드 하면 서버의 저장공간에 저장이 됩니다.
그렇게 되면 서버에는 본의아니게 웹쉘이 저장되게 되는데 그것을 실행하게 되면 서버의 디렉토리구조를 볼 수도 있고 심지어 SQL쿼리문을 검색하여 다른 계정의 정보를 훔쳐 볼 수도 있게 됩니다.

저는 지금 웹쉘을 이용하여 윈도우서버와 파일업로드의 취약점을 이용하여 공격을 하려고 합니다.

직접 해보겠습니다

먼저 오늘은 웹쉘 이라는 녀석을 가지고 해보겠습니다.



공격자가 되어 웹쉘을 업로드 해봅니다.




하지만 이미지 게시판이기 때문에 이미지 확장자가 아니면 올릴 수가 없습니다.



그래서 윈도우 서버의 취약점을 이용하여 확장자명을 교묘하게 바꿔줍니다.

; (세미콜론)은 윈도우에서 끝났다고 인식을 하게 되어 홈페이지상에서는 jpg확장자로 인식해서 서버에 올리게 되지만 실행할땐 윈도우상에서 실행을 하기 때문에 세미콜론때문에 asp까지만 읽어들여 asp확장자로 실행하게 됩니다.



그럼 이렇게 글올리기가 완성이 됩니다.

먼저 파일 다운에 마우스를 가져다 대시면



밑줄 보이시나요? 이렇게 파일이 저장되어 있는 경로가 보이게 됩니다.




공격자가 자신이 올린 웹쉘을 실행시키면..

홈페이지 경로 와 함께 보시길 바랍니다.



브라우저를 눌러보면 아까 말씀드렸던 psd의 경로에 올라와있는 파일들이 다 나와있습니다



ip리스트.txt를 눌러보니 이렇게 바로 열수도 있고 파일을 가져올 수도 있고 여러가지 행위를 할수 있습니다.




그렇다면 해결방안은?

생각해 보시길 바랍니다 지금 파일확장자를 ;(세미콜론)을 이용해서 올리지 못하는 확장자를 올렸습니다
그렇다면 웹서버 상에서 파일업로드시 파일명을 .과 /을 제외한 모든 특수문자 사용을 제한한다면 해당 업로드의 취약점을 방어할 수 있으리라 생각합니다