渗透测试入门知识-文件上传漏洞原理到实战

    技术2022-07-10  137

    文件包含漏洞原理 程序开发人员一般会把重复使用的函数写到单个文件中,需要使用某个函数时直接调用此文件,而无需再次编写,这种文件调用的过程一般被称为文件包含。通过函数包含文件时,由于没有对包含的文件名进行有效的过滤处理,被攻击者利用从而导致了包含了Web根目录以外的文件进来,就会导致文件信息的泄露甚至注入了恶意代码。

    分类

    本地文件包含 被包含的文件在本地服务器中。 远程文件包含 被包含的文件在第三方服务器中。

    文件包含函数

    a、include():只有代码执行到该函数时才会包含文件进来,发生错误时只给出 一个警告并继续向下执行。 b、include_once():和include()功能相同,区别在于当重复调用同一文件时,程 序只调用一次。 c、require():只要程序执行就包含文件进来,发生错误时会输出错误结果并终止 运行。 d、require_once():和require()功能相同,区别在于当重复调用同一文件时,程序 只调用一次。

    存在的风险 读取文件、写入文件。

    实战

    攻击目标 系统:Ubuntu16.04 IP:192.168.1.11 环境:Apache2+PHP7.2+mysql5.7 应用:DVWA

    读取文件 使用…/…/…/…/…/…/etc/shadow读取本地账户信息 2、写入文件 使用input写入文件 如何防御

    1、严格检查变量是否已经初始化。 2、严格判断包含中的参数是否外部可控。 3、基于白名单的包含文件验证,验证被包含的文件是否在白名单中。 4、尽量不要使用动态包含,可以在需要包含的页面固定写好,如:include("func.php")。 5、对所有输入提交可能包含的文件地址,包括服务器本地文件及远程文件, 进行严格的检查,参数中不允许出现../之类的目录跳转符。 6、可以通过调用str_replace()函数实现相关敏感字符的过滤, 一定程度上防御了远程文件包含。
    Processed: 0.010, SQL: 9