그래서, 보라, 우리가 클라이언트를 위해 호스팅해온 레거시 사이트에는 누군가가 무서운 c99madshell 익스플로잇을 우리 웹 호스트에 업로드할 수 있는 FCKEditor 버전이 있었습니다.
저는 보안에 크게 관심이 있는 사람은 아닙니다. 솔직히 저는 인력 손실로 인해 S/A 업무를 담당하고 있는 개발자일 뿐입니다. 따라서 서버 결함을 저지른 사용자가 악용으로 인한 피해를 평가하는 데 도움을 줄 수 있으면 좋겠습니다.
약간의 정보를 제공하려면:
파일은 웹루트 내의 디렉토리 "/_img/fck_uploads/File/"에 업로드되었습니다. Apache 사용자 및 그룹은 로그인할 수 없고 사이트를 제공하는 디렉터리 외부의 권한을 갖지 않도록 제한됩니다.
모든 파일에는 770개의 권한(사용자 rwx, 그룹 rwx, 기타 없음)이 있었습니다. 수정하고 싶었지만 "높은 우선순위"가 아니기 때문에 보류하라는 지시를 받았습니다(이것이 변경되기를 바랍니다). 그래서 해커들이 쉽게 스크립트를 실행할 수 있었던 것 같습니다.
이제는 실제로 c99madshell.php 자체를 찾을 수 없었습니다. 러시아어 텍스트가 포함된 다른 HTML 파일과 madshell 해킹을 변환한 인라인 PHP가 포함된 몇 개의 .xl 및 .html 파일만 찾을 수 있었습니다. 하지만 약간의 조사를 해 보면 해킹이 실행 후 스스로 파괴되는 것처럼 보입니다. 훌륭합니다.
어쨌든 내 초기 평가는 다음과 같습니다.
Apache 사용자/그룹이 격리되어 있으므로 전체 호스트를 다시 빌드할 필요는 없으며 시스템 수준 비밀번호를 얻을 수 없어야 합니다.
업로드에 실행 권한이 없도록 제한하고, FCKEditor 버전을 업데이트하여 원래 공격 대상을 수정하고, 업로드 디렉터리 내에서 PHP 스크립트 실행을 거부하는 서버 수준 구성을 추가하여 이 취약점을 해결해야 합니다.
앱의 DB 비밀번호를 변경해야 합니다. 데이터베이스 연결을 위한 구성 파일이 웹 루트 내에 있으므로 해커가 해당 파일과 함께 DB 비밀번호를 알아낼 가능성이 높습니다.
어쨌든, 내가 상사에게 무슨 말을 해야 할지에 관해 여러분의 의견을 알려주세요. 분명히 전체 호스트를 재구축하지 않는 것이 이상적일 것입니다. 그러나 그것이 해킹된 시스템을 실행하지 않도록 보장하기 위해 취해야 할 조치라면 그것이 취해야 할 조치입니다.
여러분의 도움에 정말 감사드립니다. 또한 더 많은 정보를 요청하는 것을 주저하지 마십시오(피해를 평가하기 위해 기꺼이 명령을 실행하고 여러분과 협력하겠습니다). 빌어먹을 해커들 :(.
답변1
분명히 다른 사람들이 말했듯이 공식적인 "안전한" 대응은 시스템을 재구축하는 것입니다.
상황의 현실이 그것을 막을 수도 있다. 다음과 같은 몇 가지 작업을 실행하여 손상 여부를 확인할 수 있습니다.
- Chkrootkit- 서버가 손상되는 일반적인 징후에 대한 테스트
- rpm 시스템인 경우 'rpm -Va|grep 5'는 rpm에 설치된 모든 바이너리를 확인하고 MD5 합계가 변경된 경우 "5"를 보고합니다. 사용자 정의 바이너리에 대해 설명되지 않은 불일치를 발견한 경우 다시 빌드해야 합니다.
- 의심스러운 것이 있는지 /tmp를 살펴보십시오.
- 비정상적인 프로세스가 있는지 'ps 팩스'를 확인하세요. 'ps'가 손상되거나 다른 기술을 통해 실행되는 경우에도 숨겨진 프로세스가 계속 실행될 수 있습니다.
- 검색에서 Apache 이외의 소유권을 가진 파일을 발견한 경우 시스템 계정이 확실히 손상된 것이므로 다시 빌드해야 합니다.
시스템 구성에서 수정해야 할 사항은 다음과 같습니다.
- 가능하다면 FCKeditor에 의한 업로드를 비활성화하십시오.
- 프로그램이 실행되는 것을 방지하기 위해 임시 디렉토리가 NOEXEC로 만들어졌는지 확인하세요.
- 모든 PHP 스크립트는 최신 상태여야 합니다.
- PHP 스크립트 실행 중에 악용을 감시하기 위해 mod_security를 멋지게 설치하려면
제가 놓치고 있는 것들이 엄청나게 많지만 그것이 제가 취할 첫 번째 단계가 될 것입니다. 서버에서 실행 중인 항목과 보안의 중요성(CC 트랜잭션을 처리합니까?)에 따라 재구축이 필요할 수 있지만 '낮은 보안' 서버인 경우 위 사항을 확인해도 괜찮을 수 있습니다.
답변2
호스트를 다시 구축해야 합니다. 호스트에 대해 어떤 종류의 권한 상승 공격을 사용했는지 알 수 없으며 트로이 목마, 키로거 또는 루트킷이 설치되어 있지 않다고 절대적으로 확신할 수도 없습니다.
일단 손상되면 베어메탈에서 재구축하는 것 외에는 다른 옵션이 없습니다.
답변3
간단히 말해서, 서버를 재구축하겠습니다.
로컬 사용자에 대한 액세스 권한이 있는 경우(이제 Apache 사용자로 액세스 권한이 있는 경우) 로컬 공격을 실행할 수 있습니다. 따라서 전체 서버가 손상되었다는 점을 고려해야 합니다. 다른 서버도 확인해야 합니다.
어떤 배포판을 실행하고 있나요? rpm 기반인 경우 파일의 서명을 확인할 수 있습니다. 설치 CD를 부팅하고 rpm -V를 실행하여 패키지를 확인합니다.
답변4
여러분이 듣고 싶어할 내용이 아니라는 것을 알지만 데이터를 백업하고 서버를 다시 구축한 후 모든 데이터를 다시 가져오는 것이 좋습니다.
또한 다른 사이트를 통해 이 사이트가 해킹의 영향을 받는 유일한 사이트가 아닌지 확인하세요. 모든 서버의 스크립트가 한 명의 Apache 사용자( nodoby
/ www_data
/what-ever-your-distro-uses)로 실행되는 경우 한 사이트에 쓸 수 있는 모든 항목은 거의 확실하게 나머지 사이트에도 쓸 수 있습니다.
모든 비밀번호를 변경하는 것 외에도 서버의 모든 SSH 키가 다른 모든 서버에서 무효화되었는지 확인하고(즉, 개인 키만 삭제하는 대신 공개 키가 저장된 모든 위치에서 공개 키를 취소) 보유하고 있는 다른 시스템이 있는지 확인하세요. 해당 서버에/를 통해 비밀번호를 입력했거나 파일에 비밀번호를 저장한 경우 비밀번호가 변경되었습니다.