php include() 소스코드에 삽입디는 것
해커 공격을 통해 bad.php 실행됨
Low 단계
bad.php 생성하기
-> bad.php에 입력한 값 나오게됨
passwd 볼 수 있도록 파일 수정하면 패스워드 관련한 것들 또한 출력됨
medium 단계
위에서 했던 공격 막기 위한 소스코드 사용함을 확인 할 수 있음
공격 방법
-> http 대신 hthttp://tp://로 입력하면 http:// 막아도 남아있기 때문에 공격 가능해짐
파일 인클루젼 공격 대응
파일이 맞는지 확인하고 아니면 에러 발생하도록 하는 소스코드로 대응
문제정보
php wrapper : 파일 시스템 관련 함수로 filename이 사용자의 입력이 돌 경우 php에존재하는 wrapper 이용해 개발자의 의도와 다른 행위 발생시키는 것임
-> flag 페이지에서 Permission denied가 나오고 hello.json에서는 hello가 나온다.
<pre>
<?php
$file = $_GET['file']?$_GET['file']:'';
if(preg_match('/flag|:/i', $file)){
exit('Permission denied');
}
echo file_get_contents($file);
?>
</pre>
-> php wrapper filter를 사용하여 url 우회하여 접속했더니 Base64 코드가 출력됨
-> 결과로 출력된 값을 디코딩 해줬더니 flag 출력됨
파일이 업로드 되는 페이지(게시판, SNS)에 악성 파일(웹셀)을 업로드
Low 단계
→ 이렇게 시스템 명령어 실행할 수 있는 것이 웹셀임
medium 단계
→ medium 단계에서는 업로드 실패 (JPEG, PNG 파일만 업로드 가능)
→ 업로드 한 파일이 php라서 php파일로 설정됨
→ 파일 타입 조작했더니 파일 업로드 성공
💡 파일 타입만 검사해서 불충분한 대응이라는 점 파악high 단계
- 대응 : 클라이언트에서 자동으로 설정하는 타입을 보는 것이 아니라 파일의 실제 타입을 검사
- intercept로 가져오기
- 이름 php.jpg로 바꾸기
- 알애 GIF89a 추가 ( GIF이미지 파일의 표준에 정의된 값으로, 이미지 파일 인척하여 속일 수 있다.
→ 업로드 성공함
해결 방법 : 파일 인클루젼과의 조합으로 공격 가능 ( 원래 이름은 jpg이지만 저장된 파일은 웹실 코드이기 때문에 파일에 삽입됐던 코드를 인클루드 하여 실행 가능함)
→ jpg 파일이지만 파일 인크루젼 공격으로 webshell 실행
파일업로드 공격 + 파일인클루젼공격 + 패스트래버설 공격 조합으로 공격한것 ( 웹사이트 해킹하는데 성공)
php 웹셀 업로드하고 /home/carlos/secret 파일 내용을 출하도록 사용하기