日志文件&session
(0)
  • 日志文件包含
    当我们访问网站时,服务器日志会记录下来我们的行为。如果我们的url中有PHP代码,也会被记录。所以我们再日志文件可读并且知道目录的情况下就可以去包含日志文件去执行代码。

条件:

***存在本地包含漏洞***
日志的物理存放路径

存放路径:

Nginx:    /var/log/nginx
IIS7+Win2003:     %systemroot%\system32\logfiles\
IIS6+Win2003:    C:\Windows\System32\LogFiles
IIS7+Win:        C:\inetpub\logs\LogFiles
Apache+Linux:     /etc/httpd/logs/access_log
                  /var/log/httpd/access_log
apache+win:       apache\logs\access.log
                  apache\logs\error.log

web中间键默认配置

复现:
1.代码

2.开启apache记录日志功能

3.写入phpinfo()或者eval($_POST['a'])

如果直接在浏览器在浏览器输入的话,在日志文件中就会被编码

可以用burp suite传入

我这个包含error.log文件得到


原因:

用户可以控制session文件中的一部分信息,这部分信息可能是恶意代码,然后再包含session文件

Java是将用户的session存入内存中,而PHP则是将session以文件的形式存储在服务器某个文件中,可以在php.ini里面设置session的存储位置session.save_path。
可以通过phpinfo查看session.save_path的值

默认路径:

/var/lib/php/sess_PHPSESSID
/var/lib/php/sessions/sess_PHPSESSID
/tmp/sess_PHPSESSID
/tmp/sessions/sess_PHPSESSID

PHP处理用户的会话信息:
session.serialize_handler = php 默认方式 用|分割
只对用户名的内容进行了序列化存储,没有对变量名进行序列化
session.serialize_handler = php_serialize php5.5以后 用serialize反序列化格式分割
对整个session信息包括文件名、文件内容都进行了序列化处理

1.有session_start()
base64encode:

2.无session_start()

不能进行会话的初始化操作,这个时候服务器就无法生成用户session文件

参考链接:
包含日志文件getshell
LFI 绕过 Session 包含限制 Getshell

本文为作者hackerbo.com发布,未经允许禁止转载!
上一篇 下一篇
评论
暂无评论 >_<
加入评论