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 | 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 |
1 | flag{192.168.200.2,192.168.200.32,192.168.200.31} |
ssh爆破成功登陆的IP是多少,如果有多个使用”,”分割
1 | root@ip-10-0-10-6:/var/log# cat auth.log* | grep -a "Accept" | awk '{print $11}' | sort | uniq -c | sort -nr |
思路和上一道差不多,grep过滤的字段改成”Accept”
1 | flag{192.168.200.2} # 要删掉自己的ip |
爆破用户名字典是什么?如果有多个使用”,”分割
上题解
1 | 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 |
对于这个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 | 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 |
1 | flag{4} |
黑客登陆主机后新建了一个后门用户,用户名是多少
可以直接看/etc/passwd,多了个test2
1 | root@ip-10-0-10-6:/var/log# cat /etc/passwd |
也可以
1 | root@ip-10-0-10-6:/var/log# cat /var/log/auth.log* | grep -a "useradd" | grep -a "linux-rz" |
1 | flag{test2} |
apache日志分析
提交当天访问次数最多的IP,即黑客IP:
1 | 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 |
这次grep过滤的是”03/Aug/2023:08:”
1 | flag{192.168.200.2} |
黑客使用的浏览器指纹是什么,提交指纹的md5:
1 | 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 |
直接grep上一题提取出来的ip
**awk -F’”‘ ‘{print $6}’**这里awk -F指定双引号为分割符,取第六个字段
对于 Apache 访问日志,双引号内的字段通常是请求方法、URL、协议和 User-Agent 字符串。第六个字段通常是 User-Agent。
1 | 指纹:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 |
查看index.php页面被访问的次数,提交次数:
1 | root@ip-10-0-10-5:/var/log/apache2# cat /var/log/apache2/access.log* | grep "/index.php" | wc -l |
wc -l用于统计行数
1 | flag{27} |
查看黑客IP访问了多少次,提交次数:
和上一题差不多
1 | root@ip-10-0-10-5:/var/log/apache2# cat /var/log/apache2/access.log* | grep '192.168.200.2 -' | wc -l |
1 | flag{6555} |
查看2023年8月03日8时这一个小时内有多少IP访问,提交次数:
1 | 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 | flag{5} |
mysql日志分析
黑客第一次写入的shell flag{关键字符串}
找到sh.php
1 | root@xuanji:/var/www/html# cat sh.php |
1 | flag{ccfda79e-7aa1-4275-bc26-a6189eb9a20b} |
黑客反弹shell的ip flag{ip}
在日志中发现adminer.php中存在sqk注入,用sys_eval实现命令执行
主要在/tmp/1.sh
1 | root@xuanji:/var/log/apache2# cat /tmp/1.sh |
1 | flag{192.168.100.13} |
黑客提权文件的完整路径 md5 flag{md5} 注 /xxx/xxx/xxx/xxx/xxx.xx
先猜测是udf提权,在common.php找到数据库连接的账号密码
1 | mysql -uroot -p334cc35b3c704593 |
有两个udf.so
1 | 路径:/usr/lib/mysql/plugin/udf.so |
黑客获取的权限 flag{whoami后的值}
udf提权后拿到的是mysql权限,所以:
1 | flag{mysql} |
参考
https://tryhackmyoffsecbox.github.io/Target-Machines-WriteUp/docs/Xuanji/