今天折磨了一天感冒和头痛的身躯。。。。写完倒头就睡。。。。
今天决赛分为:
- 上午的综合渗透(个人更觉得是CTF)因为讲道理貌似三个题目服务器之间是互相不可达的。。。。。
- 下午的AWD(很不意外 还是只有一题)
上午的综合渗透是三个cms,分别是MetInfo 5.x、骑士CMS、还有一个easycms。。(版本号真的不记得了。。)
首先第一题MetInfo
- cookie处一个flag
- robots.txt处一个flag
- 弱密码admin ---- MetInfo 进入后台
- 看到有个模版上传, 只允许上传zip等等,后缀限定得很死,发现他里面的模版都是以很多文件的形式存在,那么可以很合理的猜测他这里会有解压这一个操作,所以构造一个一句话,然后打包成zip上传模版,发现php被解压出来在templates目录下,getshell,直接上菜刀,这是一个windows的题,Orz这里就一开始有点难办了。。不太懂windows的命令。
- 在User目录下的flag4文件夹发现一个flag
- 在网站部署目录下的upload\file里看到一个flag
- 另外还有一个忘记在哪找的了。。。是一个名字为flag5.png的文件,hexdump后发现flag5
第二题骑士CMS
- 服务器设置不当导致部分目录遍历 (不存在index.php index.html的文件夹 具体apache配置项是Directory的Indexes)
- cookie处一个flag
- robots.txt处一个flag //貌似是
- 在遍历的时候发现了PHP的session储存点,翻看之后看到带有admin记录的session值,果断document.cookie="PHPSESSID=xxx"伪造一波,成功登录后台
- 在后台处发现了模版编辑,是编辑htm文件,但是里面有很多类似于laravel的blade模版引擎的mustache写法,也就是{{ }}之类的,猜测这里是可以直接加入php执行的,直接加入
成功执行,然后就开始getshell翻翻翻flag了
- apache运行用户叫apache
- 首先在网站部署根目录下发现一个AAAAAAAAflag.txt文件得到一个flag
- 其次在服务器根目录下有一个/flag文件夹,虽然是被设置成了700,但是owner是apache,直接chmod 777 后进入目录查看.flag.txt文件得到一个flag
- 最后执行find / -name flag的时候在/var/lib/mysql/处发现了有一个flag文件夹,这次owner是mysql并没有读权限,cat /etc/group 的时候发现mysql是单独一个组的,这里想到了提权。。。但是没有怎么操作过。。。所以放弃了
附上一部分模版源码:
{#qishi_pageinfo set="列表名:page,调用:QS_index"#}
Welcome 74CMS
{#include file="header.htm"#}
全部职位分类
{#qishi_notice_list set="列表名:notice,显示数目:9,标题长度:12,分类:1,填补字符:..."#}
{#foreach from=$notice item=list#}
- {#$list.title#}
{#/foreach#}
{#qishi_ad set="显示数目:6,调用名称:QS_indexfocus,列表名:ad"#}
{#section loop=$ad name=list#}
{#/section#}
{#foreach from=$ad item=list#}
- ![]({#$list.img_path#})
{#/foreach#}
会员登录
紧急招聘
更多>>
{#qishi_jobs_list set="列表名:jobs,显示数目:10,职位名长度:12,企业名长度:12,紧急招聘:1,排序:refreshtime>desc"#}
{#foreach from=$jobs item=list#}
- {#$list.companyname#}{#$list.jobs_name#}
{#/foreach#}
{#qishi_ad set="显示数目:3,调用名称:QS_indextopimg,列表名:ad,文字长度:12"#}
{#if $ad#}
{#foreach from=$ad item=list#}
{#/foreach#}
{#/if#}
{#qishi_ad set="显示数目:6,调用名称:QS_indexcentreimg,列表名:ad,文字长度:12"#}
{#if $ad#}
{#foreach from=$ad item=list#}
![]({#$QISHI.site_template#}images/index/84.gif)
{#if $list.jobs#}
{#/if#}
{#/foreach#}
{#/if#}
{#qishi_ad set="显示数目:10,调用名称:QS_indexcentreimg_230x58,列表名:ad,文字长度:12"#}
{#if $ad#}
{#foreach from=$ad item=list#}
![]({#$QISHI.site_template#}images/index/84.gif)
{#if $list.jobs#}
{#/if#}
{#/foreach#}
{#/if#}
推荐职位Recommended Job
我是招聘单位,我想出现在这里
{#qishi_companyjobs_list set="列表名:comjob_recommend,显示数目:12,显示职位:3,推荐:1,统计职位:1"#}
{#foreach from=$comjob_recommend item=list#}
{#foreach from=$list.jobs item=jobs_li#}
{#$jobs_li.jobs_name#}
{#/foreach#}
{#/foreach#}
{#qishi_ad set="显示数目:3,调用名称:QS_indexcenter,列表名:ad,文字长度:12"#}
{#if $ad#}
{#foreach from=$ad item=list#}
{#/foreach#}
{#/if#}
最新职位Latest Job
更多>>
{#qishi_companyjobs_list set="列表名:jobs,显示数目:40,职位名长度:12,显示职位:1,企业名长度:12,排序:rtime>desc"#}
{#foreach from=$jobs item=list#}
{#$list.companyname#}
{#foreach from=$list.jobs item=li#}
{#$li.jobs_name#}
{#/foreach#}
{#/foreach#}
{#qishi_ad set="显示数目:3,调用名称:QS_indexfootbanner,列表名:ad,文字长度:12"#}
{#if $ad#}
{#foreach from=$ad item=list#}
{#/foreach#}
{#/if#}
照片简历Photo Resume
更多>>
{#qishi_resume_list set="列表名:resume,显示数目:7,照片:1,意向职位长度:14,填补字符:...,排序:rtime>desc"#}
{#foreach from=$resume item=list#}
{#$list.education_cn#},{#$list.experience_cn#}
{#$list.intention_jobs#}
{#/foreach#}
职位导航Jobs Navigation
1F{#"QS_jobs,76"|qishi_categoryname#} · {#"QS_jobs,77"|qishi_categoryname#}
{#qishi_get_classify set="列表名:subcate,类型:QS_jobs_floor,显示数目:20,id:76_77"#}
{#foreach from=$subcate item=list#}
{#$list.categoryname#}
{#/foreach#}
{#qishi_companyjobs_list set="列表名:comjobs,显示数目:10,显示职位:3,职位分类:76_77"#}
{#foreach from=$comjobs item=list#}
{#$list.companyname#}
{#foreach from=$list.jobs item=li#}
{#$li.jobs_name#}
{#/foreach#}
{#/foreach#}
2F{#"QS_jobs,3"|qishi_categoryname#} · {#"QS_jobs,5"|qishi_categoryname#} · {#"QS_jobs,6"|qishi_categoryname#}
{#qishi_get_classify set="列表名:subcate,类型:QS_jobs_floor,显示数目:20,id:3_5_6"#}
{#foreach from=$subcate item=list#}
{#$list.categoryname#}
{#/foreach#}
{#qishi_companyjobs_list set="列表名:comjobs,显示数目:10,显示职位:3,职位分类:3_5_6"#}
{#foreach from=$comjobs item=list#}
{#$list.companyname#}
{#foreach from=$list.jobs item=li#}
{#$li.jobs_name#}
{#/foreach#}
{#/foreach#}
3F{#"QS_jobs,117"|qishi_categoryname#} · {#"QS_jobs,120"|qishi_categoryname#} · {#"QS_jobs,121"|qishi_categoryname#}
{#qishi_get_classify set="列表名:subcate,类型:QS_jobs_floor,显示数目:20,id:117_120_121"#}
{#foreach from=$subcate item=list#}
{#$list.categoryname#}
{#/foreach#}
{#qishi_companyjobs_list set="列表名:comjobs,显示数目:10,显示职位:3,职位分类:117_120_121"#}
{#foreach from=$comjobs item=list#}
{#$list.companyname#}
{#foreach from=$list.jobs item=li#}
{#$li.jobs_name#}
{#/foreach#}
{#/foreach#}
4F{#"QS_jobs,97"|qishi_categoryname#} · {#"QS_jobs,98"|qishi_categoryname#} · {#"QS_jobs,99"|qishi_categoryname#}
{#qishi_get_classify set="列表名:subcate,类型:QS_jobs_floor,显示数目:20,id:97_98_99"#}
{#foreach from=$subcate item=list#}
{#$list.categoryname#}
{#/foreach#}
{#qishi_companyjobs_list set="列表名:comjobs,显示数目:10,显示职位:3,职位分类:97_98_99"#}
{#foreach from=$comjobs item=list#}
{#$list.companyname#}
{#foreach from=$list.jobs item=li#}
{#$li.jobs_name#}
{#/foreach#}
{#/foreach#}
5F{#"QS_jobs,50"|qishi_categoryname#} · {#"QS_jobs,51"|qishi_categoryname#} · {#"QS_jobs,52"|qishi_categoryname#}
{#qishi_get_classify set="列表名:subcate,类型:QS_jobs_floor,显示数目:20,id:50_51_52"#}
{#foreach from=$subcate item=list#}
{#$list.categoryname#}
{#/foreach#}
{#qishi_companyjobs_list set="列表名:comjobs,显示数目:10,显示职位:3,职位分类:50_51_52"#}
{#foreach from=$comjobs item=list#}
{#$list.companyname#}
{#foreach from=$list.jobs item=li#}
{#$li.jobs_name#}
{#/foreach#}
{#/foreach#}
职场资讯Workplace Information
更多>>
{#qishi_news_category set="列表名:newscategory,资讯大类:1,显示数目:4"#}
{#section loop=$newscategory name=nclist#}
{#qishi_news_list set="列表名:topnews,显示数目:4,标题长度:18,资讯小类:$newscategory[nclist].id,摘要长度:36,填补字符:...,排序:id>desc"#}
{#foreach from=$topnews item=toplist#}
- {#$toplist.title#}
{#/foreach#}
{#/section#}
{#qishi_news_list set="列表名:news_list,显示数目:8,标题长度:12,填补字符:...,排序:click>desc"#}
{#section loop=$news_list name=nclist start=1#}
- {#$smarty.section.nclist.index#}{#$news_list[nclist].title#}
{#/section#}
友情链接Friendly Link
申请>>
{#qishi_link set="列表名:link,显示数目:100,调用名称:QS_index,类型:1"#}
{#foreach from=$link item=list#}
{#$list.title#}
{#/foreach#}
{#qishi_link set="列表名:imglink,显示数目:14,调用名称:QS_index,类型:2"#}
{#if $imglink#}
{#foreach from=$imglink item=list#}
{#/foreach#}
{#/if#}
{#include file="footer.htm"#}
第三题easyCMS
- 这题也是服务器设置不当导致部分目录遍历
- 进入templates/admin目录时发现title为flag
- 这题没啥思路了Orz。。。。希望大佬们能解答一下。。。
下午的AWD不出所料又是一道Web题
但是围绕这个Web题主办方开放了三个服务,分别是80端口的http服务,8888端口的由python跑的http服务,6379端口的redis服务
这里三个服务都各有一个洞(赛后询问主办方得知)
根据主办方的赛前公告 getflag的方法是运行位于/usr/tmp目录下的getkey程序即可打印出flag,但是赛后问出题人其实还有另外一个地方有明文flag。。。。。。
首先80端口的一个Drupal反序列漏洞 ,链接 https://paper.seebug.org/334/?spm=5176.app55885.3.2.XT8Apf
防御方法:及时修改admin密码其次8888端口是ffmpeg的任意文件读取漏洞,emmm其实不知道这个有啥用。。。但是后来问出题人。。他说本来他也没想到这样用的。。因为其实服务器中还mount了一个虚拟硬盘,里面有明文的flag,所以可以用这个直接读取。。。。//但是个人觉得这个洞。。。。貌似根本补不了,没有这个权限。。。所以emmmmm 大家应该懂
防御方法:其实这个洞后来想了一下。。。可以写脚本无限访问del去删除,但是这个存在一个竞争的问题,因为操作机与别人攻击的机器是处于水平网络上的,所以如果对面也写脚本请求的话不一定能竞争成功。。最后是6379端口的redis服务,我是拿了这个洞来打的。。。今天下午又犯蠢了。。ps aux发现redis之后很开心,兴冲冲连上去发现不用密码,输入info命令可以看到redis的配置文件位于 /var/lib/redis/6379/xxx 然后查看自己的配置文件发现有几个命令是被rename或者是移除的,比如migrate flushdb之类的 然后config命令被rename成了ccccooonnnnfig,shutdown被rename成了shutdown_123,然后加了自己的登录密码,自作聪明的上去把绝大多数人的redis down了,想着能美滋滋的收分。。。。。但是突然意识到这个awd是没有checker的!!!!崩溃Orz。。。后来发现甚至有人把自己的80端口的服务都down掉了(不知道他们是如何做到的,因为不提权的话根本不会有权限) 其实这里是可以用redis来进行任意文件写, 因为redis是用root权限运行的,而redis有一个save备份自身的kv对到文件的功能,也就是说,我可以执行以下命令来进行写shell
> ccccooonnnnfig set dir /var/www/html/drupal8/
> ccccooonnnnfig set dbfilename Pr0ph3t.php
> set Pr0ph3t ""
> save
save命令执行之后 redis将会在80网站部署根目录下生成一个内容带有Redis字样的Pr0ph3t.php的文件
然后反弹shell之类的,权限为deamon用户
这里推荐写一个unlink自身的不死马,不会暴露是通过Redis服务写的shell
防御方法:开启redis的密码 以下命令
> ccccooonnnnfig set requirepass 你的密码
此命令设置后不用重启服务即可生效
相关资料:https://www.leavesongs.com/penetration/write-webshell-via-redis-server.html
写在最后:
其实这次比赛体验。。。大家心里都应该会有数。。。。。就不多说了。。。。