文件包含漏洞
文件包含漏洞的介绍介绍在程序中通过include等包含指令或函数引用外部文件时,若可以通过用户可控参数指定包含或引用的目标文件(也就是“包含”函数的参数是动态变量且用户可控),且没有对目标文件进行有效的安全检验,导致包含恶意代码的文件嵌入到程序空间并得到解析执行,从而造成文件包含漏洞。由于文件包含指令涉及比较少,在挖掘漏洞的时候很容易通过定位关键函数的方法定位漏洞。例如,PHP语言中关于包含的函数主要有include、include_once、require、require_once、file_get_contents、fopen、file、readfile等;JSP语言主要有include指令或jsp:include动作元素,以及c:import指令。
分类根据包含目标文件的存储位置,文件包含分为:
本地文件包含(Local File Inclusion,LFI)
远程文件包含(Remote File Inclusion,RFI)
其中,本地文件包含漏洞一般是上传或日志缓存写入等方法来包含恶意文件,远程文件包含漏洞这是引入远程的恶意文件、恶意代码或数据流造成文件包含漏洞。
本地文 ...
文件删除漏洞
文件删除漏洞介绍文件删除漏洞可让攻击者随意删除服务器上的任意或指定文件。
原理同样是被删除文件的变量用户可控,且没有进行严格的校检,所以导致任意文件删除,再配合目录遍历,删除硬盘上的其他文件。
分析技巧查找分析文件删除漏洞的方法与上一节“文件读取下载漏洞”的方法相似。对PHP脚本搜索unlink函数,对JavaScript脚本搜索file.delete或delete,delFile,delDir等函数关键词,定位关键位置,再进一步分析关键位置的上下文代码,重点分析是否存在可控文件参数,是否有校验或者校验可绕过。
危害这个漏洞的危害还是很大的,别人可以删除你电脑上的私密文件等。可能哪天重启服务器发现服务器崩溃了,都有可能是这个漏洞造成的。
另外,许多CMS在安装后会相应生成一个install.lock文件,后期在安装页面时会判断install.lock是否存在,不存在就可覆盖重装。可以利用任意文件删除漏洞导致任意重装覆盖。
文件删除与目录删除函数unlink() 函数unlink() 函数删除文件。若成功,则返回 true,失败则返回 false。
12345678910<?php ...
文件读取下载漏洞
文件读取下载漏洞介绍文件下载漏洞属于文件类型漏洞的一种,是指造成不应该被下载的文件可通过恶意行为下载读取的安全漏洞。造成下载漏洞的文件有脚本、配置文件、日志、有权限管控的敏感文件等。这种漏洞通常出现在文件查看、文件下载功能中。
在分析该类漏洞或进行代码审计时,通常使用../来逐个层级查看推测路径信息。以最大限度地遍历所有可能存在文件下载漏洞的部分。常用的文件读取函数有file_get_contents()、file()、readfile()、fread()、fget()等。在CTF比赛中,则经常使用php://filter来查看源码信息。常见的漏洞表现方式有http://test.com/index.php?file=../../etc/passwd、http://test.com/index.php?file=..%2f..%2fconfig.php、http://test.com/index.php?file=ZG93bmxvYWQucGhw等。
可根据以下三个方面快速初步判断是否存在文件下载漏洞:
可下载或可读取文件的函数且参数是否可控。
可下载或可读取文件的路径是否未校验或校 ...
编辑器文件上传漏洞
一般的富文本编辑器都是使用一般处理程序上传图片或者文件的,那么黑客就可以利用开发者的疏忽(没有判断权限),直接通过伪造表单上传经过他更改过的木马文件。
FCKeditor 编辑器文件上传漏洞基础知识FCKeditor是一款非常优秀的HTML在线编辑器,功能也可以定制。也支持多种浏览器,遵循LGPL版权。FCKeditor是一款文字处理客户端应用,使你在web上可以使用类似微软Word 的桌面文本编辑器的许多强大功能。现已改名为CKEditor。
FCKeditor 编辑器页123456/FCKeditor/_samples/default.html/FCKeditor/_samples/default.html/FCKeditor/_samples/asp/sample01.asp/FCKeditor/_samples/asp/sample02.asp/FCKeditor/_samples/asp/sample03.asp/FCKeditor/_samples/asp/sample04.asp
FCKeditor 常用文件上传目录12345/FCKeditor/editor/fil ...
文件上传漏洞之WAF拦截绕过
HTTP文件上传数据包解析文件上传实质上还是客户端的POST请求,消息主体是一些上传信息。前端上传页面需要指定enctype为multipart/from-data才能正常上传文件。
一个正常的文件上传数据包大致如下:
1234567891011121314151617POST http://www.example.com HTTP/1.1Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryyb1zYhTI38xpQxBK------WebKitFormBoundaryyb1zYhTI38xpQxBKContent-Disposition: form-data; name="city_id"1------WebKitFormBoundaryyb1zYhTI38xpQxBKContent-Disposition: form-data; name="company_id"2------WebKitFormBoundaryyb1zYhTI38xpQxBKContent-Dis ...
文件上传漏洞之代码检测绕过
文件上传漏洞漏洞介绍文件上传漏洞是指攻击者上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务端命令的能力。该漏洞在业务应用系统中出现概率较高,究其原因是业务场景中上传附件、头像等功能非常常见,若在系统设计中忽略了相关的安全检查,则容易导致文件上传漏洞。
业务应用系统中的文件上传功能是导致上传漏洞的重要安全隐患之一。通过文件上传功能,用户可以直接将本地文件上传到服务端,若通过构造URL地址可以直接访问到已上传的文件,则会触发漏洞。例如,若上传的文件是一个非正常服务端文件,如JSP文件、ASP文件、ASPX文件、JSPX文件、PHP文件等可直接执行服务后端代码的文件,则该文件实际可视为“木马文件”。
程序开发中不严格或不安全的逻辑问题会导致文件上传漏洞,程序开发所使用的编程语言以及版本、所用的操作系统,以及不同的应用场景也可能导致文件上传漏洞,所以文件上传漏洞的表现形式与其成因息息相关。
借助文件上传漏洞,攻击者可以获取业务信息系统的WebShell,进一步通过WebShell对该业务系统以及服务器自身的操作系统进行操作,如增加、删除、修改、查看文件等敏感操作。因此相较于其它文件类 ...
突破disable_functions执行命令·下
利用UAF漏洞UAF漏洞(Use-After-Free)是一种内存破坏漏洞,漏洞成因是一块堆内存被释放了之后又被使用。又被使用指的是:指针存在(悬垂指针被引用)。这个引用的结果是不可预测的,因为不知道会发生什么。由于大多数的堆内存其实都是C++对象,所以利用的核心思路就是分配堆去占坑,占的坑中有自己构造的虚表。
悬垂指针:悬垂指针是指一类不指向任何合法的或者有效的(即与指针的含义不符)的对象的指针。比如一个对象的指针,如果这个对象已经被释放或者回收但是指针没有进行任何的修改仍然执行已被释放的内存,这个指针就叫做悬垂指针。
由于本人对PWN这块并不了解,对这些漏洞只是一知半解,所以也仅仅讲如何使用大佬的EXP直接利用了
Json Serializer UAF漏洞简介:
此漏洞利用json序列化程序中的释放后使用漏洞,利用json序列化程序中的堆溢出触发,以绕过disable_functions和执行系统命令。尽管不能保证成功,但它应该相当可靠的在所有服务器 api上使用。
漏洞细节:https://bugs.php.net/bug.php?id=72530
漏洞利用条件:
Linu ...
突破disable_functions执行命令·上
PHP disable_functionsdisable_functions是php.ini中的一个设置选项。相当一个黑名单,可以用来设置PHP环境禁止使用某些函数,通常是网站管理员为了安全起见,用来禁用某些危险的命令执行函数等。
先来看看一般是哪些函数需要放入 disable_functions:
禁用函数
功能描述
危险等级
system()
允许执行一个外部程序并回显输出
高
exec()
允许执行一个外部程序
高
shell_exec()
通过 Shell 执行命令,并将执行结果作为字符串返回。
高
passthru()
允许执行一个外部程序并回显输出
高
popen()
可通过 popen() 的参数传递一条命令,并对 popen() 所打开的文件进行执行。
高
proc_open()
执行一个命令并打开文件指针用于读取以及写入。
高
proc_get_status()
获取使用 proc_open() 所打开进程的信息。
高
chroot()
可改变当前 PHP 进程的工作根目录,仅当系统支持 CLI 模式PHP 时才能工作,且 ...
突破open_basedir限制读写文件
通过命令执行函数绕过open_basedir由于open_basedir的设置对system等命令执行函数是无效的,所以我们可以使用命令执行函数来访问限制目录与读写文件。
12345<?phpsystem('ls ../');echo "<br>";system('cat ../1.txt');?>
虽然可以使用命令执行函数直接执行shell命令,但是如果被disable_functions禁用掉了,那就还要另想方法突破。
利用PHP-FPM修改绕过open_basedir
有关PHP-FPM我在利用SSRF渗透内网主机·中一节中有提到过,不过讲的并不透彻。
推荐大家可以参考一下P神的这篇文章:Fastcgi协议分析 && PHP-FPM未授权访问漏洞 && Exp编写 。
FPM是一个FastCGI协议解析器,Nginx等服务器中间件将用户请求按照FastCGI的规则打包好发送给PHP-FPM,再由PHP-FPM来将打包的数据进行解析并与FastCGI进行通信,PH ...
突破open_basedir限制列举目录
PHP open_basediropen_basedir是php.ini中的一个设置选项。它可将用户访问文件的活动范围限制在指定的区域。假设open_basedir=/var/www/html/:/tmp/,那么通过Web访问服务器的用户就无法获取服务器上除了/var/www/html/和/tmp/这两个目录以外的文件。
另外,使用open_basedir可以限制程序可操作的目录和文件,提高系统安全性。但会影响I/O性能导致系统执行变慢,因此需要根据具体需求,在安全与性能上做平衡。
另外用open_basedir指定的限制就是目录名,而不是网上传的所谓的前缀,起码我测试下来是这样的。
我们在/var/www/目录下创建一个tmp文件夹与tmp1文件夹,再创建一个1.txt文件
其中1.txt内容为www
再在tmp目录与tmp1目录下分别创建一个1.txt文件,tmp/1.txt的内容为tmp,tmp1/1.txt的内容为tmp1。
最后将/var/www/目录的所属用户和组改为apache,确保正常情况下网站可以访问。
html为网站根目录,下有一个test.php。
其中t ...
