이번 기회에 공부를 참 많이 했네요.
아직 침해사고 결론은 안났지만 제가 분석하기로는
cheditor5 취약점을 이용한 파일 업로드 공격인것 같습니다.
왜냐하면 웹쉘이 발견된 곳이 모조리 해당 에디터 업로드 폴더였거든요.ㅠ
.htaccess 파일을 업로드하고 그곳에 설정한 파일명 kbs.do mbc.jsp 등을 업로드하여
실행할 수 있었다는것....................
지금까지 php 서버에는 아파치에 설정한 확장자 외에는 절대 실행할 수 없는 줄로만 알았는데...
.htaccess 파일이 이렇게 강력할 줄이야...ㅠ
서버 관리자라면 아파치 설정에서 업로드 폴더(data)에서는 그 어떠한 파일도 실행할 수 없도록
설정하셔야합니다. 설사 그놈이 .htaccess 파일일지라도....
관건은 .htaccess 파일을 어떻게 올렸느냐인데....
그래서 이번 기회에 cheditor5 업로 파일인 upload.php 파일을 클로드, 쳇GPT와 협업해서
완전히 갈아 엎어 버렸습니다. 스마트 에디터2에 업로드 역할하는 index.php 파일도 함께 말이죠.
1. 경로변경 불가
2. 세션 검증
3. Referer 검증
4, 이미지 재처리 저장(PHP 코드 제거)
5. UploadHandler 설정
- 확장자 제한
- 파일명 랜덤화
- 업로드 후 재검증
- MIME 타입 검사
- 확장자와 이미지 타입 일치 검사
이렇게 했는데도 뚫리면 에디터 삭제하겠습니다.
텍스트 게시판만 운영할겁니다.^^
※ 다음 프로젝트는 write_update.php 파일 업로드 개선 작업을 할 예정입니다.
오피스 파일, 이미지파일, 압축파일 외에는 절대 업로드 못하게..........
확장자로 검사하는게 아니라 파일의 내용으로 검사해서 리젝트!!
실행(php, htm, exe ...) 파일은 압축해서도 못올리게 해버릴까 생각중요..ㅎㅎ
댓글 3개
보안관련 노하우를 알고싶습니다^^
직접 개발해서 사용하는게 보안이 가장 좋지 않을까요?
외부에 알려진 코드는 소스가 있으니 취약한 부분을 파악할 수 있지만
직접 개발한 소스는 그 놈이 알 수가 없으니 뚫기도 힘들겠죠? ㅎ