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&Ccedil;&Atilde;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&aacute;rio de contacto desprotegido na conta <b>$fuser</b>, mais exactamente no dom&iacute;nio <b>$conta</b> .<br><br>";
$msg = $msg . "Para mitigar a situa&ccedil;&atilde;o foram retiradas as permiss&otilde;es ao ficheiro \"controllers/front/ContactController.php\" no referido alojamento. <br><br>";
$msg = $msg . "Antes de repor as permiss&otilde;es dever&aacute; implementar um sistema de \"Captcha\" (ou equivalente) nos formul&aacute;rios dado que esta situa&ccedil;&atilde;o pode dar origem a bloqueio dos nossos endere&ccedil;os IP em diversas listas o que resultar&aacute; em dificuldades no envio de mensagens para si e para outros clientes.<br><br>";
$msg = $msg . "Verifique tamb&eacute;m se o Prestashop est&aacute; devidamente actualizado dado haver um bugfix exactamente para esta situa&ccedil;&atilde;o, em que mesmo com captcha activo &eacute; poss&iacute;vel injectar email no formul&aacute;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&Ccedil;&Atilde;O !!! - VPS/CLOUD/DEDICATED GERIDO - servidor $server !!!! <BR><BR>";

$msg = $msg . "Estimado(a) Cliente,<br><br>Detectamos a presen&ccedil;a de ficheiros maliciosos e/ou c&oacute;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&ccedil;&atilde;o removemos os referidos scripts mas dever&aacute; verificar a conta em quest&atilde;o para a exist&ecirc;ncia de outros ficheiros que possam ter sido injectados com c&oacute;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&aacute;tica pode dar origem a bloqueio dos nossos endere&ccedil;os IP em diversas listas o que resultar&aacute; 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&Ccedil;&Atilde;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&aacute;rio de contacto desprotegido na conta <b>$fuser</b>, mais exactamente no dom&iacute;nio <b>$conta</b> .<br><br>";
$msg = $msg . "Para mitigar a situa&ccedil;&atilde;o foram retiradas as permiss&otilde;es &agrave; pasta  \"components/com_contact\" no referido alojamento. <br><br>";
$msg = $msg . "Antes de repor as permiss&otilde;es dever&aacute; implementar um sistema de \"Captcha\" (ou equivalente) nos formul&aacute;rios dado que esta situa&ccedil;&atilde;o pode dar origem a bloqueio dos nossos endere&ccedil;os IP em diversas listas o que resultar&aacute; 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&Ccedil;&Atilde;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&aacute;rio de contacto desprotegido na conta <b>$fuser</b>, mais exactamente no dom&iacute;nio <b>$conta</b> .<br><br>";
$msg = $msg . "Para mitigar a situa&ccedil;&atilde;o foram retiradas as permiss&otilde;es &agrave; pasta  \"wp-content/plugins/contact-form-7\" no referido alojamento. <br><br>";
$msg = $msg . "Antes de repor as permiss&otilde;es dever&aacute; implementar um sistema de \"Captcha\" (ou equivalente) nos formul&aacute;rios dado que esta situa&ccedil;&atilde;o pode dar origem a bloqueio dos nossos endere&ccedil;os IP em diversas listas o que resultar&aacute; 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&Ccedil;&Atilde;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&aacute;rio de registo em newsletter desprotegido na conta <b>$fuser</b>, mais exactamente no dom&iacute;nio <b>$conta</b> .<br><br>";
$msg = $msg . "Para mitigar a situa&ccedil;&atilde;o foram retiradas as permiss&otilde;es &agrave; pasta  \"wp-content/plugins/wysija-newsletters\" no referido alojamento. <br><br>";
$msg = $msg . "Antes de repor as permiss&otilde;es dever&aacute; implementar um sistema de \"Captcha\" (ou equivalente) nos formul&aacute;rios dado que esta situa&ccedil;&atilde;o pode dar origem a bloqueio dos nossos endere&ccedil;os IP em diversas listas o que resultar&aacute; 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&Ccedil;&Atilde;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&aacute;rio de registo desprotegido na conta <b>$fuser</b>, mais exactamente no dom&iacute;nio <b>$conta</b> .<br><br>";
$msg = $msg . "Para mitigar a situa&ccedil;&atilde;o foram retiradas as permiss&otilde;es &agrave; pasta  \"components/com_users\" no referido alojamento. <br><br>";
$msg = $msg . "Antes de repor as permiss&otilde;es dever&aacute; implementar um sistema de \"Captcha\" (ou equivalente) nos formul&aacute;rios dado que esta situa&ccedil;&atilde;o pode dar origem a bloqueio dos nossos endere&ccedil;os IP em diversas listas o que resultar&aacute; 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);

}