才审计了没一会儿就发现,这个建站系统不是"好得很",而是"坏的很",哈哈哈哈哈哈哈~
首先使用ilspy反编译bin目录下的hdhcms.dll文件得到以下文件目录
查看/admin/login.aspx代码中的inherit参数找到对应的反编译源码部分是在admin_login中
找到对应的反编译源码:
通过其中代码发现,如果不满足this.DonforKenbest=outsite的时候会跳出
循环到else中,我们登录传参的时候就不传入这个参数,看看效果:
当传入参数的时候:
这里为了跳到上图两个函数的位置我们置这个参数为空,访问页面:
接下来看看HdhGetFun.FunAdminLoginTo();中干了什么:可以看到DonforYhm获取cookie中的两个参数,然后拼接到一个sql语句中,执行该语句,如果返回值是大于0(也就是查询到了结果)就设置cookie值为接收到的参数并跳转到default.aspx(后台管理页面)
看看接收的两个cookie参数具体的名字是:
所以如果我们能让它的执行结果获取到值就能直接进入后台,该系统默认有admin用户,所以如果我们构造一个cookie:它的键是admincook 它的值是adminuser=admin 按照代码分析就能够直接进入后台
添加一个cookie值:
刷新页面之后:可以看到直接进入后台管理页面:
漏洞总结:1、它是根据从cookie中获取参数拼接到sql语句中,如果后台有一个test用户,也能是sql语句的值大于0,同样可以登录后台。
2、扩展思考,既然是直接拼接sql语句,那么是否会在cookie这位置造成cookie注入呢?
抓取一个后台页面的数据包:就怼着cookie参数注入
然后sqlmap上:
结果明显,因为代码本身只对GET、POST传进的参数做了一个websafe过滤的限制,并没有过滤$_SERVER全局变量获取cookie,所以造成了这种即使有过滤但是不完全的情况。
原文始发于微信公众号(增益安全):.net代码审计之好得很建站系统
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论