반응형
해당 취약점은 php에서 다른 파일을 동적으로 불러올때 발생할 수 있다.
<?php
include $_GET['page_number']'.php';
?>
> GET요청에 대한 검증없이 page_number 에 대한 값을 include 해주고 있다.
위 코드를 예로들어 보자.
개발자가 예상하지 못한 값을 인자로 넘겨, 알려지기를 원치 않는 정보를 확인할 수 있는 간단한 LFI가 가능한 코드이다.
그러나 include의 특성상 해당 파일을 실행 시켜주는것으로
1. 주석, 변수, 등 파일의 전체 내용을 확인해야 할 경우
2. system 커멘드를 사용해야 할 경우
3. zip파일의 압축을 풀고 해당 파일을 실행시켜야 할 경우
php wrapper을 사용하여야 한다.
expect:// | system command를 실행시켜 준다 |
php://filter | encode / decode 옵션으로 서버 안에 존재하는 문서를 열람할 수 있다. |
zip:// | zip파일의 압축을 풀고 해당파일을 실행한다(웹쉘 응용) |
예시코드에서의 wrapper 사용법
expect:// : ?page_num=expect://ls
php://filter : ?page_num=php://filter/convert.base64-encode/resource=[목적 파일] (base64로 인코딩하여 확인)
zip:// : ?page_num=zip://file.zip#web_shell.php
반응형