vulnhub Nullbyte
vulnhub Nullbyte walkthrough
0x01 端口扫描
主机发现:
全端口扫描:
详细信息扫描:
从rpcinfo感觉可能需要用到udp端口,多扫下udp:
只开了rpcbind和一个网络配置服务(zeroconf),看来无需udp
接着脚本扫描:
枚举出了phpmyadmin和uploads页面,思路转到web渗透
0x02 web渗透
先打开目录爆破:
访问web服务:
只有一个图片,先下载,等待目录爆破结果:
然而没什么新的有效信息,顺着访问phpmyadmin和uploads
uploads说我们没有权限查看该目录的列表,但是推测可以通过/uploads/shell.php访问内容
常规的登录界面,测试注入无果
线索只剩了main.gif,推测其中有信息隐写
exiftool查看图片信息
1 |
|
在图片详细信息中就发现了一段文字kzMb5nVYJw
先保存到hint.txt
尝试直接做phpmyadmin登录、ssh登录,全部失败
尝试抓包对uploads目录直接上传文件,失败
尝试gif图片隐写检查,失败
突然突发奇想,ctf比赛时为了防止目录爆破经常起奇怪的文件名,尝试将这段文字当作路径,居然还真成功了:
接着对着这个页面是一顿测注入,能测的都测了一遍,结果发现这页面不能执行sql语句,大概率就没连着数据库。就是一个单纯的验证key的界面,目前只能期望hydra爆破能走通了…
hydra爆破
参考:[[入门打靶 (5台wp)#hydra密码爆破]]
1 |
|
根据抓取的数据包构造以上爆破语句,用rockyou成功爆破出key
登录:
登录后终于来到有查询功能的页面,抓包开测注入:
确认存在sql注入,且是”型,测万能语句“or 1#
测出列数为3:
尝试写马:
失败,可能是路径猜测错误,也可能是没有权限
老老实实查内容:
1 |
|
两个库最感兴趣:phpmyadmin、seth
先查phpmyadmin:
1 |
|
说实话看到这个前缀就感觉不会有什么有用信息,但保险起见还是看看这两个和user相关的表:
1 |
|
果然是两张空表
转回seth库:
只有users表:
把数据全dump出来:
1 |
|
得到一个ramses的凭据:
id:ramses
pass:YzZkNmJkN2ViZjgwNmY0M2M3NmFjYzM2ODE3MDNiODE
解码:
成功解出最终凭据:
ramses@omega
尝试登录ssh、phpmyadmin:
0x03 获得立足点(ssh777端口)
1 |
|
ssh登录成功,直接拿到了立足点,感觉无需再去尝试phpmyadmin的登录
开始做信息收集,先完善tty:
1、枚举home目录,都无写权限,放弃写公钥横向提权
2、sudo枚举,没有任何结果
3、自动任务枚举:
1 |
|
4、s位枚举:
1 |
|
一眼看到最特殊的/var/www/backup/procwatch,基本可以肯定它有问题
且gtfobins查询其余文件均无法s位提权
0x04 suid提权
很遗憾只有执行权限,先执行一次看看:
好像是执行了一次ps和sh的操作,并把ps的结果返回了?
感觉可以软链接提权:
因为不太熟悉这种提权方式,不知道为什么不太行…
突然想到可以劫持ps的环境变量,实现指向sh:
1 |
|
成功提权
拿到凭证
0x05 自我反思补足
sql注入写马
当时还向/tmp目录写做了尝试,打完后发现tmp的确实写进去了
查看web根目录权限,发现是因为mysql用户并无该目录的写权限
软链接提权
1 |
|
link_name为被劫持文件
首先被劫持文件不能已经存在,否则报错
其次如果想要强制替换已存在的被劫持文件,参数可改为-sf,但也需要有写权限
所以一般情况下,软链接提权要和环境变量劫持一同使用,如下:
(由于当前目录也有写权限,直接把当前目录写入环境变量即可)
1 |
|
即在当前目录生成一个ps文件,并软链接指向/bin/sh
之后执行
./procwatch
触发root sh
0x06 总结
- 端口扫描:80 web服务,777 ssh服务
- web渗透:从图片详细信息得到隐藏路径,在sql注入失败的情况下对隐藏路径的登录key值进行爆破,成功进到连接数据库的查询页面;使用联合查询对其注入,得到用户信息,解码后为ssh凭据
- 提权:通过ssh获得立足点,枚举发现root身份的s位脚本文件,该脚本以root身份执行ps命令;通过劫持ps命令的执行文件,换为执行sh,获得root shell;此处亦可通过软链接劫持ps命令达到相同效果
0x07 看wp及视频后反思补足
对于自我反思补足部分的勘误补足:
虽然/var/www/html目录整体并无写入权限,但是存在uploads页面,不妨大胆推测此处可进行写操作,尝试对/var/www/html/uploads写马:
1 |
|
接着写马弹shell即可
反思:盲打阶段虽然考虑到了尝试写马,但当发现不能直接写到网站根目录时放弃过早,即使没有从uploads的名字联想到可以写数据,也应该根据目录爆破结果逐个尝试(intruder)