File Upload
1. File Upload
- 악성스크립트 (Web shell 등의 백도어) File을 Web Server에 침투시키는 보안취약점을 말한다.
+ Web Shell은 Web상에서 System에서 할 수 있는 모든 것을 할 수 있다.
1) Bind Shell Vs Reverse Shell
[1] Bind Shell
- 공격 대상이 자신의 호스트에 listener port를 열고 들어오는 요청을 대기하게 만드는 shell을 말한다.
- 공격자는 사설 ip를 사용해도 무관하며, 서버는 공인ip를 사용하여야 한다.
- Web Server에 netcat을 띄운다.
+ nc [Server IP] [port number]
[2] Reverse Shell
- 공격 대상이 공격자에게 통신하도록 만드는 shell을 말한다.
- 공격자는 코드나 커맨드 실행의 성공 후 발생하는 연결을 수신할 listener port를 열어야 한다.
- 공격 대상이 되는 서버에 netcat을 이용하여 공격자에게 접속을 시도한다.
+ nc -l -v -p [port number]
[3] Reverse Shell이 필요한 이유?
- 대체로 서버의 방화벽 정책은 아웃바운드는 모두 오픈되어 있고, 인바운드 정책은 특정포트만 오픈해 놓는다.
- 그래서 Server에 port를 지정해놓고 공격자가 접속하는 Bind Shell 방식은 방화벽에서 차단된다.
- Reverse Shell 방식은 Server에서 Client[공격자]로 접속하기 때문에 방화벽 정책에 걸리지 않는다.
2) 시연[b374k-2.8.php라는 Web Shell을 침투(Upload)]
[1] 서버 내 파일을 업로드 하는 곳에 WebShell을 업로드한다.
[2] URL에 Upload 경로에 침투시킨 WebShell을 실행시킨다.
[3] Reverse Shell은 공격자가 포트를 열어놓으면 서버가 접속을 하므로 공격자는 7777번 port를 오픈시키고 대기한다.
- WebShell을 통해 서버가 공격자의 ip의 7777번 port로 접속이 가능하도록 Go! 버튼을 클릭한다.
[4] 접속이 되어 서버의 Shell을 띄운 것과 마찬가지인 상태가 되었다.
3) 대응방안
- File Upload 시 확장자를 검사하여 jpg, png 등의 이미지파일만 Upload가 가능하도록 한다.
+ 이 경우 파일 확장자만 바꿔서 올리고 올린 후 mv등의 명령어를 이용하여 파일명 변경하면 완벽한 대응방안이 되지 못한다.
- 모든 파일을 업로드 시 소스를 분석하여 Web Shell과 비슷한 유형의 소스가 있으면 차단한다.
+ 이 경우 파일을 암호화 해서 올릴 수 있다.
주의사항 : 취약한 사이트의 경우 공격이 통할 수 있으니 실제로 사용하지 마십시오.
'Try Attack > Web Hacking[basic]' 카테고리의 다른 글
command injection (0) | 2019.09.20 |
---|---|
Web hacking 이론 (0) | 2019.04.27 |
File Inclusion (0) | 2018.08.12 |
프로토콜 분석 (0) | 2018.08.12 |
Command Injection (0) | 2018.08.12 |
댓글