Ssrf 引发的血案

地球胖头鱼 2020-12-22
Web安全 发布于 2020-12-22 10:25:40 阅读 198 评论 0

起因

渗透能力的体现不只是储备0day的多少,许多站点能否被突破,对本身基础漏洞的熟练的配合利用也是一场考验,故事正是因机缘巧合拿到shell的一次记录总结。

从信息搜集到进入后台

客户给定的地址打开之后就只有一个登录页面,留下没有账号的我在风中凌乱。

一直怼一个登录框也不是事儿啊,没办法,只能先将端口,目录和弱口令先探测起来。

图片

端口基本都开了感觉有点问题,ping 过之后发现有cdn。

图片

很不幸,弱口令没爆出来,目录端口也没有太多的发现,当务之急就是需要一个账号进入系统。但是账号信息该从哪里搜集???

等等,项目开始客户是提供了邮箱地址作为报告的提交地址的,首字母大写+名@xxx的格式,和许多企业的命名规则一样。

一边先把人名字典构造起来,一边通过google语法去搜索相关邮箱,相关公司名称,运气不错,从大大小小几十个网站论坛上面发现七八个公司邮箱,和几个qq邮箱。

然后通过一些不可告人的的手段反查到了其中某些qq的绑定手机号,以及历史密码信息。

再次构造相关字典,果然人们都喜欢用类似的密码,撞库成功。

图片

进入后台后,挨个测试了一遍功能点都没能发现getshell的,上传也没能绕过后缀限制。

图片

都说没有getshell的渗透测试是不到位的,只发现一些中低危漏洞可没法满足。

简单的权限认证绕过

因为没有太多的收获,于是挨个访问之前dirbuster跑出来的目录,其中一个页面访问之后会有一道黑影一闪而过,然后跳转到登录页面,猜测做了权限验证,然后强制跳转了。

测试中有很多时候都可能遇到无权限访问的情况

当我们遇到访问403,401,302,或是弹框提示无权限可以尝试一下以下的办法。

  1. GET /xxx HTTP/1.1 à403
Host: test.com

绕过:

GET /xxx HTTP/1.1 à200

Host: test.com

X-Original-URL: /xxx
  1. GET /xxx HTTP/1.1 à403
Host: test.com

绕过:

GET /xxx HTTP/1.1 à200

Host: test.com

Referer: http://test.com/xxx
  1. 302跳转:拦截并drop跳转的数据包,使其停留在当前页面。

  2. 前端验证:只需要删掉对应的遮挡模块,或者是验证模块的前端代码。

这里使用burp拦截一下,扔掉后面的跳转,看到如下界面,弹窗还是提示没法访问,权限不够,但是和之前的访问403不一样了,难道是我使用了普通用户登录的缘故???

熟练的打开F12开发者模式。删掉前端代码看是否能使用他的功能。

图片

删完权限验证模块的前端代码后,运气不错,还有部分功能可以使用。

ssrf-通向shell的钥匙

在客户系统后台转了半天,最后在一个查看功能处发现了突破点

图片

抓包发现post参数好像有点意思,尝试换掉默认图片的地址,改为dnslog地址,返回提示路径不正确。

猜测是做了后缀的限制,应该只能post png,jpg等后缀的地址,先试试读取一下远程服务器上的图片,成功返回,果然有东西。

一个标准的ssrf,,因为没法改变后缀,应该是不能读取passwd之类的文件了,还是先打一波dnslog,记录一下真实ip地址。

但是ssrf可不只是读个文件那么简单,ssrf通常可以用来打内网应用,通过它来打个redis或者mysql岂不美哉。

先借助ssrf探测一下开放的端口,22,80,443,6379。

![]](https://mmbiz.qpic.cn/mmbiz_png/WTOrX1w0s5...)

看看攻击redis一般可以利用的dict和gopher两种协议,使用gopher协议的话需要注意一些利用限制。

旁站信息泄露getshell

通过之前记录的dnslog上的ip地址进行反查,发现了该ip地址下绑定了其他域名.

访问后改掉url变量后的默认参数,触发报错,成功爆出了绝对路径,小小的报错,却提供了巨大的价值。

图片

因为是旁站,现在获取到了B站的网站路径,如果能通过A站的ssrf把webshell写到B站的web路径里也是美滋滋了,说干就干。

访问shell,并敲入whoami命令查看权限,发现是个低权www用户。

提权

弹个交互的shell出来方便进行提权,但是远程服务器一直没法正常收到shell。

切换一下端口,网络管理员可能做了一定的限制,尝试通过443,53等经常开放的端口弹出shell。

图片

成功拿到shell,获取到低权限SHELL后一般会看看内核版本,检测当前用户权限,再列举Suid文件,如果都没发现可能会借助一些自动化脚本来检查可能存在的提权方式。

图片

通过find / -perm -u=s -type f 2>/dev/null看看有s属性文件。

Python好像是可以通过suid提权的,翻了翻自己的小笔记,payload一发入魂。

至此测试结束。

原创:酒仙桥六号部队

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!
请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!