问答
发起
提问
文章
攻防
活动
Toggle navigation
首页
(current)
问答
商城
实战攻防技术
漏洞分析与复现
NEW
活动
摸鱼办
搜索
登录
注册
代码审计---文件上传
渗透测试
代码审计---文件上传
代码审计---文件上传 =========== 漏洞发现 ---- 直蹦主题,源码本地搭建。 [![](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-8ee208d1e8d67a6a3002265022889ba0a2eb70a5.png)](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-8ee208d1e8d67a6a3002265022889ba0a2eb70a5.png) 我们就常规思路,先注册一个再说。 [![](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-620fab1e61eb0b965ec621b38fc192d61705a22d.png)](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-620fab1e61eb0b965ec621b38fc192d61705a22d.png) 登录看看 [![](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-c8a60ff7f8b7f527fcaae5f1022355301dc39e29.png)](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-c8a60ff7f8b7f527fcaae5f1022355301dc39e29.png) 这里发现他对我的ip进行了记录, [![](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-b37dce47352cb31373cdf2a72212c169330816d4.png)](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-b37dce47352cb31373cdf2a72212c169330816d4.png) 我就想这个ip是不是可控的,然后在源码里面找获取我们登陆ip的源码(一般是通过X-Forwarded-For获取的,后端代码一般有关键的函数如:**$\_SERVER\['HTTP\_X\_FORWARDED\_FOR'\]**,我们放到源码里面搜一下。 [![](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-09b510557a62c0ddbaa4cdd3202b58a6d957fa76.png)](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-09b510557a62c0ddbaa4cdd3202b58a6d957fa76.png) 发现第一个有点可疑,点击去看看 [![](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-bb1fe7dad8b09216978a0be0956ea6863ec4d4ea.png)](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-bb1fe7dad8b09216978a0be0956ea6863ec4d4ea.png) 发现他获取了客户端ip,而且还没有过滤,可能有漏洞,我们搜一搜有没有数据库查询语句用到这个ip。 [![](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-4f66fa68f7e5724e82c3caf60aa3ef471f9c13ab.png)](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-4f66fa68f7e5724e82c3caf60aa3ef471f9c13ab.png) 发现这里他对这个ip带入了数据库进行查询(进行登录ip的更新),而且又是没有过滤,我们试一试构造payload [![](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-9b80876aa5ff3468bce4022ce10622c5a6f2a373.png)](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-9b80876aa5ff3468bce4022ce10622c5a6f2a373.png) 数据包里面是没有这个X-Forwarded-For参数,系统是默认的有这个的只是没写出来,这里我们就要构造X-Forwarded-For参数且构造payload 放包看看 [![](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-36c710eabaa1cf033e8a07445c67242217bf45ac.png)](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-36c710eabaa1cf033e8a07445c67242217bf45ac.png) 这。。。怎么还变成了0.0.0.0了,我们把这个0.0.0.0放入审计工具里面找找看。 [![](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-5d3469888abe790ed65e83e8791f768c7a2ead27.png)](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-5d3469888abe790ed65e83e8791f768c7a2ead27.png) [![](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-f9368bcaa65bb02aed6d42fc26b5b60fd555ff71.png)](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-f9368bcaa65bb02aed6d42fc26b5b60fd555ff71.png) 哎,他这里对ip进行了合法性验证,不合法的一律改成0.0.0.0了,没办法放我们再看看其他的地方, 发现上传点,先上传一个php文件看看(由于是php建站) [![](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-5f384d9c1eccbfb8ec93a172727ef84a5045ece3.png)](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-5f384d9c1eccbfb8ec93a172727ef84a5045ece3.png) 有检测,我们用这个提示框里面的内容去源码搜下。 [![](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-b65813d18ca9c1eac661ac5650187452412ed36a.png)](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-b65813d18ca9c1eac661ac5650187452412ed36a.png) 发现文件,点进去看看。 [![](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-e55f2abb212807387046e6f5f3864fb532d515dc.png)](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-e55f2abb212807387046e6f5f3864fb532d515dc.png) 他这里用in\_array函数进行的判断,往上翻看看, [![](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-9a20f3029caf32a48e2b0256fa804b6c348cfb43.png)](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-9a20f3029caf32a48e2b0256fa804b6c348cfb43.png) 好东西,黑名单过滤,不急先看看代码怎么运行的,这里他实例化的一个类($upload = new UploadFile();)看看这个类。 [![](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-2c8c41c5db2ae4dd662493798ce2f1e2c38dd3dc.png)](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-2c8c41c5db2ae4dd662493798ce2f1e2c38dd3dc.png) [![](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-38837db785715ba64fbd1b461b3d47b111839df6.png)](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-38837db785715ba64fbd1b461b3d47b111839df6.png) 定义了一些函数,和变量,然后往回看,禁了那些后缀名 [![](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-db62cd21ed335854beb2cb3f8987512fa6ec6f97.png)](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-db62cd21ed335854beb2cb3f8987512fa6ec6f97.png) 'asa','asp', 'aspx', 'cdx','ascx', 'vbs', 'ascx', 'jsp', 'ashx', 'js', 'reg', 'cgi','html', 'htm','shtml', 'cfm', 'cfc', 'pl', 'bat', 'exe', 'com', 'dll', 'htaccess', 'cer', 'php5', 'php4', 'php3', 'php2', 'php', 'pht', 'phtm' 可以看到的这是黑名单,但是有黑名单,还不一定有漏洞,一般黑名单过滤是有好几层筛选的,我们接着往下看 [![](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-eda34b6b763538544584e9264ff41ae2cf1b4d7e.png)](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-eda34b6b763538544584e9264ff41ae2cf1b4d7e.png) 他设置了附件上传目录和仅上传单文件,这些都不是,关键是代码调用了UploadFile()类的upload函数,我们跳过去看看。 [![](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-13144679683b66bdc7d21ecabb5bfee25c3fd814.png)](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-13144679683b66bdc7d21ecabb5bfee25c3fd814.png) 他这里就简单的检测了一下,但是他调用了一个check函数来自动检查附件 [![](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-9574fa9aadf770c53b8024494c2400966e0ad2aa.png)](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-9574fa9aadf770c53b8024494c2400966e0ad2aa.png) 我们搜索看下 [![](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-08afd5d926bc9871f75820c7fdbe0eaf7be71f09.png)](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-08afd5d926bc9871f75820c7fdbe0eaf7be71f09.png) 他这里对大小,mime类型,文件类型,和是否合法进行的检测,其他几个都好绕过,我们就直接看这个文件类型的,发现他又调用了一个checkExt函数,去看看。 [![](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-27691a6ffb83b552b2f0f4c64b50e480245dbbff.png)](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-27691a6ffb83b552b2f0f4c64b50e480245dbbff.png) 这个函数检查了上传的文件类型是否合法,就是检测了后缀名了。可以看到这个可以绕过的,他并没有转变成小写,可以大写绕过,到此这边结束了,我们再跳回前面去看看, [![](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-b93a404fb9c8d01d313f1ebaf04a1761e2022014.png)](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-b93a404fb9c8d01d313f1ebaf04a1761e2022014.png) 可以看到他对来自$info的后缀再次检测,我们看到$info从getUploadFileInfo()来的,去看看。 [![](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-f3b4aa176582a7302572a7ada3fddbddd3c58cc6.png)](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-f3b4aa176582a7302572a7ada3fddbddd3c58cc6.png) return了uploadFileInfo(上传成功的文件信息)。 [![](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-d3cc7405058bf9e96bf20f896ce03f186dbd55b4.png)](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-d3cc7405058bf9e96bf20f896ce03f186dbd55b4.png) 后面就用in\_array再一次过滤了。 [![](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-a044d07e796e8f3272620d1ac0f33ec86ffa3ad8.png)](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-a044d07e796e8f3272620d1ac0f33ec86ffa3ad8.png) 到这里就过滤完了。我们到前端上传看看。 漏洞利用 ---- 从上面可以知道,这个文件上传漏洞他是黑名单过滤,他过滤了asa','asp', 'aspx', 'cdx','ascx', 'vbs', 'ascx', 'jsp', 'ashx', 'js', 'reg', 'cgi','html', 'htm','shtml', 'cfm', 'cfc', 'pl', 'bat', 'exe', 'com', 'dll', 'htaccess', 'cer', 'php5', 'php4', 'php3', 'php2', 'php', 'pht', 'phtm'。我们只要上传PHP格式的文件就可以绕过。 ### 复现: 点击上传,木马的jpg文件 [![](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-32bc330f2541e3b2fe559261c11b99bbc3b48b65.png)](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-32bc330f2541e3b2fe559261c11b99bbc3b48b65.png) burp抓包改包 [![](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-3099113ac0f24a464bf607c6ab63a51fa7f264fc.png)](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-3099113ac0f24a464bf607c6ab63a51fa7f264fc.png) 上传成功 [![](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-5a49c403fa9753192964740d02307fc97c328dc6.png)](https://shs3.b.qianxin.com/attack_forum/2021/07/attach-5a49c403fa9753192964740d02307fc97c328dc6.png) 结束语 --- 在这个审计过程中我都是通过黑+白的组合进行的代码审计,对于新手师傅来说,找到漏洞的时候会找不到前端所对应的页面,这里我们就可以,通过前段报错或者提示信息在后端源代码里面找,然后在审计,最后如果分析的有误希望师傅们指出。
发表于 2021-07-22 14:12:08
阅读 ( 7122 )
分类:
代码审计
1 推荐
收藏
0 条评论
请先
登录
后评论
yggcwhat
6 篇文章
×
发送私信
请先
登录
后发送私信
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!