目标:oa.school.com  IP:192.168.100.100 OA系统 (域名ip均已经过处理)
目的:登陆该后台管理系统 进行某个目的


0x01
检测并提权
某商业oa程序 无0day 网上也没有相关漏洞信息 , 无同服务器站点,简单的进行了 常规web漏洞扫描、目录扫描、手工探测、端口信息、简单的对各开放并可能利用的端口进行密码破解 未果
通过google搜索并整理相关二级域名
对可能存在漏洞的站点进行简单的探测 (google搜索目录信息) 
发现一二级域名为:test.school.com IP:192.168.100.101 存在目录遍历漏洞 并找到存在漏洞的eweb编辑器(拿shell部分省略)
通过web.config找到 数据库用户名:user 密码:pass   (信息以处理)
发现是sa权限(提权省略) 
query user 发现administrator 为登陆状态 并且 登陆时间 为 5天前 一般遇到这样的情况 通常会抓取明文密码 但是上面装有360 不到万不得已情况下 不会添加用户并登陆远程桌面添加用户 进入服务器 停止360  使用mimikatz 抓取明文密码(个人喜欢收集密码信息)


0x02
进一步渗透
由于是该校二级域名,并且是同内外服务器。上面又可能存有 目标 站点的信息 如数据库信息、网站备份信息,不到万不得以不会去扫描 以及嗅探!
开始菜单分明就有数据库 以 windows身份验证方式登陆进去 果然找到 目标oa相关的用户表 ,查询之:
clip_image002[4]
不是常规的md5加密 看起来好像base64加密 hackbar解密发现是乱码,应该是des加密!
DES 数据加密算法(Data Encryption Algorithm,DEA)是一种对称加密算法,是需要密钥的
之前的猜测没错,这台服务上不仅有 该学校数据库 而且还有 网站备份文件! (运气真好!)
findstr 查了半天未找到加密函数 以及密钥
该OA系统是 VB.NET开发的 看了下程序源码 发现一些函数都封装到dll文件中
找到该OA登陆文件 相关的dll文件School.Accounts.dll 使用.NET dll文件 反编译器 .NET Reflector 找到DECEncrypt:
clip_image004[4]
密钥 :

Public Sub New()

Me.arrDESKey = New Byte() { &H2A, &H10, &H5D, &H9C, &H4E, 4, &HDA, &H20 }   //密钥

Me.arrDESIV = New Byte() { &H37, &H67, &HF6, &H4F, &H24, &H63, &HA7, 3 } //奇偶校验

End Sub

网上找了几款DES 解密工具 载入key 以及加密字符串 破解未果
看看加密解密函数:
加密函数: encrypt

Public Function Encrypt(ByVal m_Need_Encode_String As String) As String

Dim provider As New DESCryptoServiceProvider

Dim stream2 As New MemoryStream

Dim stream As New CryptoStream(stream2, provider.CreateEncryptor(Me.arrDESKey, Me.arrDESIV), 1)

Dim writer As New StreamWriter(stream)

writer.Write(m_Need_Encode_String)

writer.Flush

stream.FlushFinalBlock

stream2.Flush

Return Convert.ToBase64String(stream2.GetBuffer, 0, CInt(stream2.get_Length))

End Function

解密函数: Decrypt

Public Function Decrypt(ByVal m_Need_Encode_String As String) As String

Dim provider As New DESCryptoServiceProvider

Dim stream2 As New MemoryStream(Convert.FromBase64String(m_Need_Encode_String))

Dim stream As New CryptoStream(stream2, provider.CreateDecryptor(Me.arrDESKey, Me.arrDESIV), 0)

Dim reader As New StreamReader(stream)

Return reader.ReadToEnd

End Function

嗯。有了解密算法 又有 key
直接 利用现成的代码稍加改造 弄个解密工具方便解密
clip_image006[4]
解密成功!
登陆OA.SCHOOL.COM成功!
clip_image008[4]

源链接

Hacking more

...