废物的靶场日记 hackthebox-Timing
今天做medium难度的Timing 靶机IP 10.10.11.135
前渗透
nmap -sV -A 10.10.11.135
22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
80/tcp open http Apache httpd 2.4.29 ((Ubuntu))
看一下80端口是一个登录框 看不出什么 wfuzz+dirsearch扫出来一些后台文件
排查一堆重定向之后 有两个可以联合起来看出端倪
一个是images/uploads很明显是一个上传路径
一个是image.php可以访问但是是空的 按照经验结合uploads文件夹 很明显像是文件读取 多半是可以fuzz出参数的
这里直接拿字典 对GET /image.php?§a§=/etc/passwd HTTP/1.1进行爆破
最后得到参数img 但是显示被拦截了 Hacking attempt detected!
但是昨天爷不是刚做了个文件读取的过滤吗 直接用昨晚的姿势就能成功读取
http://10.10.11.135/image.php?img=File:///etc/passwd
这一幕好像似曾相识 只看最下面的就完事了 发现用户aaron
这里还需要读什么呢 回顾一下信息收集 后台文件有很多重定向 全读了看看
但是这里有一个问题就是我们不知道网站的绝对路径 经过搜索试了一些办法但是这里又有过滤 不能确定
这里埋下了一个坑 File协议到底能不能相对路径读取文件?有爹解答一下不
这里我干脆换成了php://filter/read=convert.base64-encode/resource= 也是常见的文件包含姿势
读取到upload.php发现include(“admin_auth_check.php”); 包含读取看到
if (!isset($_SESSION[‘role’]) || $_SESSION[‘role’] != 1) {
echo “No permission to access this panel!”;
header(‘Location: ./index.php’);
die();
}
很明显我们需要一个role为1的用户
但是我们怎么登陆呢?测试发现用前面的发现的用户aaron aaron就弱口令进去了
但是进去之后访问upload.php发现我们是没有权限进行上传的
访问栏目上的Edit profile发现可以进行更新文件 此时发包的参数里并没有role但抓返回包发现有
"5": "test",
"role": "0",
那么我们能不能添加role=1越权呢 在发包的参数中添加了role=1后刷新页面发现多了一个Admin panel可以上传文件
抓包发现调用的就是我们的upload.php并且存在过滤 再回头分析upload.php
这里我们可以看到重点在于末尾有个Cj8 这说明什么 作者必然是uzi的粉丝!
这里我不禁放了一首孤泳者再继续分析
首先 文件必须是jpg后缀 同时文件名非常的恶心 一开始我觉得是由uniqid函数和time函数进行md5后再加上原来的文件名保存的 查了一下这uniqid函数是以微秒为单位的 微秒属实感觉有点抽象了
但是!很快我发现这个$file_hash外面是个单引号 也就是说这完全就是当作一个字符串来拼接的 uniqid完全是没勾八用的 而time函数是以秒为单位的
那么首先我们访问网页抓一下返回包 Date: Sat, 26 Mar 2022 13:59:27 GMT
我们的时区也改成GMT 然后把他的代码copy下来改改执行
while(1){echo md5(’$file_hash’ .time()).’_’.‘a.jpg’;echo “\n”;sleep(1);}
流程就是上传文件——抓包拦截——php代码开始动——放掉拦截——上传成功停止php 然后检索产生的文件名就行
那么有些兄弟可能会问了 那你传了个jpg有勾八用呢 他又不解析 然而我们前面找到了什么漏洞?文件包含!
我们利用http://10.10.11.135/image.php?img=images/uploads/xxx.jpg 就可以解析我们的jpg 利用链就这么产生了
直接写个命令执行再弹nc就行了
成功找到文件名后 试图开弹nc发现弹不动 应该又是有过滤了 于是就是漫长的用网页看文件
看了一圈在 /opt下看到了source-files-backup.zip 终于找到突破口了 把这个文件下下来看到里面有.git文件夹
那么肯定要试试.git泄露了 拉取文件检索后发现了
(‘mysql:host=localhost;dbname=app’, ‘root’, ‘S3cr3t_unGu3ss4bl3_p422w0Rd’);
以aaron为账户ssh连上去 拿到第一个user的flag
fc0fe9f5903498dd6a68c0ea3f927beb
后渗透
然后就是提权了 老样子上线msf peass跑一下发现啥也没
这个peass有一说一不能过于依赖 但同时他也是个很好的学习工具 很多cve的使用条件看他的源码就行了
find / -perm -u=s -type f 2>/dev/null一下也没什么特别明显的
然后sudo -l 又出货了 (ALL) NOPASSWD: /usr/bin/netutils
执行一下
sudo /usr/bin/netutils
netutils v0.1
Select one option:
[0] FTP
[1] HTTP
[2] Quit
Input >>
这不就是昨天的老一套吗 从kali上下东西发现文件确实是root权限
但是这里我不知道该咋整了 这里我google学了一个骚操作
可以直接先给/root/.ssh/authorized_keys创建软连接 然后通过二进制文件root下载和软连接名一样的本地生成的ssh公钥 然后本地直接用ssh -i 就可以连上去了 拿到最后一个flag
4dbafc7046f2f2070c6d870bebbc8ef5
这个靶场打完rank成功进阶成hacker了 但我实则又是个勾八呢