从后台注入到服务器权限

网站服务器ip为:203.154.183.18上面一共有大约一百多个xx.cad.go.th(泰国政府域名后缀)的网站
包括主域名:www.cad.go.th(www.cad.go.th/webadmin/)
我先是看了看上面站的构架,基本上都是一个模板出来的,似乎有点脚本问题,不过不从这边下手。直接访问ip可以看到一个管理后台

1.png

看了看这个后台,上面写着EasyWebTime 8.6,不知道是什么东西。然后我就用
用户名:admin’or 1=1# 密码任意123456登陆,得到如下回显:

INSERT INTO log_user (log_date , log_time , log_mid , log_user , log_date_text , log_ip , log_module , log_module_detail , log_detail ) VALUES (‘2011-11-19′, ’10:39:41’, ”, ‘admin’or 1=1#’, ’19/11/2011 10:39:41′, ‘24.77.19.26’, ‘login’, ‘login’, ‘???????????’)
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ” at line 1

关键的地方不是这个INSERT INTO这个错误,关键是

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ” at line 1

这个地方,说明后台有POST注入,而且有数据库错误回显。
这样的话,构建一个SQL注入的POST语句即可,通过错误回显来注入出想要的信息。

错误回显注入很简单,套公式就行了
用户名填写:

 

密码任意,点击登陆,提示用户名错误

2.png

估计是Javascript在作怪,绕过这个很简单,考虑到后面注入的简便性,干脆写了一个html文档:

 

其实很简单,line 1里面的method表示提交方法为POST,后面的action为提交到的地址,这是从登陆页面上面直接扒下来的,但是action这个地址是完整的 url地址。再往后面的就比较简单看了,保存为xx.html然后访问,在第一个文本框中输入注入语句即可。
注入语句是这样的:

 

于是得到了回显如下:

 

3.png

后面的Duplicate entry ‘1bizpoten@203.154.183.18’ for key 1就是想要的注入结果(去掉前面的固定数字’1’)
注入语句中的

 

换成想要的注入语句即可,例如:

 

因为每次注入得到的信息只有一条,所以比较吃力
但是最后我注入总结的信息如下:
mysql账户:
用户名:   密码哈希
kk             *8B9BA157688A49AFBE7513677DCD4F7C43257018  %
bizpoten   *7F6E575FAD18674CADD3B8495C79FBA5B58090D1//!2QwAsZx    %
webboard  *51E610BE77CF0F81D2861AF180B496D1CA2A7637   localhost
root     密码空  127.0.0.1
数据库中得数据表段:

 

大概有70多个,中间跳着过去的,没把表全列出来,具体我忘了,最后面的user_info引起了我的注意:
amphur,article_list,block,block_text,blog_category,blog_comment,org_type,user_info
最后得到服务器的203.154.183.18的登录名和密码为:template/template
取到webshell也就不难了
当然,服务器是windows,装了卡巴斯基,国内的360根本就不是和卡巴斯基一个档次的,提权颇费周折,不过最后还是搞下来了。
link:http://blackbap.org

本文作者:YoCo Smart 由网络安全攻防研究室(www.91ri.org)信息安全小组收集整理,转载请注明出处。