RFI(Remote File inclusion Vulnerability) 취약점
해커는 일반적으로 시스템의 취약점을 이용하여 침투를 하게 됩니다.
그래서 가장 취약한 곳을 집중적으로 스캔하면서 정보수집을 하게되죠.
그러므로 보안의 강도는 가장약한 사슬의 연결고리만큼 강하다 라는 말이 나오는 것입니다.
10군데 중에 9군데가 철통방어 되어 있는 곳 vs 10군데 중에 1군데만 방어 되어 있는곳
이 있다고 가정한다면, 일반적으로 전자가 후자보다 보안강도가 우수하다고 여길수 있겠지만,
해킹에서는 결국 뚫리는 것은 똑같기 떄문에 둘다 보안이 우수한것은 아닙니다.
그래서 방어하는 입장이 더욱 힘든 것이고 무엇보다 완벽한 보안은 사실상 존재 하지 않기 때문에
조금이라도 더 해커를 귀찮게 하거나 시간을 끌게 만드는 정도까지 가더라도 괜찮은 방어측에
속하게 됩니다.
이번 시간에는 RFI 취약점에 대해서 알아보도록 하겠습니다.
RFI (Remote File inclusion Vulnerability)
위의 화면은 해당 시스템에 RFI (Remote File Inclusion)취약점을 이용하여 웹쉘을 실행시킨 화면 입니다.
rfi 공격은 해커가 악성스크립트를 서버에 전달하여 해당 페이지를통하여 전달한 악성코드가 실행되도록
하는 것으로서, 원격으로 삽입하는 공격을 말합니다.
웹쉘(web shell)은,업로드 취약점을 통하여 시스템에 명령을 내릴 수 있는 코드를 말합니다.
web shell은 간단한 서버 사이드 스크립트(php,jsp,asp) 로 만드는 방법이 사용되면서 이 스크립트를
웹서버의 취약점을 통해 업로드 하여 해커들이 인증없이 시스템에 쉽게 접속 가능하게 만들어 줍니다.
RFI 샘플코드
<?php
if (isset( $_GET['COLOR'] ) ){
include( $_GET['COLOR'] . '.php' );
}
?>
[전달 페이지] - html
<form method="get">
<select name="COLOR">
<option value="red">red</option>
<option value="blue">blue</option>
</select>
<input type="submit">
</form>
필터링 과정이 없기 떄문에 red,blue 외의 값을 전달하는 것이 가능하다는 것을 알 수 있습니다.