파일 업로드 공격

 

파일이 업로드 되는 페이지(게시판, SNS 등)에 악성 파일(웹쉘)을 업로드

 

웹쉘 php 파일을 업로드를 하게 되면

 

../../hackable/uploads/webshell.php succesfully uploaded!

 

라고 뜬다

 

주소창을 보면 현재

 

http://localhost/dvwa/vulnerabilities/upload/#

 

두번의 상위 디렉토리이므로

 

http://localhost/dvwa/hackable/uploads/webshell.php

 

를 치고 들어가면

 

웹쉘 커맨드가 나온다

 

medium 단계에서는

 

jpeg나 png 확장자만 가능하다고 하다

 

버프스위트를 키고 인터셉트를 킨 다음 업로드를 누르면

 

보내는 것에 대한 정보가 나온다

 

그 중 Content-Type 을 조작해볼거다

 

image/jpeg 라고 해주고 forward 로 보내주면

 

성공적으로 됨을 볼 수 있다

 

high 단계는 실제 파일 확장자가 jpg 인지 jpeg 인지 png 인지 확인하게 된다

 

버프스위트를 키고 인터셉트 킨 후 똑같이 업로드를 한다

 

파일명을 webshell.php 되어있는 것 뒤에 .jpg를 붙히면 된다

 

webshell.php.jpg 이렇게 말이다

 

그리고 뒤에 GIF89a를 적어준다

 

이 때 GIF89a 는 GIF파일의 표준의 값으로 이것을 파일 앞에 입력하게 되면 이미지파일처럼 해서 속일 수 있다

 

하지만 이렇게 해서 얻은 url을 치면 결국은 jpg파일이기 때문에 실행이 안된다

 

만약 파일인클루젼 공격이 가능한 경우에 이걸 조합하면 가능하다

 

파일이 jpg파일이더라도 결국 웹쉘코드이기 때문에 파일에 삽입된 코드를 인클루드해서 할 수 있다

 

먼저 File Inclusion을 들어가서 주소창을 본다

 

high 단계에서는 file 을 적어주어야 우회가 되기 때문에 file로 시작한다

 

그리고 아까 경로를 보면 ../../hackable/uploads/webshell.php.jpg 이기 때문에

 

http://localhost/dvwa/vulnerabilities/fi/?page=file/../../../hackable/uploads/webshell.php.jpg

 

라고 치면 좌측상단에 쉘이 뜨는걸 볼 수 있다

 

하지만 이 쉘 폼을 이용하면 오류가 뜨게된다

 

그래서 결국 cmd파라미터를 사용하기 때문에

 

바로 주소 뒤에 &cmd= 로 넘겨주어야 한다

 

즉 http://localhost/dvwa/vulnerabilities/fi/?page=file/../../../hackable/uploads/webshell.php.jpg&cmd=cat /etc/passwd

 

하게되면 정보를 출력하게 된다

 

이것은 3가지 공격방법이 섞인 공격이다 (파일업로드 공격 + 파일인클루젼 공격 + 패스트래버설 공격)

 

impossible 단계에서는

 

이미지 파일이 맞는지 확인한 다음에 업로드 된 내용으로 이미지 파일을 다시 생성하고 있다

 

이 방법 말고도 업로드 파일 이름을 랜덤으로 변경해서 해커가 마음대로 접근하지 못하게 하는 방법도 있다

 

또 다른 방법은 업로드되는 서버를 웹 애플리케이션 서버와 분리하는 것

'Hacking > 웹 해킹' 카테고리의 다른 글

공부(9)  (0) 2021.09.17
공부(8)  (0) 2021.09.17
공부(6)  (0) 2021.09.16
공부(5)  (0) 2021.09.16
공부(4)  (0) 2021.09.15

+ Recent posts