SRC漏洞挖掘——4.安全配置错误漏洞实战详解
目录本文所有测试均在个人独立靶场下进行禁止未授权渗透测试前言安全配置漏洞基础说明一、文件解析漏洞Apache HTTPD 多后缀解析漏洞漏洞编号 CVE-2017-15715二、目录遍历漏洞Apache目录遍历漏洞漏洞编号 CVE-2021-42013Nginx目录穿越漏洞漏洞编号 CNVD-2010-0917pikachu靶场目录遍历漏洞漏洞编号: 靶场无CVE编号待续、更新中......本文所有测试均在个人独立靶场下进行禁止未授权渗透测试本文涉及的技术仅供网络安全学习与自查修复使用严禁用于非法入侵。所有实验均在作者个人搭建的隔离环境中完成。前言安全配置漏洞基础说明原理系统或应用程序在部署或配置过程中存在错误导致安全机制失效或未启用利用方式1. 访问默认账户或弱口令登录管理界面2. 利用未删除的测试页面或示例代码获取系统信息3. 通过开放的端口或服务直接入侵如暴露的数据库端口4. 利用未打补丁的已知漏洞如远程代码执行5. 绕过错误配置的访问控制如CORS允许任意域请求API修复1. 自动化配置管理使用工具如Ansible、Docker标准化配置减少人工错误。2. 及时更新与打补丁3. 最小权限原则限制账户权限关闭不必要的服务/端口。4. 强化认证禁用默认账户使用强密码或双因素认证2FA。5. 配置审计定期扫描配置错误如使用Nessus、漏洞扫描工具。6. 监控与日志实时监控异常访问分析日志以检测潜在攻击。案例tomcat 示例应用程序没有删除, 攻击者通过端口扫描工具发现标准的管理员页面通过弱密码猜测,进入管理员界面,部署木马程序. 如下图所示一、文件解析漏洞介绍Web容器Apache、Nginx、IIS等在解析文件时将非脚本文件解析成脚本文件格式,并得以执行而产生的漏洞。黑客可以利用该漏洞实现非法文件的解析。 例: 文件上传漏洞中, jpg后缀的图片文件就是非脚本文件, 当成php文件进行解析. 文件解析漏洞主要由于网站管理员操作不当或者Web服务器自身的漏洞导致一些特殊文件被IIS、apache、nginx或其他Web服务器在某种情况下解释成脚本文件执行phpstudy 中三种web容器都存在, 可以进行切换使用Apache HTTPD 多后缀解析漏洞介绍Apache HTTPD 是 Apache 服务里的一个Web 服务 Apache HTTPD 支持一个文件拥有多个后缀并为不同后缀执行不同的指令. 例: cmd.php.jpg 文件 Apache默认一个文件可以有多个以点分隔的后缀当右边的后缀无法识别(不在mime.types内)则继续向左识别. 当我们请求这样一个文件cmd.php.xxxxxx后缀无法识别向左发现后缀是php交给php处理这个文件. 最后一步虽然交给了php来处理这个文件但是php也不认识.xxx的后缀不解析。 运维人员在配置服务器时为了使apache服务器能解析php而自己添加一个handler AddHandler application/x-httpd-php .php 意思: AddHandler 将文件扩展名映射到指定的处理程序 application/x-httpd-php(类似php解析器)结果: 在有多个后缀的情况下只要一个文件含有.php后缀的文件,将被识别成PHP文件没必要是最后一个后缀。利用这个特性将会造成一个可以绕过上传白名单的解析漏洞。漏洞编号 CVE-2017-15715无需CVE 的原因 CVE通用漏洞与暴露编号主要用于标识软件自身的缺陷。而此问题的根源在于服务器的配置指令如 AddHandler导致文件执行规则不符合预期并非 Apache 程序的代码存在缺陷因此通常不具备 CVE 编号 为什么加cve? 需要过审靶场docker容器(看成虚拟机):打开Ubuntu虚拟机, 进入之前下载的vulhub 靶场目录 从桌面file 文件夹进入 一直进入到目录: vulhub/httpd/apache_parsing_vulnerability启动靶场启动docker容器:sudodocker-composeup-d查看正在运行的容器:sudodockerps进入容器,执行指令:sudodockerexec-it010 /bin/bash# exec 执行容器; -it 容器id一般3位就够,这里的id为010 ;# /bin/bash 是要执行该指令, 类似进入到命令行界面; 有些是/bin/shell ...,这里有所不同# 这里也可以是: cat /etc/passwd进入容器中的配置文件:cd/etc/apache2/conf-available/catdocker-php.conf可以看到错误的handler配置查看Ubuntu的ip地址:ifconfig查看其中ens33地址,并复制其中的ip地址访问漏洞本地浏览器进行访问:http://xxx.xxx.xxx.xxx/复现漏洞Windows下 , 上传cmd.php.jpg 文件(一句话木马);Ubuntu中docker的根目录也可以看到其中上传的文件使用webshell管理工具连接并访问目标地址http://xxx.xxx.xxx.xxx/var/www/html/uploadfiles/cmd.php.jpg;成功访问尝试删除错误配置删除错误的配置, 由于docker中没有编辑器vim等,必须先复制出来到Ubuntu中:# 复制 容器id号: 复制的内容 当前路径sudodockercp010:/etc/apache2/conf-available/docker-php.conf.# 编辑并删除错误语句sudovimdocker-php.conf :1,1d :wq# 复制覆盖掉原本文件sudodockercpdocker-php.conf 010:/etc/apache2/conf-available/rebootcat覆盖成功 退出: eixt# 注意靶场启动,得连接到网络二、目录遍历漏洞介绍允许攻击者在未授权的状态下读取应用服务上任意文件的安全漏洞。这包括应用代码、数据、凭证以及操作系统的敏感文件。 在有些情况下攻击者还可能对服务器里的文件进行任意写入更改应用数据甚至完全控制服务器。 程序在实现上没有充分过滤用户输入的目录跳转符如../导致用户可以恶意提交目录跳转实现服务器上的任意文件遍历.# 危害少, 但摸鱼必备; 还有其他的如版本号泄露漏洞, 可公司中提交漏洞Apache目录遍历漏洞漏洞编号 CVE-2021-42013环境搭建# 修改配置文件D:\web\tools\php2018\PHPTutorial\Apache\conf\vhosts.conf 文件 将其中的: Options-IndexesFollowSymLinks ExecCGI 设置为: Options Indexes FollowSymLinks ExecCGI# 意思: Options Indexes 允许列出目录phpstudy网站根目录设置中的,允许目录列表一样重启phpstudy新建test文件夹,用以测试文件,在test文件夹下存放一些文件 访问test目录: http://127.0.0.1/test/# 需要删除www下index.php 与l.php 文件结果: 列出目录点击sql.txt文件, 可以直接打开,查看文件内容修复漏洞将: Indexes 改为:-Indexes重启phpstudy中服务再次访问, 失效Nginx目录穿越漏洞介绍Nginx在配置别名Alias的时候如果忘记加 / 将造成一个目录穿越漏洞。# 错误的配置文件如下location /files{alias/home/;}原本的目的是为了让用户访问到/home/目录下的文件 但当我们访问/files../ ,实际到达的目录为: /home/..//home/…/本来访问的是home文件夹,但后面加了../后, 就向上进行穿越, 到达根目录…/目录穿越, 也可应用于普通URL中; 正常情况下是访问http://ip:端口/files/../...这里是Nginx配置错误, 访问/files…/,才有这种写法漏洞编号 CNVD-2010-0917环境搭建# Ubuntu中 使用vulhub靶场进入文件夹目录: /Desktop/file/vulhub-master/nginx/insecure-configuration 启动容器:sudodocker-composeup-d访问靶场: http://xxx.xxx.xxx.xxx:8081/files/(ip为虚拟机的ip地址;之间不要有空格)进入容器,执行命令:sudodockerexec-itb88 /bin/bash 访问: 虚拟机ip地址:8081/files..(穿越到根目录)访问:http://xxx.xxx.xxx.xxx:8081/files/,可以发现, 我们明明访问的files文件夹下的内容, 但是实际上是home目录下的help.txt文件(如上图所示)当访问:http://xxx.xxx.xxx.xxx:8081/files../时,可以发现从files文件夹进行了目录穿越, 穿越到了根目录中一般正常访问时:http://xxx.xxx.xxx.xxx:8081/files/../../这样, 访问到了欢迎界面原因就是错误的设置了配置文件:location/files{alias /home/;}files 少写了一个/应该配置为:location/files/{alias /home/;}修复漏洞# 修复代码如下server{listen8081;root /usr/share/nginx/html;index index.html;server_name_;autoindex on;location /files/{# /files 变为 /files/alias/home/;}}# 进入靶场文件夹,修改文件error2.conf配置文件file/vulhub-master/nginx/insecure-configuration 修改后,进行复制文件:dockercperror2.conf cr8:/etc/ngingx/conf.d/ 最后, 重启:sudodockerrestart cr8可以看到docker 容器中error2.conf 的错误配置pikachu靶场目录遍历漏洞漏洞编号: 靶场无CVE编号复现访问靶场, 任意点击,发现通过title参数来控制文件内容,那么使用../ 可以试一试点击概述发现文件名dir.php访问title…/dir.php 可以访问到上级目录的内容访问title…/…/…/README.md 访问到根目录下的README.md文件1 可以使用burpsuite工具来标记文件名…/…/…/dir.php, 跑文件名字典,来进行爆破文件2 或者直接将一整个都进行标记,../../../dir.php, 字典文件中存在…/…/…/进行爆破,比如以下这种:在网站www根目录下同级目录若有个123.txt文件,存放的账户密码,那么访问: ?title…/…/…/…/…/123.txt ,可以进行目录穿越获取到文件内容待续、更新中…欢迎关注我**「悟道子HACK笔记」**获取更多 最新网络安全技术分享 实战靶场源码与解析 系统化学习路线指南 行业动态与职业发展建议以上就是今日博客的全部内容了创作不易,若对您有帮助,可否点赞、关注一二呢,感谢支持!

相关新闻