| Current File : //scripts/notifica |
#!/usr/local/cpanel/3rdparty/bin/perl
use MIME::Lite;
use Cpanel::SafetyBits ();
use Cpanel::AcctUtils ();
use Cpanel::PublicAPI ();
use Cpanel::LiveAPI ();
$server = `hostname`;
chomp($server);
$tipo = shift;
$conta = shift;
if (!($tipo =~ /^(prestashop|joomlac|cf7|joomlar|script|mail|wysija)$/)) {
print "\n\nUsage: /scripts/notifica [type] [account]/[email]\n\n";
print "Type must be:\n";
print "\tprestashop = prestashop contact form without captcha\n";
print "\tcf7 = Wordpress contact form 7 without captcha\n";
print "\twysija = Wordpress Newsletter module without captcha\n";
print "\tjoomlac = joomla contact form without captcha\n";
print "\tjoomlar = joomla register form without captcha\n";
print "\tmail = compromised mail account\n";
exit;
}
if ($conta eq "") {
print "\nNEED MORE DATA\n";
print "Usage: /scripts/notifica [type] [account]/[email]\n";
print "Account cannot be empty\n\n";
print "Account = domain / email = email account\n\n";
exit;
}
if ($tipo eq "prestashop" ) {
$msg = "";
my $owner = Cpanel::AcctUtils::getdomainowner( $conta, { 'default' => '' } );
if ( !$owner ) {
die "Cannot find the owner of $owner, try rebuilding /etc/userdomains first with /usr/local/cpanel/scripts/updateuserdomains";
}
my $pubapi = Cpanel::PublicAPI->new( 'usessl' => '0');
my $res = $pubapi->whm_api('domainuserdata', "domain=$conta");
my $owner = $res->{'data'}->{'userdata'}->{'owner'};
my $fuser = $res->{'data'}->{'userdata'}->{'user'};
my $contacto = $res->{'data'}->{'userdata'}->{'serveradmin'};
my $homedir = $res->{'data'}->{'userdata'}->{'homedir'};
if (($owner ne "root") and ($owner ne "ptispapi")) {
$msg = "ATENÇÃO !!! - ENVIAR PARA CONTA DE REVENDA - <strong> $owner </strong> - servidor $server !!!! <BR><BR>";
} else {
$msg = "Conta nao pertence a revenda. Cliente: $owner ( pesquisar WHMCS ) <br><br>";
}
$msg = $msg . "Estimado(a) Cliente,<br><br>Foi detectado o envio massivo de spam a partir de um formulário de contacto desprotegido na conta <b>$fuser</b>, mais exactamente no domínio <b>$conta</b> .<br><br>";
$msg = $msg . "Para mitigar a situação foram retiradas as permissões ao ficheiro \"controllers/front/ContactController.php\" no referido alojamento. <br><br>";
$msg = $msg . "Antes de repor as permissões deverá implementar um sistema de \"Captcha\" (ou equivalente) nos formulários dado que esta situação pode dar origem a bloqueio dos nossos endereços IP em diversas listas o que resultará em dificuldades no envio de mensagens para si e para outros clientes.<br><br>";
$msg = $msg . "Verifique também se o Prestashop está devidamente actualizado dado haver um bugfix exactamente para esta situação, em que mesmo com captcha activo é possível injectar email no formulário : https://github.com/PrestaShop/PrestaShop/pull/8168 <br><br>";
$to = "abusecc\@ptisp.pt";
$msg1 = MIME::Lite->new(
From =>'Malicious script notifier <message@ptisp.pt>',
To =>$to,
Subject =>"Conta $owner ( $conta ) - Formularios desprotegidos - Envio de SPAM",
Data =>$msg,
Type =>'text/html'
);
$user = "message\@ptisp.systems";
$pass = "geicu7ohy4utaiceiN6eGe";
$msg1->send('smtp', 'mta.ptisp.systems', AuthUser=>$user, AuthPass=>$pass, Timeout=>60,);
} elsif ($tipo eq "script" ) {
$msg = "";
$msg = "ATENÇÃO !!! - VPS/CLOUD/DEDICATED GERIDO - servidor $server !!!! <BR><BR>";
$msg = $msg . "Estimado(a) Cliente,<br><br>Detectamos a presença de ficheiros maliciosos e/ou código injectado na conta <b>$conta</b> ( servidor $server ) que estariam a ser usados para ataques ( DoS/Bruteforce ) ou envios massivos de SPAM.<br><br>";
$msg = $msg . "Para mitigar a situação removemos os referidos scripts mas deverá verificar a conta em questão para a existência de outros ficheiros que possam ter sido injectados com código malicioso. Sugerimos ainda que efectuem um update/upgrade a todo o software usado no referido alojamento dado este ser um comum vector para este tipo de ataques.<br><br>";
$msg = $msg . "De referir que esta prática pode dar origem a bloqueio dos nossos endereços IP em diversas listas o que resultará em dificuldades no envio de mensagens para si e para outros clientes.<br><br>";
$to = "abuse\@ptisp.pt";
$msg = MIME::Lite->new(
From =>'Malicious script notifier <message@ptisp.pt>',
To =>$to,
Subject =>"Conta $owner - Scripts maliciosos detectados ",
Data =>$msg,
Type =>'text/html'
);
$user = "message\@ptisp.systems";
$pass = "geicu7ohy4utaiceiN6eGe";
$msg->send('smtp', 'mta.ptisp.systems', AuthUser=>$user, AuthPass=>$pass, Timeout=>60,);
} elsif ($tipo eq "joomlac" ) {
$msg = "";
my $owner = Cpanel::AcctUtils::getdomainowner( $conta, { 'default' => '' } );
if ( !$owner ) {
die "Cannot find the owner of $owner, try rebuilding /etc/userdomains first with /usr/local/cpanel/scripts/updateuserdomains";
}
my $pubapi = Cpanel::PublicAPI->new( 'usessl' => '0');
my $res = $pubapi->whm_api('domainuserdata', "domain=$conta");
my $owner = $res->{'data'}->{'userdata'}->{'owner'};
my $fuser = $res->{'data'}->{'userdata'}->{'user'};
my $contacto = $res->{'data'}->{'userdata'}->{'serveradmin'};
my $homedir = $res->{'data'}->{'userdata'}->{'homedir'};
if (($owner ne "root") and ($owner ne "ptispapi")) {
$msg = "ATENÇÃO !!! - ENVIAR PARA CONTA DE REVENDA - <strong> $owner </strong> - servidor $server !!!! <BR><BR>";
} else {
$msg = "Conta nao pertence a revenda. Cliente: $owner ( pesquisar WHMCS ) <br><br>";
}
$msg = $msg . "Estimado(a) Cliente,<br><br>Foi detectado o envio massivo de spam a partir de um formulário de contacto desprotegido na conta <b>$fuser</b>, mais exactamente no domínio <b>$conta</b> .<br><br>";
$msg = $msg . "Para mitigar a situação foram retiradas as permissões à pasta \"components/com_contact\" no referido alojamento. <br><br>";
$msg = $msg . "Antes de repor as permissões deverá implementar um sistema de \"Captcha\" (ou equivalente) nos formulários dado que esta situação pode dar origem a bloqueio dos nossos endereços IP em diversas listas o que resultará em dificuldades no envio de mensagens para si e para outros clientes.<br><br>";
$to = "abuse\@ptisp.pt";
$msg1 = MIME::Lite->new(
From =>'Malicious script notifier <message@ptisp.pt>',
To =>$to,
Subject =>"Conta $owner ( $conta ) - Formularios desprotegidos - Envio de SPAM",
Data =>$msg,
Type =>'text/html'
);
$user = "message\@ptisp.systems";
$pass = "geicu7ohy4utaiceiN6eGe";
$msg1->send('smtp', 'mta.ptisp.systems', AuthUser=>$user, AuthPass=>$pass, Timeout=>60,);
} elsif ($tipo eq "cf7" ) {
$msg = "";
my $owner = Cpanel::AcctUtils::getdomainowner( $conta, { 'default' => '' } );
if ( !$owner ) {
die "Cannot find the owner of $owner, try rebuilding /etc/userdomains first with /usr/local/cpanel/scripts/updateuserdomains";
}
my $pubapi = Cpanel::PublicAPI->new( 'usessl' => '0');
my $res = $pubapi->whm_api('domainuserdata', "domain=$conta");
my $owner = $res->{'data'}->{'userdata'}->{'owner'};
my $fuser = $res->{'data'}->{'userdata'}->{'user'};
my $contacto = $res->{'data'}->{'userdata'}->{'serveradmin'};
my $homedir = $res->{'data'}->{'userdata'}->{'homedir'};
if (($owner ne "root") and ($owner ne "ptispapi")) {
$msg = "ATENÇÃO !!! - ENVIAR PARA CONTA DE REVENDA - <strong> $owner </strong> - servidor $server !!!! <BR><BR>";
} else {
$msg = "Conta nao pertence a revenda. Cliente: $owner ( pesquisar WHMCS ) <br><br>";
}
$msg = $msg . "Estimado(a) Cliente,<br><br>Foi detectado o envio massivo de spam a partir de um formulário de contacto desprotegido na conta <b>$fuser</b>, mais exactamente no domínio <b>$conta</b> .<br><br>";
$msg = $msg . "Para mitigar a situação foram retiradas as permissões à pasta \"wp-content/plugins/contact-form-7\" no referido alojamento. <br><br>";
$msg = $msg . "Antes de repor as permissões deverá implementar um sistema de \"Captcha\" (ou equivalente) nos formulários dado que esta situação pode dar origem a bloqueio dos nossos endereços IP em diversas listas o que resultará em dificuldades no envio de mensagens para si e para outros clientes.<br><br>";
$to = "abuse\@ptisp.pt";
$msg1 = MIME::Lite->new(
From =>'Malicious script notifier <message@ptisp.pt>',
To =>$to,
Subject =>"Conta $owner ( $conta ) - Formularios desprotegidos - Envio de SPAM",
Data =>$msg,
Type =>'text/html'
);
$user = "message\@ptisp.systems";
$pass = "geicu7ohy4utaiceiN6eGe";
$msg1->send('smtp', 'mta.ptisp.systems', AuthUser=>$user, AuthPass=>$pass, Timeout=>60,);
} elsif ($tipo eq "wysija" ) {
$msg = "";
my $owner = Cpanel::AcctUtils::getdomainowner( $conta, { 'default' => '' } );
if ( !$owner ) {
die "Cannot find the owner of $owner, try rebuilding /etc/userdomains first with /usr/local/cpanel/scripts/updateuserdomains";
}
my $pubapi = Cpanel::PublicAPI->new( 'usessl' => '0');
my $res = $pubapi->whm_api('domainuserdata', "domain=$conta");
my $owner = $res->{'data'}->{'userdata'}->{'owner'};
my $fuser = $res->{'data'}->{'userdata'}->{'user'};
my $contacto = $res->{'data'}->{'userdata'}->{'serveradmin'};
my $homedir = $res->{'data'}->{'userdata'}->{'homedir'};
if (($owner ne "root") and ($owner ne "ptispapi")) {
$msg = "ATENÇÃO !!! - ENVIAR PARA CONTA DE REVENDA - <strong> $owner </strong> - servidor $server !!!! <BR><BR>";
} else {
$msg = "Conta nao pertence a revenda. Cliente: $owner ( pesquisar WHMCS ) <br><br>";
}
$msg = $msg . "Estimado(a) Cliente,<br><br>Foi detectado o envio de spam a partir de um formulário de registo em newsletter desprotegido na conta <b>$fuser</b>, mais exactamente no domínio <b>$conta</b> .<br><br>";
$msg = $msg . "Para mitigar a situação foram retiradas as permissões à pasta \"wp-content/plugins/wysija-newsletters\" no referido alojamento. <br><br>";
$msg = $msg . "Antes de repor as permissões deverá implementar um sistema de \"Captcha\" (ou equivalente) nos formulários dado que esta situação pode dar origem a bloqueio dos nossos endereços IP em diversas listas o que resultará em dificuldades no envio de mensagens para si e para outros clientes.<br><br>";
$to = "abuse\@ptisp.pt";
$msg1 = MIME::Lite->new(
From =>'Malicious script notifier <message@ptisp.pt>',
To =>$to,
Subject =>"Conta $owner ( $conta ) - Formularios desprotegidos - Envio de SPAM",
Data =>$msg,
Type =>'text/html'
);
$user = "message\@ptisp.systems";
$pass = "geicu7ohy4utaiceiN6eGe";
$msg1->send('smtp', 'mta.ptisp.systems', AuthUser=>$user, AuthPass=>$pass, Timeout=>60,);
} elsif ($tipo eq "joomlar" ) {
$msg = "";
my $owner = Cpanel::AcctUtils::getdomainowner( $conta, { 'default' => '' } );
if ( !$owner ) {
die "Cannot find the owner of $owner, try rebuilding /etc/userdomains first with /usr/local/cpanel/scripts/updateuserdomains";
}
my $pubapi = Cpanel::PublicAPI->new( 'usessl' => '0');
my $res = $pubapi->whm_api('domainuserdata', "domain=$conta");
my $owner = $res->{'data'}->{'userdata'}->{'owner'};
my $fuser = $res->{'data'}->{'userdata'}->{'user'};
my $contacto = $res->{'data'}->{'userdata'}->{'serveradmin'};
my $homedir = $res->{'data'}->{'userdata'}->{'homedir'};
if (($owner ne "root") and ($owner ne "ptispapi")) {
$msg = "ATENÇÃO !!! - ENVIAR PARA CONTA DE REVENDA - <strong> $owner </strong> - servidor $server !!!! <BR><BR>";
} else {
$msg = "Conta nao pertence a revenda. Cliente: $owner ( pesquisar WHMCS ) <br><br>";
}
$msg = $msg . "Estimado(a) Cliente,<br><br>Foi detectado o envio massivo de spam a partir de um formulário de registo desprotegido na conta <b>$fuser</b>, mais exactamente no domínio <b>$conta</b> .<br><br>";
$msg = $msg . "Para mitigar a situação foram retiradas as permissões à pasta \"components/com_users\" no referido alojamento. <br><br>";
$msg = $msg . "Antes de repor as permissões deverá implementar um sistema de \"Captcha\" (ou equivalente) nos formulários dado que esta situação pode dar origem a bloqueio dos nossos endereços IP em diversas listas o que resultará em dificuldades no envio de mensagens para si e para outros clientes.<br><br>";
$to = "abuse\@ptisp.pt";
$msg1 = MIME::Lite->new(
From =>'Malicious script notifier <message@ptisp.pt>',
To =>$to,
Subject =>"Conta $owner ( $conta ) - Formularios desprotegidos - Envio de SPAM",
Data =>$msg,
Type =>'text/html'
);
$user = "message\@ptisp.systems";
$pass = "geicu7ohy4utaiceiN6eGe";
$msg1->send('smtp', 'mta.ptisp.systems', AuthUser=>$user, AuthPass=>$pass, Timeout=>60,);
} elsif ($tipo eq "mail" ) {
$cmd = "/scripts/chmailpass $conta";
system($cmd);
$cmd = "doveadm auth cache flush";
system($cmd);
$cmd = "service exim restart";
system($cmd);
$cmd = "exiqgrep -i -f $conta | xargs --no-run-if-empty exim -Mrm";
system($cmd);
$cmd = "exiqgrep -z -i | xargs --no-run-if-empty exim -Mrm";
system($cmd);
$cmd = "exiqgrep -i -r $conta | xargs --no-run-if-empty exim -Mrm";
system($cmd);
}