Linux系统下由论坛到SSH的入侵分析
程序员文章站
2022-06-22 19:38:00
本来我不习惯开QQ,可好友打来电话说有事找我,遂上线。因为我用的QQ是能显示IP地址的木子版本,所以看到好友的IP:xxx.xxx.19.24,发现好友是在学校的实验室上网。我忽发奇想,想看... 08-10-08...
本来我不习惯开qq,可好友打来电话说有事找我,遂上线。因为我用的qq是能显示ip地址的木子版本,所以看到好友的ip:xxx.xxx.19.24,发现好友是在学校的实验室上网。我忽发奇想,想看看他们实验室的机器里都有些什么东西,因为以前我知道他们实验室的机子在一个c段里——什么?你让我直接给好友发木马?那小子比猴都精,况且那小子的技术也不是省油灯,还是用迂回战略吧!
从百宝箱里随便祭出个扫描器,我用的是这个小东东:bluesportscan,它的扫描速度超快,可惜会漏报。先扫三十台机器吧,端口1—150。扫描完后,一台机器引起了我的注意:机器ip为xxx.xxx.19.7,开了22和80端口。开了22端口,八成就是台linux机器了。拿securecrt连一下22端口:
小知识:22号端口对应linux下的ssh,这一服务有许多弱点,建议在其它端口运行ssh。
79端口的finger也没开,用户名目前只知道可能的是root,密码先来个123,返回错误,看来要从别处入手了。别处好像只开了80,后来扩大了端口扫描范围又扫出个oracle的3306端口,不过那个数据库用户root的密码不是空,总不能让我挂本字典去跑吧?还是转到80端口吧。
telnet上它的80端口,然后get,返回服务器信息:server: apache/1.3.27 (unix) php/4.2.3。用的阿帕奇服务器,不要考虑web服务器本身的漏洞了,去网站转悠吧。地址栏里敲入它的地址:xxx.xxx.19.7,回车。网页出来了,看来没有用虚拟主机什么的,八成是学生自己作的东西,不过,虽然网页内容比较官方,但感觉网站好像千疮百孔。用php和html做的,有好像改得面目全非或自己做的新闻系统,在文章管理系统里找了几个点试了试sql注入,没有成功,算了,到论坛里看看吧。 进了论坛里,先习惯性的用admin密码admin登录,竟然成功了,倒啊倒!找个上传点扔个php后门上去!接下来却让我大失所望,管理面板里转了半天也找不到个上传点,别说上传头像了,用户资料里就没头像这一项。哪个论坛这么气人?看看网页底部:本论坛代码来自xxx.com,管理员还不错,没改版权信息。看到了这儿想到了什么?赶紧去你自己的网站改敏感字符?呵呵,晚了,地址中打入xxx.com回车,哦,原来是个不错的个人主页,看他的作品里有个微型php文本论坛,就是这个了,呵呵,幸亏刚才在论坛里没试sql注入,不然就白费傻劲了。不管三七二十一,下载下来再说。 下载完成,解压,发现论坛根目录下有个db文件夹,这就应该是所谓的论坛“数据库”了,打开此文件夹,发现里面都是些.dat文件,用记事本打开,果然是文本格式。警觉的双眼一下子就盯到了那个user.dat上。打开,内容如下: admin<~>p|lcv<~>3<~>ecawen@21cn.com<~>peking<~>http://<~><~><~><~><~>3<~>
2004-01-01<~>1 admin是默认用户,p|1cv应该就是加密后的密码了,紧接的“3”代表管理员,后面的就不用看了。迫不及待地在地址栏里里输入:xxx.xxx.19.7 /forums/db/user.dat,天,把里面的内容全打到ie里了,赶紧保存下来。 好了,找关键的地方,最原先的用户,一般就是第一二个,找到了,是管理员权限,用户名为aaa,密码为4$@a%g,破解出了这个密码,按人的习惯,系统密码不是这个也不远了,至少会前进一大步。重新分析论坛代码,发现用以下的方法做的加密: function t_encrypt($text, $key)
{
$crypt = "";
for($i=0;$i<strlen($text);$i )
{
$i_key = ord(substr($key, $i, 1));
$i_text = ord(substr($text, $i, 1));
$n_key = ord(substr($key, $i 1, 1));
$i_crypt = $i_text $i_key;
$i_crypt = $i_crypt - $n_key;
$crypt .= chr($i_crypt);
}
return $crypt;
}
还有个key,key在哪呢?在db下的一个mishi.php里,打开内容如下:
<? $key="jpjtvdomfmawwttsdhoxurmygjjtauefjuimueurisecggpymneslwowuqnzmmgmvjvccmeye
uselymzoinxvqonmhjqjhljywixrdxboqdmmfidlhzrcoatnldlmwvinljayirwqcgazyvfrwvgbgroqfxiqruu
rtkpogbkgdibeqejehfamujlqasitbizcxasobkl"; ?>
分析加密函数的算法:从密码第一位开始,取密码的一个字符,取key对应位的一个字符,转换成ascii码相加,然后相加结果再减去key中下一位的ascii,然后把最后结果再转换成字符即所谓密文存储。 substr(string,i,j)函数的作用是将字符串string的第 i 位起取出 j 个字符。ord()和chr()则分别是字符到ascii和ascii到字符的转换函数。简化一下上面算法就是:$i_crypt=$i_text $i_key-$i 1_key。先拿第一位算吧,假设原密码第一位ascii码为x,则: x ascii(j)-ascii(p)=ascii(4)
用ascii码算就是x 106-112=52 x=58转换成字符就是“:”,好奇怪。把六位密码全部还原回来,再去论坛登录,糟了,希望破灭了,提示密码错误!管理员大概不会去改代码中加密部分的算法的,难道,管理员把key改了? 重又回到论坛,注册一个新用户ecawen,密码mygod,然后打开它的user.dat观看,加密后的密文为p|lcv,按下载回来的论坛源代码中的密钥算了算,不对,果然key被改了。但包含key的文件是个mishi.php,key也在php语句里,远程根本无法得到,浏览器里打/forums/db/mishi.php返回的只是空白页面,因为传出时php语句早被服务器过滤了。怎么办,想了大约几秒钟,还是有办法的,我们不一定要知道确切密钥,知道密文和算法了,这么简单的算法我们应该能把需要的搞出来。 假设未知密钥第一位是ascii码a,每二位是b,依此类推…… 我的用户ecawen的密码(我注册的,当然知道,我输的是mygod)加密后密文是p|lcv,所以我们可以这样算: (为了看着简洁ascii(m)我们直接用ascii码109)
109 a-b=112
121 b-c=124
103 c-d=108
.
.
. 看晕了吧,其实,我们加个()就豁然开朗了。
109 (a-b)=112
121 (b-c)=124
103 (c-d)=108
.
.
. 好了,拿出他的管理员密文来算吧:
x (a-b)=52
x (b-c)=36
x (c-d)=64
.
.
. 把x再还原成字符,好了,原密码出来了吧?有点复杂?越这样你会越激动的!不过,有点要注意的是,你注册的用户密码位数要不少于管理员密码位数,此处管理员密码是六位,我一不小心注册了个五位的,到第六位不能算了,还得另注册个用户,走了弯路。 好了,拿解出的密码登录论坛,成功登录。打开securecrt通过ssh登录其系统,用户名root,密码为刚解出的那个密码,怀着激动的心情默念到第n声芝麻开门的时候,门开了!进去转吧,因为是好友学校的机器,代理我都没用,有事call好友出来垫背! 后来还发现系统中存在与论坛管理员同名的那个aaa用户且密码也相同,就不再详述了。那些ida/idq、webdav什么的早已远去了, 冲击波那个漏洞满城风雨后也早销声匿迹了,现在专门找系统漏洞的攻击及入侵已经快跟不上时代了,况且网上很多主机前面又是防火墙又是ids的。而转而分析网站综合缺陷,从网站数据库入手,sql注入等这些手段正是热潮,所以,管理员同志们,看好你们的每道关口、每个细节!
telnet上它的80端口,然后get,返回服务器信息:server: apache/1.3.27 (unix) php/4.2.3。用的阿帕奇服务器,不要考虑web服务器本身的漏洞了,去网站转悠吧。地址栏里敲入它的地址:xxx.xxx.19.7,回车。网页出来了,看来没有用虚拟主机什么的,八成是学生自己作的东西,不过,虽然网页内容比较官方,但感觉网站好像千疮百孔。用php和html做的,有好像改得面目全非或自己做的新闻系统,在文章管理系统里找了几个点试了试sql注入,没有成功,算了,到论坛里看看吧。 进了论坛里,先习惯性的用admin密码admin登录,竟然成功了,倒啊倒!找个上传点扔个php后门上去!接下来却让我大失所望,管理面板里转了半天也找不到个上传点,别说上传头像了,用户资料里就没头像这一项。哪个论坛这么气人?看看网页底部:本论坛代码来自xxx.com,管理员还不错,没改版权信息。看到了这儿想到了什么?赶紧去你自己的网站改敏感字符?呵呵,晚了,地址中打入xxx.com回车,哦,原来是个不错的个人主页,看他的作品里有个微型php文本论坛,就是这个了,呵呵,幸亏刚才在论坛里没试sql注入,不然就白费傻劲了。不管三七二十一,下载下来再说。 下载完成,解压,发现论坛根目录下有个db文件夹,这就应该是所谓的论坛“数据库”了,打开此文件夹,发现里面都是些.dat文件,用记事本打开,果然是文本格式。警觉的双眼一下子就盯到了那个user.dat上。打开,内容如下: admin<~>p|lcv<~>3<~>ecawen@21cn.com<~>peking<~>http://<~><~><~><~><~>3<~>
2004-01-01<~>1 admin是默认用户,p|1cv应该就是加密后的密码了,紧接的“3”代表管理员,后面的就不用看了。迫不及待地在地址栏里里输入:xxx.xxx.19.7 /forums/db/user.dat,天,把里面的内容全打到ie里了,赶紧保存下来。 好了,找关键的地方,最原先的用户,一般就是第一二个,找到了,是管理员权限,用户名为aaa,密码为4$@a%g,破解出了这个密码,按人的习惯,系统密码不是这个也不远了,至少会前进一大步。重新分析论坛代码,发现用以下的方法做的加密: function t_encrypt($text, $key)
{
$crypt = "";
for($i=0;$i<strlen($text);$i )
{
$i_key = ord(substr($key, $i, 1));
$i_text = ord(substr($text, $i, 1));
$n_key = ord(substr($key, $i 1, 1));
$i_crypt = $i_text $i_key;
$i_crypt = $i_crypt - $n_key;
$crypt .= chr($i_crypt);
}
return $crypt;
}
还有个key,key在哪呢?在db下的一个mishi.php里,打开内容如下:
<? $key="jpjtvdomfmawwttsdhoxurmygjjtauefjuimueurisecggpymneslwowuqnzmmgmvjvccmeye
uselymzoinxvqonmhjqjhljywixrdxboqdmmfidlhzrcoatnldlmwvinljayirwqcgazyvfrwvgbgroqfxiqruu
rtkpogbkgdibeqejehfamujlqasitbizcxasobkl"; ?>
分析加密函数的算法:从密码第一位开始,取密码的一个字符,取key对应位的一个字符,转换成ascii码相加,然后相加结果再减去key中下一位的ascii,然后把最后结果再转换成字符即所谓密文存储。 substr(string,i,j)函数的作用是将字符串string的第 i 位起取出 j 个字符。ord()和chr()则分别是字符到ascii和ascii到字符的转换函数。简化一下上面算法就是:$i_crypt=$i_text $i_key-$i 1_key。先拿第一位算吧,假设原密码第一位ascii码为x,则: x ascii(j)-ascii(p)=ascii(4)
用ascii码算就是x 106-112=52 x=58转换成字符就是“:”,好奇怪。把六位密码全部还原回来,再去论坛登录,糟了,希望破灭了,提示密码错误!管理员大概不会去改代码中加密部分的算法的,难道,管理员把key改了? 重又回到论坛,注册一个新用户ecawen,密码mygod,然后打开它的user.dat观看,加密后的密文为p|lcv,按下载回来的论坛源代码中的密钥算了算,不对,果然key被改了。但包含key的文件是个mishi.php,key也在php语句里,远程根本无法得到,浏览器里打/forums/db/mishi.php返回的只是空白页面,因为传出时php语句早被服务器过滤了。怎么办,想了大约几秒钟,还是有办法的,我们不一定要知道确切密钥,知道密文和算法了,这么简单的算法我们应该能把需要的搞出来。 假设未知密钥第一位是ascii码a,每二位是b,依此类推…… 我的用户ecawen的密码(我注册的,当然知道,我输的是mygod)加密后密文是p|lcv,所以我们可以这样算: (为了看着简洁ascii(m)我们直接用ascii码109)
109 a-b=112
121 b-c=124
103 c-d=108
.
.
. 看晕了吧,其实,我们加个()就豁然开朗了。
109 (a-b)=112
121 (b-c)=124
103 (c-d)=108
.
.
. 好了,拿出他的管理员密文来算吧:
x (a-b)=52
x (b-c)=36
x (c-d)=64
.
.
. 把x再还原成字符,好了,原密码出来了吧?有点复杂?越这样你会越激动的!不过,有点要注意的是,你注册的用户密码位数要不少于管理员密码位数,此处管理员密码是六位,我一不小心注册了个五位的,到第六位不能算了,还得另注册个用户,走了弯路。 好了,拿解出的密码登录论坛,成功登录。打开securecrt通过ssh登录其系统,用户名root,密码为刚解出的那个密码,怀着激动的心情默念到第n声芝麻开门的时候,门开了!进去转吧,因为是好友学校的机器,代理我都没用,有事call好友出来垫背! 后来还发现系统中存在与论坛管理员同名的那个aaa用户且密码也相同,就不再详述了。那些ida/idq、webdav什么的早已远去了, 冲击波那个漏洞满城风雨后也早销声匿迹了,现在专门找系统漏洞的攻击及入侵已经快跟不上时代了,况且网上很多主机前面又是防火墙又是ids的。而转而分析网站综合缺陷,从网站数据库入手,sql注入等这些手段正是热潮,所以,管理员同志们,看好你们的每道关口、每个细节!
上一篇: 开放源代码的加密工具GPG使用方法