文章首发圈子社区:https://www.secquan.org/Notes/1068825
前言
前两天做了一个靶机渗透题目,在此记录一下
靶机信息:
靶机名称
Bulldog:2
渗透步骤:
一、获取靶机IP
成功搭建靶机后,界面显示了ip地址:
但如果靶机没有显示ip,可以用nmap扫描网段得到ip。
二、浏览网站
网站的功能很简单,注册、登录以及浏览一些用户信息。简单点了点网站的功能,发现有登录和注册,但是当我点击注册的时候,界面显示不让注册。
网站有一个user界面,里面列出了9名用户,有用户名。
这时候想到利用登陆界面结合这些用户名去爆破弱口令,先放着,继续信息收集......
三、扫描端口信息
扫描靶机端口,准备从开放的服务下手
可是发现就开了一个80端口,啧啧啧,好吧,继续目录探测一波...
四、扫描目录信息
利用dirb工具扫描目录
两个链接。。。第一个404,第二个是一个图标,看起来也没有得到什么有价值的东西。
五、爆破用户名
这时候就有点懵了,感觉无处下手啊,但是幸好浏览网页的时候开着F12,看到一个连接http://192.168.1.102/users/getUsers?limit=9
点进去
9个用户信息,limit的值也正好是9,这就不免想改一改limit的值了,直接改成1000000,再改1000001的时候没有增加的用户信息,这里应该是所有用户的信息了。
接下来写个脚本把username全都提取出来
# -*- coding:utf-8 -*- import re f = open('..\\Onames.txt','r') s = f.readline() f.close() name1 = re.findall('username(.+?),',s) name1 = "".join(name1) name2 = re.findall(':\"(.+?)\"',name1) f1 = open('..\\names.txt','w') for name in name2: f1.write(name+'\n') f1.close()
接下来就用bp进行爆破了,爆破出几个用户名密码来
用其中一个进行登录,但是登录之后还是感觉没什么用
这时候看了其他大佬的wp,才知道登录的时候还发生了一次JWT,关于JWT放一个链接:http://www.ruanyifeng.com/blog/2018/07/json_web_token-tutorial.html
六、修改token提权
利用bp获得token,下面靶机的ip都变成了192.168.1.101,因为文章是分两次记录的,靶机的ip发生了变化。
token信息解密
解密之后发现重点是auth_level这个字段值,但是应该把它改成什么呢,之前的信息收集没有收集到任何有用的线索,只能看访问到的源码了,
幸运的是在其中一个js文件中找到了这个关键字
试试改成master_admin_user进行发包
返回的结果:
发现我们已经是admin了,下一步就该考虑怎么getshell了
七、getshell
在getshell这想了很久都没什么思路,再次拜读了大佬的wp后,才知道password这有命令执行
抓包
利用nc反弹shell
nc -vlp 8000
产生tty shell
python -c 'import pty;pty.spawn("/bin/bash")'
接下来就是创建root用户,方法有很多,可以用openssl也可以用脚本perl、php等等...
再su提权之后然后就可以看到root目录下的flag文件了
八、总结
对于这次的渗透靶机,个人感觉重点在于前期的信息收集,虽然端口和目录都没有突破,但是用户名有了大用处,再到后面的getshell是由于靶场源码暴露在了github上,经过审计得知password处的命令执行,所以前期的信息收集很重要。