파일 업로드 공격
파일을 업로드할 수 있는 페이지에서 발생할 수 있는 공격
게시판의 첨부파일, 프로필 등에 사진을 올릴 때, SNS에 파일을 올리는 경우
악성파일(웹쉘) 업로드
웹쉘: 웹을 통해 시스템 명령어를 실행할 수 있는 웹페이지(커맨드 인젝션 공격 유사)
1. 이미지를 업로드하는 페이지에 웹쉘 업로드
2. 웹 어플리케이션이 웹쉘을 저장
3. 해커가 웹셸에 접근하면 웹쉘이 실행됨
4.해커가 웹쉘을 통해 원하는 대로 시스템 명령어를 실행할 수 있음
웹어플리케이션은 업로드된 파일이 정상파일인지 검사해야함.
실습(low)-https://github.com/secuacademy/webhacking webshell.php파일 raw 클릭
터미널에 wget으로 다운로드
dvwa에 Browser클릭. root/webshell 선택 후 업로드
경로를 따라 webshell.php 파일을 열고 시스템 명령어 입력
실습(medium)- 위의 방식으로 webshell을 열려하면 실패.
파일이 업로드 될 때의 요청을 버프스위트로 인터셉트
content-Type을 php타입에서 image/jpeg로 변경 후 forward
content-Type만 확인하기 때문에 공격에 성공함.
파일 인클루젼 조합- dvwa에 저장된 webshell.php.jpg 열기 실패
파일이름을 바꾸어서 저장이 php가 아닌 jpg로 저장됨.
파일 인클루젼 공격을 결합해 해당 파일을 인클루드하면 공격 가능
(파일이름은 jpg더라도 파일 내용은 php이기 때문)
dvwa에서 파일 인클루젼을 선택 후 저장된 파일의 경로 입력
page=/file/../../../hackable/uploads/ webshell.php.jpg 입력(트레버셜 공격)
jpg파일임에도 불구하고 파일 php로 실행 가능
webshell파일의 form을 이용하면 에러
url에 바로 &cmd= cat /etc/passwd로 cmd파리미터에 값을 설정
대응- 1. 이미지 파일 검사 루틴에서 이미지 파일임을 확인한 후에 업로드 된 내용으로 이미지 파일을 다시 생성. 이를 통해 무늬만 이미지 파일인 파일을 걸러 낼 수 있음
2. 업로드 되는 파일의 이름을 랜덤하게 생성시켜서 해커가 자신의 파일에 접근하지 못하도록 함.
3. 업로드되는 서버를 웹 어플리케이션 서버와 분리
4. 업로드 폴더의 실행 권한을 완전히 제거해 웹 어플리케이션에서 파일이 실행되는 것을 방지
//칼리리눅스를 종료/재부팅 한 적이 있으면 dvwa 접속이 불가능하다.
/opt/lampp/lampp restart 명령어 터미널에서 실행
'화이트 해커가 되기 위한 8가지 웹 해킹 기술' 카테고리의 다른 글
6주차 XXS(크로스사이트스크립팅) 공격 (0) | 2021.08.16 |
---|---|
5주차 SQL인젝션 (0) | 2021.08.16 |
3주차 CSRF 공격, 파일 인클루젼 공격 (0) | 2021.08.16 |
2주차 브루트 포스 공격, 커맨드 인젝션 공격 (0) | 2021.08.16 |
1주차 웹 해킹 기술 탐색 (0) | 2021.08.16 |