DVWA 无法写入phpids_log.txt和config文件

DVWA 无法写入phpids_log.txt和config文件

一、前言

不知道大家在搭DVWA环境的时候会不会遇到以下两种文件无法写入的情况

即使给满权限也依然如此

在网上查阅资料得知与SeLinux的安全限制有关系

他们给出的解决方法:

setenforce 0 //关闭selinux

这种方法确实暴力且简单

而selinux对于需要安全的人来说是一个重要的东西

接下来教大家在不关闭selinux的情况下解决这个问题

使用selinux命令如下

setsebool -P httpd_unified 1

如果想知道我是怎么查找相关问题的可以继续看下面文章

二、查找问题所在

一般跟权限相关的日志记录在/var/log/audit/audit.log

1.查看该日志

cat /var/log/audit/audit.log

获得关键信息

type=PROCTITLE msg=audit(1648107125.926:442): proctitle=2F7573722F7362696E2F6874747064002D44464F524547524F554E44
type=AVC msg=audit(1648107125.927:443): avc:  denied  { write } for  pid=4945 comm="httpd" name="phpids_log.txt" dev="sda6" ino=394052 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:httpd_sys_content_t:s0 tclass=file

提取到关键信息拒绝写入phpids_log.txt

对于selinux我第一个想到是文件的安全文关系,但是我设置安全文依旧没有用

再次查阅资料发现一个工具可以提示selinux报错解决方法

三、setroubleshoot工具

故名思意他就是一个seLinux的困难解决工具

1.安装setroubleshoot工具

yum install setroubleshoot -y

如果没有找到该软件可以去尝试切换163源下载

2.使用该工具解析audit.log文件

sealert -a /var/log/audit/audit.log

得到反馈

SELinux is preventing /usr/sbin/httpd from write access on the 文件 /var/www/html/DVWA-master/external/phpids/0.6/lib/IDS/tmp/phpids_log.txt.

*****  插件 httpd_write_content (92.2 置信度) 建议  *********************************

如果你想允许 httpd有 write 访问 phpids_log.txt $TARGET_类
Then 需要更改 '/var/www/html/DVWA-master/external/phpids/0.6/lib/IDS/tmp/phpids_log.txt' 中的标记
Do
# semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/DVWA-master/external/phpids/0.6/lib/IDS/tmp/phpids_log.txt'
# restorecon -v '/var/www/html/DVWA-master/external/phpids/0.6/lib/IDS/tmp/phpids_log.txt'

*****  插件 catchall_boolean (7.83 置信度) 建议  ************************************

要 allow httpd to unified
Then 必须启用 'httpd_unified' 布尔值告知 SELinux 此情况。

Do
setsebool -P httpd_unified 1

*****  插件 catchall (1.41 置信度) 建议  ********************************************

确定应默认允许 httpd write 访问 phpids_log.txt file。
Then 应该将这个情况作为 bug 报告。
可以生成本地策略模块以允许此访问。
Do
allow this access for now by executing:
# ausearch -c 'httpd' --raw | audit2allow -M my-httpd
# semodule -i my-httpd.pp


更多信息:
源环境 (Context)                 system_u:system_r:httpd_t:s0
目标环境                          unconfined_u:object_r:httpd_sys_content_t:s0
目标对象                          /var/www/html/DVWA-master/external/phpids/0.6/lib/
                              IDS/tmp/phpids_log.txt [ file ]
源                             httpd
源路径                           /usr/sbin/httpd
端口                            <Unknown>
主机                            <Unknown>
源 RPM 软件包                     httpd-2.4.6-67.el7.x86_64
目标 RPM 软件包                    
策略 RPM                        selinux-policy-3.13.1-166.el7.noarch
Selinux 已启用                   True
策略类型                          targeted
强制模式                          Enforcing
主机名                           hx-1
平台                            Linux hx-1 3.10.0-693.el7.x86_64 #1 SMP Thu Jul 6
                              19:56:57 EDT 2017 x86_64 x86_64
警报计数                          1
第一个                           2022-03-24 15:32:05 CST
最后一个                          2022-03-24 15:32:05 CST
本地 ID                         18fff7bb-8336-47ee-a5d1-62e0d5b12635

原始核查信息
type=AVC msg=audit(1648107125.927:443): avc:  denied  { write } for  pid=4945 comm="httpd" name="phpids_log.txt" dev="sda6" ino=394052 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:httpd_sys_content_t:s0 tclass=file


type=SYSCALL msg=audit(1648107125.927:443): arch=x86_64 syscall=access success=no exit=EACCES a0=7f061cd23640 a1=2 a2=0 a3=1 items=0 ppid=4941 pid=4945 auid=4294967295 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4294967295 comm=httpd exe=/usr/sbin/httpd subj=system_u:system_r:httpd_t:s0 key=(null)

Hash: httpd,httpd_t,httpd_sys_content_t,file,write

提取关键信息发现给了三个解决方法

3.执行解决方法

第一个方法尝试后发现没有用,尝试第二个

*****  插件 catchall_boolean (7.83 置信度) 建议  ************************************

要 allow httpd to unified
Then 必须启用 'httpd_unified' 布尔值告知 SELinux 此情况。

Do
setsebool -P httpd_unified 1

输入代码

setsebool -P httpd_unified 1

再次验证权限写入情况

解决成功

这个工具非常有用,很多selinux出现问题时我们都很难找到问题所在,即使在网上也很难找到相关的解决方法,所以在这里记录一下

在此十分感谢这篇文章:https://blog.51cto.com/u_57388/1554842

posted @ 2022-03-24 16:35  伊诺丶  阅读(306)  评论(0编辑  收藏  举报