• CrankyGamerOG
  • Registratie: Juni 2003
  • Laatst online: 03-10 20:06

CrankyGamerOG

Assumption is the mother.....

Topicstarter
Ik ben bezig met een script dat apache/httpd procs controleerd op spoofs.
Dit script moet dus weten wat het pad en naam is van de op de huidige server geinstalleerde webserver.
Nu heb ik wat zitten pielen maar ik kom er niet uit, wat op de ene server wel werkt, werkt op de andere dus dan niet.
Hier wat ik zoal geprobeerd heb :

code:
1
2
3
#ps aux | grep apache | cut -c66-82 | head -n1
/usr/sbin/apache2
#


Die geeft dus netjes nu het pad terug, echter als apache1 draait (httpd) dan krijg ik dus niet meer netjes het pad terug omdat de uitvoer meer of minder letters heeft en dus mijn cut niet meer correct uitkomt.
code:
1
2
3
#ps aux | grep apache | cut -c66-82 | head -n1
sr/sbin/httpd
#


Heeft er iemand hier een manier om snel te bepalen waar apache binary zich bevind en wat de naam is van de binary , en de user van apache?

edit :

En met "wich" werkt dit natuurlijk ook niet, want ook dan komt de cut verkeerd uit adhv verschillende outputs.....

[ Voor 6% gewijzigd door CrankyGamerOG op 16-12-2010 12:11 ]

KPN - Vodafone Ziggo Partner


  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Dit lijkt me sowieso een betere optie ;)

ps aux | grep apache | awk '{print $11}' # binary locatie
ps aux | grep apache | awk '{print $1}' # user

Blog [Stackoverflow] [LinkedIn]


  • CrankyGamerOG
  • Registratie: Juni 2003
  • Laatst online: 03-10 20:06

CrankyGamerOG

Assumption is the mother.....

Topicstarter
Dank Wolfboy
Ik zal eens kijken of dit doet wat ik wil.
En eens zien wat dit doet als het geen apache is maar httpd :)

alvast bedankt iig.

KPN - Vodafone Ziggo Partner


Verwijderd

Dit ligt aan de distro.
In Debian en Ubuntu zit Apache in /etc/apache2, wordt gelogd in /var/log/apache2, en wordt geëxecute in /etc/init.d/apache2.
Als je een andere distro gebruikt, probeer deze commando eens uit:
code:
1
whereis apache2

Dan krijg je alle paden van Apache2.

O, en HTTPD is eigenlijk onderdeel van Apache2.

[ Voor 8% gewijzigd door Verwijderd op 16-12-2010 12:21 ]


  • CrankyGamerOG
  • Registratie: Juni 2003
  • Laatst online: 03-10 20:06

CrankyGamerOG

Assumption is the mother.....

Topicstarter
Yami, niet om vervelend te doen, maar heb je mijn post uberhaupt gelezen?

@Wolfboy, thnx dat was wat ik nodig had :)

KPN - Vodafone Ziggo Partner


Verwijderd

>>Def!ance
Ik vatte het op als "ik wil het pad naar Apache2 weten".

  • Gertjan
  • Registratie: Oktober 2001
  • Laatst online: 09-09 17:11

Gertjan

mmmm, beer...

Uit de processlist afleiden wat het pad naar de binary is is per definitie niet betrouwbaar, omdat dat heel makkelijk te faken is:

Perl:
1
2
#!/usr/bin/perl
$0 = "/usr/sbin/apache2";


En voila, in je processlist zul je nu gewoon een process "/usr/sbin/apache2" zien staan terwijl de binary "/usr/bin/perl" is.

Iets betrouwbaarder is de symlink /proc/$pid/exe, maar volgens mij is dat ook wel te faken, al weet ik zo snel even niet hoe. Je zou dan iets kunnen doen als:

Bash:
1
for pid in $(ps aux | grep apache | awk '{print $2}'); do readlink /proc/$pid/exe; done

  • CrankyGamerOG
  • Registratie: Juni 2003
  • Laatst online: 03-10 20:06

CrankyGamerOG

Assumption is the mother.....

Topicstarter
Hmm dat is wel een goed punt, want wat jij doet is juist wat ik wil vinden (het faken van processnames).

Toch zal dat niet altijd werken.... :

code:
1
2
3
#for pid in $(ps aux | grep apache | awk '{print $2}'); do readlink /proc/$pid/exe; done | head -n1
/usr/lib/apache2/mpm-prefork/apache2
#



terwijl hij toch echt ergens anders draait :) .........

code:
1
2
3
# ps aux | grep apache | awk '{print $11}' | head -n1
/usr/sbin/apache2
#


edit : je hebt idd wel gelijk, want /usr/sbin/apache2 haalt hem weer uit de /usr/lib
code:
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
# ls -lha /proc/19596/
total 0
dr-xr-xr-x  4 www-data www-data 0 Dec 16 15:28 .
dr-xr-xr-x 37 root     root     0 Oct 18 16:24 ..
-r--------  1 root     root     0 Dec 16 15:31 auxv
-r--r--r--  1 root     root     0 Dec 16 15:28 cmdline
-rw-r--r--  1 root     root     0 Dec 16 15:31 coredump_filter
-r--r--r--  1 root     root     0 Dec 16 15:31 cpuset
lrwxrwxrwx  1 root     root     0 Dec 16 15:31 cwd -> /
-r--------  1 root     root     0 Dec 16 15:31 environ
lrwxrwxrwx  1 root     root     0 Dec 16 15:28 exe -> /usr/lib/apache2/mpm-prefork/apache2
dr-x------  2 root     root     0 Dec 16 15:31 fd
-r--r--r--  1 root     root     0 Dec 16 15:31 io
-r--------  1 root     root     0 Dec 16 15:31 limits
-rw-r--r--  1 root     root     0 Dec 16 15:31 loginuid
-r--r--r--  1 root     root     0 Dec 16 15:31 maps
-rw-------  1 root     root     0 Dec 16 15:31 mem
-r--r--r--  1 root     root     0 Dec 16 15:31 mounts
-r--------  1 root     root     0 Dec 16 15:31 mountstats
-r--r--r--  1 root     root     0 Dec 16 15:31 numa_maps
-rw-r--r--  1 root     root     0 Dec 16 15:31 oom_adj
-r--r--r--  1 root     root     0 Dec 16 15:31 oom_score
lrwxrwxrwx  1 root     root     0 Dec 16 15:31 root -> /
-r--r--r--  1 root     root     0 Dec 16 15:31 schedstat
-r--------  1 root     root     0 Dec 16 15:31 smaps
-r--r--r--  1 root     root     0 Dec 16 15:28 stat
-r--r--r--  1 root     root     0 Dec 16 15:31 statm
-r--r--r--  1 root     root     0 Dec 16 15:28 status
dr-xr-xr-x  3 www-data www-data 0 Dec 16 15:31 task
-r--r--r--  1 root     root     0 Dec 16 15:31 wchan

[ Voor 128% gewijzigd door CrankyGamerOG op 16-12-2010 15:32 ]

KPN - Vodafone Ziggo Partner


  • Rainmaker
  • Registratie: Augustus 2000
  • Laatst online: 14-07-2024

Rainmaker

RHCDS

Als je wil weten of de binairy vervangen is door een "mailicious" binairy, waarom gebruik je dan niet gewoon een md5sum van /usr/sbin/httpd?

Ik zou trouwens iets als
code:
1
lsof -i:80
gebruiken om te kijken welke binairy er daadwerkelijk webserver aan het spelen is.

Anders start ik (als attacker) httpd op poort 8080 en hax0r.webserver op poort 80. Jouw script denkt dat het goed gaat, maar bezoekers komen toch uit op "mijn" hax0r server.

PS, SELinux beschermt standaard tegen dit soort dingen door alleen httpd_t processen toegang tot poort 80 te geven... Even een tip, misschien een stuk makkelijker dan zelf iets bakken...

[ Voor 17% gewijzigd door Rainmaker op 16-12-2010 20:32 ]

We are pentium of borg. Division is futile. You will be approximated.


  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Dan weet je nog niet zeker of het proces dat op de plaats van /usr/sbin/httpd ook daadwerkelijk het draaiende proces is.

Dat zou je zo kunnen controleren:
INODE=`netstat -lten | grep ':80 ' | awk '{print $NF}' | head -n 1`
debugfs -w /dev/sda1 -R 'link <$INODE> temporary_file'

Blog [Stackoverflow] [LinkedIn]


  • Rainmaker
  • Registratie: Augustus 2000
  • Laatst online: 14-07-2024

Rainmaker

RHCDS

Wolfboy schreef op donderdag 16 december 2010 @ 21:08:
Dan weet je nog niet zeker of het proces dat op de plaats van /usr/sbin/httpd ook daadwerkelijk het draaiende proces is.

Dat zou je zo kunnen controleren:
INODE=`netstat -lten | grep ':80 ' | awk '{print $NF}' | head -n 1`
debugfs -w /dev/sda1 -R 'link <$INODE> temporary_file'
:) Lol, inderdaad. Creatieve oplossing ook, een debugfs loslaten op je filesystem :)

Dit bedoel ik dus. Kijk eens naar AppArmor en / of SELinux. Eventueel in combinatie met rpm -V (of Debian equivalent ofzo).

We are pentium of borg. Division is futile. You will be approximated.


  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 13:38

deadinspace

The what goes where now?

Is het doel beveiliging? Waarom dan niet een fatsoenlijke IDS (zoals tripwire of een van de talloze anderen) installeren?
Pagina: 1