본문으로 바로가기

[D+11] FileUpload & FileDownlaod

category 해킹&보안/웹 해킹&보안 2017. 5. 21. 18:38
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

11. FileUpload & FileDownload


1) FileUpload


FileUpload

- 공격 난이도에 비해 파급력은 큼.

- 자료실과 같은 사용자들의 업로드가 가능한 웹 애플리케이션을 이용.

- 서버 사이드 언어로 작성된 WebShell 업로드를 통한 서버 권한 탈취.

- 반드시 웹쉘만 올려야하는 것은 아님. 올린 파일이 무조건 웹 서버에 저장만 되면 됨.

- 업로드 되는 파일의 확장자 필터링이 되지 않을 시 쉽게 가능.


▣ 실습

1. 웹 서버에 웹 쉘 파일을 올림. (웹 쉘 파일은 구글링하면 많이 나옴)

2. 올라간 파일의 위치를 찾기. (올라간 파일에 마우스를 올리기만 해도 밑에 위치가 뜸.)

3. 해당 위치로 들어가서 웹 쉘을 실행시킴.

4. CD로 위치를 바꿔보려해도 계속 해당 위치에 있음.

☞ TCP를 이용하지만 연결지향적 성격은 버렸기 때문..

5. 현재 사용하고 있는 HTTP 80포트는 감시가 강하기 때문에 새로운 포트에 붙어야함.

☞ 리버스 텔넷 (NC사용)

6. NC 파일을 다시 업로드함.

7. 공격자의 컴퓨터에서 NC파일을 이용하여 8080포트로 붙길 기다림.

d

8. 웹 서버의 nc파일을 이용하여 붙어줌.

====> 대부분 이런 식으로 FileUpload 공격이 성공하면 리버스텔넷을 이용하여 새 포트에 붙음.



▣ 방어

1. 업로드 폴더의 스크립트 실행 권한을 제거

2. 화이트리스트 방식 허용 

3. 파일이름을 난수화 하여 저장

4. 확장자를 강제로 변경시켜 저장 (cmd.xaspx)

5. Database에 저장. (실행할 수 없는 단지 하나의 파일임)

6. 웹서버와 물리적 분리 (파일서버 : 물리적 분리. 링크로 연결만 해주면서 실행은 불가)


▣ 웹쉘 체크 로직         
1. 확장자 체크         
2. content type 체크 
3. ;, %00, %zz           

▣ 웰쉘 실행가능 확장자 

ASP : cer, cdx, asa   

PHP : php3, html, htm 

JSP : war             

===> cmd.exe를 올릴 수 없다면 cmd.cer 파일을 올리면 가능.

▣ 화이트리스트 적용 실습 (jpg, bmp, png, jpeg만 허용)
1. .기준으로 글자 자르기 (대소문자 구분)
2. 변수에 확장자 담기
3. 비교하기 
Attach_File = LCase(Attach_File)
idx = Instr(Attach_File,".")
If (idx=0) Then
Response.Write "I can't understand you..."
Response.End
End if

ext = Mid(Attach_File, idx+1)
If((StrComp(ext, "jpg") <> 0) and (StrComp(ext, "bmp") <> 0) and (StrComp(ext, "png") <> 0) and (StrComp(ext, "jpeg") <> 0)) Then
Response.Write "You can't upload this file!"
Response.Ends
End if


▣ apache 서버에서만 가능한 우회법.

- .htaccess 파일을 이용하여 읽을 수 없는 확장자명을 우회.



2) FileDownload


 FileDownload

- 다른 공격들이 하다하다 안될때 시도하는 경우가 많음.

- 방문자에게 허용된 파일외의 다운로드

- 웹 서버의 소스 및 기밀 문서 다운로드

- FileDownload 기능의 웹 애플리케이션에서 파일명 필터링을 못할 경우.

- OS부터 판별! (URL에 대소문자 섞어써서 오류나면 Linux)


- 파일 다운로드 기능을 가진 웹 어플리케이션에서 파일명이 제대로 검사되지 않는 경우

- Directory Traversal 등에 의해 다른 위치에 있는 파일도 다운로드 가능

- 부적절한 환경설정에 의해 Source code 파일이나, backup 파일등이 다운로드 가능


- 정상 url : http://127.0.0.1/download.php?path=/1.jpg

- 우회 url : http://127.0.0.1/download.php?path=../../../../../../../../etc/passwd


▣ 파일다운로드 로직

1. 절대경로  - 개발자의 부주의           

2. 상대경로  - 애플리케이션의 취약점 


윈도우의 경우 : ../../../../../boot.ini  

                        ..%2F..%2F..

                        ..%5C..%5C


▣ 방어

1. 다운로드 경로 입력받을시에 서버에서 문자열 필터링을 함. (../ 문자열이 들어가면 차단)

2. 물리적으로 웹 소스가 존재하는 서버와 분리하여 격리.






i2sec 대구지점 23기 수료생.