CODESYS V3远程堆溢出漏洞复现(环境配置+复现过程)-CODESYS资源下载区-酷德网 - CoDeSys软件教程下载,CoDeSys工控资讯门户 

酷德网

福牛迎春,属我最牛~
查看: 74|回复: 0

CODESYS V3远程堆溢出漏洞复现(环境配置+复现过程)

[复制链接]
  • TA的每日心情
    擦汗
    2019-8-13 14:13
  • 签到天数: 32 天

    [LV.5]常住居民I

    发表于 2020-12-28 10:07:09 | 显示全部楼层 |阅读模式
      本文首发于我的个人博客。

      这是我在实验室学习渗透测试的第六个漏洞复现,耗费时间有些长,至今不知道哪里出了问题,又是怎样稀里糊涂没有的(也可能很早就成功了,但是我没有注意到,一直纠结于网页打不开的问题)。不管怎么说,最后还是做出来了,以此文记录。

      漏洞介绍

      2020年3月25日CODESYS发布CODESYS V3未经身份验证的远程堆溢出漏洞,攻击者利用精心设计的请求可能会导致基于堆的缓冲区溢出。该漏洞存在于CmpWebServerHandlerV3.dll(文件版本3.5.15.20)库中,源于该dll库未能正确验证由用户提交的发往Web Server URL端点的数据。此漏洞会造成Web 服务器崩溃、拒绝服务或者可能被用于远程代码执行。

      漏洞原理可参考本文。

      实验环境

      靶机:Windows 10 x64

      攻击机:Kali Linux

      实验过程

      1. 安装CODESYS V3.5

      安装地址:https://store.codesys.com/ftp_download/3S/CODESYS/300000/3.5.15.20/CODESYS%203.5.15.20.exe。因为有墙,会很慢,自己尝试特殊方式吧,注意,一定要安装32位的。该漏洞在3.5.15.40版本之前都存在。

      2. 环境配置

      新建一个工程,名字为test。
    https__3A__2F__2Fimg-blog___csdnimg___cn__2F20200828174757970___png__3Fx-oss-process__3Dimage__2Fwatermark__2Ctype_ZmFuZ3poZW5naGVpdGk__2Cshadow_10__2Ctext_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyOTk0NjUx__2Csize_16__2Ccolor_FFFFFF__2Ct_70__23pic_center.jpg
    https__3A__2F__2Fimg-blog___csdnimg___cn__2F20200828174803660___png__3Fx-oss-process__3Dimage__2Fwatermark__2Ctype_ZmFuZ3poZW5naGVpdGk__2Cshadow_10__2Ctext_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyOTk0NjUx__2Csize_16__2Ccolor_FFFFFF__2Ct_70__23pic_center.jpg
      进入“此电脑–>管理–>服务和应用程序–>服务”,启动图中的服务。
    https__3A__2F__2Fimg-blog___csdnimg___cn__2F20200828174833473___png__3Fx-oss-process__3Dimage__2Fwatermark__2Ctype_ZmFuZ3poZW5naGVpdGk__2Cshadow_10__2Ctext_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyOTk0NjUx__2Csize_16__2Ccolor_FFFFFF__2Ct_70__23pic_center.jpg
      双击左侧栏中的Device配置网关。在主界面的“扫描网络”一栏中点击右侧的计算机名后,回车,系统将自动扫描并激活节点。
    https__3A__2F__2Fimg-blog___csdnimg___cn__2F20200828174851335___png__3Fx-oss-process__3Dimage__2Fwatermark__2Ctype_ZmFuZ3poZW5naGVpdGk__2Cshadow_10__2Ctext_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyOTk0NjUx__2Csize_16__2Ccolor_FFFFFF__2Ct_70__23pic_center.jpg
      右键左侧的Application,在“添加对象”一栏中找到“视图管理器”,激活WsuSymbols,然后打开。
    https__3A__2F__2Fimg-blog___csdnimg___cn__2F2020082817485999___png__3Fx-oss-process__3Dimage__2Fwatermark__2Ctype_ZmFuZ3poZW5naGVpdGk__2Cshadow_10__2Ctext_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyOTk0NjUx__2Csize_16__2Ccolor_FFFFFF__2Ct_70__23pic_center.jpg
    https__3A__2F__2Fimg-blog___csdnimg___cn__2F20200828174912144___png__3Fx-oss-process__3Dimage__2Fwatermark__2Ctype_ZmFuZ3poZW5naGVpdGk__2Cshadow_10__2Ctext_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyOTk0NjUx__2Csize_16__2Ccolor_FFFFFF__2Ct_70__23pic_center.jpg
      打开后,可以对各参数进行配置。
    https__3A__2F__2Fimg-blog___csdnimg___cn__2F20200828174921909___png__3Fx-oss-process__3Dimage__2Fwatermark__2Ctype_ZmFuZ3poZW5naGVpdGk__2Cshadow_10__2Ctext_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyOTk0NjUx__2Csize_16__2Ccolor_FFFFFF__2Ct_70__23pic_center.jpg
      继续进行视图添加(名字默认即可)。
    https__3A__2F__2Fimg-blog___csdnimg___cn__2F20200828174929958___png__3Fx-oss-process__3Dimage__2Fwatermark__2Ctype_ZmFuZ3poZW5naGVpdGk__2Cshadow_10__2Ctext_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyOTk0NjUx__2Csize_16__2Ccolor_FFFFFF__2Ct_70__23pic_center.jpg
      点击右下角的“可视化工具箱”,可以在此处选择各种图标、组件,进行各种参数的配置。这里随便选一个即可。
    https__3A__2F__2Fimg-blog___csdnimg___cn__2F2020082817494097___png__3Fx-oss-process__3Dimage__2Fwatermark__2Ctype_ZmFuZ3poZW5naGVpdGk__2Cshadow_10__2Ctext_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyOTk0NjUx__2Csize_16__2Ccolor_FFFFFF__2Ct_70__23pic_center.jpg
      在主菜单栏中选择“编译–>重新编译”,对所有的代码进行编译,没有报错即可。然后找到上面中间位置的“Application [Device: PLC逻辑]”,点击右侧相邻的按键(或者直接快捷键Alt+F8)。下载。然后到了这个界面。
    https__3A__2F__2Fimg-blog___csdnimg___cn__2F20200828174949184___png__3Fx-oss-process__3Dimage__2Fwatermark__2Ctype_ZmFuZ3poZW5naGVpdGk__2Cshadow_10__2Ctext_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyOTk0NjUx__2Csize_16__2Ccolor_FFFFFF__2Ct_70__23pic_center.jpg
      点击“启动”(快捷键F5)。运行成功后,就可以看到组态的界面了。
    https__3A__2F__2Fimg-blog___csdnimg___cn__2F20200828174957895___png__3Fx-oss-process__3Dimage__2Fwatermark__2Ctype_ZmFuZ3poZW5naGVpdGk__2Cshadow_10__2Ctext_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyOTk0NjUx__2Csize_16__2Ccolor_FFFFFF__2Ct_70__23pic_center.jpg
      打开命令行,输入netstat -ano,可以看到TCP Port 8080端口已经成功开启(为漏洞利用对应的业务端口)。
    https__3A__2F__2Fimg-blog___csdnimg___cn__2F20200828175011109___png__3Fx-oss-process__3Dimage__2Fwatermark__2Ctype_ZmFuZ3poZW5naGVpdGk__2Cshadow_10__2Ctext_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyOTk0NjUx__2Csize_16__2Ccolor_FFFFFF__2Ct_70__23pic_center.jpg
      环境配置至此已结束,下面已经可以开始漏洞复现了。

      3. 漏洞复现

      开启攻击机(最开始我想在本机win10上试一下,但是一直打不开网页,后来换了kali才可以),打开192.168.227.133:8080/webvisu.htm(即靶机IP:8080/webvisu.htm),在我这里无法正常访问,但不影响后续过程。
    https__3A__2F__2Fimg-blog___csdnimg___cn__2F20200828175023373___png__3Fx-oss-process__3Dimage__2Fwatermark__2Ctype_ZmFuZ3poZW5naGVpdGk__2Cshadow_10__2Ctext_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyOTk0NjUx__2Csize_16__2Ccolor_FFFFFF__2Ct_70__23pic_center.jpg
      然后,下载POC代码,放在合适的位置。

      在运行代码前,先回到Windows端重启CODESYS服务,使CmpWebServerHandlerV3组件处于状态“0”,然后再运行POC脚本。格式为:

      python PocName.py 靶机IP 端口号(默认为8080)

      运行后,返回200,然后会报错,这是正常现象。若出现一堆A,说明攻击失败,需要查看前序步骤有无错误。
    https__3A__2F__2Fimg-blog___csdnimg___cn__2F20200828175032411___png__3Fx-oss-process__3Dimage__2Fwatermark__2Ctype_ZmFuZ3poZW5naGVpdGk__2Cshadow_10__2Ctext_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyOTk0NjUx__2Csize_16__2Ccolor_FFFFFF__2Ct_70__23pic_center.jpg
      回到靶机查看服务,尽管“状态”一列显示为“正在运行”,但右键后发现服务已经关闭,说明攻击成功。服务在重启后可以正常访问。
    https__3A__2F__2Fimg-blog___csdnimg___cn__2F20200828175109290___png__23pic_center.jpg
      参考文章



      最后,再心疼一下我可怜的内存…等我有钱了一定要换!!!

    打赏鼓励一下!
    +10
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

    本版积分规则

    
    顶部qrcode底部
    关注酷德网订阅号,获取更多资讯!

    QQ|小黑屋|手机版|Archiver|酷德论坛 ( 苏ICP备16065247号-1 )|网站地图

    GMT+8, 2021-3-4 05:10 , Processed in 0.185008 second(s), 65 queries .

    酷德网

    © 2001-2013 Hicodesys. 技术支持 by 酷德网

    快速回复 返回顶部 返回列表