“文件上传”配合中间件“解析漏洞”
一、总导图
二、IIS
<—-IIS/6.0—->
- 查看路径
- 登陆站点。
- 输入下面的站点后回车。
- 访问后会自动跳转到以下站点,并且要求输入账号以及密码。
- 登陆后台后可以看到下面页面。
- 登陆后台后再次访问下面站点,此时网站就不会跳转了。
- 选择文件进行上传后抓包可以看到其版本是“IIS/6.0”
- 根据文章最开始的思维导图可知其存在以下漏洞。
解释:
文件夹
正常:image/qq.jpg
执行:image.asp/qq.jpg
qq.jpg就会被当做asp解析执行
文件
正常:image.jpg
执行:image.asp;jpg或image.asp;image.jpg
image.jpg 就会被当做asp解析执行
asp可以换做php 如果换了php 那么就当php执行
- 如果在数据包里“/”后添加一个“1”,那么文件名内就也会多出一个“1”。
- 如果在数据包里“/”后添加一个“1a”,那么文件名内就也会多出一个“1a”。
- 如果在数据包里“/”后添加一个“x.asp;.”,那么文件名内就也会多出一个“x.asp;.”。
- 此时就满足触发了下面的规则,代码就会被当作asp执行。
- 放包后访问文件地址后返回了以下错误信息,因为我们刚刚上传的图片是随便选择的,里面并没有加入恶意代码。
- 如果正常执行,不当作asp执行的话,网页就会返回正常内容。
- 返回正常内容如下。
- 在服务端可以看到刚刚上传上去的文件显示的均为图片格式,但是画绿色框出的文件就触发了解析楼哦对那个。
<—-IIS/7.5—->
这个漏洞和Nginx非常相似。
启动靶场环境(这里使用“Vulhub搭建漏洞测试靶场“)。
- 查看ip。
- 查看端口。
- 进入靶场网页。
- 查看版本
- 制作一个图片马。
- 将图片上传后,得到了图片的路径信息。
- 访问图片路径,路径后面加上“/.php”。
- 可以看到图片马内的php语句被成功执行了。
三、Nginx
<—-解析漏洞—->
- 启动靶场环境
- 查看ip地址。
- 查看端口信息。
- 访问网址(因为默认就是80端口,所以就没写端口号)。
- 查看其中间件及版本是“nginx/1.17.8”。
- 随便上传一个文件,可以得到路径信息。
- 访问图片路径,可以正常访问,可以确定上传成功了。
- 在网址后面随便添加以“.php”结尾的内容,即可触发解析漏洞,返回了以下错误信息,因为我们刚刚上传的图片是随便选择的,里面并没有加入恶意代码。
- 创建一个图片一句话后门代码。
- 同样的方法上传访问后可以发现图片内的恶意代码被成功执行了。
<—-换行解析—->
Nginx文件名逻辑漏洞(CVE-2013-4547)
- 漏洞说明
2013年底,nginx再次爆出漏洞(CVE-2013-4547),此漏洞可导致目录跨越及代码执行,主要原因是nginx因为00截断错误地解析了请求的 URI ,将获取到用户请求的文件名解析为对应的脚本程序,导致出现权限绕过、代码执行等连带影响,从而实现getshell的过程。
- 影响版本
Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7
- 启动靶场环境(这里使用“Vulhub搭建漏洞测试靶场“)。
- 查看ip。
- 查看端口。
- 访问网页后查看版本,发现是nginx/1.4.2,在漏洞影响范围内。
- 上传一个“1.gif ”,注意后面的空格,抓包。
- 将Hex部分如下内容进行修改,访问http://your-ip:8080/uploadfiles/1.gif[0x20][0x00].php,即可发现PHP已被解析。
四、Apache
<—-低版本—->
- 启动服务。
- 查看端口号。
- 访问站点,发现有两个文件。
- 打开第一个(phpinfo.php)。
- 打开第二个(phpinfo.php.xxx)。
可以看到两个不同的后缀名执行的都是php代码。
打开“.xxx”后缀的文件可以发现其内部代码为php代码。
因此可以知道“.php.xxx”后缀名的文件是当作php文件解析的,这就是Apache的解析漏洞,即如果后缀名不识别就向上解析。
解释:
x.php.xxx.yyy识别最后的yyy,
识别不认识,
向前解析,
直到识别,
xxx也不认识,
最后识别到的是php。利用场景:
如果对方中间件apache属于低版本,
我们可以利用文件上传,
上传一个不识别的文件后缀,
利用解析漏洞规则成功解析文件来使文件中的后门代码被执行。
<—-换行解析—->
Apache HTTPD 换行解析漏洞(CVE-2017-15715)
Apache在2.4.0-2.4.29版本中存在一个解析漏洞。
程序在解析PHP时,如果文件名最后有一个换行符“x0A”,apache依然会将其当成php解析,但是在上传文件时可以成功的绕过黑名单。
如果上传文件的php程序是设置的白名单,那么这个漏洞将无法利用。
启动靶场环境(这里使用“Vulhub搭建漏洞测试靶场“)。
- 查看ip。
- 查看端口。
- 访问网页后上传一个名为“1.php”的文件,发现被拦截了。
- 在“1.php”后面插入一个“\x0A“(注意:不能是\x0D\x0A,只能是一个\x0A),发现不再被拦截了。
- 访问刚才上传的“/1.php%0a”,发现能够成功解析,但这个文件不是php后缀,说明目标存在解析漏洞。
还没有评论,来说两句吧...