某SRC站点从源码泄露到getshell

栏目: 编程工具 · 发布时间: 5年前

内容简介:最近在测试某src的时候。发现了某个站点存在源码泄露,xxx.com/www.zip可直接下载源码。通过分析该站点源码以及加上一些黑盒测试,最后成功getshell该站点。而取后缀的时候是这个该段代码只是简单的判断了一下X-File-Type的值而已,对后缀并没有进行判断,因此确定该处存在任意文件上传。

前言

最近在测试某src的时候。发现了某个站点存在源码泄露,xxx.com/www.zip可直接下载源码。通过分析该站点源码以及加上一些黑盒测试,最后成功getshell该站点。

过程

当拿到源码的时候首先看了一下该源码的结构,如图所示:

某SRC站点从源码泄露到getshell

一看就是.net源码。话不多说,开始反编译代码。我这里使用DNSPY进行反编译。反编译后查看其架构,是mvc。

然后找到控制器代码。如图所示:

某SRC站点从源码泄露到getshell

剩下的就是逐步看代码。首先找到了一处上传:

某SRC站点从源码泄露到getshell

用户注册登录进去后,构造上传包进行上传,但是服务器却抛出错误了,此处代码不可利用。继续找。

某SRC站点从源码泄露到getshell

然后又发现一处代码,如下图所示:

某SRC站点从源码泄露到getshell

该处代码判断文件类型的时候有一个很明显的缺点,它取文件类型的时候是取的是

base.Request.Headers["X-File-Type"]

而取后缀的时候是这个

ase.Request.Headers["X-File-Extension"]

该段代码只是简单的判断了一下X-File-Type的值而已,对后缀并没有进行判断,因此确定该处存在任意文件上传。

确定有机会getshell了后,开始构造上传报文,但是回显如下:

某SRC站点从源码泄露到getshell

然后细心排查了一下,发现是因为自己没有访问该控制器的权限导致的,该控制器声明了权限:

某SRC站点从源码泄露到getshell

而我们注册用户的权限是没有的。那么现在要么找到一个越权漏洞,要么就找个注入获取高权限用户的密码信息。

不出意外的在UserController里面找到了如下这样的代码:

某SRC站点从源码泄露到getshell

很明显这个函数的sel参数是存在注入的。但是由于该代码使用的ServiceStack框架,我一直找不到该框架反编译后的Service的信息( 有大佬知道的请告诉我 )。但是没有具体的Service的逻辑关系也不大,只要知道这个地方有注入就OK了。然后开始试着注入:

某SRC站点从源码泄露到getshell

OK,注入确实存在。试着注入出数据的时候发现有问题了:

某SRC站点从源码泄露到getshell

发现使用select的时候被拦截了,找一下拦截点。

在ServiceStack.OrmLite.OrmLiteUtils中有这样的检测:

某SRC站点从源码泄露到getshell

然后这个IllegalSqlFragmentTokens的内容如下:

某SRC站点从源码泄露到getshell

好吧.有框架的防注入,应该是不行了。那么就只有找越权的点了,找了很久,发现了如下代码:

某SRC站点从源码泄露到getshell

这个函数是用来更新用户的,该入口在普通用户也是看不到的,应该是提供给管理员操作的,毕竟管理员这种才可以新建用户和更新已有用户信息。但是该函数并没有做权限的控制,普通用户可以直接构造报文访问该函数。因此我试着更新id为1的用户的邮箱为我自己的邮箱,因为id为1的用户大概率是管理员用户,更改该用户的邮箱后,然后通过找回密码功能即可将重置链接发送至我邮箱进行密码重置。

如下图:

某SRC站点从源码泄露到getshell

修改完毕后就可以直接通过找回密码功能重置密码,如下图所示。

某SRC站点从源码泄露到getshell

然后重设密码登陆后果然是管理员权限,构造最开始的上传报文即可Getshell(上传asp文件会被删掉,所以更改了下后缀名大小写绕过)。

某SRC站点从源码泄露到getshell

访问之后成功解析。如下图。

某SRC站点从源码泄露到getshell

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

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

游戏开发的数学和物理

游戏开发的数学和物理

[ 日] 加藤洁 / 徐 谦 / 人民邮电出版社 / 59.00元

本书严格选取了游戏开发中最常用的数学和物理学知识,通过游戏开发实例,配上丰富的插图,以从易到难的顺序进行讲解。第1章到第5章分别讲解了物体的运动、卷动、碰撞检测、光线的制作、画面切换的细分处理。这五章将2D游戏必需的知识一网打尽,同时还严格挑选了少量3D游戏编程的基础内容以供参考。第6章系统梳理了游戏开发的数学和物理学理论,帮助读者更好地理解前五章的内容。 本书适合网络和手机游戏开发者阅读。一起来看看 《游戏开发的数学和物理》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

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

RGB CMYK 互转工具