Vulnhub打靶记录:pyexp

相关信息


kali:1.0.0.201/24

靶机:1.0.0.204/24

靶机介绍:pyexp: 1 ~ VulnHub(必须使用vmware运行该靶机)

靶机下载:https://download.vulnhub.com/pyexp/pyexpvm.zip

目标:2flag + root权限

难度:低

未提及的相关知识点,命令和代码等等可以查看我其他三个blog:

文字思路


全流程思路:

  • 主机发现 端口扫描 信息搜集
  • SSH密码爆破 Mysql密码爆破
  • Mysql执行代码:了解mysql的一下执行和读取文件的命令,以及mysql相关的配置文件位置
  • 编写解密代码:识别出fernet这个python机密库是关键
  • SUDO权限漏洞 Python函数 本地提权

下意识的操作

  1. 密码爆破一定要尝试,任何可能爆破的地方都要尝试

主要的知识点

  1. mysql渗透中的一些敏感函数:\!, load_file(), do_system()
  2. mysql渗透中的一些敏感配置文件:/etc/mysql/conf.d/,/etc/mysql/mysql.conf.d
  3. python中的exec函数的功能就决定了它的危害程度

具体流程


信息搜集

  1. 发现主机,端口扫描,主机发现。这台靶机没有80端口,基本就是从1337:ssh, 3306: mysql来进行测试。

    Snipaste_2023-07-29_01-02-50

  2. mysql进行exp的搜索,虽然版本不符合exp利用的条件但是值得一试,虽然最后的结果是不成功的。

    Snipaste_2023-07-29_01-10-22

  3. 由于只有ssh, mysql存在突破的可能,只有使用hydra分别对其进行密码爆破:

    • mysql:破出:root:prettywoman

      hydra -l root -P rockyou.txt mysql:1.0.0.204
      

      Snipaste_2023-07-29_01-24-48

    • ssh:无法暴力出结果

      hydra -l root -P rockyou.txt ssh://1.0.0.204:1337
      

      Snipaste_2023-07-29_09-45-19

  4. 当进入靶机数据库中尝试 \!来使用系统命令是无法成功的,说明靶机进行了相关命令的防护。

    Snipaste_2023-07-29_01-23-53
  5. 通过各种敏感函数加载出passwd文件发现lucy用户。

    • 用户也不存在公钥认证登陆的可能

      Snipaste_2023-07-29_10-04-18
    • 配置读取失败

      Snipaste_2023-07-29_09-59-38
    • 无法使用do_system函数

      Snipaste_2023-07-29_01-25-39
    • lucy用户

      Snipaste_2023-07-29_01-26-11
  6. 通过对数据库内的数据读取发现date : fernet这个数据库和表,cred明显是一个关于认证的加密内容,keyy为加密的salt

    cred keyy
    gAAAAABfMbX0bqWJTTdHKUYYG9U5Y6JGCpgEiLqmYIVlWB7t8gvsuayfhLOO_cHnJQF1_ibv14si1MbL7Dgt9Odk8mKHAXLhyHZplax0v02MMzh_z_eI7ys= UJ5_V_b-TWKKyzlErA96f-9aEnQEfdjFbRKt8ULjdV0=

    Snipaste_2023-07-29_10-04-49

突破边界

  1. 由于靶机上没有其他的明确提示和突破边界的方法,这个密文几乎就成了唯一的突破口令。但是在使用大量的解密工具和字典后都发现无法完成密码的爆破。直到看到这个数据库的名字 fernet,通过百度不难发现fernet为一个python的加解密库。

    Snipaste_2023-07-29_10-09-27

  2. 浏览他的官网:https://cryptography.io/en/latest/fernet/,再结合在python交互模式中对各个变量对象的确认,Fernet大致的使用方法基本明确:

    • key:也就是盐,为一个字节字符串对象
    • f:为fernet利用key生成的一个特殊对象
    • tokenf对象加密后的密文,也为字节字符串对象
    • f.decrypt(token):完成对token的解密
    Snipaste_2023-07-29_10-27-52
  3. 由于我们知道加解密方式,密文,salt直接在python的交互模式中解密出密文为:

    lucy:wJ9`"Lemdv9[FEw-
    

    Snipaste_2023-07-29_10-26-20

  4. 通过ssh成功的以lucy登陆靶机,获取第一个flag

    Snipaste_2023-07-29_10-29-17

信息搜集/提权

  1. 可以看到靶机可以sudo执行:/usr/bin/python2 /opt/exp.py这个脚本,通过阅读脚本和进行执行,可以发现一个非常危险的python函数:exec会将我们传入的字符串按照python语句进行解析并执行

    Snipaste_2023-07-29_10-33-25
  2. 所以再次打开这个脚本进行print函数的验证,果不其然。接着就是键入一个常用的升级shellPython代码就可完成提权,读取第二个flag完成打靶。

    Snipaste_2023-07-29_10-40-34
posted @ 2023-08-05 10:08  C_CHL  阅读(104)  评论(0编辑  收藏  举报