View Full Version : Hackers using myshell.php and other to gain access.. Need help


quicksols
04-02-2003, 06:52 PM
OK here is my delimma
i do ve some resellers and some of there clients are using scripts like cgishell
or
MyShell 1.1.0 build 20010923"
somethign like these.

Can please some one tell me the linux command to go through all the .php files in all homedirs and check for a string?

like as an example there is a file called user.php (which is in reality a shell script like myshell) and they r using it to gain shell access to the system ( php safe mode aint helping here) some how they get shadow or install something as nobody user gain root access wolaaaa.......

SO there is a file in /home/user10/public_html/user.php

however i do have some strings which are more likely same. like

$shellUser
$dirLimit = "";
$autoErrorTrap = 1;
$voidCommands = array("top","xterm","su","vi","pico","netscape");
$TexEd = "pico";
$editWrap ="wrap='OFF'";

or
Header('WWW-Authenticate: Basic realm="MyShell"');

this is part of a script.......
so i can trace those
just like it detect spam stuff and cpanel send u email
Is there a way or a command which will tell me or i can run a cron every now and then and see whois suing shell scripts etc etc
Can some one please write me a command like that. or any way how to add it into cpanel so cpanel can track it also

Thanks

heyzuess
04-02-2003, 09:44 PM
Originally posted by quicksols
Can please some one tell me the linux command to go through all the .php files in all homedirs and check for a string?

ah, something like grep?

man grep

TowerHost
04-02-2003, 11:11 PM
Find the user account where the files are stored and suspend it.
Then check logs and see where the file came from - could be another script exploit they used from a user account or an actual user that is using the script.

Knogle
04-03-2003, 12:55 AM
I think he's asking how to logon as root, go through every file in the system checking if it has traces of the script's strings, and if it does, probably chmod the file to 700 and write the filename onto a file for review.

Gyrbo
04-03-2003, 01:51 AM
Scripts like these shouldn't be a problem. open_basedir limits them to their own home directory right?

Website Rob
04-03-2003, 03:05 AM
You can do the following and search for one word at a time. This is due to the fact that it could take 10 - 15 minutes for each search and is definitely going to increase your Server load, but not to an un-acceptable level if you do one word search at a time.

log in as 'root'

cd / << this will check the whole Server

find -type f -name '*.*' \
-exec grep -s autoErrorTrap {} \; -print

Search word examples would be:

shellUser
dirLimit
autoErrorTrap
voidCommands
TexEd
editWrap
WWW-Authenticate

If any files are found with the search word, shown in bold in the above example, then the file text will be shown and the file path directly underneath it. To save time, as lots & lots of text/files maybe found with that search word, you should do this:

find . -type f -name '*.*' \
-exec grep -s autoErrorTrap {} \; -print > search_autoErrorTrap.txt

Continuing with the above example, all results are put into a file called "search_autoErrorTrap.txt" which the above command also creates. By using the same "searchword" for each file name, it will help to know which word you were searching for.

Be paitent while this is going on and just wait till the command line shows again. You can then view the file online or download it.

quicksols
04-03-2003, 03:20 AM
Thanks all for your help. Yes mainly i m looking to check it server wide. I do know those are .php files mainly looking to search for /home

By the way any idea where can i add those strings in CPANEL ... Just like it filter all EMAIL cgi check it can check this tooo

Website Rob
04-03-2003, 03:27 AM
This is not a Control Panel function as there as still lots of things one has to do manually, when one is a Server Admin. ;)

TowerHost
04-03-2003, 09:02 AM
I thik open_basedir would solve the problem -

http://www.zend.com/manual/features.safe-mode.php#ini.open-basedir

More security information.

http://www.zend.com/manual/features.safe-mode.php

quicksols
04-03-2003, 01:48 PM
openbase dir switch can i implement it globally?
If yes how i m sorry i m not a programmer and bugging u guys a lot
I did got this string also

find /home/*/public_html -name '*.php' -print | xargs grep -i -l 'dtinrg to find'

sprintserve
04-03-2003, 02:34 PM
Open your php.ini
It's usually found in /usr/local/lib/

Default I believe doesn't have the function at all. So just add

open_basedir = /home

(An example, or whereever your users partition is)

And all should be fine

cp1967
04-03-2003, 08:20 PM
Originally posted by sprintserve
Open your php.ini
It's usually found in /usr/local/lib/

Default I believe doesn't have the function at all. So just add

open_basedir = /home

(An example, or whereever your users partition is)

And all should be fine

What exactly will including "open_basedir = /home" do for php security?

--- > Nevermind. I RTFM and figured it out for myself :cartman:

-Eric
04-04-2003, 07:28 AM
Open_basedir only works with PHP so hackers can still use CGIShell (written in Perl) to hack your server.

sprintserve
04-04-2003, 07:31 AM
That is correct. Take some basic precautions and CGI-shell should not be able to do much.

PhilG
04-04-2003, 08:30 AM
does open_basedir affect the /tmp directory.

sprintserve
04-04-2003, 08:32 AM
Yes it will if you don't tweak it, as /home is outside of /tmp. It is the same with safe mode.

PhilG
04-04-2003, 08:43 AM
so its a good idea to have:

open_basedir = /home:/tmp

on a linux based system..

PhilG
04-04-2003, 08:46 AM
also can this command be added to the virtualhost in http.conf? That would be ideal!

sprintserve
04-04-2003, 08:47 AM
Or: You can simply setup PHP to use another tmp directory. For example /home/tmp

Gyrbo
04-04-2003, 09:38 AM
Originally posted by PhilG
also can this command be added to the virtualhost in http.conf? That would be ideal!
Yes, this is possible. I believe it is php_admin_value open_basedir /home/domain1:/tmp

-Eric
04-04-2003, 09:53 AM
Originally posted by PhilG
also can this command be added to the virtualhost in http.conf? That would be ideal!
Yes and you should do that, it's more secure if you restrict each user to their home dir, on cpanel server you can add

php_admin_value safe_mode 0
php_admin_value open_basedir "/home/user/:/tmp/"

to each virtual host configuration in httpd.conf.

sprintserve
04-04-2003, 09:57 AM
If you are going to restrict all users then it make sense to make it global and using only the httpd.conf as exclusions... That will be how I would set it up.

quicksols
04-04-2003, 02:32 PM
OK lemme ask you this....
#1 How to set it Globally
#2 If we set open_base globally and restrict them to /home or /tmp will it secure the server from phpshell scripts???

sprintserve
04-04-2003, 04:11 PM
This is only a partial solution. Real server security goes far beyond this. But php did make it easy. Restricting them to /home will prevent though their ability to read or access files that's not in /home i.e all your system files. Therefore they would not be able to compromise anything.

To set it global you amend it in php.ini.

quicksols
04-04-2003, 04:16 PM
Sorry to be too dumb
but can u tell me again what excatly i should change in php.ini
and what about /tmp then

sprintserve
04-04-2003, 04:21 PM
Please reread the whole thread

-Eric
04-04-2003, 07:46 PM
Originally posted by quicksols

#2 If we set open_base globally and restrict them to /home or /tmp will it secure the server from phpshell scripts???
Nope, hackers can still open your customers' files, if they run a PHPShell script on user1 they can still open user2's files for example: /home/user2/www/forums/config.php and they will know user2's MySQL password, etc. As I said before you should restrict users to their home directory (and /tmp) then phpshell scripts can do nothing with your server.

Spingen
04-04-2003, 08:59 PM
Originally posted by NetworksData
Nope, hackers can still open your customers' files, if they run a PHPShell script on user1 they can still open user2's files for example: /home/user2/www/forums/config.php and they will know user2's MySQL password, etc. As I said before you should restrict users to their home directory (and /tmp) then phpshell scripts can do nothing with your server.

Yes but that does not cover all your bases, proper permissions should be set for home and the users in it not to allow others to view.

sprintserve
04-04-2003, 09:01 PM
Originally posted by NetworksData
Nope, hackers can still open your customers' files, if they run a PHPShell script on user1 they can still open user2's files for example: /home/user2/www/forums/config.php and they will know user2's MySQL password, etc. As I said before you should restrict users to their home directory (and /tmp) then phpshell scripts can do nothing with your server.

Not if you set the permissions properly.

hotice007
04-04-2003, 10:40 PM
I had something similiar, finds out that it was a trojan horse.

Try "locate ..." if return any results, you might be infected.

-Eric
04-05-2003, 02:39 AM
Originally posted by sprintserve
Not if you set the permissions properly.

Yes, that's right. Just remember that phpshell will run as web server's uid so anything the webserver's uid can read then phpshell can read

Gyrbo
04-05-2003, 05:13 AM
There is only one way to really secure PHP and that is running it as CGI with a wrapper like suExec or CGIWrap.

jw
04-05-2003, 05:27 PM
Originally posted by sprintserve
Not if you set the permissions properly.

You're only partially right. A phpshell type of script would run as user nobody, allowing it to read every file that is readable by the web server, which is just about every file in a web hosting environment. The optimal way of doing this is to add the open_basedir to every virtual host, restricting it to the user's folder and tmp...or even better, set the tmp dir variable to a folder within the user's tree.

alapo
04-05-2003, 05:32 PM
also there is phpsuexec, which runs php under the users own UID. CPanel offers this feature now.

jw
04-05-2003, 06:31 PM
Originally posted by alapo
also there is phpsuexec, which runs php under the users own UID. CPanel offers this feature now.

That requires php to be run as a cgi module which considerably slows it down.

Gyrbo
04-06-2003, 05:16 AM
Originally posted by jw
That requires php to be run as a cgi module which considerably slows it down.
That's the price you have to pay for security.

aquos
04-08-2003, 05:07 PM
Originally posted by NetworksData
Yes and you should do that, it's more secure if you restrict each user to their home dir, on cpanel server you can add

php_admin_value safe_mode 0
php_admin_value open_basedir "/home/user/:/tmp/"

to each virtual host configuration in httpd.conf.

Is there a setting in cpanel or whm? or you have to do it manually by modifying the httpd.conf file?

Thanks.

sprintserve
04-08-2003, 05:08 PM
you have to manually edit httpd.conf

aquos
04-08-2003, 05:17 PM
Can you do something like

<Directory "/home/*/">
php_admin_value safe_mode 0
php_admin_value open_basedir "/home/user/:/tmp/"
</Directory>

Will it work?