1. DLL 文件反编译
.net 项目的一些核心源码会封装在.dll文件中,在他给出的代码中看不到核心代码,所以在有.net项目代码的情况下进行代码审计,还得将代码中.dll文件进行反编译参能看到核心源码。
推荐工具ILSpy
,把.dll文件拖进去就直接反编译成C#源代码
Q: .net是什么?框架还是环境,他和C#是什么关系?是C#代码的运行环境?还是.net用C#写的?
2. web.config 文件配置错误导致信息泄露
.net项目下一般都有web.config文件,该文件中 <customErrors mode=“Off”>参数,用来定义如果报错是否返回自定义的报错信息。
正确做法应该将他开启设置为On,但一般都会关闭选择Off。
mode="Off"时,如果对网站进行SQL注入攻击,那么就会返回真实的数据库报错信息,可能顺带返回其他一些信息,比如.NET版本,这就造成了信息泄露,因为就算是数据库的真实报错信息也算是可以利用的信息。
mode="On"时,就会返回自定义的报错信息,就避免了信息泄露。
3. 未授权访问
aspx语言本身容易导致未授权访问的问题。
未授权访问:就是没有验证,不登录,没有验证就进入了网站。一般出现在前端:前、后台。前台你不是会员但是进入了会员的界面,后台你不是管理员,但进入了管理员的界面。
之前学习身份验证时提到过:身份验证信息的载体是session和cookie。
身份验证的代码:1.会在每个需要验证的页面中都写上;或者,2.封装成一个文件,将它包含在每个需要验证的页面中。
(这不是重点,稍微复习一下)
寻找未授权访问漏洞的思路:
黑盒测试(没有源代码):
- 也是找不需要验证的页面(黑盒就主要靠工具扫描)
- 想办法绕过验证逻辑(凭经验试)
白盒测试(有源代码):
- 找没有添加身份验证代码的页面(白盒需要找)
- 想办法绕过验证代码的逻辑(这需要准确定位验证逻辑的位置,他在本地下载的CMS源码中找到漏洞给后再攻击部署好的网站,其中用bp往数据包中插入cookie信息挺牛逼,插入后真就进去了)
所以说能找到CMS确实很有用,反编译也有用,否则就算找到了源代码,但要是没有反编译,那还是看不到核心代码中的判断逻辑,还是 无法绕过。