0%

学长的任务罢了12-snakeoil

  • 扫描打点

    • 80

      扫不出什么东西

    • 8080

      类似论坛之类的东西,可以发表或修改

      找到一些可能有用的:

      找到个操作文档之类的:

      https://flask-jwt-extended.readthedocs.io/en/stable/options/

      再扫一下:

      大概看了一下,users 存了用户名和信息

      registration 要改成 POST ,根据提示发送 usernamepassword 来注册用户

      这里卡了一会,注意需要手动加上 Content-type: application/x-www-form-urlencoded 这是表单默认的提交数据格式,否则识别不到

      然后用同样的办法进 /login

      /secret 的话可能是缺 cookie ,但不知道是我的还是要patrick的

      在文档里面能找到 cookie 的格式

      然后收不到返回值,可能是格式不对,或者要用patrick的?

      bp全责,用hackbar能做,但要放到新建的 header 而非 cookies 里面,感觉怪怪的

      拿到 secret:commandexecutionissecret

      呃呃,然后被提醒有个 /run ,感觉要换字典了

      根据提示的数据格式以及 secret_key 的返回值,应该是拿 json 传的,但bp又发力了接收不到,用 curl

      1
      curl -X POST "http://192.168.129.5:8080/run" -H "Content-Type: application/json" -d '{"url":"127.0.0.1:80","secret_key": "commandexecutionissecret"}'

      改一改 url 不难发现其被拼接在 curl 语句后面,那么考虑截断来做到命令执行

  • getshell

    先搜集下信息

    可以注意到 flask 的源码

    美化一下源码可以找到明文的 jwt_secret_key:NOreasonableDOUBTthisPASSWORDisGOOD

    密码复用登 ssh

  • linux 提权

    可能是前面有点麻烦,sudo -l 直接提了