网站被黑,黑客留言如下
“百度首页的dec,密匙都没变哦~呵呵少量的XSS,后台过程类页面都没加SESSION校验导致产生注入机会,并确实有注入
:)友情路过,并无恶意。”
想了好长时间还是没有参透话中的玄机,请大师指点迷津
“百度首页的dec,密匙都没变哦~呵呵少量的XSS,后台过程类页面都没加SESSION校验导致产生注入机会,并确实有注入
:)友情路过,并无恶意。”
想了好长时间还是没有参透话中的玄机,请大师指点迷津
{
if (Session["users"] == null||Session["role"]==null)
{
Response.Write("<script>alert('对不起您还没有登陆!');this.location.href='login.aspx'</script>");
}
else
{
id1 = Convert.ToString(Request.QueryString["id1"]);
id2 = Convert.ToString(Request.QueryString["id2"]);
rawurl = Request.RawUrl;
if (Request.QueryString["page"] != null)
{
rawurl = rawurl.Substring(0, rawurl.LastIndexOf('&'));
}
headurl = rawurl.Substring(rawurl.LastIndexOf('/') + 1, rawurl.LastIndexOf('&') - rawurl.LastIndexOf('/') - 1);
username = Session["users"].ToString();
usergrade = Session["role"].ToString();
try{
bi = Convert.ToInt32(id1);
if (!StringClass.EncodeURLTail(headurl).Equals(id2))
{
Response.Write("<script>alert('URL攻击!您的IP已经被记录!');this.location.href='stopvisit.aspx'</script>");
return;
}
}
catch(Exception err)
{
Response.Write("<script>alert('URL攻击!您的IP已经被记录!');this.location.href='stopvisit.aspx'</script>");
return;
}
try
{
if(usergrade[bi]=='0')
{
//Response.Write("<script>alert('您不具有访问该页面的权限!');javascript:history.back(-1); </script>");
Response.Write("<script>this.location.href='stopvisit.aspx'</script>");
return;
}
}
catch(Exception err)
{
Response.Write("<script>alert('"+bi.ToString()+err.Message+"');this.location.href='stopvisit.aspx'</script>");
}
}
}
1 重写(override)你的登录验证控件中OnInit方法 在OnInit中判断
2 写一个WEB基类 在基类的Page_Load中判断 其他页面继承该基类
3 HttpHandler/HttpModule中实现
4 其他方法
{
if (Session["users"] == null||Session["role"]==null)
{
Response.Write("<script>alert('对不起您还没有登陆!');this.location.href='login.aspx'</script>");
}
Response.Write("注入代码");
}你可以试试在红色部分加断点,看看会不会进入这个断点就知道了
Session最好在Init中验证
{
if (Session["users"] == null||Session["role"]==null)
{
Response.Redirect("login.aspx", true);
}
Response.Write("注入代码");
}你可以同样在这个位置放断点,比较下。当然这也不是个好办法
而且你使用script进行的跳转,这是在客户端执行的,如果客户端禁用了相关的javascript或者不支持相关的javascript呢
你自己测试的时候是一次完整的load调用 它也加载了你那验证控件了 当然起了验证作用啦 但是如果客户端(比如‘黑客’)用修改过的表单远程提交呢 你限制了没有?如果没有 他可以修改本地表单跳过你的子控件(即验证过程) 这只是举个例子呵呵