风讯DOTNETCMS是一款具有强大功能的系统,基于.NET构架的内容管理软件,国内领先的第一款开源的.集成WEB2.0元素的模块化的CMS建站系统。
近日有网友在审计该系统代码的时候发现存在可以利用的漏洞,绕过管理员账号信息验证,直接进入后台,可谓是非常危险的一个利用漏洞。

下面给大家分享一下漏洞细节:

先从DotNetCMS的登录逻辑处代码分析,如下图:

15099322942920 300x154 风讯DotNetCMS v2.0被爆出存在后台登录绕过漏洞

24 300x78 风讯DotNetCMS v2.0被爆出存在后台登录绕过漏洞

验证登录的逻辑大致可以整理为以下四步

1.从${pre}_sys_User表中取出UserNum,UserName,SiteID

2.如果是管理员,则adminLogined=1;另外,info.uncert的默认值为false

3.将UserNum,UserName,SiteID,adminLogined,uncert用逗号隔开组成字符串,再使用源码内的加密算法进行加密

4.加密后的字符串写入cookie,name是SITEINFO

也就是说只要得到UserNum,然后给他加密起来写入到cookie中,就可以直接进入到后台了。

但是 UserNum是在安装Foosun CMS时,随机产生的一个12位的值,如果暴力枚举的话太耗费时间,也容易被网站管理员发现。

这时候需要利用到这系统的另一处注入漏洞,帮助拿到UserNum。

审计代码后发现 http://localhost/user/City_ajax.aspx?CityId=1 的CityId字段存在SQL注入漏洞,看下图:

31 风讯DotNetCMS v2.0被爆出存在后台登录绕过漏洞

 

所以可以在这个地方拿到 UserNum ,构造如下注入链接:

http://localhost/user/City_ajax.aspx?CityId=1%27%20union%20all%20select%20UserNum,UserNum%20from%20dbo.fs_sys_User%20where%20UserName=%27admin

访问上面链接如下图:

41 1024x109 风讯DotNetCMS v2.0被爆出存在后台登录绕过漏洞

 

可以看到已经UserNum已经显示出来了。

接下来只要将得到的UserNum代入上面所说的加密方法,得到加密串,写入cookie即可以成功登陆。

使用该程序建站的站长朋友请尽快更新官方的安全补丁,以免网站被人非法入侵利用。

以上方法步骤仅供技术学习研究,请勿用于非法用途。

 一、病毒介绍

近日有研究人员发现了一种通过OFFICE 使用DDE进行攻击的方法。通过DDE在OFFICE中执行任意文件,这种攻击方式不依赖于OFFICE漏洞或者宏。攻击者可以通过社工方式发送钓鱼邮件诱使受害者打开office文档,一旦受害者打开文档,并且点击了允许更新引用,恶意代码就会执行。

在Windows系统中,各个应用程序之间常常需要交换、传递数据,动态数据交换(DDE)技术就是为了进程之间更方便传递数据提出的,最早是随着Windows 3.1由微软公司实现的进程间的数据通信的协议。动态数据交换(DDE)已经成为Windows的一部分,并且很多Windows应用程序都使用了DDE技术来实现进程之间的数据交换,而office也支持这个协议。

二、病毒攻击过程

攻击者首先构造office文档 通过添加域的方式 插入恶意代码。

当受害者打开word之后 就会弹出如下窗口,会提示是否允许,此时如果点击 “是” ,恶意代码就会运行起来。

图1 见到这个提示,说明你已经中了最新的office病毒!

可以看到恶意代码成功执行,弹出了windows计算器

图2 见到这个提示,说明你已经中了最新的office病毒!

上面我们为了演示弹出了一个计算器,在实际的攻击行动中,攻击者可以写入powershell 、vbs等脚本,执行更多恶意功能,还可以下载并运行更多恶意程序,可谓是非常危险的漏洞。

图3 见到这个提示,说明你已经中了最新的office病毒!

三、防御措施

防御这种攻击,需要做到以下几点:

1、避免打开未知来源的文档

2、慎重决定是否点允许

3、安装杀毒软件拦截查杀

无忧主机是一家专注于php主机的IDC企业,相比其他建站语言,php更简单易用,用户量也是非常大的。而不管哪款语言都避免不了漏洞的出现,今天无忧主机小编就给大家介绍一下php语言常见的漏洞以及对于的防范措施。

第一:SQL注入漏洞

在进行网站开发的时候,程序员由于对用户输人数据缺乏全面判断或者过滤不严导致服务器执行一些恶意信息,比如用户信息查询等。黑客可以根据恶意程序返回的结果获取相应的信息。这就是所谓的SQL注入漏洞。

sql注入地步骤:

  1. a)  寻找注入点(如:登录界面、留言板等)
  2. b)  用户自己构造sql语句(如:’ or 1=1#,后面会讲解)
  3. c)  将sql语句发送给数据库管理系统(dbms)
  4. d)  dbms接收请求,并将该请求解释成机器代码指令,执行必要地存取操作
  5. e)  dbms接受返回地结果,并处理,返回给用户

对SQL注入漏洞的防范

黑客进行SQL注入手段很多,而且灵活多变,但是SQL注人的共同点就是利用输入过滤漏洞。因此,要想从根本上防止SQL注入,根本解决措施就是加强对请求命令尤其是查询请求命令的过滤。具体来说,包括以下几点:

1、把过滤性语句进行参数化处理,也就是通过参数化语句实现用户信息的输入而不是直接把用户输入嵌入到语句中。

2、在网站开发的时候尽可能少用解释性程序,黑客经常通过这种手段来执行非法命令;

3、在网站开发时尽可能避免网站出现bug,否则黑客可能利用这些信息来攻击网站;仅仅通过防御SQL注入还是不够的,另外还要经常使用专业的漏洞扫描工具对网站进行漏洞扫描。

第二:脚本执行漏洞

脚本执行漏洞常见的原因是由于程序员在开发网站时对用户提交的URL参数过滤较少引起的,用户提交的URL可能包含恶意代码导致跨站脚本攻击。脚本执行漏洞在以前的PHP网站中经常存在,但是随着PHP版本的升级,这些间题已经减少或者不存在了。

对脚本执行漏洞的防范

客利用脚本执行漏洞进行攻击的手段是多种多样的,而且是灵活多变的,对此,必须要采用多种防范方法综合的手段,才能有效防止黑客对脚本执行漏洞进行攻击。这里常用的方法方法有以下四种:

1、对可执行文件的路径进行预先设定。可以通过safe_moade_exec_dir来实现;

2、对命令参数进行处理,一般用escapeshellarg函数实现;

3、用系统自带的函数库来代替外部命令;

4、在操作的时候进可能减少使用外部命令。

第三:跨网站请求伪造漏洞

CSRF(Cross Site Request Forgeries),意为跨网站请求伪造,也有写为XSRF。攻击者伪造目标用户的HTTP请求,然后此请求发送到有CSRF漏洞的网站,网站执行此请求后,引发跨站请求伪造攻击。攻击者利用隐蔽的HTTP连接,让目标用户在不注意的情况下单击这个链接,由于是用户自己点击的,而他又是合法用户拥有合法权限,所以目标用户能够在网站内执行特定的HTTP链接,从而达到攻击者的目的。

防范方法

防范CSRF要比防范其他攻击更加困难,因为CSRF的HTTP请求虽然是攻击者伪造的,但是却是由目标用户发出的,一般常见的防范方法有下面几种:

1、检查网页的来源

2、检查内置的隐藏变量

3、使用POST,不要使用GET

第四:xss跨站脚本攻击

SS(Cross Site Scripting),意为跨网站脚本攻击,为了和样式表css(Cascading Style Sheet)区别,缩写为XSS。跨站脚本主要被攻击者利用来读取网站用户的cookies或者其他个人数据,一旦攻击者得到这些数据,那么他就可以伪装成此用户来登录网站,获得此用户的权限。

跨站脚本攻击的一般步骤:

1、攻击者以某种方式发送xss的http链接给目标用户

2、目标用户登录此网站,在登陆期间打开了攻击者发送的xss链接

3、网站执行了此xss攻击脚本

4、目标用户页面跳转到攻击者的网站,攻击者取得了目标用户的信息

5、攻击者使用目标用户的信息登录网站,完成攻击

第五:session文件漏洞

Session攻击是黑客最常用到的攻击手段之一。当一个用户访问某一个网站时,为了免客户每进人一个页面都要输人账号和密码,PHP设置了Session和Cookie用于方便用户的使用和访向。

从前面的分析可以知道,Session攻击最常见的就是会话劫持,也就是黑客通过各种攻击手段获取用户的Session ID,然后利用被攻击用户的身份来登录相应网站。

session文件漏洞防范:

一是定期更换Session ID,更换Session ID可以用PHP自带函数来实现;二是更换Session名称,通常情况下Session的默认名称是PHPSESSID,这个变量一般是在cookie中保存的,如果更改了它的名称,就可以阻档黑客的部分攻击;

三是对透明化的Session ID进行关闭处理,所谓透明化也就是指在http请求没有使用cookies来制定Session id时,Sessioin id使用链接来传递.关闭透明化Session ID可以通过操作PHP.ini文件来实现;

四是通过URL传递隐藏参数,这样可以确保即使黑客获取了session数据,但是由于相关参数是隐藏的,它也很难获得Session ID变量值。

综述
2017年7月7日,Apache Struts发布最新的安全公告,Apache Structs2的strus1插件存在远程代码执行的高危漏洞,漏洞编号为CVE-2017-9791(S2-048)。攻击者可以构造恶意的字段值通过Struts2的struts2-struts1-plugin的插件,远程执行代码
漏洞分析
(1) 漏洞简介
Apache Struts2.3.x系列版本中struts2-struts1-plugin存在远程代码执行漏洞,进而导致任意代码执行。
(2) 漏洞分析
官方的漏洞描述如下:
从官方的漏洞描述我们可以知道,这个漏洞本质上是在struts2-struts1-plugin这个jar包上。这个库是用将struts1的action封装成struts2的action以便在strut2上使用。本质原因还是在struts2-struts1-plugin包中Struts1Action.java中execute函数调用了getText函数,这个函数会执行ognl表达式,更可恶的是getText的输入内容还是攻击者可控的。以下分析基于struts2的官方示例struts2-showcase war包。首先Struts1Action的execute方法代码如下,从红框中信息可以看出其实质是调用SaveGangsterAction.execute方法,然后再调用getText(msg.getKey()….)。

111 300x178 Struts2高危漏洞S2 048动态分析

在struts2-showcase的integration模块下有SaveGangsterAction.java的execute方法的实现。具体如下:

211 300x70 Struts2高危漏洞S2 048动态分析

在这个方法中就带入有毒参数gforn.getName()放到了messages结构中,而gform.getName()的值是从客户端获取的。Gangsterform.getName()的实现如下:

36 300x50 Struts2高危漏洞S2 048动态分析

我们这里传入了${1+1}。有毒参数已经带入,就差ognl表达式。继续回到Struts1Action.java的execute方法下半部分,这里有getText()的入口,能清晰看到参数已经被污染,具体如下图:

43 300x111 Struts2高危漏洞S2 048动态分析

下面进入getText的实现函数:这个调用栈比较深,首先我们给出栈图:

5 300x62 Struts2高危漏洞S2 048动态分析

从Struts1action.execute函数开始,到ActionSupport的getText()方法,方法如下:

6 300x26 Struts2高危漏洞S2 048动态分析

接着进入TextProviderSuppport.getText,接着调用其另一个重载类方法getText(),示例如下:

7 300x58 Struts2高危漏洞S2 048动态分析

如图所示,进入LocalizeTextUtil.findText,继续分析其实现:从名字上也能看出其是根据用户的配置做一些本地化的操作。代码如下:

8 300x34 Struts2高危漏洞S2 048动态分析

熟悉struts2的童鞋跟到这一步就能发现这就是一个很典型的ognl表达式入口,先是得到一个valueStack,再继续递归得到ognl表达式的值。

这里不再描述,详情可参考官方链接:https://struts.apache.org/maven/struts2-core/apidocs/com/opensymphony/xwork2/util/LocalizedTextUtil.html

翻页