0X00
HDHCMS建站系统是目前国内ASP.NET少见的优秀建站管理系统,基于 ASP(点)NET(C#)+ MSSQL的技术开发,同步支持PC与手机网站的建设,后台支持微信公众号的接入。
0X01
逛云悉指纹识别时看到了此CMS,看到历史漏洞只有一个,便有了兴趣(用户量很少)。
历史漏洞:
漏洞描述: HDHCMS存在逻辑缺陷漏洞。攻击者可利用漏洞通过构造cookie即可直接登入后台,获取敏感信息。
0X03
下载源码后打开ilspy反编译BIN目录下的dll文件:
既然知道了漏洞是通过伪造Cookie进入后台,那么直接找后台登录的接口:
既然漏洞是伪造Cookie,就不需要验证用户名和密码的正确性,
其中从FunSetSesVal
和FunSetCookies
函数的名字能看出主要是在服务端设置Session和Cookie的,点击函数名即可定位到源码位置。
0X04
FunSetSesVal函数如下:
FunSetSesVal
函数的作用是给HdhAllVar
的键SesAdmin
设置了一个值DonforYhm
,而DonforYhm
就是后台登录页面输入的用户名
利用ilspy全局搜索一下发现HdhAllVar
的键SesAdmin
默认值如下:
所以我们构造Cookie:AdminName=admin
, 但是admin
这个用户名是需要真实存在的。
0X05
FunSetCookies函数如下:
FunSetCookies函数会接收4个参数:CookName
,CookKey
,CookValue
,CookExpire
,其中CookExpire
是固定的700
全局搜索一下前三个参数HdhAllVar.CokAdminSet, HdhAllVar.CokAdminUse, DonforYhm
:
public static string CokAdminSet = "AdminCook";
public static string CokAdminUse = "AdminUser";
DonforYhm = HdhCmsFun.FunRequestPost("DonforYhm"); //接收后台登陆POST传过来的用户名
至此Cookie的设置流程就完成了,把两个Cookie整理如下:
AdminName=admin; AdminCook=AdminUser=admin
0X06
这就简单了,利用Chrome浏览器的Console输入下面的命令并回车:
document.cookie="AdminName=admin"
document.cookie="AdminCook=AdminUser=admin"
然后访问default.aspx,就可以进入后台了。
0X07
在后台没有找到可以GetShell的地方,但是发现一处任意文件读取,读取到web.config,然后就是简单的低权限日志备份拿shell了。
上哥斯
不会玩Markdown的传图。一直提示帖子中不能包含链接。。