본문 바로가기
해킹 공부/웹해킹

LFI 취약점, php wrapper

by zzzmilky 2020. 9. 30.

시험기간에 커피 마시다가 요즘은 커피 안 마시니깐 후폭풍이 너무 심하다..잠이 너무 몰려와서 방금 산책하고 이제서야 블로그에 글쓴다..시험 끝나면 부지런히 업로드하려고 했는뎅..ㅜㅜ


 

25번 문제

 

25번 문제는, 리눅스 명령어 같은게 문제로 나와있었다. 리눅스가 아직 익숙하지 않아서, 공부해보면서 문제를 풀었다. 해당 화면은, 리눅스에서 ls -l 라는 명령어를 입력하면 뜰만한 내용들이다. 

www.incodom.kr/Linux/%EA%B8%B0%EB%B3%B8%EB%AA%85%EB%A0%B9%EC%96%B4/ls

 

Linux/기본명령어/ls

# 리눅스 기본명령어 - ls

www.incodom.kr

위 사이트에서 리눅스 기본 명령어에 대해 알아보았다. 

문제를 더 살펴보다가, url을 유심히 보게 됐다. "file=hello"부분을 보니, 해당 웹사이트는 get 방식으로 파일이름을 받아 온다는 것을 알게 됐다.

 

 

그렇다보니, 현재 회색 박스에 출력되는 "hello world"라는 내용은, hello.php의 내용을 보여주는듯 했다. 우리는 flag를 찾아야할 테니 flag.php로 주소를 바꿔보았다. url 뒷부분을 file=flag라고 변경해보았다.

 

file=flag로 변경

 

회색박스의 내용이 "FLAG is in the code"라고 바꼈다! 여기서부터 좀 고민을 많이 했었다. 무슨 code인지부터 생각하다가, flag.php의 코드를 직접 볼 수 있다면, 그 코드 내에 flag가 있다는 내용인 것 같았다. 근데 서버 내에 있는 flag.php 파일을 어떻게 읽는것인가, 이게 문제였다. 알고보니 "LFI vulnerability" 기법이라는게 있었다.


LFI(Local File Inclusion) 취약점은, 파일이 공격대상의 서버에 위치할때 사용할 수 있는 방법이다. 이 문제의 경우, 그리고 php가 버전이 높아지면서 php wrapper을 활용해 LFI 공격을 해야한다고 한다.

php wrapper을 살펴보았다. 

 

www.php.net/manual/en/wrappers.php

 

PHP: Supported Protocols and Wrappers - Manual

Even though their names will be the same, you can have more than one //memory or //temp stream open concurrently; each time you fopen() such a stream, a NEW stream will be opened independently of the others.This is hinted at by the fact you don't add any u

www.php.net

하지만 실제로, 우리가 LFI 공격을 하면서 유용하게 사용할 수 있는 wrapper이 몇개 정해져있다고 한다

1. expect://

2. php://filter/

3. zip://

expect:// wrapper의 경우, system command를 실행시켜준다. expect://ls 를 하게 되면, system command를 ls로 해서 디렉토리를 보여주게 된다.

php://filter의 경우, 서버안의 문서들을 열람할 수 있게 해준다 (encode 또는 decode의 형태로). www.[웹사이트주소]/?file=php://filter/convert.base64-encode/resource=파일명 을 활용하면, base64로 인코딩된 파일을 얻을 수 있다.

zip:// 의 경우, zip 파일의 압축을 풀고, 압축을 푼 파일안에 있는 코드를 실행시켜준다.


물론 이 문제의 경우, php://filter wrapper을 이용해 풀 수 있었다.

 

base64로 인코딩된 flag.php 파일!

 

 

base64 디코딩을 해봤다!

 

 

Decoding을 해보니 이런 코드가!! FLAG를 구하고 문제를 풀 수 있었다! 150점 획득!

'해킹 공부 > 웹해킹' 카테고리의 다른 글

포트포워딩(port forwarding)  (0) 2020.10.02
SMTP/ Mail header injection  (0) 2020.10.01
쿠키 변조, encoding  (0) 2020.09.29
CR-LF INJECTION  (0) 2020.09.23
SQL INJECTION  (0) 2020.09.22

댓글