作品:说说那些年躺在硬盘里的.
作者:adwin
来自:法客论坛 – F4ckTeam
网址:http://team.f4ck.net/

/*第一页内容纯扯皮,可虑过,想直接看实际内容的可跳至第二页*/
从过年的时候就有个想法想要搞一个友情链接互换的这么一个平台,我个人觉得这个想法其
实还是不错的,目前来说做这个的人真的是寥寥无几,百度一下,能找到的也就是那么几个
站点。但是后来种种原因,一直到现在这个平台也没搭建起来。
最近得知老嫖同志要搞活动,既然线下的活动没能在哈尔滨地区举办,没有机会参加了,
那就参加个线上活动也不错,所以决定写篇文章,不过自从上了大学以后,有一年没怎么实
际上手实践了(寝室的网速尼玛蛋碎啊),真心害怕写不出什么好的文章,所以…大伙就凑
合着看吧…
========以上背景=============
说了寝室的网速有点难以让人相信,上个 QQ 还得经常掉线,写点什么好呢,好吧,刚好发
现  那些年躺在硬盘里的…源码(不要想歪了…),过年的时候由于想要搞那个链接交换平台
所以下载了几套源码。前面说过搞这个东西的人很少,所以这个源码也着实  不好找,费了
好大的力气找了几套,质量也是参差不齐,选出了一套凑合着可以用的,其他的就都删了。
蛋碎的网速根本不允许去检测什么网站了,所以就想到,不 如就拿这套源码下手吧。
另,什么 asp php jsp 的,我是一样也不懂…本文分析的是一套 asp 的程序,因为不懂 asp 代
码,所以文中若粗线各种错误的地方还请见谅并指出。
随便打开一个文件看了看,果然,代码很乱,一看就像是实习生写的…竟然每个页面都相同
的 head 部分都没有作为一个文件包含起来,总是代码是乱的不能再乱了…
如何下手呢,当然是先运行起来了。我本机win7,本来想用自带的 iis7来着,结果不知道什
么毛错误运行不起来(汗!),算了,找了一款 asp 调试工具,这样总算是有了运行的环境。
首先打开首页如下图:
image

(打码部分其实是某妹纸的电话…当时在看代码,电话没地方记顺便给写广告位上了…)
随便打开了一个链接的详细内容页面,发现是动态链接(说了代码质量很低的,作者不可能

去做生成静态或者伪静态的处理),一下面的 URL(由于本文的例子比  较特殊,所以下文
中若出现 链接 一词,则表示链接交换平台中的数据,即包含 百度收录  PR  快照日期 交
换要求  发布时间  等详细内容,若测试注入漏洞等,则将其地址用  URL  一词表示,而不是
链接,请注意区分)为例:http://111.43.205.21/display.asp?id=23850(111.43.205.21为笔者当

前  IP 地址,受不确定性因素影响,这个 IP 地址随时有可能发生变化,但实际都是在本地测
试的),先简单的测试一下注入漏洞吧,单引号之,结果是返回500错  误,and 1=1之,结果
被过滤关键字: image
OK,如果我们没有这套程序的源码,可能就需要猜测他的防注入机制了,但是我们现在手
里有源码,并且本文主要分析代码,所以我们直接来找一下防注入的代码。
这个防注入出现在了 display.asp 这个文件里,我们就先来看一下这个文件(我确信防注入代
码不会写在这个文件里,而是这个文件包含了含有防注入代  码的文件),代码果然很乱:首
先包含了一个 MDB.asp 然后写了一段如果获取不到 ID 值的时候的处理代码,随后又包含了
setsite.asp,之后写 了网页的 head 部分…总之这个文件总共包含了四个文件,分别是:
<!--#include file="MDB.asp"-->、  <!--#include file="setsite.asp"-->、<!--#include
file="top.asp"-->、<!--#include file="foot.asp"-->,部分代码如图:image

OK,如果我们没有这套程序的源码,可能就需要猜测他的防注入机制了,但是我们现在手
里有源码,并且本文主要分析代码,所以我们直接来找一下防注入的代码。
这个防注入出现在了 display.asp 这个文件里,我们就先来看一下这个文件(我确信防注入代
码不会写在这个文件里,而是这个文件包含了含有防注入代  码的文件),代码果然很乱:首
先包含了一个 MDB.asp 然后写了一段如果获取不到 ID 值的时候的处理代码,随后又包含了
setsite.asp,之后写 了网页的 head 部分…总之这个文件总共包含了四个文件,分别是:
<!--#include file="MDB.asp"-->、  <!--#include file="setsite.asp"-->、<!--#include
file="top.asp"-->、<!--#include file="foot.asp"-->,部分代码如图:image

可以看到,MDB.asp 中并没有出现防注入代码,但是在开头却包含了 conn.asp 这个文件,
那好,我们再追溯到 conn.asp 这个文件来看一下。 结果同上,图与代码略,这次包含的是
safe.asp,从文件名字来看,应该就是这个safe.asp 了,打开来看,果然如此。搭眼一看便知,
这个防注入  文件采用的是过滤关键字的办法,从下面这行代码当中我们找到了被过滤掉的
关键字:
N_no = "'|;|and|exec|insert|select|delete|update|count|*|chr|mid|master|truncate|char|declare"
为了验证我们的结论,那么我就用这里没有的关键字来试一下,比如前面的 and 1=1改成
AND 1=1:

image
但事实证明我们的想法是错误的,变化大小写是无法绕过这个防注入程序的,并且我们可以
看到这里已过滤的关键字还是比较全面的,要想在 GET 注入这里下功夫  突破恐怕就比较难
了。代码中可以看到对 POST 也进行了过滤,经尝试 cookie 中转注入也无法突破,所以这

个防注入程序写的还是比较好的。 (Safe.asp 将作为本文的附件一提供下载,供大家研习
之,若找到突破的办法欢迎发出来共勉之)。
这个时候你想到什么?天啊,注入这条路肯定是行不通了~!但是我说其实即使不能绕过
safe.asp 还是一样可以注入你相信吗?肯定不信,对,我也不信。。。
先来说说,如果你是程序员,假设防注入程序是百分之百安全和可信任的,那么你会怎么做
才能让整个站点都杜绝注入漏洞的出现呢?我想多数人会说在每一个页面 里都包含
safe.asp,是啊,这的确不错,但是为什么不用更好更省事更把握的办法呢?如果是我我会
用 conn.asp(数据库连接文件)或  head.asp 来包含safe.asp 文件,这样一来,只要想对数据
库进行操作,就必须要包含 conn.asp/head.asp,只要包含了 conn.asp/head.asp 就同时包含了
safe.asp,基本可以肯定不会出现注入漏洞。
为什么说这些呢,因为这套源码实在是太让我蛋疼了…在会员的注册模块,通过 reg.asp、
reg2.asp、reg3.asp 这三个文件来实现,但是我  真的是理解不了这个程序的作者是怎么想的,
他几乎在所有需要对数据库进行操作的文件里都包含了 safe.asp 这个文件,但是为什么偏偏
这几个文件不包含 呢?这直接导致了 post 注入的出现…至于利用方面就不多说了。
其实有的时候如果我们只是简单的想要干掉一个站点,而不是非要拿他的数据的话,会有非
常多的办法,根本不必拿到 web shell,也不必使用纯流量的 DDOS 攻击,只要一个简单 XSS
就可以满足了。
关于这套程序的 XSS 我真的不想说的太多,遍地都是,几乎只要存在输入框的地方都可以
XSS,虽然有的地方用 JavaScript 作了简单的验证,但是鸡  肋的很,动一动手指就可以绕过
去。还有一个需要讨论的问题就是,有了 XSS 我们可以做什么?关于这个问题,我想说 XSS
的利用跟实际场景还是有很大关系  的,有的 XSS 可以 get shell,但是有的也就是谈个框框。
就本文中提到的这套源码来说,你可以利用一个存储型的 XSS 使页面执行任意你想执行的
html语句,也就是说你可以  在页面中插入任意的 html代码,而不仅仅是谈个框框那么简单
(一个死循环的 alert?挂个黑链?挂马?或是别的什么想法),而且是存储型的哟~~~但  是
至于盗取 cookies 什么的,还是不要想了,因为现在的程序验证用户身份都是通过 session
了验证的,cookies 欺骗的可能性几乎没有了,而 且 cookies 中也不可能存储用户的敏感信
息,所以就算你拿到 cookies 也没用。至于什么是 session,自行百度。
/*接下来纯属扯淡,不想看的请直接关闭本文档即可*/
先写这么多,我记得这套程序还有别的漏洞来着,貌似还挺危险的漏洞,一时想不起来了,
想起来的时候再补上吧(汗,丢人)…其实也是赶时间敲代码,答应该客户做的东西还一点
没做,最后期限眼看就要到了,还好多事情没有做,一个礼拜的事情全都压在今晚了…

源链接

Hacking more

...