Skip to content

Commit

Permalink
Upload new file: 靶场战神为何会陨落?.md via simpread
Browse files Browse the repository at this point in the history
  • Loading branch information
MrWQ committed Sep 13, 2024
1 parent eaf6779 commit 8701bde
Showing 1 changed file with 313 additions and 0 deletions.
313 changes: 313 additions & 0 deletions md/靶场战神为何会陨落?.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,313 @@
> 本文由 [简悦 SimpRead](http://ksria.com/simpread/) 转码, 原文地址 [mp.weixin.qq.com](https://mp.weixin.qq.com/s/o5o8A4mfbnFxn235rDq2Lw)
![](https://mmbiz.qpic.cn/mmbiz_gif/5znJiaZxqldyq3SBEPw0n6hCXNk6PmR3gyPFJDUCibH91GiaAHHKiaCpcsfnQJ2oImQunzubgDtpxzxNHONU88CypA/640?wx_fmt=gif&from=appmsg)

我从第一个 SQL 注入漏洞原理学起, 从 sql-libas 到 DVWA, 到 pikachu 再到 breach 系列, DC 系列靶场, 再到实战挖洞, 发现靶场与实战的区别是极其大的。

我个人觉得在这种 web 环境下, 难的不是怎么测一个漏洞点, 而是怎么找一个漏洞点。靶场与实战最大的区别在于你不知道这个地方到底有没有漏洞, 尤其是在复杂的业务数据交互下,数据包, 参数, 接口将极其复杂。

本文将以 DC 系列靶场为例子,分析靶场与实战的区别,同时分享实战思路与需要用到的一些工具插件。

(本文并不主讲靶场, 因为网上已经有很多这种文章了)

DC-1

**探测**:nmap 扫描端口,dirsearch 扫目录,配合插件 wappalyzer 识别信息。

火狐 wappalyzer 插件下载地址:

https://addons.mozilla.org/en-US/firefox/addon/wappalyzer/

![](https://mmbiz.qpic.cn/mmbiz_jpg/5znJiaZxqldxeqQsMv3rjDcFWm7Akib4DoX5b9hSF4gPemuCyqajsCAvMVljEiaswibyIicPDZUE1wM7aSjIvZxPEicw/640?wx_fmt=other&from=appmsg)

**打点**:识别出 DrupalCMS,上 MSF 搜索利用,拿到 shell。

找到 flag1,根据 flag1 提示找到配置文件,在配置文件找到数据库账号密码,连接成功。

![](https://mmbiz.qpic.cn/mmbiz_jpg/5znJiaZxqldxeqQsMv3rjDcFWm7Akib4DoTgaJq1ujxuWYNk0ycmtFGOM57yAE88Tr2Iicib2gX5IiaL4ohoDueP4sA/640?wx_fmt=other&from=appmsg)

在数据库找出 admin 密码,发现有加密,根据靶场已有脚本修改数据库 admin 密码,成功登录 web 后台。

**深入**:进入后台后找到 flag3 根据提示 cat /etc/passwd。找到 flag4,根据 flag4 提示进行 find 提权: find / -exec "/bin/bash" -p \; 找到最后的 flag。

**实战区别分析:**

**探测阶段:**在拿到一个 IP 后除了进行基础操作 nmap,dirsearch, 指纹识别外,可能还要查找 IP 的域名,以及 IP 对应的公司,并根据公司名再次扩大信息搜集范围,到 google,github 以及资产搜索引擎上利用相关语法搜集默认密码,账号,邮箱等等信息。

并且根据关键字,及密码特征制作特定社工字典进行登录框爆破。而且实战一般情况 dirsearch 可能扫不出来什么东西,这时候还要到 google 和资产搜索引擎上查找。

靶场一般不会用到资产搜索引擎,例如 fofa, 鹰图,但它确实极其重要。

**打点阶段:**对于历史漏洞的利用不要只停留在指纹识别这些特征上,还要从数据包上分析。

但如果是登录框没进入后台哪有什么数据包呢?

如下:我在测某个系统时,将请求方法 GET 修改为 POST 直接爆出 IIS 版本,然后一个中间件 nday 通杀了两百多个站,而靶场一般是不会出现这种测试方法的:那就是想办法让系统报错!

![](https://mmbiz.qpic.cn/mmbiz_jpg/5znJiaZxqldxeqQsMv3rjDcFWm7Akib4Dodquhz3zSR3aXhCclx1JEGWmeKADWjKTTEjylBQn2yYrMXSGLt7Tx8A/640?wx_fmt=other&from=appmsg)kappframework-BmMGKv(1)(1)

实战中如果想对密码进行修改,我遇到过的:一种就是未授权调用后台修改密码接口修改,另一种就是忘记密码处的逻辑绕过,当然忘记密码这个功能可能前端并不会直接给出,需要自己通过 js 文件等等信息拼接口。

**DC-2**

**探测**:nmap 探测 IP 端口服务, 修改本地 DNS 文件访问靶场 IP 网站(找到 crew 字段),通过目录扫描找到后台登录口。

**打点**:通过 cewl 对网站定向搜集获取密码,通过 CMS 对应 WPscan 插件获取用户名,联合爆破进入后台。(jerry 及 tom 的账号密码)

翻看后台提示后放弃 wordpress 历史漏洞,尝试 ssh 连接

jerry 的 ssh 连接不上,tom 连接成功(已得到的账号密码)

**深入**:直接 SSH 登录成功,执行命令发现 rbash 限制:

![](https://mmbiz.qpic.cn/mmbiz_jpg/5znJiaZxqldxeqQsMv3rjDcFWm7Akib4DoJh3VT8v5okEEujIxhjTaLN8Y0cbUxfDs3lib3tTjVCFEYAIGunQHgbw/640?wx_fmt=other&from=appmsg)

自然想到 rbash 逃逸,逃逸成功后拿到 flag3

此时用 su 进行用户 tom 转换可以成功, 拿到 flag4 后根据 git 字段提示,进行 git 提权拿到最后的 flag

**实战区别分析:**

**探测阶段:**很多 IP 经过 nmap 扫描后发现只会开放 80 端口,且 80 端口为主站,渗透难度极大,且我用 dirsearch 等工具扫目录很少能扫出有用的目录。

在找脆弱资产时还需要结合关键字,资产搜索引擎,google 语法等搜索:

例如这个站:(浙大某脆弱资产)只能通过 google 语法 site:xxx 搜索出来,因为直接访问域名为 404 界面,路径极其复杂无法爆破,资产搜索引擎没有记录。

![](https://mmbiz.qpic.cn/mmbiz_jpg/5znJiaZxqldxeqQsMv3rjDcFWm7Akib4DoMrAuEwmKbVibib30OHoRx6oq8tv37nRuQkxPZdicCWOZ5hK7aB8X2Dib5w/640?wx_fmt=other&from=appmsg)

**打点阶段:**登录口的爆破也极有可能遇到次数限制

此时需要尝试绕过:修改为随机 IP,随机 UA 头,修改 Referrer 为 127.0.0.1 等等

这里推荐一款工具可以用来伪造 IP 爆破:

https://github.com/ianxtianxt/burpsuiefakeip

即使没有次数限制,可能也需要根据公司名称缩写,系统名称缩写配合 admin,administrator 等字段及特殊字符通过工具(白鹿社工字典)自制密码进行爆破。

![](https://mmbiz.qpic.cn/mmbiz_jpg/5znJiaZxqldxeqQsMv3rjDcFWm7Akib4DobHptIhwbegnbMticgtN8pibKIpa15A8tsWiaXU9qKkGUUrlYnq0ibe2SGQ/640?wx_fmt=other&from=appmsg)

因为靶场拿到 flag1 后根据提示 crewl(一个可以搜集账号的工具) 就知道要爆破进入后台,实战可能还会在忘记密码处耗费时间。

且实战不会有如下靶场提醒:(无法利用 wordpress 历史漏洞,需另寻他法)

![](https://mmbiz.qpic.cn/mmbiz_jpg/5znJiaZxqldxeqQsMv3rjDcFWm7Akib4DodIK9XPy2En7GS0ySgVBPZciajssXcichnibfnGVEEznHW7A5iafW4OtUFw/640?wx_fmt=other&from=appmsg)

实战过程中 ssh 连接可能也不会如此顺利(靶场直接使用 wp 登录界面爆破出来的密码登录)

DC-3

**探测**:扫端口,扫目录,查指纹(joomla)

**打点**:使用 joomscan 工具进行漏洞扫描,找到版本,searchsploit 找到 sql 注入漏洞,脱库拿到账号密码,john 解密成功。

![](https://mmbiz.qpic.cn/mmbiz_jpg/5znJiaZxqldxeqQsMv3rjDcFWm7Akib4DocfCbxOvsJQtDmwqoExcib6DgtVcjQZNhXiaoDSvV6GWJweuCo5CI0ouw/640?wx_fmt=other&from=appmsg)

登录管理员后台成功, 找到上传点直接 getshell。

![](https://mmbiz.qpic.cn/mmbiz_jpg/5znJiaZxqldxeqQsMv3rjDcFWm7Akib4DogfsxgYBy23R5EsDjSWY9QNTW4F1cxUlBA89ibUtvPPKcw0N00Nw83zQ/640?wx_fmt=other&from=appmsg)

无法在虚拟终端反弹 shell,于是返回上传点创建反弹 shell 的 php 文件,kali 接受成功。

![](https://mmbiz.qpic.cn/mmbiz_jpg/5znJiaZxqldxeqQsMv3rjDcFWm7Akib4Do8iakMU5NU4I95hsmvaLk7wXLOhF75NPR7odJRCLc6FrwoibfcSMhRH7w/640?wx_fmt=other&from=appmsg)

**深入**:利用用 searchsploit 工具搜索及蚁剑上传进行操作系统提权成功。

![](https://mmbiz.qpic.cn/mmbiz_jpg/5znJiaZxqldxeqQsMv3rjDcFWm7Akib4Dombc6JiaBReNicN2xvKYbn3icG5E1cAiaHI6Snkzf1xhGTL6MBH1ajUliaTw/640?wx_fmt=other&from=appmsg)

**实战区别分析:**

**探测阶段:**扫描目录时会找到两个登录界面,在实战中,需要将注意力放在并不对外使用的界面,它们属于脆弱资产,例如员工登录入口,管理员登录入口,像对外开放的,可以注册的那些登陆界面,虽然功能点更多,但由于经常有人访问,会经常维护,它们的安全性会更高,不容易出洞。

**打点阶段:**靶场依旧是利用 ndaysql 注入脱库拿到账号密码,但实战过程中找到一个 sql 注入后去脱库的可能性不大。在 src 中一般只用证明该漏洞存在即可,在渗透过程中要脱库就一定要先拿到有明确的渗透权限。

**DC-4**

**探测**:访问 IP,出现登录框,以 admin 为账号,bp 默认字典爆破成功

**打点**:后台直接执行命令抓包, radio 参数执行命令成功,进行 shell 反弹

![](https://mmbiz.qpic.cn/mmbiz_jpg/5znJiaZxqldxeqQsMv3rjDcFWm7Akib4DoD10KGIgvc6mWdeoqhzyxcg0Hy4X758dIm9GodY28CS1tWP6l1cuFow/640?wx_fmt=other&from=appmsg)

**深入**:翻找文件,找到账号与密码字典,hydra 进行 ssh 爆破成功, 继续翻找文件,找到 charles 账号密码,su 切换用户,根据关键字 teehee 进行提权找到 flag

![](https://mmbiz.qpic.cn/mmbiz_jpg/5znJiaZxqldxeqQsMv3rjDcFWm7Akib4DovxjPt5KjeiaczX1coeoTWlkgiagxuvMNZGdu3eZndkcy7wjb9AskBpJA/640?wx_fmt=other&from=appmsg)

**实战区别分析:**

**探测阶段:**可以看到靶场并无脚本源码,且那么就减少了很多黑盒测试点,而且靶场必定会存在漏洞这也是与实战的重大区别之一,而且很容易就爆破成功

![](https://mmbiz.qpic.cn/mmbiz_jpg/5znJiaZxqldxeqQsMv3rjDcFWm7Akib4Do8POVotp7TiaKQgnglVzgh3Aq50gWXcLJjh31flFE4fZlyY8T4gbjJ7g/640?wx_fmt=other&from=appmsg)

**打点阶段:**本靶场后台功能极其简单只有一个功能点,且一看就是要测试 RCE,但实战你遇到的可能是如下界面:

![](https://mmbiz.qpic.cn/mmbiz_jpg/5znJiaZxqldxeqQsMv3rjDcFWm7Akib4Dodmnj4ZJcTApUms1k374u7RjSxMhGYg1C7x3bQjpBB9YsC6Ixekdcsw/640?wx_fmt=other&from=appmsg)

会有很多模块,很多功能需要测试,对这种后台打点通常会先尝试文件上传漏洞,因为上传点更容易寻找,而 RCE 测试点则极为复杂,通常会在例如 "系统"" 命令 " 等字段的模块,但其实所有模块都可能存在 RCE,因为模块本身就是前端与后台执行功能的地方,黑盒测试你无法从前端界面直接看出究竟哪个模块调用了执行命令的参数。

所以黑盒测试 RCE 需要将前端功能点转换为数据包,从接口,参数进行测试。

DC-5

**探测**:nmap 扫端口,dirsearch 扫目录,指纹识别

**打点**:在扫出来的目录中翻阅时发现存在文件包含,直接以 file 参数读取成功。

确定为本地包含后,找到靶机日志,将 webshell 写入日志,getshell 成功。

![](https://mmbiz.qpic.cn/mmbiz_jpg/5znJiaZxqldxeqQsMv3rjDcFWm7Akib4DoEHMOEU0gsTmkHpFhFek1CRq2mp4eRHWNubDN7libqGHn4TQiaAHJj1jA/640?wx_fmt=other&from=appmsg)

**深入**:利用 searchsploit 对 / bin/screen-4.5.0 进行本地提权成功。

**实战区别分析:**

**打点阶段:**靶场文件包含的漏洞特征很明显,但实战中就并不会有这类提示,黑盒测试的思路就是多猜。而且在实战中想要利用文件包含进行 getshell 的难点就是找不到正确的路径和权限不够,并不会像靶场这样直接就能爆破出来,并且能直接包含。

实战更多的步骤还是在找漏洞而并不是测漏洞。

DC-6

**探测**:nmap 扫描端口(22,80),dirsearch 扫描目录,whatweb 识别

**打点**:发现 wordpress 指纹,使用 wpscan 扫描,使用提示的命令 cat /usr/share/wordlists/rockyou.txt | grep k01 > password 爆破进入后台。

需要修改本地 dns 文件才能访问靶场。

![](https://mmbiz.qpic.cn/mmbiz_jpg/5znJiaZxqldxeqQsMv3rjDcFWm7Akib4DodFpuiapEyDkWLiabHWBIiaCE8BdicRMgfUYicicDbZxPlGknAGXBwzEaARiaw/640?wx_fmt=other&from=appmsg)

在后台发现使用 activity monitor, 使用 searchsploit 搜索,利用脚本 getshell.

**深入**:在后台文件找到 graham 账号密码,于是进行 ssh 登陆成功,再次找到免密码执行的 sh 脚本,利用脚本完成提权。

**实战区别分析:**

**打点阶段:**本靶场发现 RCE 有两种方式,一是 nday 探测二是手测,漏洞点出现在输入 IP 的字段,也算是 RCE 的高发点,在实战过程中像交换机路由器后台也通常会有类似功能点,可以进行 RCE 测试。

DC-7

**探测**:nmap 探测端口,发现端口 80 与 22(估计又要 ssh 爆破),扫描出目录:/user/login

**打点**:访问 IP 看到如下提示

![](https://mmbiz.qpic.cn/mmbiz_jpg/5znJiaZxqldxeqQsMv3rjDcFWm7Akib4DoriabetVu8grAiaL4qs3aAUKPich0nEDsGrzM2lE51j5Wbic9t24DLBxN2g/640?wx_fmt=other&from=appmsg)

到 github 上搜索左下角名称: Dc7User 拿到账号密码,于是进行 ssh 连接成功

![](https://mmbiz.qpic.cn/mmbiz_jpg/5znJiaZxqldxeqQsMv3rjDcFWm7Akib4DoYic2iah0DPDzkKicjeg2XXOB6bJfceMzVXw5Y2QrQgHHpQKbZl0GWib37g/640?wx_fmt=other&from=appmsg)

翻找文件,找到一个邮箱,根据邮箱内容找到脚本文件(属于 root 主),发现可执行 drush 命令,通过 drush 命令进行 web 界面密码修改,并成功登录。

基于 Drupal 8 特性,安装好插件后上传 webshell 连接成功。

![](https://mmbiz.qpic.cn/mmbiz_jpg/5znJiaZxqldxeqQsMv3rjDcFWm7Akib4DoQ67UV1mIkkib0bVx86QmTZsicMZQQZNq002rcMC6U5IFic4zse7Z8ZgfA/640?wx_fmt=other&from=appmsg)

**深入**:,将反弹 shell 的命令添加到先前的脚本中,因为先前找出来的脚本属主为 root 进行权限提升。

**实战区别分析:**

**打点阶段:**打点阶段用到的 github 信息搜集极其重要,在实战中通过账号密码直接登录 ssh 或者数据库或者 web 后台也是存在较大可能的。

在 github 上也经常能发现公司代码、账号密码、个人信息或客户 key 等敏感信息。

常用 github 搜索语法:

in:name admin 仓库标题搜索含有关键字 admin

in:readme test Readme 文件搜索含有关键字

user:admin 用户名搜索

language:java admin 在 java 语言的代码中搜索关键字

github 信息搜集工具: https://github.com/FeeiCN/GSIL

本靶场的后台功能点还是很多的,但通过 drush 命令进入后台感觉还是属于靶场的味道。在实际挖洞过程中,如果账号密码无法爆破,更多可能是分析 js 文件(从 js 文件中找更多 js 再从 js 中提取接口),找隐藏接口,也就是前端页面并未显示有注册修改密码等功能,但可以从 js 中找到接口,实现登录后台的目的!

这里分享一个很适合找敏感接口信息的 bp 插件 HAE:https://github.com/gh0stkey/HaE

DC-8

**探测**:nmap 扫描端口(22,80),whatweb 指纹识别

**打点**:访问靶场 IP 点击左方,出现参数。

![](https://mmbiz.qpic.cn/mmbiz_jpg/5znJiaZxqldxeqQsMv3rjDcFWm7Akib4Do4ZcZDzkK8jnJibD2vItdSE2tCboEgAibxc9kgPXj6OQQ3K04FvyBOJibA/640?wx_fmt=other&from=appmsg)

加单引号后报错,用 sqlmap 拿到数据 john 解密拿到账号密码,进入后台。

![](https://mmbiz.qpic.cn/mmbiz_jpg/5znJiaZxqldxeqQsMv3rjDcFWm7Akib4Do6oC2EgXQg83mrhUa4ZSK7ql7uXDHlLK9f3x3Ew2s4C8j2O6B9TO2ibQ/640?wx_fmt=other&from=appmsg)

此处插入 webshell 配合 msf 直接 getshell 成功。

![](https://mmbiz.qpic.cn/mmbiz_jpg/5znJiaZxqldxeqQsMv3rjDcFWm7Akib4DonqMFG3vLXCjN0Tclmc4myt4QHVo7rhTm3QYibECRh0sprUjC0cZhWkA/640?wx_fmt=other&from=appmsg)

**深入**:执行 find / -perm -u=s -type f 2>/dev/null,根据 exam4 完成提权.

**实战区别分析:**

**打点阶段:**靶场依旧是利用的靶场思路 sql 注入拿到账号密码, 再进入后台. 但不要觉得 sql 注入实战很容易挖到 (看你挖什么资产了), 一般出 sql 注入就是一个高危. 而且靶场 sql 注入还是一个前台的 sql 注入, 这种 get 传参的前台 sql 注入已经是很多年前的了, 实战中基本不要想遇到, 但也要去测试.

靶场中的 getshell 方式实战中我没遇到过, 这种插入方式感觉更像 XSS 漏洞测试处.

DC-9

**探测**:nmap 探测端口,发现端口 80 与 22(filtered 状态)

**打点**:通过 dirsearch 扫出 search.php,manage.php 目录,进入后直接找到 sql 注入点。

![](https://mmbiz.qpic.cn/mmbiz_jpg/5znJiaZxqldxeqQsMv3rjDcFWm7Akib4DoYf8LCic2ZORzUQOAjq5mxyickBBPwbicPhzTVM3zhghBlfzSsPkAXv9ww/640?wx_fmt=other&from=appmsg)

sqlmap 脱库 MD5 解密拿到账号密码登录 manage.php 后台。

根据 File does not exist 提示进行文件包含利用? file=../../../../

FUZZ 系统文件找到 / etc/knockd.conf,泄露 7469 8475 9842 端口。通过 nc 敲开端口,根据 / etc/passwd 读取账号密码进行 ssh 爆破。

![](https://mmbiz.qpic.cn/mmbiz_jpg/5znJiaZxqldxeqQsMv3rjDcFWm7Akib4Dok8I58YWGct9M2ia8l6I3TqSRtTsmNlQoLCwbGa2r8fWhvqd2ibGCnwtA/640?wx_fmt=other&from=appmsg)

登录爆破出的账号翻文件搜集字典,再次进行 ssh 爆破出新账号。

**深入**:登录新账号,先执行 sudo -l,找到 python 脚本,分析利用脚本完成提权。

**实战区别分析:**

**打点阶段:**靶场 sql 注入点较为经典,处于搜索框。且虽然存在 sql 注入,但如果只添加单引号并不会出现报错,还需要进一步探测才能发现!

这里推荐一款常用工具:

https://github.com/synacktiv/HopLa

BP 辅助 payload 插件,可以一键插入常用 payload,不用额外再找字典等等。

![](https://mmbiz.qpic.cn/mmbiz_jpg/5znJiaZxqldxeqQsMv3rjDcFWm7Akib4DoBqUAHKu6wKrXPkIPiaOcgSDuf1icmkMmXcJblLPrBfibJ72icViaGZgWkIA/640?wx_fmt=other&from=appmsg)

对于 sql 注入的黑盒测试不要局限思路,你觉得可能带入数据库的参数都需要测试,尤其是在排序例如 desc 等不能被预编译的字段。

打点处的文件包含漏洞算是一种实战思路:也就是? file=../../../etc/passwd 或者? path=../../../etc/passwd 这类 payload 可以在挖洞过程随机添加,不一定要对应着功能点才去测试,只要存在 file,download 等敏感字段都可以添加尝试,因为这可能是隐藏功能点。

靶场可能更多的功能是练习单个的知识点,实战少遇到的知识点,比如一个新手可能挖半年漏洞都无法 getshell 一次,更别提后渗透等等了。但在打靶的同时也要关注对 nday,1day 漏洞的黑盒分析,并进行总结。

例如下对权限绕过的一个分析总结:

1:大小写替换绕过

/api/home/admin--/api/home/ADMIN

2:通配符替换字符:

/api/user/6---403

/api/user/*---200

3:路径穿越:

/api/home/user---403

/api/MYPATH/../home/user---200

/api/home/..;/..;/..;/..;/home/user---200

除此外还要关注最近的系统或者框架 0day 例如 SQL 注入,RCE 等等它们的注入参数是哪个,目录特征怎样?这样在实战过程中靶场战神才不至于陨落。

[![](https://mmbiz.qpic.cn/mmbiz_png/5znJiaZxqldwoHriaVoyA6JNsGroYQAQp8xrlxS8RibJWibDF8T1pmkgSXqiaWQvmVB43S1IVCFBDOKTEQFDAP0QL5g/640?wx_fmt=png&from=appmsg)](http://mp.weixin.qq.com/s?__biz=MzkxNTIwNTkyNg==&mid=2247549615&idx=1&sn=5de0fec4a85adc4c45c6864eec2c5c56&chksm=c160f8e6f61771f0fec6a865b8f6f645128bd3f48035546980afeebcc974b4f76538c7561d55&scene=21#wechat_redirect)

0 comments on commit 8701bde

Please sign in to comment.