asp代码审计
今天给大家带来的是asp程序的代码审计,asp和aspx代码审计来说,有很多相同的地方。 正好今天要交任务,最近的目标站的子域名使用了这个cms,但是版本不一定是这个,好累。
程序名称:自由策划
下载地址:http://down.chinaz.com/soft/32891.htm
目录截图:
先随便打开一个
比如so/index.asp
写的很简洁。。。
包含了两个配置文件,有什么用暂时先不说,先接着下看,通过get方式获取了两个参数,一个是key,一个是topsortid,其中topsortid使用isnumeric函数判断是否为数字,即我们常说的int型变量,多一个字符都不行。曾经小编居然想绕过这个函数去进行注入想想真是年轻。。。
不感叹了,我们继续吧。asp文件的代码审计其实比php那些简单很多,因为asp很少有框架再加之asp的函数就只有那么几个,所以通过白盒审计asp代码比较好入门,同时也可以学到一些挖洞的姿势。继续吧我仿佛看到了各位看官的拖鞋在朝我飞来(●ˇ∀ˇ●)
在so/index.asp文件中,我们看到最后一句:
echo ob_get_contents(zych_templatedir&”So.asp”)
那么问题来了,这个zych_templatedir全局变量是从哪里定义的?当然你也可以说,这个变量名称一看就是模板目录啦(是是是,你是看官,你最大,你说是就是)既然这个页面中没有定义这个变量,那就说明这个变量是个全局变量,所以,我们需要在include来的文件中进行查找,先看conn.asp吧。
双目如炬的我们一眼就看到了这个变量是从哪里来的?(对,从数据库中取的),将数据库打开,进入config表,我们便可以看到了。
然后呢?我们的so/index.asp页面是将数据传递到模板目录下的so.asp中去显示和查询的,所以,接着看呗。
我们着重看一下,刚才那个页面没有过滤的key变量。
由此处可以看到key变量就是页面中的变量,这里的<%=key%>语法等同于request(“key”),意即为,无论get来的,post来的亦或是cookie传过来的,都接收。接着往下看:
画红线的地方就是这个页面唯一对key变量的检查,仅仅只是检查是否为空?我们直接在url里面提交万能的单引号试试吧。
http://xxxxx/so/index.asp?key=1’
Oho,报错啦,请不要在参数中包含非法字符尝试注入!
我擦泪,看看为什么,是谁在这装逼,拦我注入!一通找,发现是这个文件。
看看是怎么写的呢?我们有没有绕过的可能性呢?
算你厉害,我我我…我打不过你不成嘛。。(小编技术有限,暂时没点满正则表达式的天赋点)
接下来就只剩admin目录和user目录下的文件没看了。
先看user目录下的吧,也很简单。
先看login.asp,文件里面有写:
当login变量=ok时,便接收一个post来的参数username和任意取值的password,其中password在取值后,先经过md5()函数进行处理。
接着可以看到,只检查username和password的值是否为空,然后(这是重点!!!)通过一条sql语句进行select查询。大家都知道,有一种所谓的漏洞叫”万能密码”,其实在我眼里,万能密码就是账户登陆时,开发人员使用一条select语句同时将账号和密码带入数据库查询,碰巧username或password并没有经过特殊字符处理,所以,我们便可以通过提交’ or ‘1’=’1进行绕过,这就是万能密码漏洞。
还是举个栗子,第一张图是常规登陆,第二张图就是我闭合sql语句的截图:
好吧,这里的username参数也检查单引号,接着看user/index.asp,作为该cms的会员中心的主文件,我们可以试试看,有没有cookie欺骗或是未授权访问。
从上面两个图,可以看到,cookie欺骗?未授权访问?不存在的,好吗。但是,万事都应该有一个but,会员中心存在多个越权,hhhhh….笑死在电脑前….
我们随便挑一个来看看吧。就看修改密码处:
可以看到,修改密码的操作是访问user/index.asp?action=password,接着编辑器直接ctrl+f搜索password吧,相关的操作在文件的294行开始。
第300行,这里告诉我们,修改密码这个操作先验证用户是否登陆,接着发送post请求到user/index.asp?action=password&xiugai=pass,接着搜索xiugai,发现在文件的第621行开始。
从下面的源码图,我们可以看的很明白,这是一处越权漏洞。
果你不懂什么叫越权漏洞,我们不妨来回想一下这个cms的修改密码功能,做了哪些操作。
第一步:验证用户是否登陆;
第二步:验证post包中的id是否为int型;
第三步:验证两次输入的新密码是否为空且是否相等;
第四步,根据我们提供的id值去数据库进行update更新。
注:这里的id是request哦~~所以,完全是我们可控的变量。所以这就导致了越权漏洞,这一处是逻辑漏洞这个分类下的任意密码修改。
写在最后,下次给大家带来amdin目录下的代码审计。不知道为什么我写的文章都是2k+~3k+的浏览量,但是回复只有一点点。如果看官你有好的建议,可以提出来让我学习下啊~~
asp代码审计的更多相关文章
- ASP代码审计 -4.命令执行漏洞总结
命令执行漏洞: 保存为cmd.asp,提交链接: http://localhost/cmd.asp?ip=127.0.0.1 即可执行命令 <%ip=request("ip" ...
- ASP代码审计学习笔记 -5.文件下载漏洞
文件下载漏洞 漏洞代码: <% function download(f,n) on error resume next Set S=CreateObject("Adodb.Stream ...
- ASP代码审计学习笔记 -4.命令执行漏洞
命令执行漏洞: 保存为cmd.asp,提交链接: http://localhost/cmd.asp?ip=127.0.0.1 即可执行命令 <%ip=request("ip" ...
- ASP代码审计学习笔记 -3.上传漏洞
1.ASP上传过程抓包分析: POST /4.asp HTTP/1.1 Host: 192.168.1.102 User-Agent: Mozilla/5.0 (Windows NT 10.0; WO ...
- ASP代码审计学习笔记-1.SQL注入
ASP注入漏洞 一.SQL注入的原因 按照参数形式:数字型/字符型/搜索型 1.数字型sql查询 sql注入原因: ID=49 这类注入的参数是数字型,SQL语句原貌大致如下: id=request. ...
- ASP代码审计一枚
<% On Error Resume Next dim name, pass, sql, action set conn = server.CreateObject("ADODB.Co ...
- ASP代码审计学习笔记 -2.XSS跨站脚本
XSS漏洞: 漏洞代码: <% xss=request("xss") response.write(xss) %> 漏洞利用: 漏洞修复: Server.HTMLEnc ...
- asp.net代码审计起始篇之系统搭建
最近开始学习asp.net的代码审计,在开始审计之前除了要对语言有些基本的了解,还需要会在本地搭建demo网站方便调试和复现漏洞 准备工作:操作系统:我用的是win10 数据库:我用的sql serv ...
- php代码审计基础笔记
出处: 九零SEC连接:http://forum.90sec.org/forum.php?mod=viewthread&tid=8059 --------------------------- ...
随机推荐
- MySql 关键字冲突解决办法
今天把项目发布到另一台机器上时,因为mysql版本不一致,出现了关键字冲突,virtual关键字,不清楚是不是mysql添加的新特性. select * from herb where name=&q ...
- 基于Bind实现的DNS正反向解析及主从DNS的配置
一.什么是DNS? 1.1 简单的理解,Domain Name System,是互联网一项核心的服务,他作为一个桥梁可以将域名和IP地址相互因素的一个分布式数据库,能够使人更加方便的访问互联网,而不用 ...
- Create Empty Project In Vs But Not Debug?
问题描述 在使用VS创建一个空的项目管理,然后,添加项目.可是,这个时候,项目虽然可以运行,但是不能Debug进行调试. 解决方法 按照下面三张图像的设置即可.
- C和C++中的不定参数
在初学C的时候,我们都会用到printf函数来写Hello World的程序.在我们看printf函数的声明时,会看到类似于下面代码 int printf(const char * __restric ...
- Linux&&Mac 自动增加CSDN访问量
我心里面有两个小人. 一个叫愧疚,对CSDN这么一个分享知识的平台的愧疚,因为我正在做一件对不起CSDN的事情. 一个叫虚荣,对CSDN访问量的渴望过渡使得我踏出了这一步. 这一步,踏入了深渊.. 最 ...
- MicroRNA in Control of Gene Expression: An Overview of Nuclear Functions 微RNA控制基因表达:核功能概述
MicroRNA in Control of Gene Expression:An Overview of Nuclear Functions微RNA控制基因表达:核功能概述 抽象:小的非编码RNA( ...
- SpringBoot配置Druid
Druid是Java语言中最好的数据库连接池.Druid能够提供强大的监控和扩展功能.关于详细介绍可查看http://www.iteye.com/magazines/90 SpringBoot中集成D ...
- Weblogic的中的文件上传
在weblogic中在jsp页面中this.getServletContext().getRealPath("/upload")这样的写法是要报错的在jsp页面总你甚至不能使用th ...
- Mysql 关于not exists一例
场景: 业务上需要做一个查询,因为是Web及时响应,所以对响应时间有要求,原业务场景是需要从无库存订单中剔除绑定闲置库存,因单条sql查询实现复杂,故考虑用差集方式: select a.col1, a ...
- Set List Map
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...