파일 업로드 취약점은 파일을 업로드하는 기능에 보안대책이 적용되지 않았을 때 발생.
파일 업로드 기능 구현시, 아무파일을 업로드할수있게 허용하면 웹셀을 통하여 시스템으로 침투할수 있음.
Low 레벨
weevely를 이용한 웹쉘
- 공격자측에서 weevely를 통하여 웹셀을 생성. 패스워드는 password로 생성
- 생성된 웹쉘은 난독화되어있음.
- 피해자 서버에 웹쉘 업로드. 빨간 글씨로 업로드되어있는 경로가 나와있음. Path Traversal 공격 가능할듯함.
- 공격자서버로와서 weevley로 웹쉘 연결
weevely 희생자서버업로드경로/업르드파일이름 비밀번호
- 정상적으로 피해자의 쉘을 따올수 있음.
MSFVENOM과 METASPLOIT을 활용한 Reverse_Shell
- 공격자측에서 venom의 -h 옵션으로 공격할 페이로드 선택
- 사용할 payload, Connect 할 ip와 port, 아키텍쳐, 플랫폼 출력형식 지정하여 백도어 생성.
- 희생자서버에 생성한 백도어파일을 업로드.
- 공격자측으로 다시 돌아와서 multi/handler를 사용
- venom으로 생성했던 payload사용
- 바인딩할 주소와 포트를 설정.
- exploit 혹은 run을 실행해 입력한 주소에서 바인딩 시작.
- Path Traversal 공격으로 업로드한 파일에 Access.
- Access후 공격자서버의 Metasploit을 보면 미터프리터 출력.
- 희생자 시스템에 침투성공. 업로드됬던 경로와 파일들이 있음.
Medium 레벨
- 웹쉘이 업로드되지않는것을 확인
- 소스코드 확인. 파일의 Content-Type만 검색해주고 있음.
- Burp로 요청변조. (좌)의 Content-Type를 (우)처럼 image/jpg로 변조하여 Forwarding
- 정상적으로 웹쉘 업로드 성공.
- 공격자측에서 정상적으로 웹쉘 접속 성공
High 레벨
File Upload + File Inclusion
- High 레벨 소스코드이다.
- 확장자가 jpg, jpeg, png이고, 파일의 크기가 10000이하이며, getimagesize함수를 통해 실제로 파일의 내용이 이미지
인지 확인함으로 대응하고있다
- 하지만 이러한필터링도 우회할수 있음
- 확장자를 검사하고있기때문에, php확장자에 jpg 확장자를 덧붙힘으로서 확장자필터링을 우회할수있음
- 또한, getimagesize함수는 GIF표준인 GIF89a를 붙여 우회할 수 있음.
- 정상적으로 업로드 성공.
- 하지만, jpg파일로 인식하기때문에, 백도어를 실행시킬수 없음.
- High 레벨의 백도어를 실행하기위해서는 File inclusion과 File Upload공격을 병행해야 함.
- 확장자가 jpg인 백도어를 실행시켜주려면 File Inlcusion의 High레벨도 우회해주어야함
- 파일업로드시 업로드위치가 http://192.168.35.125/DVWA/hackable/uploads/exploit.php.jpg 인 것을 감안.
- File Inclusion의 LFI공격을 이용하여 업로드된 파일에 Access하여 백도어 실행
- 동일하게 백도어를 실행시킬수있음.
'WebHacking > DVWA' 카테고리의 다른 글
[DVWA] Weak Session IDs (0) | 2022.01.21 |
---|---|
[DVWA] File Inclusion (0) | 2022.01.19 |
[DVWA] XSS (Stored) (0) | 2022.01.17 |
[DVWA] XSS (Reflected) (2) (0) | 2022.01.13 |
[DVWA] XSS (Reflected) (0) | 2022.01.13 |