目录
写在开头
第一步:主机发现和端口扫描
第二步:ssh私钥登录获取初始立足点
第三步:sudo gcc提权
番外篇:如何掉进web渗透的陷阱无法自拔
总结与思考
写在开头
我个人的打靶顺序是根据红队笔记大佬的视频顺序,先自己打靶,复杂的靶机可能先看一遍红笔大佬的视频,然后争取自己打一遍,不过这个靶机确实算是相当简单的了。知识点并不多,建议读者先自己盲打一遍。红队笔记大佬的视频详见:
「红队笔记」靶机精讲:NYX - 用十分钟验证一下渗透测试人员的修养和基本功吧!_哔哩哔哩_bilibili
我感觉这个靶机如果直奔主题,忽略爆破和扫描的等待时间,两分钟就能搞定。 这个靶机涉及到的知识点主要有:nmap漏洞扫描、ssh私钥登录、sudo提权等。难点可能在于不要遗漏信息、也不要掉进陷阱。本文针对的靶机源于vulnhub,详情见:
Nyx: 1 ~ VulnHub
下载链接见:
https://download.vulnhub.com/nyx/nyxvm.zip
靶机的目标也是拿到两个flag。将靶机网络设置为NAT,靶机启动后界面如下(ip都告你了):
第一步:主机发现和端口扫描
常规思路,不细讲了。 命令如下:
nmap -sn 10.10.10.0/24 //主机发现
nmap -sT --min-rate 10000 10.10.10.154 //TCP全端口扫描
nmap -sT -sC -sV -O -p22,80 10.10.10.154 //用默认脚本扫描服务信息、操作系统版本
nmap --script=vuln -p22,80 10.10.10.154 //漏洞脚本扫描
nmap -sU --top-ports 20 10.10.10.154 //探测UDP最常见的20个端口的开放情况
我的kali的ip是10.10.10.128,靶机ip是10.10.10.154,发现仅仅开放了22,80端口:
注意漏洞扫描的信息,这里非常关键。通常我们都不会特别在意nmap的漏洞扫描,仅仅把扫描结果当成一个提示而已:
注意这里好像看到了一个web的目录:/d41d8cd98f00b204e9800998ecf8427e.php ,说实话还挺奇怪的,这么长的文件名都能暴露出来,如果访问能够发现是个私钥文件:
那这很可能就是ssh的私钥呀?至于是谁的私钥呢?注意看网页标题名称,mpampis key,那说不定就是mpampis的私钥。 当然,也可以看这个私钥最后的==判断是base64编码的形式,找个工具Base64解码一下也能看到mpampis字符串:
第二步:ssh私钥登录获取初始立足点
那么我们把这个私钥复制下来,随便起个名字,我这里就命名为isa了:
注意既然是私钥,必须具有保密性,因此权限必须保证只有所有者能够拥有读(写)权限,否则无法利用私钥登录。因此我们修改这个私钥的权限为600(或400):
然后尝试用登录mpampis的ssh,如下:
ssh mpampis@10.10.10.154 -i isa
此处 -i 指定用私钥登录,指定私钥文件,就是我们刚刚储存私钥的文件isa,如下图,登录成功:
查看一波信息,确认是靶机:
在当前目录下能拿到第一个flag,也就是user.txt:
第三步:sudo gcc提权
提权也是常规思路,先sudo -l查看有哪些特殊可利用的二进制可执行文件:
gcc是常见的C语言编译工具,至于如何利用这个工具提权,可疑参考开源项目GTFOBins,详情见:GTFOBins
在这个开源项目中可疑找到gcc的利用方法gcc | GTFOBins
运行如下指令即可提权(sh和bash都可以,就是Shell的种类不同,bash交互性更好一些):
sudo gcc -wrapper /bin/bash,-s .
这里还是做个解释:用-wrapper指定包装器,在包装器中添加启动shell的指令,,-s是bash的参数,指定从标准输入读取命令,保证读取到EOF时不会退出,点.表示编译的内容,此时我们并不关心编译啥,随便给个当前目录.即可。如下图,提权成功:
flag在/root目录下,是root.txt,不过内容好像是空的,whatever,这个靶机就打完了。有关sudo提权和各种二进制文件利用方法的介绍可疑参阅我的博客,我也介绍过GTFOBins这个开源项目,对渗透的帮助非常大!详见我的博客:
渗透测试:Linux提权精讲(一)之sudo方法第一期-CSDN博客
这个靶机就打完了,我感觉够容易的,甚至都没有从web端开始渗透。 那么如果进入web渗透会咋样呢?请看下面的踩坑过程:
番外篇:如何掉进web渗透的陷阱无法自拔
首先浏览器访问web:
貌似就是个NYX的象形文字,看看源代码:
源代码有一行注释的提示信息:不要在寻找源码或者robot.txt这样的文件上浪费时间,集中精力干实事。问题是啥是实事呀?你不让我找我就非要找,先看卡robot.txt:
果然,没这文件。web目录爆破一波:
dirb 10.10.10.154
算我倒霉,啥目录也没看到。如果我不服,就要继续爆破,那就试试吧,指定一些可能有信息的文件后缀,比如txt,zip,sql,php,asp啥的,看看能不能爆出来这些后缀的文件。用dirb的-X参数指定即可:
dirb http://10.10.10.154 -X .php,.zip,.txt,.sql,.asp,.jsp
nice,我以为找到了关键key.php,进来看看:
这个界面有个输入框,标题是:孩子努努力,你能找到key吗?那么我们应该要寻找key才对,最不济就是爆破。如果你随便瞎蒙输入,点提交submit,不会有任何变化。查看源代码:
这源代码也没啥提示。不过action的值为空,感觉这里好像没啥值得操作的,可能这个页面就没啥交互性。也可以试试SQL注入,不过我尝试了,好像没啥效果。key去哪里找呀?感觉也没有什么突破口了。如果你不服还可以来一波爆破,我这里就用burpsuite尝试一下:
输入框里随便输入个aaa,然后抓个包,果然是在post请求体中,那么我们就对这个key字段进行爆破,找个稍微厉害点的字典试试:
然后start attack,爆破结果按照返回包长度排个序,如下:
不错哈,我以为找到了啥突破口,不过字段就是admin和root,莫非就这么简单?
果然不行。只是提示语变了而已,root和admin都是一样的结果。总之我没找到这个页面的突破口。如果死磕这里可能会浪费很多时间。
总结与思考
这个靶机其实够简单的,关键就在于能否发现nmap默认漏洞扫描的关键私钥信息。可能难点就是如何从web的坑中跳出来(及时放弃,脱坑),最后还是总结一下过程:
第一步:主机发现和端口扫描。关键点是nmap默认漏洞扫描显示了关键私钥信息。
第二步:ssh私钥登录获取初始立足点。私钥登录成功。
第三步:sudo gcc提权。
感觉都没啥总结的。
总结就是,不要深陷泥潭暴力死磕,至于何时放弃,如何确认这里不是突破口,可能还是需要经验与尝试吧。 靶机不难,总结不易,也有很多自己的思考,希望读者能够点赞关注多多支持!学渗透还是要实操呀。如果读者有什么打靶的问题也欢迎评论区留言指出,我一定知无不言!