实战技巧 | 云函数反溯源方式(上)
2022-7-12 08:53:16 Author: HACK技术沉淀营(查看原文) 阅读量:210 收藏

点击上方“蓝字”,关注更多精彩

0x00 云函数介绍

云函数(Serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,可以无需购买和管理服务器的情况下运行代码。只需使用平台支持的语言编写核心代码并设置代码运行的条件,即可在腾讯云基础设施上弹性、安全地运行代码。SCF 是实时文件处理和数据处理等场景下理想的计算平台。总结云函数的几个特性:

  • 多出口
  • 调用时创建执行
  • 无需服务器承载

由于云函数无法长驻,调用的时候创建,执行完之后立即就销毁,所以无法直接保存状态。也正是这一点,让我们无法代理像 SSH 这种需要长连接的服务,只能代理 HTTP (s) 这种无状态的协议。

云函数不能直接调用,同时还需要创建一个触发器来触发云函数,为了方便,我们选择使用 API 网关触发器,只需要一个 HTTP 请求就能触发。

0x01 隐藏webshell客户端ip地址

痛点分析

1、我在我的博客根目录下放了一个马

2、连接蚁剑,每次选择一个目录,都会发起一次http请求并且目标能够记录我连接的同一个ip,这与挂不挂代理无关,对方溯源查看日志的时候,直接搜一个ip就全出来了。

所以可以通过云函数来做到,每次访问目标都能保证ip发生变化

云函数配置

1、新建一个云函数

2、同理,如下配置

3、继续往下划,看到函数代码这里,将这段代码放入

# -*- coding: utf8 -*-
import requests
import json

def geturl(urlstr):
    jurlstr = json.dumps(urlstr)
    dict_url = json.loads(jurlstr)
    return dict_url['u']

def main_handler(event, context):
    url = geturl(event['queryString'])
    postdata = event['body']
    headers=event['headers']
    resp=requests.post(url,data=postdata,headers=headers,verify=False)
    response={
        "isBase64Encoded"False,
        "statusCode"200,
        "headers": {'Content-Type''text/html;charset='+resp.apparent_encoding},
        "body": resp.text
    }
    return response

4、高级配置只需要设置一个执行超时时间即可,为了防止webshell掉线,把时间调高于蚁剑的超时时间即可。

5、最后一步,设置触发方式和API服务类型如图,随后点击完成即可。

6、创建成功后我们就获得了一个URL如图,

7、将这个URL拼接到我们的webshell地址前面,加一个u参数,再使用蚁剑去链接即可。

https://service-hhhhh-123456.xxxx.xxxx.xxxx.com/release/iloveyou?u=http://x.x.x.x/shell.php

8、我们在蚁剑翻动目录,对方的访问日志中,**ip是一直发生变化的,显示的是TX云函数CDN的地址。**

为了达到更加隐秘的目的,可以对 Webshell 流量进行加解密的来逃逸流量检测,通过流量检测 + 白名单 IOC 的方式可以完美的逃避检测。

0x02 云函数快速部署代理池

痛点分析

平时我们使用dirsearch去扫描的时候,速度十分快,对方日志分析就能看出是同一个ip进行的扫描,这时我们的ip的很容易被溯源封禁等。

那么我们就可以使用云函数来快速部署代理池:通过客户端监听获取请求并且组装API请求,服务端云函数解析且重组API请求。。

下载脚本并kali配置go语言环境

项目地址:https://github.com/hashsecteam/scf-proxy

git clone https://github.com/hashsecteam/scf-proxy.git  
apt install -y golang          
go env -w GOPROXY=https://goproxy.cn      #更改go代理,方便下载模块
cd scf-proxy & make           #编译

云函数配置

1、新建函数后,如图进行配置,注意选择go语言;函数代码就是刚才编译出来的server.zip文件,执行方法一定要写上server不然会报错。随后点击完成配置完毕。

2、刚才忘了创建触发器了,创建一个,一样的配置。

3、生成完毕后可以看到下方的URL

4、在kali上使用客户端测试,-port后面就是指定开启的本地代理端口。

./client -port 10086 https://service-xxxx.com/release/xxx

5、dirsearch挂代理扫描,得出的ip

python3 dirsearch.py -u http://url -e * -x 301 --proxy=127.0.0.1:10086

云函数还有很多配置代理池的方法,这里补充一个:https://www.cnblogs.com/supdon/p/15099742.html

往期推荐

中间件安全 | Tomcat部署与常见漏洞全总结

内网渗透 | 正向代理与nginx反向代理详解

Linux系统安全 | 交互与非交互式shell详解

内网渗透 | bash反弹失败情况与应对总结

内网渗透 | 文件共享服务与ipc横向详解

郑重声明该公众号大部分文章来自作者日常工作与学习笔记,也有少数文章是经过原作者授权转载而来,未经授权,严禁转载。如需要,请公众号私信联系作者。

请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与原作者以及本公众号无关。

扫码关注
人若无名便可潜心练剑
专注渗透测试、工具开发

文章来源: http://mp.weixin.qq.com/s?__biz=MzIyMzcwMTg1MA==&mid=2247487521&idx=1&sn=298d1be3da7aca1c95e6d59ac8a7d686&chksm=e81b6e14df6ce702e1417196cb0bd2f8e22021308302e399d34cb008dbb262f143b472aa65e8#rd
如有侵权请联系:admin#unsafe.sh