• DC-9靶机


    环境准备(kali  DC-9)

    信息收集  得到DC-9靶机IP  139

    端口扫描  得到其开放端口和操作系统版本信息

     http服务端口进行访问

     利用wappalyzer插件查看网站框架信息

    页面中存在4个选择依次点击试试

     Search项发现了蹊跷  似乎是注入漏洞   测试下回显和注入点

    都没有回显  上工具呗  sqlmap跑一下  (sqlmap -u "http://192.168.115.139/results.php" --data "search=1" --dbs)

     发现有两个库 staff和users 爆一下Staff库中的内容 (sqlmap -u "http://192.168.115.139/results.php" --data "search=1" -D Staff --tables)

    出来两个表    再来爆下表中有什么可用信息

    staff表中存在一些用户名和密码 这里没有我们想要的还需要进一步

    获取users表字段数据  (sqlmap -u "http://192.168.115.139/results.php" --data "search=1" -D Staff -T Users --dump)

    爆出一个admin账户  这个密码用sqlmap自带的字典就可以解出来  然后使用这个用户去manage项登录

     登录管理员后台  发现页面有个提示:File does not exist显示文件不存在

    猜测文件包含参数为file  通过文件包含漏洞查看/etc/passwd文件  (?file=../../../../etc/passwd)

    新知识点:  参考其他大佬的文章才晓得这里用的是端口敲门:
    原理简单分析:端口敲门服务  即:knockd服务  该服务通过动态的添加iptables规则来隐藏系统开启的服务 使用自定义的一系列序列号来“敲门”  使系统开启需要访问的服务端口  才能对外访问  不使用时  再使用自定义的序列号来“关门”  将端口关闭  不对外监听  进一步提升了服务和系统的安全性。

    简单来说就是:知道它的自定义端口后  依次对其进行敲门  然后就可以开启ssh服务从而进行连接了  它的默认配置文件为:/etc/knockd.conf
    所以现在就是要知道它的这个配置文件的内容就可以得到它自定义的端口号  用LFI把这个文件爆出来:

     然后安装knock工具  利用knock对获取的端口(开门密码)实现敲击  可以看到成功开启了ssh端口

    关闭态的22端口

     安装

    利用knock敲门

     成功敲开

     想要利用ssh服务  但需要用户名和口令  同样按照上述步骤获取users数据库的信息 (sqlmap -u 'http://192.168.115.139/results.php' --data "search=1" -D users -T UserDetails -C username,password,id --dump --batch)

     

     将用户名的口令收集起来  将username放入user.txt  将password放入pass.txt

    然后利用hydra对ssh爆破 (hydra -L user.txt -P password.txt 192.168.115.139 ssh)

    得到了三个账号密码:

    账号:

    密码:

    1、chandlerb

    UrAG0D!

    2、joeyt

    Passw0rd

    3、janitor

    Ilovepeepee

    利用爆破出来有3个用户可用  通过ssh登录三个账号进行登录  janitor用户  (ssh janitor@192.168.115.139)

    进行信息收集  发现了一个新的口令文件

     再次利用hydra进行爆破

     又得到了一组用户账号和密码(fredf  B4-Tru3-001)

    登录(ssh fredf@192.168.115.139(B4-Tru3-001))

     查看有没有可以进行sudo本地提权的地方  (sudo -l)

    在这里我们可以看到  这个用户可以sudo使用root权限在运行一个test程序  而且不需要密码  然后我们先进去这个保存文件测试的位置看一下这是个什么程序

     找到了一个test.py文件  打开看看

     是一个python脚本  目的拥有root权限  我们可以构造一个拥有root权限的用户 并在/etc/passwd文件中储存  只要使用这个用户登录  就可以获取到root权限 
    回到kali使用openssl工具先创建一个本地的加密用户  (openssl passwd -1 -salt admin 111111   -1 #使用md5加密算法  -salt #自动锚入一个随机参数作为文件内容加密)

    然后回到靶机中  回到程序的目录下用echo命令在/tmp目录下创建一个名为aaa的文件(这个文件名可以自定义) 再使用sudo用那个test程序来运行这个文件  随后切换成我们添加的这个用户  输入自己设定的密码就可以成功提权到root用户了   最后进入root目录下查看flag即可

    (echo 'admin:$1$admin$2WRLhTGcIMgZ7OhwCpREK1:0:0::/root:/bin/bash' >> /tmp/aaa
    sudo ./test /tmp/aaa /etc/passwd
    su admin
    cd /root
    cat theflag.txt)

    小结:

    A:  wappalyzer

    B:SQL注入 sqlmap
    C:  文件包含漏洞
    D:  端口敲门服务(knockd服务)
    E:  sudo本地提权

  • 相关阅读:
    Unity3D教程
    关于netty的一些你需要知道的内容(2)
    linux进程管理(二十六) — 负载调节历代方案演变
    FIX协议的基本概念
    Python排序:冒泡,选择,插入,希尔,归并,快速
    电脑硬盘分区软件哪个好用,无损分区软件哪个好
    linux 安装微擎
    解决uniapp组件uni-file-picker设置:disable-preview=“true“关闭预览不生效的问题 - 禁用图片预览无效的手动解决办法
    DP:解决路径问题
    redis6.2(二)Redis的新数据类型、使用java语言操作Redis
  • 原文地址:https://blog.csdn.net/m0_57954651/article/details/127834636