用户
搜索
  • TA的每日心情

    半小时前
  • 签到天数: 99 天

    连续签到: 19 天

    [LV.6]常住居民II

    i春秋签约作家

    Rank: 7Rank: 7Rank: 7

    14

    主题

    102

    帖子

    428

    魔法币
    收听
    0
    粉丝
    2
    注册时间
    2016-6-3

    i春秋签约作者

    发表于 2017-8-30 14:39:49 28846
    今天和大家分享一下aspx网站的代码审计,漏洞类型就是SQL注入和cookie欺骗。
    今天看的cms名字叫做:XX星员工请假系统
    143245r4rmxubff8xmfegb.png
    我们首先看一下网站的目录结构:
    aspx代码审计-1(修改后)132.png
    其中,很明显可以看到bin目录下面都是dll文件,也就是aspx网站的源码;install目录就是安装目录;admin目录就是后台目录…etc。
    我们今天的目标是纯白盒审计,一切只看代码。下面就是正题咯
    先看login.aspx吧,毕竟登录框,说不定就有注入呢?
    aspx代码审计-1(修改后)266.png
    其中inherits的值就是这个文件的相关代码的保存位置,说的可能有点复杂,如下图,我使用了IlSPY工具对appform.dll文件进行了反编译,界面的右边就是当前book.login的相关代码。
    aspx代码审计-1(修改后)368.png
    我们看到,有一个公共函数:LoginForm()
    aspx代码审计-1(修改后)395.png
    里面调用了UsersHelper模块的Login函数我们直接双击Login,应用程序自动搜索这个Login函数,接着跟踪:
    aspx代码审计-1(修改后)459.png
    发现对username和password进行了参数绑定,并不能导致SQL注入。
    但因为本文并不是一个很全面的对某个系统进行代码审计,所以我们随机找了一个函数,例如此处:
    aspx代码审计-1(修改后)546.png
    其中的BindUsers函数,很明显是直接拼接在where条件查询语句后,所以便导致了注入。
    aspx代码审计-1(修改后)595.png
    接着是另一处有缺陷的地方:
    aspx代码审计-1(修改后)611.png
    通过引用得知,此处应该是admin目录下的具备管理员权限才可以使用的功能,那么通过代码,我们可以看到:
    aspx代码审计-1(修改后)665.png
    直接拼接引发注入,如下图便是我在官方的demo复现的截图:
    aspx代码审计-1(修改后)697.png
    Post的参数如下:
    aspx代码审计-1(修改后)710.png
    我们试着将cookie清空,重新访问此时发现,页面会跳转到deny.aspx
    aspx代码审计-1(修改后)752.png
    这是为什么呢?原来代码里写的很清楚了,这是admin类,需要遵循如下规则:
    aspx代码审计-1(修改后)792.png
    admin类下的所有功能模块在页面引导时,需要使用IsInRole()函数查询是否为administrators,那么跟踪发现。
    aspx代码审计-1(修改后)860.png
    这个函数好像没毛病啊,但是他的role参数时如何获取的呢?如下图所示,原来是从cookie中读取这个值。
    aspx代码审计-1(修改后)915.png
    那么意思我们只需要再cookie如此构造便可以绕过这里的验证,所以POC在哪里呢?
    aspx代码审计-1(修改后)959.png

    附言:
    在后期和该套系统的开发人员的交流中得知,这套系统还有一套安全模式,在web.config中添加<deny users=”?” />便可防止cookie欺骗。
    aspx代码审计-1(修改后)1146.png
    不信邪的我,当时就说,那我找找别的,终于被我找到了一处无需登陆的注入。
    问题出现在getpassword.aspx中,getpassword.aspx为找回密码的第一步,验证邮箱的页面,其中的btn_getpassword_click()函数的功能如下图所示。
    aspx代码审计-1(修改后)1279.png
    可以看到,其中的text变量是通过页面上的myemail参数获取的,你也可以通过抓包得知。
    接着将myemail参数中的空格和%都去除,接着进入sendcode函数。
    aspx代码审计-1(修改后)1365.png
    Sendcode函数也只是验证了myemail的内容中是否有@符号而已,接着便拼接sql语句,由此引发SQL注入。此处是一个布尔型的盲注,验证方法就是输入一个不存在的邮箱然后加上’ or ‘1’=’1便可触发。



    评分

    参与人数 1魔法币 +5 收起 理由
    zhouxm2006 + 5 欢迎分析讨论交流,i春秋论坛有你更精彩!.

    查看全部评分

    使用道具 举报 回复
    我们之前用过启明星下的那个啥投票系统- - 他们好像没做什么安全的,就是一些简单的东西,连限时使用都很容易搞掉
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册