freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

99+

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

文件上传解析漏洞(二)
无名草 2022-02-15 14:00:43 332036
所属地 湖南省

1644757134_6209008e989938ae04110.png!small?1644757134506

%00截断和 00截断

了解%00实际上我们要先了解0x00,0x00实际上是一个十六进制表示方式,实际上就是表示ascii码值为0,有些函数在处理这个字符的时候会把这个字符当做结束符,他们就读取到这里认为这一段结束了。

在文件上传时,如果遇到了白名单机制只允许上传jpg后缀的,在没有解析漏洞的情况下我们该怎么办?

JPG格式并不会被解析,那么我们需要绕过上传过滤。

假如我写了1.php%00.jpg  传参之后,有些过滤都是直接匹配字符串,他强行匹配到了结尾是.jpg,然后允许上传,但是php的函数去执行的时候他读取到0x00认为结束了,那么这个文件就变成了1.php。

%00实际上和00截断是一模一样的原理,只不过%00是经过URL编码的,%00解码后就是0x00截断的那个字符

条件竞争

什么是条件竞争

竞争条件”发生在多个线程同时访问同一个共享代码、变量、文件等没有进行锁操作或者同步操作的场景中。

开发者在进行代码开发时常常倾向于认为代码会以线性的方式执行,而且他们忽视了并行服务器会并发执行多个线程,这就会导致意想不到的结果。

线程同步机制确保两个及以上的并发进程或线程不同时执行某些特定的程序段,也被称之为临界区(critical section),如果没有应用好同步技术则会发生“竞争条件”问题。

那我们上传是和谁去竞争?

一般而言我们是上传了文件,上传了但是最后却因为过滤或者因为其他原因被删除了,那么我们可以使用条件竞争,我们实际上是和unlink,是和删除文件的函数进行竞争。


假如我不断的上传发包,然后我同时也不断的访问那个我们上传上去的文件的地址,我们就开始和服务器的函数比手速了,函数执行都是要时间的,如果我这边上传上去,且没有删除,那个时间可能很短,然后被我访问到了,岂不是就可以执行PHP了~我就比服务器手速快了~

你可以上传一个php然后访问后,由这个php去写一个马

<?php $a = '<?php @eval($_REQUEST[\'a\'])?>';file_put_contents('1.php',$a)?>

靶场·大闯关

Pass-11  %00截断绕过

1.源码分析

1644759092_620908348175c48ecde9f.png!small?1644759092391

白名单过滤,只允许指定的文件上传;

关键函数 move_uploaded_file()把上传的文件移动到新位置($img_path)

2.解题步骤

可以修改传参路径为tx.php,即就是文件上传的路径

再用%00截断,之后图片马就变为了可以利用的php文件。

1644762194_620914528cc6cb9608cc3.png!small?1644762194346

1644762037_620913b59725b6db8b21e.png!small?1644762037446

Pass-12  %00截断绕过(二)

同11,但是文件的路径在POST传参里面,POST传参解析不出来 所以需要进行16进制转换 在hex中添加00

解题步骤

在路径后加上 tx.phpa,然后将a的ASCii码61 改为00即可

1644765163_62091feba654c92053f2f.png!small?1644765163363

1644765235_620920334ac333463e0d0.png!small?1644765235041

1644765324_6209208c00c04e900d30d.png!small?1644765323688

Pass-13  图片马绕过

解题步骤

直接上传图片马txtx.jpg,然后配合CGI解析漏洞获取 webshell

1644845520_620a59d0e9e43f8e9047c.png!small?1644845521061

1644845448_620a5988c8eab745caa67.png!small?1644845449000

Pass-14  getimagesize图片类型绕过

解题步骤

方法同 13,只是这里要上传 gif图片马

合成命令:copy a.gif/b+tx.txt tx.gif

1644846886_620a5f2611efa2bdb739d.png!small?1644846886203


Pass-15 php_exif模块图片类型绕过

解题步骤

直接上传图片马,重新下载出来的图片马未受损,但这里不存在CGI解析漏洞,想要利用该图片马要利用其他的漏洞来实现。

1644847720_620a6268194d2a6d566e2.png!small?1644847720215

1644847777_620a62a18236fbf9dd003.png!small?1644847777611

Pass-16  二次渲染绕过

二次渲染:在我们上传文件后,网站会对图片进行二次处理(格式、尺寸要求等),处理后在放到网站对应的标签进行显示。

一般来说,二次渲染不影响Gif的头部信息。

解题步骤

从GIF文件的第四行写入 马,在上传该文件,然后利用CGI解析漏洞获取Webshell

1644849314_620a68a2527b19e21789a.png!small?1644849314399

1644885346_620af562e859a9b05c121.png!small?1644885347470

Pass-17  条件竞争绕过

有些服务器采⽤的是先保存,再删除不合法⽂件的⽅式,在这种服务器中,可以反复上传⼀个会⽣成Web Shell的⽂件并尝试访问,多次之后 即可获得Shell。

解题步骤

1.通过上传的图片确认上传文件的存放位置 http://localhost/upload/

1644894931_620b1ad33483ca51b8573.png!small?1644894931553

2.创建php文件,写入命令使其在目标服务器上生成一个一句话木马文件

1644895000_620b1b182a63f2cfdb49a.png!small?1644895000230

3.上传1000.php,用Burp抓取该 Intruder模块的数据包

1644895321_620b1c591bf53b523d29c.png!small?1644895321265

4.抓取1000.php生成的木马文件shell.php的 Intruder模块的数据包

1644895448_620b1cd8ce8d04febfdba.png!small?1644895448940

5.一起跑包,等待 shell.php的生成

1644893025_620b1361c68c5ad05ecd5.png!small?1644893026060

6.木马文件shell.php生成

1644894733_620b1a0d76d7e98c40211.png!small?1644894733557

Pass-18 条件竞争(二)

同17,只不过这里要上传图片马。

1644894733_620b1a0d76d7e98c40211.png!small?1644894733557

Pass-19 move_uploaded_file()截断

解题步骤

做法和之前的%00截断没区别上传木马图,抓包修改路径,然后将a的ASCii码61 改为00即可。

1644904542_620b405e7a9d68d14211f.png!small?1644904542426

1644904692_620b40f44686522627bf7.png!small?1644904692159

1644904035_620b3e63a4d452308d1b4.png!small?1644904035632

文件上传(二)常见问题

00截断和%00截断有区别吗?

没有任何区别,%00 仅仅是00的URL编码

00截断有限制条件吗?

高版本php不存在,5.4.45以上似乎就没有了

条件竞争实战可行性?

实战是可以行的

# 渗透测试 # web安全 # 木马
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 无名草 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
渗透学习之旅
无名草 LV.6
这家伙太懒了,还未填写个人描述!
  • 50 文章数
  • 86 关注者
文件上传解析漏洞(三)
2022-03-27
服务器端请求伪造--SSRF
2022-03-24
逻辑漏洞之支付漏洞
2022-03-19
文章目录