🇧🇷FireShell CTF 2020 Writeup 2 min read
本文最后更新于 405 天前,其中的信息可能已经有所发展或是发生改变。

Author:颖奇L’Amore

Blog:www.gem-love.com

周日的比赛,然而因为一直在运维BJDCTF,只随便签了个到,但是质量确实可以,虽然今早已经结束了,还是决定全部题目复现一下,对某些点也要深入研究一下

这个比赛是我做过国外几乎是最好的比赛,虽然难度不难,但是每道题都是有实际的应用场景(比如在线代码编译器),而不像其他绝大部分CTF题目一样,基本是专门出的题,没有机会应用到实际场景。


CasS(100pt)

Compiler as a Service

Too lazy to install gcc? Hey, we can compile your code to you!

flag is on /flag

https://caas.fireshellsecurity.team/

考点:LFI

打开题目发现是个在线代码编译器 另外题目还告诉了Too lazy to install gcc,所以说明是编译C/C++的

写了个hello world,如果代码没问题,就会编译完然后下载文件,flag肯定不藏里面所以我也没运行。但是如果代码出错,就会报错:

写C的hello world时候要有#include <stdio.h>才能使用printf(),定睛一看include包含,于是直接包含flag,payload

#include "/flag"

报错得到flag

flag:F#{D1d_y0u_1nclud3_th3_fl4g?}


URL to PDF(418pt)

Please test our brand new service.

flag is on /flag

https://urltopdf.fireshellsecurity.team/

考点:DEFCON议题、SSRF、任意文件读取

打开题目,是个URL转PDF的在线转换器

输入一个URL,就会转成PDF,和上一个题一样,自动下载转换完的东西

但是不能直接用file://协议去读本地文件,会报错。开个服务器看一下请求:

发现使用了WeasyPrint

预备知识:

Ben Sadeghipour – Owning The Clout Through Server Side Request Forgery – DEF CON 27 Conference

Several vulnerabilities lead to Remote Code Execution and Arbitraty File Read on multiple servers

在Hacker One – Ben Sadeghipour的这个关于SSRF的DEF CON议题上,有一部分专门介绍了Weasy Print

议题上对WeasyPrint做了一些说明:

  • Only fetched images
  • No JavaScript
  • No <iframe>
  • we can use:<img> <embed> <object> <link>

问题就出来了<link>标签上。WeasyPrint会把所有你给它的东西(前提是它支持的)都请求一遍然后放在PDF里,虽然有些东西可能不可见,但是确实是存在的。于是就有了这样的攻击方式:

<link>标签内href加载file://实现SSRF+任意文件读取,在第二篇文章中也给出了介绍:

Weasyprint (the library used here) allows including files into the PDF using <link rel=attachment href="PATH" /> in the HTML source for the PDF

  • It’s a documented feature

  • The information about weasyprint was leaked using a background-image CSS property to load an attacker-controlled image

  • The vendor and version (weasyprint 44) were in the HTTP headers

所以我们自己写一个html页面:

然后去转PDF,转完pdf之后用pdfdetach分离一下得到flag

flag:F#{th4nk5_t0_Ben_Sadeghipour_&_Cody_Brocious}

推荐好好看看这个DEFCON视频,介绍了好几种SSRF的方法


Screenshoter(469)

Turn your beautiful website into an image with our new tool!

flag is on /flag

https://screenshoter.fireshellsecurity.team/

考点:CVE-2019-17221、PhantomJS任意文件读取

这个题和上一个题一样,只是将网页扫描之后转为图片,先测试一下发现使用了PhantomJS:

预备知识:

Breaching the perimeter – PhantomJs Arbitrary file read

这是一篇PhantomJS任意文件读取漏洞的分析文章,原理比较简单就不再过多介绍了,简而言之就是通过file://加载的文件被认为是符合Same Origin Policy的同源文件

According to the SOP definition for file:// URI, if a file is loaded from another file that would otherwise be able to load it following same-origin policy, they are considered to have the same origin. This load can occur through a subframe, link, location set, call to window.open(), etc

原文中给了poc:

于是放在自己网站服务器上,读取目标改成/flag,然后起一个网页:

去读一下,得到flag,但是看不清楚,所以把图片下载下来:

本地打开图片得到flag:F#{R3ally_b4d_Ph4nT0m_!!}


wfPM(499pt)

Because Project Management and Security walks side by side.

https://wfpm.fireshellsecurity.team/

考点:Recon、qdPM RCE、CVE-2020-7246

“因为项目管理和安全是并行的。”

打开之后看到一个Work Force and Program Management的登录界面

这个登录窗口似乎不存在sql注入,也不存在弱口令等问题。扫一下发现了robots.txt,里面告诉了register.php,于是来到这个注册页面,注册账户登录上去。

因为觉得这界面还不错,就把源码扒下来了。在js中,发现了他其实是qdPM

qdPM是一款web的项目管理工具:

CVE-2020-7246是qdPM版本小于等于9.1的RCE漏洞。

根据这个RCE,登录后上传图片,上传一个可以显示图片的png图片马,文件名为y1ng.php.png,上传后会php被解析,直接getshell。

flag:[email protected][email protected]_L1v35!!}


References

https://blog.shoebpatel.com/2020/03/23/FireShell-CTF-2020-Write-up/

https://st98.github.io/diary/posts/2020-03-23-fireshell-ctf.html

https://hackerone.com/reports/513525

https://www.youtube.com/watch?v=o-tL9ULF0KI

https://imagin.vip/?%70=%31%30%36%33

https://httpd.apache.org/docs/2.4/mod/mod_mime.html#multipleext

颖奇L'Amore原创文章,转载请注明作者和文章链接

本文链接地址:https://www.gem-love.com/ctf/2127.html

注:本站定期更新图片链接,转载后务必将图片本地化,否则图片会无法显示

评论

  1. peguin

    Y1ng师傅怎么样监听题目地址,具体是怎么操作的呢

    11月前
    2020-7-13 15:02:16

发送评论 编辑评论

上一篇
下一篇