楼主: sco4x0

asp.net代码审计基础

[复制链接]

该用户从未签到

发表于 2015-3-6 13:12:18 | 显示全部楼层 |阅读模式
本帖最后由 sco4x0 于 2015-3-6 15:22 编辑

author:sco4x0
blog:http://www.sco4x0.com
Orz,混脸熟来了,超链接加不上,没办法了。

重新编辑了下,恩,这下好多了
0x01 前言

随着各种cms的出现,代码审计也变得越来越吃香,。Orz
然后看到好多盆友都说asp.net不知道从何下手,自己稍微总结了一点。算是自己学习的一个小笔记,2333
asp.net cms的案例实在太少,而且漏洞点都是大同小异,不要埋怨不详细和没案例,THx
asp.net审计哪家强,膜拜WefGod大哥吧:Wefgod
还有zcgonvh神:zcgonvh
若有错误,请不要吐槽,大家心平气和坐下来,你把刀放下,我们好好聊聊天喝喝茶。

0x02 asp.net审计前奏

asp.net可以用C# ,VB.NET ,Jscript.net等等来开发,但是通常首选都是C#和VB.NET
审计asp.net的时候,首先得弄明白他的结构,他并不像php那么单纯。
一般来说,在asp.net应用中,需要进行观察的文件有:aspx.cs,.cs,.ashx和dll文件
aspx.cs是页面后的代码,aspx负责显示,服务器端的动作就是在aspx.cs定义的
.cs是类文件,公共类神马的就是这个了
.ashx是一般处理程序,主要用于写web handler,可以理解成不会显示的aspx页面,不过效率更高
dll就是编译之后的cs文件

0x03 工欲善其事,必先利其器

如果遇到的asp.net cms源码包是没有编译成dll的话,那么就方便很多了,比如地平线cms
而更多的是会遇到编译成了dll,这样相对地说就麻烦很多了,不过也有方法
一:Reflector
大名鼎鼎的Reflector想必都不陌生了,他可以将·NET程序集中的中间语言反编译成C#或者Visual Basic代码,除了能将IL转换为C#或Visual Basic以外,Reflector还能够提供程序集中类及其成员的概要信息、提供查看程序集中IL的能力以及提供对第三方插件的支持,比如屌炸天的reflexil
二:ILSpy
自2011年2月份开始,reflector就开始转向收费软件,所以ILSpy也就应运而生了,它反编译出的代码和reflector差不多
三:屌屌哒的Visual Studio
这个就不需要再作什么介绍了。。
若有遗漏求补充。。

0x04 asp.net应用安全

这是一些平台特有的点。若是有错误,大家坐下来好好聊聊,别冻手冻脚。如果不感兴趣,直接往下跳吧
1.ValidateRequest
在aspx的@ Page中,或许会看到这么一句:validateRequest="true",这时会发现,如果在表单中输入xss payload,就会返回一个错误:检测到潜在危险xxx,这也直接导致了很多asp.net程序猿压根就不知道xss这回事。这个验证貌似很无解,传说中,有方法是可以绕过这个验证的,但是需要利用IE的各种BUG,构造语句:
[AppleScript] 纯文本查看 复制代码
<~/XSS/*- */STYLE=xss:e/**/xpression(alert('XSS'))>

但是因为IE修复了,所以也就没成了。如果在开发中,不知道怎么处理xss的话,把validateRequest设置为true比较好

2.一般处理程序ashx
系统默认创建的ashx文件,一般都是这样的:
[AppleScript] 纯文本查看 复制代码
<%@ WebHandler Language="C#" Class="Handler2" %>
using System;
using System.Web;
public class Handler2 : IHttpHandler {
	public void ProcessRequest (HttpContext context) {
		context.Response.ContentType = "text/plain";
		context.Response.Write("Hello ASP.NET");
	}

	public bool IsReusable {
		get {
			return false;
		}
	}
}

但是如果被黑客知道了地址的话,源码就会直接暴露出来 那么可以这么写:
[AppleScript] 纯文本查看 复制代码
<%@ WebHandler Language="C#" Class="Handler2" CodeBehind="Handle2.cs" %>

将实现的代码放入app_code中,保证代码的隐秘和安全

3.信息安全之VIEWSTATE
在asp.net应用中,查看源码会经常看到这样一段东西:
2367646284.png
ViewState 是客户端的状态管理机制, 通过一个 ID __VIEWSTATE 存储在一个隐藏的区域中.看起来像是一个加密过的字符串。其实就是一段Base64编码的字符串,更多内容,请见:传送门 内容太多,实在搬不动了

不写了 。。。 其他的以后再写吧。

0x05 开始审计asp.net应用

其实漏洞点都大同小异,不同的也许就语法的差异了,至于漏洞是如何产生的,也许就不用再详细多说了。
一:sql注入
处理字符串不当,或者是防御规则脆弱,导致非法用户数据入库
比如大哥的
逐浪CMS通用型SQL注入4+5
逐浪CMS通用型SQL注入3(bypass)

除了常见的拼接字符串之外,还有这种
[C#] 纯文本查看 复制代码
Public static string GetIP(){
 string result = HTTpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
 if(string.IsNullOrEmpty(result))
     result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
 if(string.IsNullOrEmpty(result))
     result = HttpContext.Current.Request.UserHostAddress;
 if(string.IsNullOrEmpty(result))
     return "127.0.0.1";
 return result;
}

至于二次注入神马的,案例确实不好找,但是这种都是属于知识点共通的,参考php的案例即可
xss
待补充,实在没找到案例

csrf
待补充,实在没找到案例

信息伪造
看名字就知道是什么了。。
见大哥的:ROYCMS身份伪造进入后台

文件上传
截断,大小写,js验证,其余待补充。实在找不到案例。


文件下载|文件查看|文件删除|文件包含

例如这类:wooyun-2010-081196
在接收到文件参数的时候,并没有对其进行过多的检测,太过相信请求的数据。
截断技巧如%00之类的
审计deepsoon cms 0x05,任意文件读取修改
其余的求补充。

平行权限(越权)
越权的出现是因为程序员在做增查删改的时候,没有详细验证请求数据
越权的更多姿势和方法,参考川神的paper吧:我的越权之道
案例:ROYCMS普通权限严重的越权操作

逻辑漏洞
这类漏洞最麻烦。 多出现于找回密码啊,各种认证啊,验证码重用啊。等等
案例:审计deepsoon cms 0x03 后台绕过查看任意后台界面
没找到案例,求补充。

其他mark内容

ascx后门
实在佩服wefgod大哥的脑洞。请收下我的胳膊肘和膝盖,传送门

viewstate安全实例
再次跪舔wefgod大哥,传送门

0x06 小结

我也很想写的更详细,但是这些基础知识点大家也许都是听得耳朵都起茧子了。所以做了个大大大概的分类,而且asp.net的案例实在太少,原谅我的视野实在找不到其他的了。
另外,如果有小伙伴有trick,希望大家能一起多多交流
回复

使用道具 举报

该用户从未签到

 楼主| 发表于 2015-3-6 13:13:38 | 显示全部楼层
为什么不是编辑时的样纸。
回复 支持 反对

使用道具 举报

  • TA的每日心情
    无聊
    2016-1-5 11:17
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2015-3-6 14:03:21 | 显示全部楼层
    学习一下
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-6-28 13:52:41 | 显示全部楼层
    感谢楼主的分享~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-6-29 16:32:46 | 显示全部楼层
    还是不错的哦,顶了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-6-29 18:39:04 | 显示全部楼层
    支持,看起来不错呢!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2019-2-12 22:05
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2015-6-30 00:11:49 | 显示全部楼层
    学习学习技术,加油!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-6-30 01:21:00 | 显示全部楼层
    支持中国红客联盟(ihonker.org)
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-6-30 14:07:03 | 显示全部楼层
    学习学习技术,加油!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2019-2-12 22:05
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2015-6-30 18:19:27 | 显示全部楼层
    还是不错的哦,顶了
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    指导单位

    江苏省公安厅

    江苏省通信管理局

    浙江省台州刑侦支队

    DEFCON GROUP 86025

    旗下站点

    邮箱系统

    应急响应中心

    红盟安全

    联系我们

    官方QQ群:112851260

    官方邮箱:security#ihonker.org(#改成@)

    官方核心成员

    Archiver|手机版|小黑屋| ( 苏ICP备2021031567号 )

    GMT+8, 2024-11-1 21:41 , Processed in 0.049227 second(s), 13 queries , Gzip On, MemCache On.

    Powered by ihonker.com

    Copyright © 2015-现在.

  • 返回顶部