`
wangdei
  • 浏览: 366848 次
社区版块
存档分类
最新评论

Hidden型参数变量未过滤导致的上传漏洞利用一则

阅读更多

http://www.lengmo.net/post/1218/

无意中看见一个图形设计网站,网站全部由静态asp构成,做得十分漂亮。感叹它设计精美的同时,不由心里嘀咕,全静态asp页面的确能防止注入漏洞的产生,但WEB漏洞不止注入这一种,我很想看看这个网站在其他漏洞的防范方面做得如何。

在Google上搜索了一阵,翻到了这个网站的一个上传页面,发现它没有做验证,任何人都可以上传图片文件,于是决定从这里入手。

试着上传.asp文件,直接跳出对话框(图1)

Highslide JS

查看源文件,可以看出是用JavaScript在本地做了限制。(图2)

Highslide JS



把源文件中的JavaScript代码全部删除,修改post的地址为绝对网址,之后另存为htm文件。再次上传.asp文件,几秒钟后出现结果如图3

Highslide JS



可以想到虽然程序没有禁止外部提交数据,但是文件在上传到服务器保存时又做了一遍验证,如果要保存的文件名后缀不合法,则拒绝执行。

以下是源代码中的相关部分(图4)

Highslide JS



继续,上传一个正常的图片文件并抓包。(如图5、6)

Highslide JS



Highslide JS



把抓包得到的数据与上传页面的源文件相对照

抓包数据,如图7

Highslide JS



源文件中对应部分如图8

Highslide JS



可以发现有很多隐藏的参数在里面,而这些参数的值默认都是空的。如果我们改变这些参数的值,结果会怎样呢?

把源文件中的“hidden”改为“text”,如图9

Highslide JS



保存后打开,如图10

Highslide JS



现在这些参数的值可以自己构造了

试验着改参数值上传了几次之后,摸到了一点规律。

把参数“mulu”对应的值改为asp.asp,试试上传gif后缀的asp小马

Highslide JS



上传成功

Highslide JS



由抓包的数据中找到上传路径,提交看看,

Highslide JS



出现了可爱的画面。

可以想到这个上传程序的运行方式是,在处理参数“mulu”的值的时候,如果值不为空则创建,于是就在服务器上创建了一个“asp.asp”目录。

以下是源代码中的相关部分

Highslide JS



可以看到对提交的变量只是简单的把“/”转换成了“\” ,其他没有做任何过滤。这里即漏洞所在。

Win2003存在着一个文件解析路径的漏洞,当文件夹名为类似asp.asp的时候(即文件夹名看起来像一个ASP文件的文件名),此时此文件夹下的文本类型的文件都可以在IIS中被当做ASP程序来执行,因此我们上传的xiaoma.gif被作为asp程序执行了。

之后就是写个大点的webshell进去,如图15

Highslide JS



结果出错,无法写入

Highslide JS



换了几个小马都是如此,看来不是小马的问题,可能FSO组件被禁用或者改名了。

直接上传大马不能执行

Highslide JS



Highslide JS



大概是服务器解析目录“asp.asp”的时候把这个目录当作了asp文件,因此出错。

为了看清楚些,把asp探针文件后缀改为gif传了上去。

Highslide JS



Highslide JS



这么看就明白了。

怎么突破呢?可以看到,虽然禁用了FSO组件,但是WScript.Shell组件和Shell.Application组件还在,我们可以用它们来读写文件,只要把用WScript.Shell组件或Shell.Application组件读写文件的webshell写到“asp.asp”以外的web目录里执行就可以了。

这里可以利用的写文件方法很多,如XML写文件,JMail写文件,ASPUpload上传都可以。这里我用ASPUpload上传。

构造两个文件“本地提交用.htm”和“upload.gif”,代码如图21

Highslide JS



upload.gif上传到服务器,本地提交用.htm 用于本地打开提交上传文件。

Highslide JS



Highslide JS



成功上传海洋顶端木马到上一层目录,并可以正常使用。

Highslide JS



服务器的权限设置不严,webshell可以浏览所有文件及目录,同时SERV-U为默认设置且没有设置管理密码,还是system启动服务运行的。(=_=!)

Highslide JS



很容易地利用SERV-U提升权限,并添加管理员用户sai52

Highslide JS



Highslide JS



本次检测到这里就结束了。这个网站安全方面外紧内松,程序员和管理员都有责任,不过我个人认为,主要还是管理员的责任<!---->

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics