Nowe posty

Autor Wątek: Shell i dostep do cpuinfo  (Przeczytany 5992 razy)

Crusi

  • Gość
Shell i dostep do cpuinfo
« dnia: 2008-10-31, 19:44:27 »
Witam, posiadam konto shellowe na ktorym stoi serwer CS1.6. Od ostatniego updatu serwer wymaga odczytu z proc/cpuinfo, jednak ja niemam uprawnien (badz tego pliku niema wogole) na moim koncie i aktualnie niema admina i szybko nie bedzie zeby mogl to ustawic. Czy istnieje jakis sposob na zamontowanie jakiegos "falszywego" cpuinfo, tylko dla mojego konta, ewentualnie istnieje jakas mozliwosc na obejscie tego problemu? Z gory dziekuje za pomoc.

ZipoKing

  • Gość
Shell i dostep do cpuinfo
« Odpowiedź #1 dnia: 2008-11-01, 07:22:26 »
Mało prawdopodobne, aby system plików /proc nie był zamontowany w systemie. Sprawdź plik /etc/fstab czy istnieje odpowiedni wpis i jakie mu zostały przypisane uprawnienia.
Możliwym też jest iż twoje konto działa przez chroot'a (http://pl.wikipedia.org/wiki/Chroot).
Tak w jednym jak i drugim przypadku jako nie-administrator nic nie zrobisz. Nie możesz także zamontować samodzielnie tego systemu plików, ponieważ na to potrzebowałbyś zgody root'a (poprzez odpowiedni wpis w fstab)

Crusi

  • Gość
Shell i dostep do cpuinfo
« Odpowiedź #2 dnia: 2008-11-01, 07:39:51 »
# /etc/fstab: statyczna informacja o systemach plikow.
#
#
/dev/hda1 / ext3 errors=remount-ro 0 1
/dev/hda2 none swap sw 0 0
proc /proc proc defaults 0 0
/dev/fd0 /floppy auto user,noauto 0 0
/dev/cdrom /cdrom iso9660 ro,user,noauto 0 0
/dev/hda3 /root ext3 defaults 0 2
/dev/hda5 /tmp ext3 defaults,usrquota 0 2
/dev/hda6 /usr ext3 defaults,usrquota 0 2
/dev/hda7 /var ext3 defaults,usrquota 0 2
/dev/hda8 /var/log ext3 defaults 0 2
/dev/hda9 /home ext3 defaults,usrquota 0 2
Powyzej wklejam zawartosc fstab, niestety nigdzie nie widze wpisu o cpuinfo, jest tylko caly system /proc. Sam plik cpuinfo znalazlem, jednak nie mam praw nawet do odczytu, co ciekawe plik ma 0 bajtow. Czyli podsumowujac, nic nie moge zrobic?

Offline ultr

  • Users
  • Guru
  • *****
  • Wiadomości: 1177
    • Zobacz profil
Shell i dostep do cpuinfo
« Odpowiedź #3 dnia: 2008-11-01, 11:40:52 »
Pliki w katalogu /proc nie istnieją w rzeczywistości. To jedynie informacje udostępniane przez kernel przedstawione w formie drzewa katalogów. Więc rozmiar chyba zawsze jest tam 0, ale odczytując dany plik otrzymujesz odpowiednie informacje.

Jak rozumiem polecenie `cat /proc/cpuinfo` też zwraca błąd dostępu?
Pokaż jeszcze wyniki poleceń: `ls -la /`, `ls -la /proc/` i `mount`.

Ale jeśli nie masz dostępu, to bez praw admina nic nie zrobisz.

Jedyne co przychodzi mi na myśl: Jeżeli ten serwer CS jest zainstalowany lokalnie na twoim koncie, możesz  spróbować przerobić go tak, aby odpytywał inny plik. Otwórz binarkę w edytorze hex i spróbuj znaleźć string "/proc/cpuinfo". To 13 znaków, więc jeśli w takiej długości (lub mniejszej - resztę wypełniasz znakami 0) zmieścisz ścieżkę do swojego pliku, to powinno zadziałać. W swoim pliku wrzuć jakieś fałszywe info o cpu. Byle w miarę zgodne z rzeczywistym, bo w końcu skoro serwer czyta ten plik, to zapewne do czegoś używa tych informacji.

Crusi

  • Gość
Shell i dostep do cpuinfo
« Odpowiedź #4 dnia: 2008-11-01, 11:54:36 »
Co do zmiany tej sciezki w binarkach, to myslalem nad tym, nawet wiem gdzie to jest zaszyte, problem jest tylko w tym jak sciezke /home/users/teamsw/cpuinfo zmiescic w tych 11 znakach? Jest moze jakis skrot zeby zaczynal sciezke od razu od mojego konta?

Cytuj
Jak rozumiem polecenie `cat /proc/cpuinfo` też zwraca błąd dostępu?
Dokladnie tak

Co do wynikow
'ls -la /'

total 81
drwxr-xr-x  22 root root   1024 Dec  8  2006 .
drwxr-xr-x  22 root root   1024 Dec  8  2006 ..
drwxr-xr-x   3 root root   1024 Dec 18  2008 .mc
drwxr-xr-x   2 root root   2048 May 16  2006 bin
drwxr-x---   2 root root   1024 May 16  2006 boot
drwxr-xr-x   2 root root   1024 Jun 17  2003 cdrom
drwxr-xr-x  11 root root  21504 Oct  1 01:09 dev
drwxr-xr-x  61 root root   4096 Oct  1 01:09 etc
drwxr-xr-x   2 root root   1024 Jun 17  2003 floppy
drwxrws--x   5 root staff  4096 Oct  1 03:09 home
drwxr-xr-x   2 root root   1024 Jun 17  2003 initrd
drwxr-xr-x   7 root root   4096 May 16  2006 lib
drwx------   2 root root  12288 Jun 17  2003 lost+found
drwxr-xr-x   2 root root   1024 Feb  8  2002 mnt
drwxr-xr-x   2 root root   1024 Jun 17  2003 opt
dr-xr-xr-x  60 root root      0 Oct  1 03:08 proc
drwxr-x---   7 root root   4096 Mar  9  2004 root
drwxr-xr-x   2 root root   3072 May 16  2006 sbin
drwxr-xr-x   2 root root   1024 Apr  2  2006 sys
drwxrwx-wt   5 root root   8192 Oct  1 01:09 tmp
drwxr-xr-x  13 root root   4096 Oct  1 03:08 usr
drwxr-xr-x  15 root root   4096 Oct  1 03:08 var
lrwxrwxrwx   1 root root     26 Jun 17  2003 vmlinuz -> boot/vmlinuz-2.4.21-rtk6-2
lrwxrwxrwx   1 root root     25 Jun 17  2003 vmlinuz.old -> boot/vmlinuz-2.4.18-bf2.4
'ls -la /proc/'

total 2
dr-xr-xr-x  58 root   root    0 Oct  1 03:08 .
drwxr-xr-x  22 root   root 1024 Dec  8  2006 ..
dr-xr-x---   3 teamsw proc    0 Oct  2 21:13 1328
dr-xr-x---   3 teamsw proc    0 Oct  2 21:13 20752
dr-xr-x---   3 teamsw proc    0 Oct  2 21:13 21726
dr-xr-x---   3 teamsw proc    0 Oct  2 21:13 24756
dr-xr-x---   3 teamsw proc    0 Oct  2 21:13 5802
dr-xr-x---   3 teamsw proc    0 Oct  2 21:13 6217
dr-xr-x---   3 teamsw proc    0 Oct  2 21:13 7463
-r--r--r--   1 root   proc    0 Oct  2 21:13 apm
dr-xr-x---   4 root   proc    0 Oct  1 03:09 bus
-r--r-----   1 root   proc    0 Oct  2 21:13 cmdline
-r--r-----   1 root   proc    0 Oct  2 21:13 cpuinfo
-r--r-----   1 root   proc    0 Oct  2 21:13 devices
-r--r-----   1 root   proc    0 Oct  2 21:13 dma
dr-xr-xr-x   2 root   proc    0 Oct  2 21:13 driver
-r--r--r--   1 root   proc    0 Oct  2 21:13 execdomains
-r--r--r--   1 root   proc    0 Oct  2 21:13 fb
-r--r--r--   1 root   proc    0 Oct  2 21:13 filesystems
dr-xr-xr-x   3 root   proc    0 Oct  2 21:13 fs
dr-xr-xr-x   4 root   proc    0 Oct  2 21:13 ide
-r--r-----   1 root   proc    0 Oct  2 21:13 interrupts
-r--r-----   1 root   proc    0 Oct  2 21:13 iomem
-r--r-----   1 root   proc    0 Oct  2 21:13 ioports
dr-xr-xr-x  18 root   proc    0 Oct  2 21:13 irq
-r--------   1 root   proc    0 Oct  1 01:09 kmsg
-r--r-----   1 root   proc    0 Oct  2 21:13 ksyms
-r--r--r--   1 root   proc    0 Oct  2 21:13 loadavg
-r--r--r--   1 root   proc    0 Oct  2 21:13 locks
-r--r--r--   1 root   proc    0 Oct  2 21:13 meminfo
-r--r--r--   1 root   proc    0 Oct  2 21:13 misc
-r--r-----   1 root   proc    0 Oct  2 21:13 modules
lrwxrwxrwx   1 root   proc   11 Oct  2 21:13 mounts -> self/mounts
-rw-r--r--   1 root   proc  137 Oct  2 21:13 mtrr
dr-xr-x---   3 root   proc    0 Oct  2 21:13 net
-r--r--r--   1 root   proc    0 Oct  2 21:13 partitions
-r--r-----   1 root   proc    0 Oct  2 21:13 pci
lrwxrwxrwx   1 root   root   64 Oct  1 03:08 self -> 20752
-r--r-----   1 root   proc    0 Oct  2 21:13 slabinfo
-r--r--r--   1 root   proc    0 Oct  2 21:13 stat
-r--r--r--   1 root   proc    0 Oct  2 21:13 swaps
dr-xr-x---  10 root   proc    0 Oct  2 21:13 sys
--w-------   1 root   proc    0 Oct  2 21:13 sysrq-trigger
dr-xr-xr-x   2 root   proc    0 Oct  2 21:13 sysvipc
dr-xr-xr-x   4 root   proc    0 Oct  2 21:13 tty
-r--r--r--   1 root   proc    0 Oct  2 21:13 uptime
-r--r--r--   1 root   proc    0 Oct  2 21:13 version
'mount'

/dev/hda1 on / type ext3 (rw,errors=remount-ro)
proc on /proc type proc (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/hda3 on /root type ext3 (rw)
/dev/hda5 on /tmp type ext3 (rw,usrquota)
/dev/hda6 on /usr type ext3 (rw,usrquota)
/dev/hda7 on /var type ext3 (rw,usrquota)
/dev/hda8 on /var/log type ext3 (rw)
/dev/hda9 on /home type ext3 (rw,usrquota)
usbfs on /proc/bus/usb type usbfs (rw)

Offline ultr

  • Users
  • Guru
  • *****
  • Wiadomości: 1177
    • Zobacz profil
Shell i dostep do cpuinfo
« Odpowiedź #5 dnia: 2008-11-01, 13:43:10 »
Ścieżka do katalogu domowego jest pod ~ albo $HOME, ale to raczej w programie nie zadziała.

Ale zawsze możesz użyć ścieżki względnej od miejsca z którego wywołujesz program: "../plik.txt" czy podobnej.

Crusi

  • Gość
Shell i dostep do cpuinfo
« Odpowiedź #6 dnia: 2008-11-01, 14:00:08 »
ultr masz u mnie piwo! :D Udalo sie i smiga. Wielkie dzieki za pomoc. Mam jeszcze pytanko, jest jakis sposob na odkrycie co tam jest za procek, jak niemoge w cpuinfo zobaczyc, bo chcialbym zrobic w miare zgodny z prawda ten plik.

micu

  • Gość
Shell i dostep do cpuinfo
« Odpowiedź #7 dnia: 2008-11-01, 20:19:18 »
Cześć,

Można spróbować podejrzeć w logach (dmesg lub /var/log/messages) co wykrył system podczas startu, ale admin zapewne też to zablokował :-)

Najprościej jest skompilować program asemblerowy wykorzystujący kod 'cpuid' i obejrzeć wyniki. Z tego co pamiętam wykonywać tę komendę można także w trybie użytkownika (ring 3).
Jeśli jakimś cudem to nie zadziała, to jest też metoda bardziej żmudna - skompilować proste programy wykorzystujące kolejne polecenia specjalne x86 (mmx, mmx2, sse, sse2 i tak dalej) i uruchamiać dopóki nie wyrzuci błędu typu SIGSEGV, SIGILL itp. Na tej podstawie możesz określić z jaką rodziną procesorów masz do czynienia.

Pozdrawiam
Micu

Crusi

  • Gość
Shell i dostep do cpuinfo
« Odpowiedź #8 dnia: 2008-11-01, 20:41:58 »
Dzieki za odpowiedz. A czy jest moze jakis gotowy program ktory by to robil, bo ja na programowaniu raczej sie nie znam :)

micu

  • Gość
Shell i dostep do cpuinfo
« Odpowiedź #9 dnia: 2008-11-02, 11:05:42 »
Hej,
Poszukaj w google "linux cpuid" . Ściągaj binarki bo pakietów nie zainstalujesz z konta użytkownika, a kompilator też może być zablokowany.
Spróbuj np. tego: http://www.etallen.com/cpuid/cpuid-20060917.i386.tar.gz

Pozdrawiam
Micu

Crusi

  • Gość
Shell i dostep do cpuinfo
« Odpowiedź #10 dnia: 2008-11-03, 08:45:11 »
Ok wielkie dzieki. Jak tylko odzyskam dostep do shella (zwiesilo sie chyba ip czy cos) to od razu to sprawdze.

A jak juz draze ten temat to jeszcze jedno pytanko mam. Mam na koncie pliki bash_profile, bashrc, itp. W tych plikach sa jakies rozne komendy. Czy w ktoryms z tych plikow nie da sie zrobic jakiegos przekierowania, ze jak np. program chce czytac z pliku /proc/cpuinfo, to automatycznie bedzie przekierowany do czytania tego mojego falszywego cpuinfo? Ulatwilo by to prace w przyszlosci gdybym robil update serwa znowu.

micu

  • Gość
Shell i dostep do cpuinfo
« Odpowiedź #11 dnia: 2008-11-03, 09:29:10 »
No nie będzie łatwo :-)

Do głowy przychodzą mi tak na szybko 2 rozwiązania, ale niekoniecznie będą działać bo je również można zablokować (chociażby stosująć łatki na kernel typu grsecurity itd):
0. Uruchomienie serwera w środowisku chroot ze spreparowanym plikiem tekstowym proc/cpuinfo (patrz post ZipoKinga).
1. Podmiana funkcji open() przez mechanizm LD_PRELOAD - do tego potrzeba dodatkowej biblioteki która zmieni lekko działanie pewnych funkcji systemowych. Znalazłem np. coś takiego : http://freshmeat.net/projects/pretendroot/

Pozdrawiam
Micu

Crusi

  • Gość
Shell i dostep do cpuinfo
« Odpowiedź #12 dnia: 2008-11-03, 09:49:50 »
Mysle ze to drugie rozwiazanie z uzyciem pretendroota byloby idealne. Problem polega na tym, ze na linuksie znam sie na tyle zeby postawic serwer i poustawiac jakies podstawowe rzeczy i niebardzo wiem jak wogole ugryzc tego pretendroota. Czy moglbys w wolnej chwili jakos dokladniej opisac co i jak nalezy zrobic jak juz go wrzuce na shella?

micu

  • Gość
Shell i dostep do cpuinfo
« Odpowiedź #13 dnia: 2008-11-03, 14:59:50 »
Obejrzałem to dokładniej i niestety ten program nie ma funkcjonalności która jest Ci potrzebna. To co potrzebujesz to mała biblioteka przechwytująca funkcje typu open() i stat() a w pretendroot tego pierwszego brakuje. W chwili wolnej spróbuję coś takiego sklecić, może w międzyczasie ktoś z forumowiczów znajdzie lub napisze rozwiązanie.
Aha, sprawdź czy możesz uruchomić kompilator 'gcc' na serwerze bo inaczej trzeba będzie budować na innej maszynie.

Pozdrawiam
Micu

Crusi

  • Gość
Shell i dostep do cpuinfo
« Odpowiedź #14 dnia: 2008-11-12, 17:44:33 »
Update:

Ok na podstawie info z cpuid znalazlem informacje o procku. Falszywy plik cpuinfo zrobiony. Teraz potrzebowalbym w jakis sposob zrobic zeby zamiast szukac pliku w /proc/ przekierowywal na ten moj plik, bo przerobiony serwer cs cos sie sypie niestety ;/