黑帽SEO
免费发布泛目录 蜘蛛池 黑帽SEO工具

Pageadmin前台Getshell漏洞

  漏洞分析

  <% @ Page language="c#" Inherits="PageAdmin.uploads"%> PUBLIC “-//W3C//DTD XHTML 1.0 Transi?onal//EN” “h?p://www.w3.org/TR/

  xhtml1/DTD/xhtml1-transi?onal.dtd”>

  在uploads文件发现真实代码在pageadmin的dll uploads函数内,因为dll加过壳所以经过dnspy反编译出来的代码存在部分混淆但能够看处代码的一个大概。

  if (flag=!(base.Request.Form[“from”]==”master”))

  {

Pageadmin前台Getshell漏洞

  this.IsMaster=0;

  }

  else

  {

  this.IsMaster=1;

  }

  首先要说的一处,当前文件没有经过自写的权限函数来验证?是经过表单的值来验

  证。

  this.uSIydhZwho=base.Request.Form[“username”];

  this.INBy9bX9ky=”select id,m_group,department_id,mtype_id from

  pa_member where username='” + string_0 + “‘”;

  经过提交的username来查询数据库判别是否具备权限。

  if (!(flag=!(base.Request.Form[“swf_upload”]==”1″)))

  {

  this.GpKyCIZ7AD=true;

  }

  else

  {

  this.GpKyCIZ7AD=false;

  }

  swf_upload变量则是操控上传当值非1时则不进?上传

  pageadmin的上传是经过查询数据库得到上传允许后缀来进?验证后上传可是在

  pageadmin后还有一处后缀验证(黑名单效验)

  if (“.aspx,.asp,.php,.asa,.jsp,.shtml”.IndexOf(text2) >=0)

  {

  goto IL_3E2;

  }

  一旦绕过一层的逻辑效验,第?层的?名单就很简略,可经过ashx或cer等后缀来进?绕过。目前已知有某?佬给绕过但我?前还未看出具体方法?且数据库的后缀均在pa_field表内,经过咱们自定义的table参数以及field参数来查询。

  this.INBy9bX9ky=string.Concat(new string[]

  {

  ”select file_ext,maxfilesize from pa_field where thetable='”,

  this.fiSy6J8Imb,

  ”‘ and [field]='”,

  this.Field,

  ”‘”

  });

  然后将相应的内容赋值于相对的变量。

  oleDbCommand=new OleDbCommand(this.INBy9bX9ky, this.iQTyesi17e);

  oleDbDataReader=oleDbCommand.ExecuteReader();

  flag=!oleDbDataReader.Read();

  IL_201:

  if (!flag)

  {

  this.C2OyO9cgFk=oleDbDataReader[“file_ext”].ToString().ToLower();

  if (!(flag=!this.q29BFUIJsS(oleDbDataReader[“maxfilesize”].ToString())))

  {

  this.dpnyXl6327=

  int.Parse(oleDbDataReader[“maxfilesize”].ToString());

  }

  else

  {

  this.dpnyXl6327=0;

  }

  其次是最要害的一参数rename,操控文件是否重命名,也是此次缝隙最为要害一点。

  if (base.Request.Form[“rename”]==”1″)

  {

  text4=DateTime.Now.ToString(“ddHHmmss”);

  if (this.GpKyCIZ7AD &&

  base.Request.Form[“access2008_box_info_over”] !=”0″)

  {

  text4=text4 + “_” +

  base.Request.Form[“access2008_box_info_over”];

  }

  text4 +=text2;

  }

  else

  {

  string text=text.Replace(“;”, “_”).Replace(“.”, “_”).Replace(” “, “_”);

  text4=text + text2;

  }

  当然rename为1时则经过时刻来命名再拼接了?处?定义的变量(也就是咱们可控

  点),当?1时则不进?重命名但?论为1或不为1都对点号 分号 空格进?了替换。

  首要针对跳目录等非安全操作。

  extract_file.aspx

  protected void Extract_File()

  {

  string DownPath=Request.QueryString[“filepath”];

  if(string.IsNullOrEmpty(DownPath))

  {

  Response.Write(“获取?件途径失败!”);

  Response.End();

  }

  string RootPath,File_Name;

  RootPath=”/e/update/file/”;

  char[] de={‘/’};

  string[] Afilename=DownPath.Split(de);

  File_Name=Afilename[Afilename.Length-1].ToLower();

  string FilePath=RootPath+File_Name;

  6

  FilePath=FilePath.Replace(“..”,””);

  string DirPath=FilePath.Replace(“.zip”,””).Replace(“.rar”,””);

  if(!File.Exists(Server.MapPath(FilePath)))

  {

  Response.Write(“升级?件不存在,请到/e/update/file下检查?件是否下载成

  功!”);

  Response.End();

  }

  try

  {

  Decompress(Server.MapPath(FilePath),Server.MapPath(DirPath+”/”));

  经过filepath操控?件所在然后exists检测?件是否存在当为压缩包时则经过

  Decompress进行解压。

  这就是咱们最为要害的?处缝隙合作点,但这?限制死了?录为update/file目录下才

  ?。虽然咱们upload文件中有对上传?件名进?点号等下进?了安全操作可是未对

  access2008_box_info_over进非安全操作所以导致拼接跳目录并且自定义文件名。

  附上刚才Getshell的图片

  QQ截图20190207210133.jpg

未经允许不得转载:黑帽SEO-实战SEO技术培训、泛目录站群、蜘蛛池、流量技术教程 » Pageadmin前台Getshell漏洞
分享到: 更多 (0)

黑帽SEO-实战SEO技术培训、泛目录站群、蜘蛛池、流量技术教程

不做韭菜坚决不做韭菜