我在 CentOS 6 上托管了一个 wordpress 网站。看到以下访问日志后,我检查了服务器,似乎一切正常。有人能解释一下这个人想做什么吗?他们得到他们想要的东西了吗?
我已经禁用 allow_url_include,并将 open_basedir 限制为 web dir 和 tmp(/etc 不在路径中)。
190.26.208.130 - - [05/Sep/2012:21:24:42 -0700] "POST http://my_ip/?-d%20allow_url_include%3DOn+-d%20auto_prepend_file%3D../../../../../../../../../../../../etc/passwd%00%20-n/?-d%20allow_url_include%3DOn+-d%20auto_prepend_file%3D../../../../../../../../../../../../etc/passwd%00%20-n HTTP/1.1" 200 32656 "-" "Mozilla/5.0"
答案1
看一眼CVE-2012-1823第一的。
上述 URL 解码后为:
http://my_ip/?-d allow_url_include=On+-d auto_prepend_file=../../../../../../../../../../../../etc/passwd� -n/?-d allow_url_include=On+-d auto_prepend_file=../../../../../../../../../../../../etc/passwd� -n
?-d allow_url_include=On
:他试图在 php-cgi 调用中添加一个额外的参数:
$ php-cgi -h
Usage: php [-q] [-h] [-s] [-v] [-i] [-f <file>]
php <file> [args...]
-d foo[=bar] Define INI entry foo with value 'bar'
+-d auto_prepend_file=../../../../../../../../../../../../etc/passwd� -n
:然后将他的文件作为代码添加到前面以执行。不知道他为什么在这里使用路径遍历攻击,而不是使用他的代码或php://input
。
-n
最后否定php.ini
:
$ php-cgi -h
Usage: php [-q] [-h] [-s] [-v] [-i] [-f <file>]
php <file> [args...]
-n No php.ini file will be used
PS:如果您没有将 PHP 作为 CGI 脚本运行,则无需担心。