누군가 내 서버의 모든 WordPress 인스턴스에 대량의 악성 코드를 배치했습니다. 두 번째. (적어도) 모든 js 파일이 수정됩니다. 하지만 패턴이 있습니다. 코드는 항상 다음과 같습니다.
/*[file-name]*/[malicious code]/*file-name*/
grep 및 sed를 사용하여 이러한 조각을 제거할 수 있는 방법이 있습니까? 이전 공격에서 유사한 코드가 파일에 배치되었으나 다음을 사용하여 제거했습니다.
grep -rnwl './' -e "[/*]d754948f7cc08347e64716505bd652ae[*/].*[/*]d754948f7cc08347e64716505bd652ae[*/]" | xargs sed -i "s/[/*]d754948f7cc08347e64716505bd652ae[*/].*[/*]d754948f7cc08347e64716505bd652ae[*/]//g"
"d754948f7cc08347e64716505bd652ae"와 같은 고정 문자열 대신 각 파일 이름을 사용하도록 이 표현식을 수정하는 방법이 있습니까?
답변1
단계별로 최종 코드를 생성합니다. 먼저 모든 js 파일을 찾습니다.
find <project_dir> -type f -name '*.js'
그런 다음 다음 파일을 반복합니다.
find <project_dir> -type f -name '*.js' | while read file_path; do
# Code here run once for every file
done
그런 다음 파일 이름을 사용하여 패턴을 생성하고 이를 사용하여 sed
파일에서 악성 코드를 제거합니다.
find <project_dir> -type f -name '*.js' | while read file_path; do
file_name=$(basename "$file_path")
pattern="/\*$file_name\*/.*/\*$file_name\*/"
sed -ri "s:$pattern::g" "$file_path"
done
몇 가지 참고사항:
- 0단계는 파일을 백업하는 것입니다.
- 검색 패턴에 이미 "/"가 있어서 혼란스러울 수 있기 때문에 대신
sed
명령을 사용 합니다 ."s:$pattern::g"
"s/$pattern//g"
sed
- 이 코드는 공백이 포함된 파일 이름을 처리합니다. 적어도 저는 이를 처리하려고 합니다.