前言
最近在审计红帆ioffice .net 的代码,发现了许许多多的漏洞。如多处的未授权的SQL注入,前后台的任意文件下载,前台的任意文件写入,已经被修复的前台任意文件上传,还有任意用户登录漏洞。因此写下自己对红帆ioffice漏洞利用技巧。
红帆ioffice利用技巧
红帆ioffice在测试过程中的问题
用户密码解密
过程分析
红帆ioffice
的默认数据库是ioffice
,默认用户名是ioffice
,存放用户数据的表是mrbaseinf
。
如当我们测到SQL注入时,想要进后台,所以直接使用命令
python3 sqlmap.py -r 2.txt -D ioffice -T mrbaseinf -C "loginid,Pwd,sysSam,CheckSam" --dump
拿到密码后,这个时候就应该考虑到解密的问题了。
红帆的默认密码是96-E7-92-18-96-5E-B7-2C-92-A5-49-DD-5A-33-01-12
,即111111
。
实际上这里是md5(111111)
,即每两个字符中添加一个-。
从代码层面分析发现,这段算法就是md5
,不可逆,因此只能考虑去掉-
后,在通过cmd5
查hash
值,得到明文。
当然cmd5
也不是所有hash
都能查到的,这里就得借助sam
了。
注:sam的全称是security account manager,即安全账号管理
红帆在设计的时候,可能考虑到了hash不可逆
的因素,怕用户忘记密码,导致密码无法被解,因此在数据表字段设计的时候,增加了sysSam
和checkSam
。简单的说,这两个值解出来后,可能就是pwd
字段的明文。
通过查询默认的checkSam
或者sysSam
的值时,会发现。
在使用sql语句
更新时,又增加了sysSam
。
注:此处文档中admin的密码是111111
因此如果解密不出密码时,覆盖密码最好是添加一个sysSam
。
利用总结
用sql注入获取数据,进后台时,可以利用该方法尝试解密密码。
配置文件dbpwd解密
过程分析
.net
的配置文件是web.config
,数据库连接信息
是在appSettings
节点中。
查看ioffice
的配置文件,发现数据库的连接密码被加密了,因此就需要解密该密码了。
.net加载web.config的节点,是通过System.Web.Configuration.WebConfigurationManager
。
如这里需要加载appSettings
,那么则需要调用WebConfigurationManager下
的AppSettings
方法去获取到配置文件的相关参数的。
通过dnspy
反编译/ioffice/bin
目录下的dll文件
。
在iOWebCSP.dll
文件中,即iOWebCSP
对象下的GetWebDbConnectString
方法中,我们可以看见ioffice
是如何连接数据库的。
可以看见,在第131行中有这样一段代码
1 | text3 = this.b(WebConfigurationManager.AppSettings["dbpwd"]); |
获取到dbpwd
后,调用当前对象下的b方法
进行解密操作。
跟进后,发现也就是一个des加解密的问题。
1 | private string b(string A_0) |
跟进到des后发现,密钥和偏移量是直接在构造方法iOWebCSP中被初始化了。
直接编写解密脚本。
拿到明文密码就就想着要登录数据库咯。
在cnstr
中,server=.
代表server=127.0.0.1:1433
,database="ioffice"
,还不知道数据库连接用户是谁。
继续往下看。
变量d
是直接在构造方法中被初始化成了ioffice
,即当前数据库用户(默认数据库用户)是ioffice
。
最终成功连上数据库
利用总结
ioffice
有任意文件下载漏洞
,当获取到web.config
时,可解密密码,恰好1433
开放,就能直接起飞。
当拿到服务器权限时,进不去后台,可通过此方法连上数据库,再解密用户密码,能登录后台。
webshell 解析问题
过程分析
审计时发现了任意文件写入和任意文件上传漏洞后(不会重命名),尝试利用,默认写入和上传路径都是在/ioffice/upfiles/
目录下,分析代码和实际测试发现,文件不会重命名。
最开始是在/ioffice/upfiles/
目录下传aspx
、ashx
和asmx
等.net
可解析的脚本文件。直接访问,发现是会被重定向的。
注:文件存在和不存在都会被重定向
后来有师傅告诉我说,红帆都是传的asp
马。
但是实际测试发现,asp
马的执行权限非常的低,所以还是得传.net
的马。
最后测试发现,可以传到/iOffice/Identity/
目录下。
利用总结
直接跨目录将webshell
写到/iOffice/Identity/
即可。
总结
红帆ioffice
,现在互联网产品的案例是很少了的,代码大概也都是七八年前的那批程序员写的,所以漏洞许许多多各种各样。通过审计前人留下的坑,增长了自身对漏洞代码的认识,这个还是很不错的。
在审计红帆OA时,还发现可能存在xxe
漏洞和Newtonsoft.Json
反序列化漏洞。但是由于默认配置原因,利用不成功,还是比较遗憾的。