met php naar mailserver wat kan er mis gaan [security]

kenikavanbis

Terugkerende gebruiker
Lid geworden
22 mei 2007
Berichten
2.189
De de opzet is connecteren naar een mailserver ... email x
header lezen en verwijderen van alle ongewenste.

Nu het is de bedoeling dat mensen hun email gegevens er kunnen ingeven en de scan laten uitvoeren.
Het is state-less resultaat niets wordt er bij gehouden dus post en result en opties om in te stellen.

Het is om mensen de mogelijkheid te geven bigtechmailkak te verwijderen met één knop.

Het is de bedoeling dat de scripts niet kunnen aangevallen worden door een crimele mailserver met andere bedoelingen.

suggesties mogelijk openingen voor invaders ?:
de bedoeling is al om headers zoals sender te valideren binnen een bepaald formaat.


een deel van de code: {het is een deel van een veel groter geheel}
PHP:
...
public function previewForToDeleteEmails(&$view,$start=1,$length,$template = 'MyMailCleanup_item',$loc = 'Amail'){
    $this->validateInputs();
    if(isset($this->MyOpenMailBox)&&$headers = imap_check($this->MyOpenMailBox)){
        $endnr =$headers->Nmsgs;
        print '<br><br>previewForToDeleteEmails'.$endnr;
        if($mails =imap_fetch_overview($this->MyOpenMailBox,"$start:$endnr",0)){
            foreach($mails as $mailnr => $overview){
                print '<br>select'.$mailnr.'<br>';
                if(++$mailnr>=0 && $Actiefmailheader = imap_header($this->MyOpenMailBox,$overview->msgno)){
                    //$Actiefmailheader = imap_header($this->MyOpenMailBox,$mailnr);
                    $c=[];
                    $c['class']= $this->MustEmailDeleteFromHead($Actiefmailheader)?'DELETE ERROR':'OK NOT';
                    $c['mailnr']= $overview->msgno .' /./ teller'.$mailnr;
                    $c['from']=$overview->from;
                    $c['date']=$overview->date;
                    $c['subject']=$overview->subject;
                    $c['header']='<pre>'.print_r($Actiefmailheader,true).'</pre>';
                    $c['sender']='<pre>'.print_r($Actiefmailheader->sender,true).'</pre>';
                    $c['STATUS']='ok';

                    /*if(isset($header->sender[0])){
                        $this->printHeader($Actiefmailheader);
                    }else{
                        print '<pre>'.print_r($Actiefmailheader,true).print_r($mailcontent,true).'</pre>';
                    }*/

                    print $view->get_Templateclone($loc,$template,$c);
                }
            }
        }
    }
}
...
 
Dus als ik het goed begrijp. Dit werkt dus enkel als je op dit systeem inlogt? En dan heb ik die email al lang gezien in mijn client en verwijderd.
 
Ja en nee het is wel iets complexer . Hij zal kijken naar links in de mail en headers verzenders. Op de achtergrond zal er een ratio berekend worden om een schaal te berekenen . Als het domein is bvb alles wat het domein heeft verstuurt of alles van één imail en dat kunnen honderden of duizende zijn. Er bestaat ook de mogelijkheid als banken erbij betrokken zijn de banken een lijst van domeinen kan bemachtigen die zich voor hen uitgeven maar zover ben ik nog niet. Men geeft gewoon de logingegeven in en de server maakt connectie naar de mailserver en kuist op. Ik heb bandbreedte over en zou mensen willen laten gebruik maken van enkele toffe scripts van mij . Invadion is wat ik liever niet wil dus het gaat om beveiligen van mijn eigen domein en php server voor mogelijke indringing wat dus wel zou kunnen en dat verhinderen is echt noodzakelijk. Maar mogelijks denk ik aan iets niet daarom de open vraag.
 
Nu het is de bedoeling dat mensen hun email gegevens er kunnen ingeven en de scan laten uitvoeren.
Men geeft gewoon de logingegeven in en de server maakt connectie naar de mailserver en kuist op.

Begrijp ik dat jouw code gaat inloggen op de inbox van de website bezoeker?? Ha, dat is wel het laatste wat ik wil. Mijn mailbox inlog aan een onbekende geven en afvragen wat er werkelijk gebeurt. Is het geloofwaardig dat er niets met persoonlijke info in de email body gebeurt??
Een kenmerk van phishing is dat er gevraagd wordt naar persoonlijke gegevens zoals inlog gegevens:rolleyes:
 
  • Leuk
Waarderingen: Aar
Ja dat is op zich waar maar waarom bij google wel en bij mij niet . Het vertrouwen groeit wel van zelf dus ik zie het van zelf wel goed komen . Ik zelf zou het ook niet doen maar ik weet veel mensen die een scan wel zien zitten gewoon nog maar om mogelijk spyware virus oplichting te kunnen herkennen van ander emails.
 
In het kort probeer je dus een spamfilter te bouwen op basis van individuele mailboxen. Misschien dat er een markt voor is. Maar heb je ook al gedacht aan MFA. Jouw idee zal enkel werken als er geen MFA op de mailboxen zit. Naar mijn idee los je dan het ene probleem op door een ander (mogelijk veel groter) probleem te introduceren.

In mijn dagelijkse praktijk zie ik 2 soorten rommel binnenkomen bij klanten. Dat is ten eerste inderdaad allerlei obscure partijen die proberen te phishen of spammen. Wordt redelijk goed gefilterd door de meeste providers. De tweede categorie is het feit dat de gemiddelde medewerker zijn bestellingen doet via zijn zakelijke mailbox. Die zit vervolgens vol met de meest waanzinnige nieuwsbrieven. Zou al helpen als mensen gewoon vaker op de unsubscribe link klikken. Dat werkt best prima tegenwoordig.
 
bump , nog geen enkel antwoord op de vraag welke security lekken zouden er mogelijk zijn [[[=> lost van remote execute van scripts die erin zitten . De urls die mogelijks sessiesid laten uitbreken . Is er echt niemand met die kennis die mij enkele onbekende richtingen kan uitduwen . (de host word eerst vast in object gestopt en kan niet wijzigen tijdens run)
 
@kenikavanbis
Als het om mails versturen gaat. Waarom gebruik je niet gewoon phpMailer of Swiftmailer? Kant en klaar, communiceert met SMTP-server die je wilt, eenvoudig uit te breiden, en via Composer binnen te hengelen en te updaten. Zo bespaar je jezelf met 'het opnieuw uitvinden van het wiel'.

En anders is dit ook een toffe class:
 
Laatst bewerkt:
@kenikavanbis
Als het om mails versturen gaat. Waarom gebruik je niet gewoon phpMailer of Swiftmailer? Kant en klaar, communiceert met SMTP-server die je wilt, eenvoudig uit te breiden, en via Composer binnen te hengelen en te updaten. Zo bespaar je jezelf met 'het opnieuw uitvinden van het wiel'.

En anders is dit ook een toffe class:
Ik heb gegaan voor low low en geen enkele ander lib daar er geen lib is die hetzelfde bied .

U ziet het verkeerd
iemand komt naar een pagina
pagina => script=>connectie=> mailserver of deamoncrimenele server =>
emails van inbox of ....<=
=>script=>verwerking en verplaatsen of verwijderen of [redirect handelers] voor botverwerkers


Iedereen zou deze pagina publiek kunnen bezoeken en gegeven achterlaten en laten verwerken.
(server in en user mailbox ect... )

Nu het is die laaste die criminele servers met de onbekende factor die ik wil detecteren en dus verhinderen van uitvoeren zodat mijn eigen systeem niet gecompromiteert wordt of kan worden .
Zo zullen er al veel uitvallen door de extentie (potentieel verdacht is verdacht en onmiddelijke no go)
maar dan zijn er twijfelgevallen die dan erdoor zouden kunnen raken die ik dus moet zien te detecteren zoals ik dus ook een injectie firewall heb gebouwt op get en post van mijn site ook voor het benaderen van externe connecties(new).
 
@kenikavanbis .Die criminelen zijn al lang een paar stappen verder. Onmogelijk om de afzenders te blokken omdat ze steeds vaker de diensten van Google, Microsoft, etc. gebruiken. Die kun je onmogelijk blokkeren zonder ook legitieme afzenders tegen te houden.

Het grootste security probleem zit niet in je script. Het zit naar mijn idee in het feit dat je volledig om MFA heen moet gaan werken om dit te kunnen doen. Je verruilt dus het ene beveiligingsprobleem voor een ander.

Als je een simpel filter wilt. Dan zet je gewoon een blok op alle IP adressen buiten Europa/Amerika. Eventueel aanvullen met de IP reeksen van ISP's.
 
Dan zet je gewoon een blok op alle IP adressen buiten Europa/Amerika. Eventueel aanvullen met de IP reeksen van ISP's.
Vroeger heb ik een ip2geo functie gemaakt die de data van IPLocate gebruikt. Deze functie heb ik bijna 2 jaar laten meedraaien in een contactformulier. Ook uit sommige Westerse landen (bijv. Frankrijk) komt veel spam.

Bij IPLocate krijg je zonder registratie gratis 50 requests/dag. Na registratie krijg je een API key voor gratis 1000 requests/dag.

PHP:
// $ip  is verplicht
function ip2geo ($ip = "", $item = "", $apikey = "") {
    if (filter_var($ip, FILTER_VALIDATE_IP) === false) return null;
    $url  = "https://www.iplocate.io/api/lookup/".$ip."/json";
    $url .= "?apikey=".$apikey."&callback=";
    try {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        curl_setopt($ch, CURLOPT_HEADER, FALSE);
        $response = curl_exec($ch);
        curl_close($ch);
        $data = json_decode($response);
        $_arr = (array) $data;
        $_item = trim(strval($item));
    } catch (Exception $e) {
        return null;
    }
    if (empty($_arr)) return null;
    if (array_key_exists('error', $_arr)) return null;
    if ($_item == "") return $_arr;
    if (array_key_exists($_item, $_arr)) return $_arr[$_item];
    return null;
}

// test.
$ipAddr = "101.203.172.24";
$result = ip2geo ($ipAddr, "", "");
echo "<p><code><pre>";
print_r ($result);
echo "</pre></code></p>";

Eenvoudig opzetje

PHP:
// api key, 1000 gratis requests/dag na registratie
$apiKey = "";

// ip adres van de client
$ipAddr = $_SERVER['REMOTE_ADDR'];

// toegestane 2-letter ISO landcodes
$geoCC = "NL,BE,LU,DE";

$result = ip2geo ($ipAddr, "country_code", $apiKey);
if ($ipAddr == "127.0.0.1") {
    echo "localhost niet blokkeren";
} elseif (is_null($result) || empty($result)) {
    echo "Geen data beschikbaar";
} elseif (stripos($geoCC, $result) === false) {
    echo "Landcode " . $result . " blokkeren.";
} else {
    echo "Landcode " . $result . " niet blokkeren.";
}
 
In jouw andere topic #1 lees ik


Transparant is alles niet meer. Ik blijf ver weg van deze website.
Ik begrijp u maar bij was het bewust http en nu https op alle servers. Ik had enkele http die mij veel infromatie bezorgen omdat alles met sleutels en door de verschillende calls naar de server waar ik niet veel publiek wil vertellen . Die calls geven dan een duidelijk beeld over de gebruiker en de eventuele tussenliggende al dan niet criminele man at the midle die dan door subtiele js die niet wordt geactiveert een melding zichtbaar dat het niet veilig is . Het is zelfs onmogelijk om dan te versturen.
Ik verwijs hier naar eprogrammeurs u niet onbekend waar mensen ook een dergelijk systeem uit de doeken deden.Nu google gebruikt die techniek ook .
Een site met een bot die elke verzonden waarde valideert ... ELKE = ELKE zonder uitzonderingen en errors zijn subtiel grappig of vals een valse error legt een lont die dan kan aanstoken maar die je dan ziet aankomen en niet explosief in een zandbak. Ben ik veilig zeker niet maar veiliger of andere labiele systemen op de markt zeker.

PS check php8 die verwacht bij post een extra lijn voor curl (komt van see url de engelse dubbelzinnigheid)
 
Gaat het nu om je vraag "De de opzet is connecteren naar een mailserver" of wil je gewoon de grote tech bedrijven crimineel noemen :p Internet opzeggen is een oplossing. Een security bedrijf inhuren kan ook.
 
  • Leuk
Waarderingen: Aar
Tja niet dat ik veel antwoorden verwachte die iets of wat ontopic waren maar ... ik probeer voor de mensen die een poging tot informatie toch te beantwoorden uit beleefdheid .(ik heb wel degelijk nuttige stukken gevonden)

De topic of vraag is of men door een criminele server die dan geen mailserver is . waar ik zou naar connecteren alsof het wel een mailserver is de verwerkende server kan besmetten of dat er over die zelfe connectie zou kunnen ingebroken worden als die open ligt . En ja ik leg hier de lat wel erg hoog en het is een beetje naar het paranoide af maar toch is het niet de bedoeling dat mijn site eruitvliegt omdat ik mensen toelaat hun mails te scannen op invaders . Of mensen die te veel reclame maken er niet zo goed van af komen en all hun mails ongezien verwijderd worden . Ik heb ook enkele bedrijven waar ik verplicht wordt mijn email aan te geven voor een gratis website intussen sturen zij meer mails dan dat ik wil ontvangen en ik heb echt geen zin om deze te lezen en of triggers te laten uitvoeren . Ik heb nog niet zo onmiddelijk exploits gevonden dus zou het relatief veilige phpcode moeten zijn.Dus meevaller als iemand toch iets mocht opmerken suggestie opmerking altijd welkom.

ps die http is voor software die met ca is ondertekend en die intern sleutels heeft dus . Ik betreur nog altijd dat anderen mij dwingen tot aanpassen waar ik het niet nodig acht . en wat met google dat ze eens starten met mijn gewonnen prijs uit te betalen.
 
Laatst bewerkt:
Probleem waar je tegenaan loopt is dat je niet 1 enkel stukje code kunt pakken en je dan afvragen of de oplossing veilig is. Het is namelijk vaak een combinatie van factoren waardoor er ingebroken kan worden. Dus zul je naar het geheel van de oplossing (incl. de server waar alles op draait, etc.) moeten gaan kijken.

Als je wilt weten wat er mogelijk is, dan zit er uiteindelijk niets anders op dan de RFC's van de gebruikte protocollen te gaan lezen en begrijpen. Vervolgens moet je gaan kijken in hoeverre de commando's e.d. zich houden aan de RFC's. Dat is de enige manier om te weten of hetgeen je bang voor bent ook zou kunnen gebeuren.
 
  • Leuk
Waarderingen: Aar
Terug
Bovenaan Onderaan