Try Attack/Web Hacking[basic]

File Upload

D4tai1 2018. 8. 12.

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

댓글