PHP 기반 CMS를 실행하는 해킹 된 웹 사이트를 정리하고 있습니다. 사이트에있는 모든 PHP 파일은 파일의 첫 번째 줄의 시작 부분에 삽입 된 다음 문자열했다 : (. 내가 명확성을 위해 base64로 문자열을 절단 한)sed가 bash 스크립트를 멈추게합니다.
<?php /**/ eval(base64_decode("aWYoZnVuY3Rpb25"));?>
을
내 목표는이를 제거하는 것입니다 bash 스크립트를 통한 문자열. 먼저 모든 파일을 반복 할 수 있는지 확인했습니다.
#!/bin/bash
# de-malware-ifier
for i in $(find ~/Sites/www.domain.com -name '*.php'); do
echo "file $i"
done
예상대로 작동하여 수백 개의 감염 파일의 파일 이름을 인쇄합니다.
난 후 교체 된 장소에 악 문자열을 각 파일에 대한 bash는 스크립트를 수정하려고 :#!/bin/bash
# de-malware-ifier
for i in $(find ~/Sites/www.domain.com -name '*.php'); do
echo "file $i"
evil='<?php /**/ eval(base64_decode("aWYoZnVuY3Rpb25"));?>'
sed 's/$evil//'
done
그러나,이 스크립트를 실행하면 첫 번째 파일에 달려 있습니다. 왜이 스크립트가 매달려 있으며, 내가 원하는 결과를주기 위해이 스크립트를 어떻게 수정해야합니까?
저는 Mac OSX입니다.
일반적으로 알고있는 변경 사항 *을 취소하면 서버 제어권을 다시 확보 할 수 없습니다. 공격자는 시스템을 "정리"한 후에 백도어 (또는 여러 개)를 설치하여 즉시 다시 허용 할 수 있습니다. 서버를 손상시킨 후 최상의 방법은 처음부터 다시 작성하거나 침입이 발생하기 전에 백업에서 복원하는 것입니다. [이 ServerFault 질문 및 답변] (http://serverfault.com/questions/6190/reinstall-after-a-root-compromise)을 참조하십시오. –
'for i in $ (command)'에 대해주의하십시오.이 구문을 피해야합니다. 자세한 내용은이 답변을 참조하십시오. http://stackoverflow.com/questions/19606864/ffmpeg-in-a-bash-pipe/19607361#19607361 –
@GordonDavisson 감사합니다.이 질문을 읽는 다른 사람들에게 유용한 팁입니다. 내 특정 경우에, www.domain.com은 어쨌든 오프라인으로 전환하기 위해 기한이 지난 상태였습니다. 나는 해킹 된 서버 복구보다는 기본적인 bash 스크립팅에 대한 학습 과제로 간주하고있다. – unruthless