工行、瑞星被黑的原理与攻击程序

工行、瑞星被黑的原理与攻击程序

进来工商银行和瑞星网站接连被恶搞,尽管并非什么严重的攻击,但是仍然恶搞气氛十足。比如工行的被攻击地址如下:

http://www.icbc.com.cn/news/hotspot.jsp?column=%C4%AA%B7%C7%CC%E1%D0%D1%A3%BA%B9%F3%D5%BE%B4%E6%D4%DA%D1%CF%D6%D8%B0%B2%C8%AB%CE%CA%CC%E2%A3%AC%C8%E7%D0%ED%BD%E2%BE%F6%C7%EB%C1%AA%CF%B5QQ%A3%BA7540734%A3%AC%CB%F7%C8%A1%BB%E3%BF%EE%D5%CA%BA%C5%A1%A32006%C4%EA12%D4%C229%BA%C5

经过测试已经修复了。而瑞星的被攻击地址如下:

http://buy.rising.com.cn/bank/Errorpage.aspx?Msg=%C8%F0%D0%C7%D2%B2%B2%BB%B9%FD%C8%E7%B4%CB%A3%AC%BA%D9%BA%D9%A3%A1%D5%D5%D1%F9%B1%BB%BA%DA%A3%A1%B3%B9%B5%D7%B5%C4%CD%EA%B5%B0%C1%CB%A3%AC%B2%BB%D4%B8%D4%B1%B9%A4%B6%BC%CC%F8%B2%DB%C4%D8%A3%BF%A1%A1%A1%A1%A3%E2%A3%F9%A1%A1%44%75%72%6F%6E

现在仍然挂着丢人现眼呢。

做过WEB开发的朋友一眼就可以看出,这是通过URL传递参数的方法来向一些错误显示或信息显示页面传递参数的方式来进行恶搞的。这些页面往往读取一个传入参数并显示在页面上。而现在的很多WEB开发框架往往又不区分GET和POST传递的参数,所以也就造成了如上给人恶搞的漏洞。实际上这些漏洞的作用仅仅限于允许用过通过URL传递的参数来在页面上显示一些古怪的信息而已。(by gashero)比如工行就被人恶搞说即将关闭,请转移存款之类的。

好理解了原理之后,实际上我们也可以自己来做这一类的攻击来玩乐。首先将如上的含有传递参数的URL整理一下,提取出参数之前的内容,就是除去%等等的字符。然后后面就可以加上自己需要显示的信息了。但是实际上这样一半会失败,传递英文是没问题的,但是中文就会出一些古怪的问题。

这是因为大部分的HTTP服务器是不允许通过URL来传递非ASCII字符的,少数可以配置成允许传递,也很罕见。另外,对于一些非显示字符串也是难以传递的,如空格。

而实际上通过URL来传递非ASCII字符串是早有办法的。一半是通过quote编码,转换成以%开头加上一个2位十六进制编码的字节。这样从理论上将可以传递任何符号了。比如传递一个空格就是%20,这个应该可以经常看到,包括一些搜索引擎当中的搜索结果也是如此。

另外一个就是中文的编码问题了。中文比较常见的两种编码是GBK和UTF-8。GB2312编码是GBK的子集,所以这里也归入到GBK编码当中。这两种编码互不兼容,所以首先要确定对方网站使用的默认编码才可以对中文进行编码并进行quote编码。

下面是一个程序,可以对输入字符串进行quote编码,期间还强制进行了UTF-8编码。因为国内多数网站是使用UTF-8编码的。而Windows的默认编码是GBK,所以在程序中从GBK编码转换到UTF-8编码之后才进行了quote编码。程序返回的字符串就是包含%那种古怪的字符串了,可以加到URL中并允许传递参数。

经测试瑞星的网站使用GB2312编码,(by gashero)所以读者可以自行将程序当中的编码转换语句

msg=unicode(msg,"GBK").encode("UTF-8")

注释掉,即在此语句之前加上"#"。然后就可以自行进行quote编码进行恶搞了。

比如我们启动程序并输入字符串“瑞星也不行啊”。得到的编码是

%e7%91%9e%e6%98%9f%e4%b9%9f%e4%b8%8d%e8%a1%8c%e5%95%8a

当然,直接将这个字符串添加过去是不行的,显示为乱码。我们需要先将程序修改一下,不再进行UTF-8编码。修改之后得到的编码是:

%c8%f0%d0%c7%d2%b2%b2%bb%d0%d0%b0%a1

此时修改网站的URL成如下形式:

http://buy.rising.com.cn/bank/Errorpage.aspx?Msg=%c8%f0%d0%c7%d2%b2%b2%bb%d0%d0%b0%a1

这时,在地址栏输入如上URL就可以看到我们选定的语句了。当然,如果你愿意可以改成任何形式。只要将得到的编码与如下的URL前缀相加即可:

http://buy.rising.com.cn/bank/Errorpage.aspx?Msg=

至于得到特定网站的编码字符集,可以点击页面查看源代码,在其中寻找如下字样:

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

这其中的gb2312就是中文编码字符集了,可以按照这个设置决定是否要注释掉程序当中的转换编码语句。

附带的quote编码程序代码如下,(python):

# -*- coding: gbk -*-
# File: toquote.py
# Date: 2007-1-18
# Author: gashero
# Copyright@1999-2007, Harry gashero Liu.

"""
由一个字符串生成可以经过URL来传输的quote编码字符串的脚本
可以对包括中文和特殊符号在内的多种符号进行编码
编码前一律由GBK编码转换为UTF-8编码,可以适应大多数WEB应用的默认编码
"""

import urllib
import msvcrt

msg=raw_input('input your message: ')
#msg=unicode(msg,"GBK").encode("UTF-8")
retstr=""
for ch in msg:
    ch=hex(ord(ch))[2:]
    retstr+="%"+ch
print retstr
print "Press [ANY] key to exit!"
msvcrt.getch()

刚才突发奇想,本想在瑞星的错误页面上来个跑马灯特效(by gashero),即如下代码:

<marquee>瑞星也不行啊</marquee>

转码之后为:

%3c%6d%61%72%71%75%65%65%3e%c8%f0%d0%c7%d2%b2%b2%bb%d0%d0%b0%a1%3c%2f%6d%61%72%7
1%75%65%65%3e

不过很可惜,连.net的错误配置文件都搞出来了。如下:


Server Error in '/bank' Application.
Runtime Error
Description: An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed remotely (for security reasons). It could, however, be viewed by browsers running on the local server machine.

Details: To enable the details of this specific error message to be viewable on remote machines, please create a <customErrors> tag within a "web.config" configuration file located in the root directory of the current web application. This <customErrors> tag should then have its "mode" attribute set to "Off".

<!-- Web.Config Configuration File -->

<configuration>
    <system.web>
        <customErrors mode="Off"/>
    </system.web>
</configuration>


Notes: The current error page you are seeing can be replaced by a custom error page by modifying the "defaultRedirect" attribute of the application's <customErrors> configuration tag to point to a custom error page URL.

<!-- Web.Config Configuration File -->

<configuration>
    <system.web>
        <customErrors mode="RemoteOnly" defaultRedirect="mycustompage.htm"/>
    </system.web>
</configuration>


但愿瑞星再接再厉吧。

 1 # -*- coding: gbk -*-
2 # File: toquote.py
3 # Date: 2007-1-18
4 # Author: gashero
5 # Copyright@1999-2007, Harry gashero Liu.
6
7 """
8 由一个字符串生成可以经过URL来传输的quote编码字符串的脚本
9 可以对包括中文和特殊符号在内的多种符号进行编码
10 编码前一律由GBK编码转换为UTF-8编码,可以适应大多数WEB应用的默认编码
11 """
12
13 import urllib
14 import msvcrt
15
16 msg=raw_input('input your message: ')
17 #msg=unicode(msg,"GBK").encode("UTF-8")
18 retstr=""
19 for ch in msg:
20 ch=hex(ord(ch))[2:]
21 retstr+="%"+ch
22 print retstr
23 print "Press [ANY] key to exit!"
24 msvcrt.getch()
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值