zoukankan      html  css  js  c++  java
  • Bulldog:2靶机渗透

    文章首发圈子社区: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+'
    ')
    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处的命令执行,所以前期的信息收集很重要。

  • 相关阅读:
    Android三种菜单的使用方式
    Express无法解析POST请求的JSON参数
    reids数据备份与恢复
    docker获取数据库时间相差8小时
    centos添加新用户
    创建一个新的容器并运行一个命令
    docker启动容器时报错unknown shorthand flag: ‘n‘ in -name
    linux查看cpu详细信息
    ValueError: Shapes (None, 1) and (None, 2) are incompatible
    Python:IOError: image file is truncated 的解决办法
  • 原文地址:https://www.cnblogs.com/gzs-monkey/p/10351883.html
Copyright © 2011-2022 走看看