大学新校区建设网站,开封网站设计,找个美工做淘宝网站需要多少钱,毕设做微课资源网站设计可以吗1.服务器文件解析漏洞
文件解析漏洞,是指Web容器#xff08;Apache、nginx、iis等#xff09;在解析文件时出现了漏洞,以其他格式执行出脚本格式的效果。从而,黑客可以利用该漏洞实现非法文件的解析。
#xff08;1) Apache
linux系统中的apache的php配置文件在/etc/apac…
1.服务器文件解析漏洞
文件解析漏洞,是指Web容器Apache、nginx、iis等在解析文件时出现了漏洞,以其他格式执行出脚本格式的效果。从而,黑客可以利用该漏洞实现非法文件的解析。
1) Apache
linux系统中的apache的php配置文件在/etc/apache2/mods-available这个目录下
1.多后缀解析漏洞
Apache HTTPD 支持一个文件拥有多个后缀并为不同后缀执行不同的指令。 2.AddHandler将文件扩展名映射到指定的处理程序
什么样的扩展名使用什么样的程序来处理描述的是扩展名与处理程序之间的关系。如果在 Apache 的 conf 里有这样一行配置 AddHandler application/x-httpd-php .php这时只要文件名里包含.php 即使文件名是 test2.php.jpg 也会以 php 来执行。 3.AddType在给定的文件扩展名与特定的内容类型之间建立映射
AddType 是与类型表相关的描述的是扩展名与文件类型之间的关系例如
AddType application/x-httpd-php .jpg表示.jpg扩展名的文件就是application/x-httpd-php类型的。 情形一如果运维人员给.php后缀增加了处理器 那么在有多个后缀的情况下只要一个文件含有.php后缀的文件即将被识别成PHP文件没必要是最后一个后缀。利用这个特性将会造成一个可以绕过上传白名单的解析漏洞。 情形二如果运维人员脑瘫了给.jpg后缀增加了处理器或者类型映射 那么我们上传的jpg文件或者带有jpg的多后缀文件都能够以php解析。 情形三这种和情形二是一样的只不过写法不一样如果运维人员脑瘫了给jpg后缀增加了处理器或者类型映射 2罕见后缀
有一个名为mime.types的文件其中记录着Apache认识的后缀在Ubuntu下该文件位于/etc/mime.types我们查看它认识PHP哪些后缀发现其实PHP还有很多别的后缀名。 然后我们再到apache的php的配置文件下看看发现配置文件下本来就支持php、phar、phtml这三种后缀的文件。 3.htaccess
.htaccess是Apache的又一特色。一般来说配置文件的作用范围都是全局的但Apache提供了一种很方便的、可作用于当前目录及其子目录的配置文件——.htaccess分布式配置文件。.htaccess文件可以配置很多事情如是否开启站点的图片缓存、自定义错误页面、自定义默认文档、设置WWW域名重定向、设置网页重定向、设置图片防盗链和访问权限控制。但我们这里只关心.htaccess文件的一个作用——MIME类型修改。 想要这个生效一是需要在apache配置文件中把AllowOverride改为All 二是Apache要加载mod_Rewrite模块。加载该模块需要在Apache的配置文件中写上 若是在Ubuntu中可能还需要执行命令(我的Ubuntu18并不需要) 配置完成后例如在.htaccess文件中写入AddType application/x-httpd-php .john则让apache把文件后缀为john的文件都以php的方式解析。 4换行解析漏洞 CVE-2017-15715
该漏洞影响的apache版本为2.4.0~2.4.29 这个后端通过basename()来获取用户传入的自定义文件名再把传入的文件重命名为改文件名这样就存在换行解析漏洞。 这里在上传文件时对文件名进行了黑名单限制我们利用该漏洞上传一个1.php文件使用burpsuit抓包。 在1.php后插入一个\x0A绕过黑名单过滤发现能够成功上传而且访问1.php%0a文件也能被当作PHP解析。 值得一提的是通常我们也不会使用这样方法给文件命名正常的办法是使用$_FILES[upload][name]这种方法获取文件本身的名字而且一般也会对文件进行重命名为一个随机的名字因此这个漏洞实际上也很难出现在现实环境中。 2、IIS
使用iis5.x-6.x版本的服务器大多为windows server 2003网站比较古老开发语句一般为asp该解析漏洞也只能解析asp文件而不能解析aspx文件。
1目录解析
形式www.xxx.com/xx.asp/xx.jpg
原理: 在IIS-6.0的版本在.asp或.asa文件夹下的所有类型后缀文件全部解析为.asp文件。
2文件解析
形式www.xxx.com/xx.asp;.jpg
原理在IIS-6.0的版本服务器默认不解析;后面的内容所以xxx.asp;.jpg会被解析成xxx.asp。
3解析文件类型
有的网站在上传检测中会用”黑名单”方法 ,但是IIS6.0 默认的可执行文件除了asp还包含这三种 : 4IIS7.5解析漏洞
IIS7.5的漏洞与nginx的类似都是由于php配置文件中开启了cgi.fix_pathinfo而这并不是nginx或者iis7.5本身的漏洞。
跟nginx解析漏洞一样要在php.ini cgi.fix_pathinfo1 开启的情况才会产生。 可以配合操作系统文件命名规则上传不符合windows文件命名规则的文件名 # php在window的时候如果文件名::$DATA会把::$DATA之后的数据当成文件流处理,不会检测后缀名.且保持::$DATA之前的文件名 会被windows系统自动去掉不符合规则符号后面的内然后再配合这个解析漏洞来执行文件。
3、Nginx
1空字节代码执行漏洞
旧版本0.5.0.6.0.70.80.7.650.8.37。通过利用此漏洞攻击者可以导致服务器使用PHP的FastCGI作为PHP的服务器上执行任何公开访问的文件。 恶意用户发出请求http://example.com/file.ext00.php就会将file.ext作为PHP文件解析。 如果一个攻击者可以控制文件的内容即使用头像上传形式其结果是执行任意代码。Ngnix在遇到%00空字节时与后端FastCGI处理不一致导致可以在图片中嵌入PHP代码然后通过访问xxx.jpg%00.php来执行其中的代码。 2PHP CGI解析漏洞
Fastcgi协议分析 PHP-FPM未授权访问漏洞 Exp编写 当访问xx.com/phpinfo.jpg/1.php这个URL时$fastcgi_script_name会被设置为“phpinfo.jpg/1.php”然后构造成SCRIPT_FILENAME传递给PHP CGI。 Nginx默认是以CGI的方式支持PHP解析的普遍的做法是在Nginx配置文件中通过正则匹配设置SCRIPT_FILENAME。当访问xx.com/phpinfo.jpg/1.php这个URL时$fastcgi_script_name会被设置为“phpinfo.jpg/1.php”然后构造成SCRIPT_FILENAME传递给PHP CGI但是PHP为什么会接受这样的参数并将phpinfo.jpg作为PHP文件解析呢?这就要说到fix_pathinfo这个选项了。 如果开启了这个选项那么就会触发在PHP中的如下逻辑
PHP会认为SCRIPT_FILENAME是phpinfo.jpg而1.php是PATH_INFO所以就会将phpinfo.jpg作为PHP文件来解析了 另外一种手法上传一个名字为test.jpg以下内容的文件。 然后访问test.jpg/.php,在这个目录下就会生成一句话木马shell.php。 这个解析漏洞其实是PHP CGI的漏洞在PHP的配置文件中有一个关键的选项cgi.fix_pathinfo默认是开启的当URL中有不存在的文件PHP就会向前递归解析。 这个往前递归的功能原本是想解决/info.php/test这种URL能够正确解析到info.php。 在Nginx配置fastcgi使用php时会存在文件类型解析问题。其实可以说它与Nginx本身关系不大Nginx只是作为一个代理把请求转发给fastcgi ServerPHP在后端处理这一切。因此在其他fastcgi环境下PHP也存在此问题只是使用Nginx作为Web Server时一般使用fastcgi的方式调用脚本解释器这种使用方式最为常见。
任意文件下载
文件下载功能在很多web系统上都会出现如果后台在收到请求的文件名后将其直接拼进下载文件的路径中而不对其进行安全判断的话则可能会引发不安全的文件下载漏洞。
漏洞危害和利用条件
危害
下载服务器任意文件如脚本代码服务及系统配置文件等可用得到的代码进一步代码审计得到更多可利用漏洞 利用条件
1. 存在读文件的函数
2. 读取文件的路径用户可控且未校验或校验不严
3. 输出了文件内容
漏洞发现
1、Google hacking利用
#payload
inurl:readfile.php?file
2、从链接上看
download.php?path
download.php?file
down.php?file
data.php?file
readfile.php?file
read.php?filename
3、从参数名看
Data
path
src
Inputfile
readfile
filepath
RealPath
dis
url
Lang
urls
menu
filep
漏洞验证
在找到下载文件的的url后将url中的文件参数替换为各种穿越目录看是否能下载到相应的文件如果能下载就有下载漏洞
#原urlhttp:#xx.com/index.php?flogo.png
http:#xx.com/index.php?f../../../../../../etc/passwd http:#xx.com/index.php?f../index.php http:#xx.com/index.php?ffile:#/etc/passwd
当参数f的参数值为php文件时若是文件被解析则是文件包含漏洞若显示源码或提示下载则是文件查看与下载漏洞。 文件下载漏洞利用思路
尝试读取/root/.bash_history看自己是否有root权限 1、正常情况下的利用思路
1. 下载常规的配置文件例如: ssh,weblogic,ftp,mysql等相关配置
2. 下载各种.log文件从中寻找一些后台地址文件上传点之类的地方。
3. 下载web业务文件进行白盒审计利用漏洞进一步攻入服务器。 2、当遇到权限问题的时候
如果具有root权限
这时候很多人肯定会说具有root权限直接去读shadow文件了但是很多时候我们遇到的服务器可能只对外开放了80443端口这时候我们即使获得了密码作用也不大但是具备root权限对任意文件下载利用是绝好的。
下载/var/lib/mlocate/mlocate.db这个linux文件搜索库然后利用locate mlocate.db xxname 搜索任意文件的具体路径
locate 是用来查找文件或目录的它不搜索具体目录而是搜索一个数据库/var/lib/mlocate/mlocate.db。这个数据库中含有本地所有文件信息。Linux系统自动创建且每天自动更新一次。 如果没有root权限
只能按部就班的利用../来回跳转读取一些文件如.ssh下的配置信息文件读取mysql下的.bash_history文件。来查看是否记录了一些可以利用的相关信息。然后逐个下载我们需要审计的代码文件
是下载的时候变得很繁琐只能尝试去猜解目录然后下载一些中间件的记录日志进行分析。 如我们遇到的是java/jsporacle环境可以先下载/WEB-INF/classes/applicationContext.xml文件这里面记载的是web服务器的相应配置
然后下载/WEB-INF/classes/xxx/xxx/ccc.class对文件进行反编译
然后搜索文件中的upload关键字看是否存在一些api接口如果存在的话我们可以本地构造上传页面用api接口将我们的文件传输进服务器。
任意文件下载防御
过滤.使用户在url中不能回溯上级目录正则严格判断用户输入参数的格式写死路径php.ini配置open_basedir限定文件访问范围
如果下载的目标文件是由前端传进来的则一定要对传进来的文件进行安全考虑。 切记所有与前端交互的数据都是不安全的不能掉以轻心