服务器维护,服务器代维,安全设置,漏洞扫描,入侵检测服务

运维之家

 找回密码
 注册
搜索
查看: 4926|回复: 1

PHP入侵大型站点手记

[复制链接]
中国海 发表于 2006-7-10 01:26:02 | 显示全部楼层 |阅读模式

 
一:事出有因
前几天朋友让我帮他拿某个网站的整站代码,一直都没有时间所以没去看这个网站
今天正好空闲,于是便有了这入侵。

二:采点
和抢银行一样,咱在入侵前都要踩点。既然是入侵网站那就上那个网站去看看吧,
网站做的还不错,使用的是PHP框架,不知道有没有注入,再看网页的最下面版权处,
晕~~~还是商业站点这下要小心了,在其合作商中还有_blank">新浪网易,怕怕。
为了自身的安全还是上肉鸡比较安全,首先还是PING 一下吧返回结果如图1:
从结果上看可以可以猜测这台主机配置为:linux+Apache+PHP,再用superscan 3.0扫
扫看,结果如图2:,经过手工检测发现所开放的服务并没有漏洞,看来想入侵 这个网站就
要从WEB上入手了。
三:入侵过程
习惯性的在一条新闻后添加"'"看是否存在sql注入,返回结果如图3,晕,连路径
都暴出来了,从返回的结果上看它确实是LINUX系统,再提交:"and 1=1","and 1=1"
结果分别为图4,图5,这下可以确定这个页面存在SQQL注入了,目前大部分的PHP网站都
存在SQL注入,其中还包括不少有名的安全站点。
然后再确定字的个数,提交"http://www.abcdef.com/news/**il.php?newsid=13435 union
select 1"返回图3的出错页面,继续提交"http://www.abcdef.com/news/**il.php?new
sid=13435 union select 1,2",依次类推直到提交"http://www.abcdef.com/news
/**il.php?newsid=13435 union select 1,2,3,4,5,6"时返回图4所似页
面为止,注意有时候会返回正常页面。这时基本可以确定当前表中存在6个字段,当然你
也可以使用工具来猜解,据我所知目前有两个工具可以猜解,安全天使的CASI和darkness
的二娃。
根据返回的信息可以知道字段2和字段5的类型为字符串,我们可以继续提交"http://ww
w.abcdef.com/news/**il.php?newsid=13435 and 1=2 union select 1,database(),3,4,
version(),6"来获取MYSQL服务器的一些信息,但我对这个不感兴趣,所以没有继续提交。
接下来是猜解表名,"http://www.******.com/news/**il.php?newsid=13435 and 1=1
union select 1,2,3,4,5,6 from *"("*"为要猜解的表名)在手工猜了N次后决定放弃
改用工具,能猜解表名的好象只有二娃。当我打开二娃后才发现存放表名的数据库文件,还需要
自己添加表名,没办法只好暂时放弃。用load_file()试试爆网页代码,不知道为什么总是不行。
再看看其它地方看能不能找到别的突破口,如果不行再来猜表吧。
还是到它的论坛上转转吧,发现采用用的是discuz,不知道是什么版本的,据我所知DISCUZ
在目前算是最好的论坛了,基本上没有出过重大的漏洞(PS:我写这篇时是10月份),接下来的事
会让大家~~~ 亲爱的读者,请保护好你们的眼镜,因为接下来的事会让大家跌破眼镜。
这时,我不经意间发现一个好东东(如图6),注意IE地址栏中中的URL:http://www.abcdef.com/
****page.php?url=/add/abcd.html根据经验如果在****page.php没有限制目录那么有可能拿到其他
网页的源代码,说不定连密码文件都可以拿到呢。马上试试,在地址栏中输入"http://www.abcdef.com/
****page.php?url=/****page.php",执行成功返回结果如图7,不过只显示了一部分代码,没关系
这是网页框架的问题,右击鼠标查看源码,找到图8之处,这就是****page.php的源代码,看能不能拿到
密码文件,输入:http://www.abcdef.com/****page.php?url=/../../../../etc/passwd,返回错误
看来不能查看,然后继续输入http://www.abcdef.com/****page.php?url=/index.php查看index.php的
代码,根据它成功的找到网站的配置文件(如图9),很多好东西都会放在这个文件中的。
晕,连数据库密码都加了密,看来它的安全意思还不错啊,搞不懂怎么会存在这种漏洞,有些人为了
方便会将所有的密码设置成一样的,这样就方便了CREACKER入侵,这个网站的网管会不会也是这样呢,
为了证实这个再查看discuz的配置文件,发现里面的数据库的加密后密码也是这个,嘿嘿,这下又有好
玩的了,如果后台的密码也是这个那我就赚大了,拿出暴力破解MDB的工具挂上专门制作的字典开始跑了,
熟话说时间就是金钱,为了抓紧时间,我开始找后台登陆文件。后台登陆的文件夹路径在配置文件中明明
白白的写着,根本不用我操心去猜(图10),在IE中输入http://www.abcdef.com/admin_data/出现图11页面提示请登陆后进入,
点击确定后自动返回到登陆页面(图12),嘿嘿,连登陆文件都不要猜,不过我现在还不知道它的帐号和
密码,看看破解的进程,还有一段时间,先来猜猜吧,在用户名中都输入abcdef,密码中输入****(这个
我也不记得了,当时我是乱猜的),
竟然成功登陆了如图13,看来今天的运气,这样的密码我都能猜到。后来我又重新登陆发现输入的用户名只要是
abcdef,密码随便添(只要不是空格)都能成功登陆,为什么会是这样呢?我在IE中输入view-source:http://
_data/login.php查看登陆文件的代码发现了这样一段代码" rel=nofollow>www.abcdef.com/****page.php?url=/admin_data/login.php查看登陆文件的代码发现了这样一段代码:
if ($_POST["adminuser"] <> "abcdef" and $_POST["adminpass"] <> "abcdef2004-999")
{
echo " ";
exit;
}
else
{
$_SESSION["loginadmin"] = 1;
echo " ";
}
很显然,作者在这里犯了一个常识性的错误。在IF的条件语句中,如果是$_POST["adminuser"] = "abcdef" and
$_POST["adminpass"] = "abcdef2004-999"那就需要输入的用户名和密码都与adminuser和adminpass设置的字符
串相符才能成功登陆,否则失败。本来作者的意图是判断它们都相等才能登陆成功,但他改变了验证的方式,
改为:$_POST["adminuser"] <> "abcdef" and $_POST["adminpass"] <> "abcdef2004-999",所以根据逻辑关系
只要输入adminuser和adminpass中有一个是正确的,那就可以成功登陆了,真没想到,这样的站竟然漏洞这么多。
好了,进入了后台,看有没有上传文件的地方,找了几分钟终于找到一处上传邮件文本的地方(图14),试试看能不能上传
PHP文件,在安全天使上下了个PHP木马,然后再上传,返回结果如图15,上传成功,到了这一步说明离成功不远了,
再接再厉(自我鼓励)。这时又有一个问题----上传后木马的URL是什么?试了常见的路径都是错误的,看来还是要靠网
站的配置文件了,拿出它的代码,仔细的看了看终于找到邮件的文件夹(图16),输入http://www.abcdef.com/
admin_data/mailtxt/20041019132110225.php,返回SaPHPShell的工作页面(如图17)。
四: 后记
本来拿到了WEBSHELL,下步就要提升权限,不过我不想再入侵下去了,毕竟是商业站点嘛。还有就是个人认为
在入侵中最重要的一步就是拿到SHELL了,只要拿到了SHELL,以后的入侵都会变得简单。
本文没有什么高深的技术,写这篇文章的目的就是为了告诉初学者:入侵的方法很多,大多是各种技巧的组合,
另外经验也很重要。
 
 

songsong 发表于 2006-4-28 16:39:43 | 显示全部楼层

re:PHP入侵大型站点手记

男女见解有别!海东清,如果爱国的话你就去去国家情报局啊,不是告诉过你很多次了么?呵呵

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|手机版|Archiver|运维之家

GMT+8, 2024-4-30 08:51 , Processed in 0.260878 second(s), 14 queries .

Powered by Dirtysea

© 2008-2020 Dirtysea.com.

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