网安靶场环境: DVWA读取文件报错File not found_Cookie中有两个security键
1 问题复现
(1)登录DVMA后,设置DVWA Security为Low。
(2)进入File Inclusion,访问dvwa/vulnerabilities/fi目录下的的test.txt文件(自己创建的测试文件)。
(3)报错ERROR: File not found! 找不到文件。
2 抓包分析
(1)使用BurpSuit抓包。
访问test.txt文件的请求中,Cookie有两个security键;导致设置DVWA Security为Low没有成功。
(2)在浏览器中查看“设置DVWA Security为Low”时,服务端Set Cookie情况。
在Set SessionId时指定了使用路径;而Set Security是没有指定路径。
(3)Cookie的属性。
属性 |
描述 |
name |
Cookie的名称,Cookie一旦创建,名称便不可更改 |
value |
Cookie的值。如果值为Unicode字符,需要为字符编码。如果值为二进制数据,则需要使用BASE64编码 |
maxAge |
Cookie失效的时间,单位秒。如果为正数,则该Cookie在maxAge秒之后失效。如果为负数,该Cookie为临时Cookie,关闭浏览器即失效,浏览器也不会以任何形式保存该Cookie。如果为0,表示删除该Cookie。默认为-1。 |
secure |
该Cookie是否仅被使用安全协议传输。安全协议。安全协议有HTTPS,SSL等,在网络上传输数据之前先将数据加密。默认为false。 |
path |
Cookie的使用路径。如果设置为“/sessionWeb/”,则只有contextPath为“/sessionWeb”的程序可以访问该Cookie。如果设置为“/”,则本域名下contextPath都可以访问该Cookie。注意最后一个字符必须为“/”。 |
domain |
可以访问该Cookie的域名。如果设置为“.google.com”,则所有以“google.com”结尾的域名都可以访问该Cookie。注意第一个字符必须为“.”。 |
comment |
该Cookie的用处说明,浏览器显示Cookie信息的时候显示该说明。 |
version |
Cookie使用的版本号。0表示遵循Netscape的Cookie规范,1表示遵循W3C的RFC 2109规范 |
3 修复服务端代码
(1)查看服务端setcookie的php代码。
发现没有给security指定使用路径。
(2)修改setcookie()中security的路径为“/”。
(3)PHP setcookie()函数。
语法:setcookie(name,value,expire,path,domain,secure)
参数 |
描述 |
name |
必需。规定 cookie 的名称。 |
value |
必需。规定 cookie 的值。 |
expire |
可选。规定 cookie 的有效期。 |
path |
可选。规定 cookie 的服务器路径。 |
domain |
可选。规定 cookie 的域名。 |
secure |
可选。规定是否通过安全的 HTTPS 连接来传输 cookie。 |
4 验证结果
(1)清除浏览器Cookie。
(2)重新登录DVMA,再次设置DVWA Security为Low。
Set SessionId的路径和Set Security的路径一致。
(3)进入File Inclusion,访问dvwa/vulnerabilities/fi目录下的的test.txt文件。
成功读取到文件内容,并且请求Cookie中只有一个security键。