그누보드 PHP 업데이트 외주를 하다 보니 "내 사이트 괜찮은가요?"를 너무 자주 들어서, 주소만 넣으면 A~F 등급 나오는 진단기를 만들었습니다.
만들면서 구글에서 그누보드 사이트 30곳 뽑아 돌려본 결과:
- 테스트한 사이트 전부
/install/폴더가 그대로 남아 있었습니다. 설치 완료 안내 페이지에 서버 절대경로가 찍힙니다. - 그누보드 버전은 common.js 해시로 추정되는데, 2년 넘은 구버전이 절반 넘었습니다. 5.6.46이 그저께 나왔는데 5.4대도 아직 많습니다.
- PHP 7.4(2022년 지원 종료)를 phpinfo.php로 공개해둔 곳도 있었습니다.
- 카페24·가비아 일부 호스팅은 데이터센터 IP를 JS 챌린지나 406으로 막아서 진단이 안 됩니다. 이건 우회 안 하고 "막힘"으로 표시합니다.
확인하는 건 공개 정보만입니다. 루트·정적 파일·흔한 경로 20개 이내 GET이고 로그인이나 파라미터 주입 없습니다. 봇 UA 명시하고 같은 도메인은 24시간 1회만 돌립니다.
핑거프린트 테이블은 깃허브 태그 258개에서 뽑았는데, 혹시 버전 판정 틀리는 사이트 있으면 댓글 주시면 고치겠습니다. 운영 중인 사이트 넣어보시고 결과 등급 댓글로 남겨주셔도 재밌을 것 같습니다.
-------------------------------------------
(11/4~5 업데이트) 댓글 피드백 반영한 것들입니다.
- 재진단 간격을 24시간에서 1시간으로 줄였습니다. 하루 5회까지고, 고치고 바로 다시 확인할 수 있습니다. (laravelsoft 님)
- 호스팅이 데이터센터 IP를 막아서 "수동 점검"으로 나오던 경우, 결과 페이지에서 파일 하나 받아 사이트 루트에 올리고 열면 서버 안에서 직접 진단됩니다. 외부에선 안 보이는 PHP 정확한 버전까지 나오고, 전송 끝나면 파일은 스스로 삭제돼요. 외부에서만 확인되는 항목이 빠지는 만큼 등급 상한은 B입니다. 카페24 웹서버호스팅에서 직접 확인했습니다. (techstar 님)
그 외로 진단 봇 UA를 명시하고, 봇을 막는 사이트는 우회하지 않고 막힘으로 표시합니다. 직접 진단 결과는 링크 미리보기에 등급이 안 들어갑니다. 결과를 꾸며서 남의 사이트 등급을 공유하는 걸 막으려는 거예요.
댓글 8개
https://blog.dddiwbsy.com/post/php-security/
하루에 한번만 처리하는게 아쉽네요 (수정후 다시 체크하는데 1일 이라니 ㅜㅜ)