在我的渗透测试中,我发现了一个本地文件包含漏洞。事实上,这个漏洞存在于 mailwatch <= 1.0.4 中,它的漏洞利用存在于 Exploit-DB 中。
我试图根据文件通过这个漏洞利用操作系统(CentOS 6)/proc/self/environ
,但我失败了,因为当我试图查看/proc/self/environ
文件内容时它返回空白页。
有什么办法可以破解操作系统吗?
在我的渗透测试中,我发现了一个本地文件包含漏洞。事实上,这个漏洞存在于 mailwatch <= 1.0.4 中,它的漏洞利用存在于 Exploit-DB 中。
我试图根据文件通过这个漏洞利用操作系统(CentOS 6)/proc/self/environ
,但我失败了,因为当我试图查看/proc/self/environ
文件内容时它返回空白页。
有什么办法可以破解操作系统吗?
它可以通过日志文件注入来利用。可能可以注入 Apache 日志文件,但这些文件需要 root 访问权限才能打开,因此无法通过 LFI 打开它们。为了解决这个问题,我们注入了临时的 Apache 日志文件,这些文件存在于这个路径下:
proc/self/fd/12
或者
proc/self/fd/14
或者
proc/<apachi pid>/fd/12
或者
proc/<apache pid>/fd/14
我们用 php 代码注入日志文件使我们能够做任何我们想做的事情。
只是发布我的设置:
/var/log/httpd:
-rw-r--r--. root root system_u:object_r:httpd_log_t:s0 access_log
-rw-r--r--. root root system_u:object_r:httpd_log_t:s0 access_log-20120805
-rw-r--r--. root root system_u:object_r:httpd_log_t:s0 error_log
-rw-r--r--. root root system_u:object_r:httpd_log_t:s0 error_log-20120930
-rw-r--r--. root root system_u:object_r:httpd_log_t:s0 error_log-20121007
-rw-r--r--. root root system_u:object_r:httpd_log_t:s0 error_log-20121014
-rw-r--r--. root root system_u:object_r:httpd_log_t:s0 error_log-20121021
-rw-r-----. root root system_u:object_r:httpd_log_t:s0 modsec_audit.log
-rw-r-----. root root system_u:object_r:httpd_log_t:s0 modsec_audit.log-20120930
-rw-r-----. root root system_u:object_r:httpd_log_t:s0 modsec_audit.log-20121007
-rw-r-----. root root system_u:object_r:httpd_log_t:s0 modsec_audit.log-20121014
-rw-r-----. root root system_u:object_r:httpd_log_t:s0 modsec_audit.log-20121021
-rw-r-----. root root system_u:object_r:httpd_log_t:s0 modsec_debug.log
-rw-r--r--. root root system_u:object_r:httpd_log_t:s0 ssl_access_log
-rw-r--r--. root root system_u:object_r:httpd_log_t:s0 ssl_access_log-20120805
-rw-r--r--. root root system_u:object_r:httpd_log_t:s0 ssl_access_log-20120812
-rw-r--r--. root root system_u:object_r:httpd_log_t:s0 ssl_error_log
-rw-r--r--. root root system_u:object_r:httpd_log_t:s0 ssl_error_log-20120930
-rw-r--r--. root root system_u:object_r:httpd_log_t:s0 ssl_error_log-20121007
-rw-r--r--. root root system_u:object_r:httpd_log_t:s0 ssl_error_log-20121014
-rw-r--r--. root root system_u:object_r:httpd_log_t:s0 ssl_error_log-20121021
-rw-r--r--. root root system_u:object_r:httpd_log_t:s0 ssl_request_log
-rw-r--r--. root root system_u:object_r:httpd_log_t:s0 ssl_request_log-20120805
-rw-r--r--. root root system_u:object_r:httpd_log_t:s0 ssl_request_log-20120812
-rw-r--r--. root root system_u:object_r:httpd_log_t:s0 suexec.log
-rw-r--r--. root root system_u:object_r:httpd_log_t:s0 suexec.log-20120930
-rw-r--r--. root root system_u:object_r:httpd_log_t:s0 suexec.log-20121007
-rw-r--r--. root root system_u:object_r:httpd_log_t:s0 suexec.log-20121014
-rw-r--r--. root root system_u:object_r:httpd_log_t:s0 suexec.log-20121021
PHP 在 suexec 上运行:
unconfined_u:system_r:httpd_suexec_t:s0 502 17648 0.0 4.7 314004 23624 ? Sl Oct21 0:07 /usr/bin/php-cgi
虚拟主机日志文件:
-rw-rw----. 1 system_u:object_r:var_log_t:s0 502 48 1008958 Oct 24 00:19 blackhatconsulting.co.uk_access_log
-rw-rw----. 1 unconfined_u:object_r:var_log_t:s0 502 48 11592222 Aug 5 03:41 blackhatconsulting.co.uk_access_log-20120805
-rw-rw----. 1 unconfined_u:object_r:var_log_t:s0 502 48 9418101 Aug 12 03:15 blackhatconsulting.co.uk_access_log-20120812
-rw-rw----. 1 system_u:object_r:var_log_t:s0 502 48 207759 Sep 23 03:21 blackhatconsulting.co.uk_access_log-20120923.gz
-rw-rw----. 1 system_u:object_r:var_log_t:s0 502 48 176072 Sep 30 03:36 blackhatconsulting.co.uk_access_log-20120930.gz
-rw-rw----. 1 system_u:object_r:var_log_t:s0 502 48 158753 Oct 7 03:23 blackhatconsulting.co.uk_access_log-20121007.gz
-rw-rw----. 1 system_u:object_r:var_log_t:s0 502 48 170740 Oct 14 03:49 blackhatconsulting.co.uk_access_log-20121014.gz
-rw-rw----. 1 system_u:object_r:var_log_t:s0 502 48 199233 Oct 21 03:43 blackhatconsulting.co.uk_access_log-20121021.gz
-rw-rw----. 1 system_u:object_r:var_log_t:s0 502 48 3972681 Oct 24 00:19 blackhatconsulting.co.uk_error_log
-rw-rw----. 1 unconfined_u:object_r:var_log_t:s0 502 48 715308 Aug 5 03:41 blackhatconsulting.co.uk_error_log-20120805
-rw-rw----. 1 unconfined_u:object_r:var_log_t:s0 502 48 10871995 Aug 12 03:15 blackhatconsulting.co.uk_error_log-20120812
-rw-rw----. 1 system_u:object_r:var_log_t:s0 502 48 21122 Sep 23 03:21 blackhatconsulting.co.uk_error_log-20120923.gz
-rw-rw----. 1 system_u:object_r:var_log_t:s0 502 48 18896 Sep 30 03:36 blackhatconsulting.co.uk_error_log-20120930.gz
-rw-rw----. 1 system_u:object_r:var_log_t:s0 502 48 18423 Oct 7 03:23 blackhatconsulting.co.uk_error_log-20121007.gz
-rw-rw----. 1 system_u:object_r:var_log_t:s0 502 48 18458 Oct 14 03:49 blackhatconsulting.co.uk_error_log-20121014.gz
-rw-rw----. 1 system_u:object_r:var_log_t:s0 502 48 30181 Oct 21 03:43 blackhatconsulting.co.uk_error_log-20121021.gz
最后,PHP 流程:
lrwx------. 1 unconfined_u:system_r:httpd_suexec_t:s0 502 502 64 Oct 24 00:17 0 -> socket:[331211]
l-wx------. 1 unconfined_u:system_r:httpd_suexec_t:s0 502 502 64 Oct 24 00:17 1 -> /var/log/httpd/error_log
lr-x------. 1 unconfined_u:system_r:httpd_suexec_t:s0 502 502 64 Oct 24 00:17 18 -> pipe:[302590]
l-wx------. 1 unconfined_u:system_r:httpd_suexec_t:s0 502 502 64 Oct 24 00:17 2 -> /var/log/httpd/error_log
l-wx------. 1 unconfined_u:system_r:httpd_suexec_t:s0 502 502 64 Oct 24 00:17 21 -> pipe:[302591]
lrwx------. 1 unconfined_u:system_r:httpd_suexec_t:s0 502 502 64 Oct 24 00:17 4 -> socket:[331227]
和httpd:
r-x------. 1 root root 64 Oct 24 00:26 0 -> /dev/null
l-wx------. 1 root root 64 Oct 24 00:26 1 -> /dev/null
l-wx------. 1 root root 64 Oct 24 00:26 10 -> pipe:[302583]
l-wx------. 1 root root 64 Oct 24 00:26 11 -> /var/log/virtualmin/blackhatconsulting.co.uk_error_log
l-wx------. 1 root root 64 Oct 24 00:26 12 -> /var/log/httpd/ssl_error_log
l-wx------. 1 root root 64 Oct 24 00:26 13 -> /var/log/httpd/access_log
l-wx------. 1 root root 64 Oct 24 00:26 14 -> /var/log/virtualmin/blackhatconsulting.co.uk_access_log
l-wx------. 1 root root 64 Oct 24 00:26 15 -> /var/log/virtualmin/blackhatconsulting.co.uk_access_log
l-wx------. 1 root root 64 Oct 24 00:26 16 -> /var/log/httpd/ssl_access_log
l-wx------. 1 root root 64 Oct 24 00:26 17 -> /var/log/httpd/ssl_request_log
lr-x------. 1 root root 64 Oct 24 00:26 18 -> pipe:[302590]
l-wx------. 1 root root 64 Oct 24 00:26 19 -> pipe:[302590]
l-wx------. 1 root root 64 Oct 24 00:26 2 -> /var/log/httpd/error_log
lr-x------. 1 root root 64 Oct 24 00:26 20 -> pipe:[302591]
l-wx------. 1 root root 64 Oct 24 00:26 21 -> pipe:[302591]
lr-x------. 1 root root 64 Oct 24 00:26 3 -> /dev/urandom
lrwx------. 1 root root 64 Oct 24 00:26 4 -> socket:[271909]
lrwx------. 1 root root 64 Oct 24 00:26 5 -> socket:[271911]
l-wx------. 1 root root 64 Oct 24 00:26 6 -> /var/log/httpd/modsec_debug.log
l-wx------. 1 root root 64 Oct 24 00:26 7 -> /var/log/httpd/modsec_audit.log
lrwx------. 1 root root 64 Oct 24 00:26 8 -> socket:[271913]
lr-x------. 1 root root 64 Oct 24 00:26 9 -> pipe:[302583]
因此,如果没有 SELinux,在 Centos 上使用 Virtualmin,就可以毫无问题地从 PHP 访问日志文件,因为它们在相同的 uid 上运行。但是对于 SELinux,这是不可能的,因为它会阻止使用从网络调用的进程从 /var/log 读取任何内容。mod_security 也不允许这样做(传递 PHP 代码)。