본문 바로가기

컴터 때찌/E​xperience

Local File Inclusion&Remote File Inclusion

include "profile/$_SESSION[name]";  
이런  소스 코드가 있는 문제 페이지가 있다
어떤 특정 파일을 include 함으로써 이 페이지는 Local File Inclusion이나 Remote File Inclusion 취약점이 있다고 할수 있다

이런 취약점이 있으면 공백이나, 유효하지 않은 명령을 했을때

Warning: main() [function.include]: Failed opening 'profile/</table>' for inclusion (include_path='.:/usr/local/php/lib/php') in /www/abcd.php on line 55

inclusion이 실패 하게 되고 위와 같이 Failed opening 메시지를 띄우게 된다

이런 경우 공략은 log 파일을 건들여서 소스를 삽입한 후에 삽입한 log 파일을 Include 하는 식으로 진행된다
위의 경우 /www/abcd.php 에서 나온거니 ../../  이렇게 두번만 가면 루트로 갈수 있겠다

접근은 ../../etc/httpd/logs/access.log 이런식으로 하면 되겠고
원하는 코드 injection은 user-agent 에 소스코드를 넣음으로써 할수있다

일반적인 apache log (access,error) 파일들은 user-agent도 들어 가기 떄문에 
user-agent에 php 코드를 넣어서 패킷을 보내면
access나 error 에 php 코드가 등록 될테고 그 파일을 abcd.php 에서 include 함으로써
우리가 원하는 동작들을 행할수 있게 된다

특히나 Remote File Inclusion 같은 경우는 바로 웹쉘을 INclusion 함으로써 더 쉽게 공략 할수 있다

아래는 흔히 알려진 log 파일들이다
/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/thttpd_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

하지만 위와 같은 로그 파일들이 퍼미션이 거부되거나 log와 같은 문자열이 필터링 된다면
위 로그 파일들을 include 할수 없게 된다 
LFI의 다른 두가지 방법이 있는데

첫번째는 /proc/self/eviron을 inclusion 하는 방법이고
(퍼미션이 없으면 /proc/loadavg 을 읽어서 현재 실행 중인 proc의 pid을 알고 /proc/pid/environ)

두번째는 /proc/fd/X   을 inclusion 하는 방법이다 (x는 상수) 



+ (ftp 로그 이용)
로그 위치 확인
/etc/vsftpd.conf
/etc/proftpd.conf






LFI & RFI 관련 링크 
http://teamcrak.tistory.com/22
http://linkc.tistory.com/entry/Codegate-2010-level-1-%ED%92%80%EC%9D%B4
http://downloads.ackack.net/LocalFileInclusion.pdf
http://terror-squad.forumulmeu.net/tutoriale-f4/webhacking-lfi-tutorial-t67.htm  
http://r00tsecurity.org/forums/topic/11110-local-file-inclusion-tutorial/             
http://packetpunks.com/Thread-LFI-Local-File-Inclusion
http://labs.neohapsis.com/2008/07/21/local-file-inclusion-%E2%80%93-tricks-of-the-trade/

http://www.am82.com/houzan/archives/4581/                                                             ★★

http://thesprawl.org/intelstream//index.php?category=2&start=1261209600&end=1263888000

새로운 RFI 방법
http://www.shp-box.fr/blog/?p=63&lang=en

'컴터 때찌 > E​xperience' 카테고리의 다른 글

Adobe Flash Player 10.1.102.64 vul  (0) 2010.11.09
About Ubuntu  (1) 2010.11.03
SQL injection을 방지하는 위해 사용하는 두가지 방법  (2) 2010.09.17
mysql table 보기  (2) 2010.09.15
addslashed() 함수 우회법  (1) 2010.09.13