来源:自学PHP网 时间:2015-04-17 11:59 作者: 阅读:次
[导读] 网站入侵过程中一个典型方式就是登录后台,上传webshell,本文就是接上篇文章分析如何突破上传限制,上传一个包含一句话木马的图片马。一.找到一个上传位置:当我们找到上传点时...
网站入侵过程中一个典型方式就是登录后台,上传webshell,本文就是接上篇文章分析如何突破上传限制,上传一个包含一句话木马的图片马。
一.找到一个上传位置: 当我们找到上传点时,首先想到的就是直接传webshell上去,可惜iwebshop采用的是swfupload组件进行上传,该组件限定了上传文件的类型,不能直接上传php文件。(当然可以通过burpsuite等代理工具修改上传数据流来突破限制,这种方法没有尝试,但是从后面代码的分析来看是可以的) 二.分析代码突破限制 通过文件定位到goods_img_upload()函数 /iwebshop/controllers/ -> goods.php (source) 该函数主要是获取图片文件和缩略图文件信息,然后通过实例化PhotoUpload类对象来调用run方法。 /iwebshop/classes/ -> photoupload.php (source) 最关键的是调用了IUpload中的execute函数,也就是真正处理上传逻辑的地方。 /iwebshop/lib/core/util/ -> upload_class.php (source) 在这里就是在上传时对文件的检查,其中一个关键点就是getFileType函数,对上传文件做检查,如果通过了检查(是图片文件),则上传成功。那我们来看他是怎么检查的。 /iwebshop/lib/core/util/ -> file_class.php (source) 很显然,该应用的检查方式仅仅是取文件的前两个字节,通过和php的unpack()返回内容进行比较来确认文件类型(关于unpack请自行查阅php手册)。那么很自然的我们想到,可以通过上传一个jpg图片木马来突破限制,上传webshell。 构造jpg图片木马的方式很简单,首先准备一张图片1.jpg,一个写好一句话木马的php文件,使用以下语句: 生成一句话木马2.jpg。 我们通过vim来查看该图片的十六进制内容: 文件头: 文件尾: 可以看到文件头仍然表示这是一个jpg文件,而我们在文件最后插入了一句话木马。 好了,现在我们把2.jpg上传到服务器,并找到图片位置: 使用菜刀连接之: 一句话木马成功连接。 总结: 这个漏洞出现的原因就是对上传文件没有做很好的内容检查,以为检查了文件头就万事大吉,殊不知上传漏洞是web安全防护中及其重要的部分,有着多种躲避和混淆的手法。另外需要再次强调网站前台和后台的安全性其实是同等重要的,后台的薄弱往往给攻击者以可趁之机。 修改建议: 对图片文件进行内容检查,通过现有的一次渲染,二次渲染技术来确定图片文件的真实性。 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com