00截断
先来看一下他的原理:00截断是操作系统层的漏洞,由于操作系统是C语言或汇编语言编写的,这两种语言在定义字符串时,都是以\0(即0x00)作为字符串的结尾。操作系统在识别字符串时,当读取到\0字符时,就认为读取到了一个字符串的结束符号。因此,我们可以通过修改数据包,插入\0字符的方式,达到字符串截断的目的。00截断通常用来绕过web软waf的白名单限制。
条件:
php版本小于5.3.29
magic_quotes_gpc = Off
接下来进入实战 上传一个一句话木马 用bp抓包
它给了我们路径 所以就可以直接在后面加 shell.php%00
filename要改成下面这种形式 因为jpg文件可以上传成功的
filename="shell.php%00.jpg"
在把文件类型改成image/jpeg形式
放包 发现可以上传成功
用蚁剑连接 找到flag
双写后缀
双写后缀的原理: 服务端对黑名单中的内容进行处理,且仅处理一次,所以可以通过双写后缀绕过.如,黑名单中有"php"字样,上传文件名为"1.php" 上传后文件变成"1."因此我们可以用pphphp当作后缀,服务端就会把这个后缀变成php 就可以上传成功
下面进入实战:
发现上传一句话木马 发现后缀被删除 用bp抓一下包 用双写后缀进行绕过
发现上传成功 用蚁剑连接
连接蚁剑 找到flag
文件上传漏洞结束
总结一下所有的东西
1.无验证
没有任何限制 只需要上传一句话木马连接蚁剑就可以
2.前端验证
指的是在网页端前端,是网页的前台,设置了限制 最常用的是js前端绕过
只需要在前端禁用js函数就可以绕过 在连接蚁剑
3.mime绕过
指的是文件类型绕过 源码会限制上传的文件类型,把文件的类型(Content-Type)用bp更改一下在放包就可以绕过
4..htaccess文件
.htaccess文件是是Apache服务器中的一个配置文件,它负责相关目录下的网页配置,通过.htaccess文件我们可以进行更改配置来让服务器把jpg/png/gif文件解析成php文件 通过这种方式进行绕过
5.文件头检查
文件头检查原理:上传文件限制了他的文件头 这时候我们就需要把文件头改成它默认可以上传的文件的文件头 比如jpg/png/gif文件的文件头就可以绕过
6.00截断
00截断是利用C语言或者汇编语言的漏洞 当以%00(0x00、\0)结尾时 会认为读取到了结尾 所以可以通过这种方式来进行绕过 比如 shell.php%00.jpg后端就会识别成shell.php 不识别jpg 从而达到绕过的目的
7.双写后缀
双写后缀服务端对黑名单中的内容进行处理,且仅处理一次,所以可以通过双写后缀绕过.如,黑名单中有"php"字样,上传文件名为"1.php" 上传后文件变成"1."因此我们可以用pphphp当作后缀,服务端就会把这个后缀变成php 就可以上传成功
8. .user.ini文件
php.ini是php默认的配置文件,其中包括了很多php的配置,这些配置中,又分为几种:PHP_INI_SYSTEM
、PHP_INI_PERDIR
、PHP_INI_ALL
、PHP_INI_USER
。
除了主 php.ini 之外,PHP 还会在每个目录下扫描 INI 文件,从被执行的 PHP 文件所在目录开始一直上升到 web 根目录($_SERVER['DOCUMENT_ROOT'] 所指定的)。如果被执行的 PHP 文件在 web 根目录之外,则只扫描该目录。
在 .user.ini 风格的 INI 文件中只有具有 PHP_INI_PERDIR 和 PHP_INI_USER 模式的 INI 设置可被识别。
这里就很清楚了,.user.ini实际上就是一个可以由用户“自定义”的php.ini,我们能够自定义的设置是模式为“PHP_INI_PERDIR 、 PHP_INI_USER”的设置。(上面表格中没有提到的PHP_INI_PERDIR也可以在.user.ini中设置)
实际上,除了PHP_INI_SYSTEM以外的模式(包括PHP_INI_ALL)都是可以通过.user.ini来设置的。
而且,和php.ini不同的是,.user.ini是一个能被动态加载的ini文件。也就是说我修改了.user.ini后,不需要重启服务器中间件,只需要等待user_ini.cache_ttl所设置的时间(默认为300秒),即可被重新加载。
简单来说 .user.ini文件是php的一个配置文件 通过修改.user.ini文件可以修改php的配置 达到文件上传绕过的目的
9.白名单和黑名单
白名单是设置能通过的用户,白名单以外的用户都不能通过。 黑名单是设置不能通过的用户,黑名单以外的用户都能通过。 所以多数情况下白名单比黑名单限制的用户要更多一些
10.蚁剑连接
蚁剑是一个shell端控制软件 可以通过连接的一句话木马打开网站后门,对网站进行操作
11.一句话木马原理
<?php @eval($_POST[password]);?>
简单的一句话木马 是因为eval函数可以执行任意的php代码
所以我们post传入的字符串会以php代码的形式运行,而php代码又能调用系统操作所以便成了木马