当前位置: 首页 > news >正文

如何创建一个公司网站短链接在线工具

如何创建一个公司网站,短链接在线工具,网站怎么做淘宝客,画册做的比较好的网站目录 关键代码 第一次防御 第一次绕过 第二次防御 第二次绕过 第三次防御 第三次绕过 如何构造一个出错的压缩包 第四次防御 第四次绕过 本篇文章是参考某位大佬与开发人员对于文件包含漏洞的较量记录下的故事#xff0c;因为要学习文件包含漏洞#xff0c;就将大佬…目录 关键代码 第一次防御 第一次绕过 第二次防御 第二次绕过 第三次防御 第三次绕过 如何构造一个出错的压缩包 第四次防御 第四次绕过 本篇文章是参考某位大佬与开发人员对于文件包含漏洞的较量记录下的故事因为要学习文件包含漏洞就将大佬的文件作为参考来通过学习练习的方式复现一下这次较量的全过程 故事还要从phpcms曾经火极一时的头像上传漏洞说起因为这个漏洞互联网上大量站点被黑影响极为恶劣。 简单来说phpcms对头像上传是这么处理上传上去的zip文件它先解压好然后删除非图片文件。 关键代码 前端代码 !DOCTYPE html html langzh headmeta charsetUTF-8 /meta nameviewport contentwidthdevice-width, initial-scale1.0 /meta http-equivX-UA-Compatible contentieedge /title文件上传章节练习题/titlelink relstylesheet hrefhttps://cdn.jsdelivr.net/npm/bootstrap3.3.7/dist/css/bootstrap.min.css integritysha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4VaPmSTsz/K68vbdEjh4u crossoriginanonymousstyle typetext/css.login-box{margin-top: 100px;height: 500px;border: 1px solid #000;}body{background: white;}.btn1{width: 200px;}.d1{display: block;height: 400px;}/style /head bodyform methodpost actionupload.php enctypemultipart/form-datainput typefile namefile value/input typesubmit namesubmit valueupload//form /body /html 后端代码 ?php header(Content-Type:text/html; charsetutf-8); require_once(pclzip.lib.php);$file $_FILES[file]; if ($file[size] 0) {exit(请勿上传空文件); } $name $file[name]; $dir uploads/; $ext strtolower(substr(strrchr($name, .), 1));function check_dir($dir) {$handle opendir($dir);while (($f readdir($handle)) ! false) {if (!in_array($f, array(., ..))) {$ext strtolower(substr(strrchr($f, .), 1));if (!in_array($ext, array(jpg, gif, png))) {unlink($dir . $f);}}}}if (!is_dir($dir)) {mkdir($dir); }$temp_dir $dir . member/1/; if (!is_dir($temp_dir)) {mkdir($temp_dir); }if (in_array($ext, array(zip, jpg, gif, png))) {if ($ext zip) {// $zip new ZipArchive;// if(!$zip-open($file[tmp_name])) {// echo fail;// return false;// }// if(!$zip-extractTo($temp_dir)) {// // check_dir($temp_dir);// exit(fail to zip);// }$archive new PclZip($file[tmp_name]);if ($archive-extract(PCLZIP_OPT_PATH, $temp_dir, PCLZIP_OPT_REPLACE_NEWER) 0) {exit(解压失败);}check_dir($temp_dir);exit(上传成功!);} else {move_uploaded_file($file[tmp_name], $temp_dir . / . $file[name]);check_dir($temp_dir);exit(上传成功!);} } else {exit(仅允许上传zip、jpg、gif、png文件!); }第一次防御 访问前端页面发现我们是可以上传一个文件的因此这样就可以创建一个phpinfo.php文件和一个1.jpg文件然后放在php文件夹中然后将该文件夹压缩上传 然后尝试进行上传该压缩包 上传完成后可以看到上传成功了 然后我们可以在那个对应的目录中进行查看上传后的文件内容 可以看到上传后的文件只剩下了一个1.jpg文件和它一起在压缩包中的phpinfo.php文件被删除了 第一次绕过 这里那就无法上传php文件了那么我们就真的就没有办法了吗大佬告诉了我们解决方案 通过代码审计可以看到它删除的时候没有递归删除也没有删除文件夹。 这样只要我们的webshell放在压缩包的文件夹中就可避免被删除了。 因此这样就可以创建一个phpinfo文件夹里面再放入一个phpinfo.php文件一个单独的1.jpg文件然后放在php2文件夹中然后将该文件夹压缩上传 上传完成后可以再去uploads文件夹中查看就会发现已经成功的上传了php文件了 可以看到现在就成功的上传了phpinfo文件并且里面的phpinfo.php文件保留了下来并且1.jpg也上传了这样就成功的绕过了限制 第二次防御 后面网页管理员对网页进行了一些安全加固将后端的检查文件代码修改为下列的形式 function check_dir($dir) {$handle opendir($dir);while (($f readdir($handle)) ! false) {if (!in_array($f, array(., ..))) {if (is_dir($dir . $f)) {check_dir($dir . $f . /);} else {$ext strtolower(substr(strrchr($f, .), 1));if (!in_array($ext, array(jpg, gif, png))) {unlink($dir . $f);}}}} } 第一次绕过的方法的根本原因是因为没有考虑文件在文件夹中的情况只删除了压缩包根目录下的非法文件而没有删除其文件夹中的非法文件。 所以补丁就采用了递归删除的方式将压缩包中所有非法文件删除。 但是采用了递归的方式就真的可以防御好了吗并不是的 第二次绕过 因为通过分析代码后发现删除的方式是先上传后删除那么就可以尝试利用上传成功和删除的时间差来尝试访问该文件 因此这里使用Burpsuite来进行不断的上传然后手动的访问一下上传后的文件看看会不会成功呢 首先使用Burpsuite对上传页面进行抓包然后发送到intruder页面添加payload 然后设置发送1000个包然后开始 下面就是尝试快速的不断的访问一下上传后的php文件 可以看到通过上传后与删除的时间差是可以访问到php文件的因此这种防御方法也是可以绕过的 第三次防御 上面的绕过方法出现后后端人员也是快速的修改了增加了一下代码 $temp FCPATH.cache/attach/.md5(uniqid().rand(0, 9999))./; 就是将压缩包放在一个随机命名的文件夹中再解压缩这样你猜不到访问地址也就没法去暴力getshell了。 第三次绕过 通过对后端代码的审计后发现当解压发生失败时就退出解压缩过程。 这也是一个很平常的思路失败了肯定要报错并退出因为后面的代码没法运行了。 但是程序员不会想到有些压缩包能在解压到一半的时候出错。 什么意思也就说我可以构造一个“出错”的压缩包它可以解压出部分文件但绝对会在解压未完成时出错。这是造成了一个状况我上传的压缩包被解压了一半webshell被解压出来了但因为解压失败这里exit($this-pclzip-zip(true));退出了程序执行后面一切的删除操作都没有了作用。 如何构造一个出错的压缩包 因为这里我们首先构造一个解压会出错的压缩包这里龙哥给我们交了几种好用的方法 我这里就以两个解压的程序作为例子 Windows下的7zip PHP自带的ZipArchive库 7zip的容忍度很低只要压缩包中某一个文件的CRC校验码出错就会报错退出。 如何修改压缩包里文件的CRC校验码呢可以使用010editor。 我们先准备两个文件一个PHP文件1.php一个文本文件2.txt其中1.php是webshell。 然后将这两个文件压缩成shell.zip。 然后我们用010editor打开shell.zip可以看到右下角有这个文件的格式信息它被分成5部分 我们打开第4部分其中有个deCrc我们随便把值改成其他的值然后保存。 此时用7zip解压就会出错解压出的1.php是完好的2.txt是一个空文件。 我们再用PHP自带的ZipArchive库测试这个zip发现解压并没有出错这也说明ZipArchive的容忍度比较高。 那么我们又如何让ZipArchive出错呢最简单的方法我们可以在文件名上下功夫。 比如Windows下不允许文件名中包含冒号: 我们就可以在010editor中将2.txt的deFileName属性的值改成“2.tx:”。 此时解压就会出错但1.php被保留了下来。 注在Linux下也有类似的方法我们可以将文件名改成5个斜杠/。 因此这里我们第三次绕过的思路有出来了使用一个会报错的zip文件上传后会将php文件解压问成功进行报错了因此php文件会被保留 第四次防御 这里的漏洞也是被后端人员发现后修复了因此将代码修改为下面的形式 if(!$zip-extractTo($temp_dir)) {check_dir($temp_dir);exit(fail to zip);} 可以看到它会对解压失败的文件也进行一次检查将里面非图片的文件删除  第四次绕过 但是这样真的就安全了吗答案是不安全的 压缩包中通常是不含有诸如“../”、“..”这种文件名的但通常不含有不代表不能含有。 如果把压缩包中某文件名改成../../../../../index.php是不是就能直接把你首页变成我的webshell呀 这就是因为抄袭者并没有真正领悟zip这个类的使用方法导致了这个安全问题。 先把自己的shell改名字成aaaaaaaaaaaaaaaaaaaa.php 之所以起这个名字就是预留一些空间方便我之后将文件名改成../../../aaaaaaaaaaa.php而不用怕字符串长度不对。 把文件直接打包成zip用010editor打开 将画框的俩文件名的前9个字符改成../../../ 然后再上传就可以成功上传了 总结一下 1、没有对上传的文件进行递归删除导致文件夹中的目录可以上传 2、先上传后删除可以利用时间竞争来访问上传后的文件 3、对上传后的文件进行一个重命名随机名称可以利用解压报错绕过 4、对解压后的文件进行检查可以利用../../路径穿越进行绕过 到此这个黑客大佬与后端开发人员的对抗就结束了但是还有很多web页面存储漏洞仍然存在着漏洞等着我们去发现
http://www.zqtcl.cn/news/405296/

相关文章:

  • 企业网站优化的方式萍乡市建设局网站王丽
  • 做网站的收费标准社保网上服务大厅
  • php网站开发安全网站建设管理教程视频教程
  • 网站建设的空间是什么意思海络网站
  • 深圳华强北今晚网站优化推广公司
  • 网站建设行业好做吗太原网站改版
  • 寿光企业建站流程个人网站用什么软件
  • 网站建设与管理自考本全国卷wordpress 关闭文章修订
  • 兴义市建设局网站首页网站开发项目实训总结
  • 个人网站空间收费网络软文营销案例
  • 网站开发文件结构组成微网站移交
  • 西安全网优化 西安网站推广网页浏览器缩略词
  • 网站开发及企业推广营销型网站建设怎么收费
  • 网站建设与管理ppt课件百度云盘关键词推广营销
  • c asp.net网站开发书宁波建设业协会网站
  • 政务网站建设发言材料知名互联网公司有哪些
  • 网站搭建制作建e室内设计网画图
  • 重庆市建设工程施工安全管理信息网北京seo公司网站
  • 国外做调查问卷的网站建设邮费自己的网站 要不要购买服务器的
  • 网站建设和优化排名四川建设网官网证书查询入口
  • 如何搜名字搜到自己做的网站电子商务平台icp备案证明
  • 网站建设与管理工作内容北京网站建设价
  • 做网站选哪个语言软文营销的方法
  • 青岛正规公司网站建设公司中国建设银行注册网站
  • 免费个人网站平台关键词检索
  • 定制型网站建设推广宁河网站建设
  • 主流网站开发语言有哪些电子邮件营销
  • 扫描二维码进入公司网站怎样做在万网上域名了怎么做网站
  • 销售型网站设计怎么做网站广告位
  • 网站推广的方法ppt购物网站logo