1.明确目标
使用arp-scan找出存活主机,确定目标靶机
2.信息收集
- 使用nmap进行扫描
rcpbind是NFS中 用来进行消息通知的服务相关漏洞信息:该漏洞可使攻击者在远程rpcbind绑定主机上分配任意大小的内存(每次攻击最高可达4GB),除非进程崩溃,或者管理员挂起/重启rpcbind服务,否则该内存不会被释放。
- 使用dirsearch扫描靶机,没有发现很重要的信息
3.漏洞利用
- 我们先访问靶机地址
发现cms为drupal -
打开metasploit寻找对应的攻击模块
使用第一个试试 use 1 show option 看看需要设置那些东西,设置好后直接run
-
进入shell页面发现flag1.txt
-
百度搜索该cms配置文件位置为 /sites/default/settings.php
不用暴力破解,获得访问权限?数据库账号密码,连接数据库查看账号密码登录后台?先试试! -
使用数据库账号密码连接,发现没有任何回显
-
使用python获得伪终端 python -c "import pty;pty.spawn('/bin/bash')"
查看一下数据库,发现dripaldb数据库,打开看一下
-
查看有哪些表,发现user表
查询了一下,这个是hash
hash算法,散列算法,一种思想,在加密里面的应用(hash算法生成一个密码的签名,知乎后台只保存这个签名值。由于hash算法是不可逆的,那么黑客即便得到这个签名,也丝毫没有用处;而如果你在网站登陆界面上输入你的密码,那么知乎后台就会重新计算一下这个hash值,与网站中储存的原hash值进行比对,如果相同,证明你拥有这个账户的密码,那么就会允许你登陆。)
既然不可逆,那我就直接修改,现在就遇到一个问题,他是怎么生成的呢?
查找资料发现是php自带的hash加密,直接找到加密文件生成123456的加密值$S$DMSAeUvOgcO3ZIKcyiaa9MTZhSL1IWrpyBckRzKWCkKOSIqMTXsK,然后去替换admin的密码(要注意备份原来的admin账户的初始加密值)
-
原密码:$S$DlbDyxizJnxrlvJayotmc/Fjn9CXHdXyo1FHGIZHJdHYmvH0QMHR
-
利用update去替换原密码
-
登录网站
这里提到了perms,shadow,find,- exec等关键词使用find提权,find flag1.txt -exec’/bin/bash’ \;
提权成功后查看shadow文件发现flag4用户,也许这里提示是爆破flag4的密码,切换到该用户获取下一个flag,这里貌似不用切换用户,直接进到home目录下就能查看flag4文件
-
切换到root目录找到最后一个flag
4.总结
- 使用arp-scan快速发现局域网存活主机
- 使用nmap发现靶机版本漏洞等信息
- 针对目标靶机使用的cms可以通过搜索引擎获取相关漏洞信息
- 使用Msf攻击目标靶机
- 使用python -c “import pty;pty.spawn(‘/bin/bash’)” \; 来获取一个有回显的shell
- 使用hydra+John密码包对flag4的密码进行爆破 hydra -l flag4 -P ./password.lst ssh://192.168.221.131 -f -vV -o hydraflag4.ssh
hydra 的参数含义
参数 | 用途 |
-l | 指定单个用户名,适合在知道用户名爆破用户名密码时使用 |
-L | 指定多个用户名,参数值为存储用户名的文件的路径(建议为绝对路径) |
-p | 指定单个密码,适合在知道密码爆破用户名时使用 |
-P | 指定多个密码,参数值为存贮密码的文件(通常称为字典)的路径(建议为绝对路径) |
-C | 当用户名和密码存储到一个文件时使用此参数。注意,文件(字典)存储的格式必须为 "用户名:密码" 的格式。 |
-M | 指定多个攻击目标,此参数为存储攻击目标的文件的路径(建议为绝对路径)。注意:列表文件存储格式必须为 "地址:端口" |
-t | 指定爆破时的任务数量(可以理解为线程数),默认为16 |
-s | 指定端口,适用于攻击目标端口非默认的情况。例如:http服务使用非80端口 |
-S | 指定爆破时使用 SSL 链接 |
-R | 继续从上一次爆破进度上继续爆破 |
-v/-V | 显示爆破的详细信息 |
-f | 一但爆破成功一个就停止爆破 |
server | 代表要攻击的目标(单个),多个目标时请使用 -M 参数 |
service | 攻击目标的服务类型(可以理解为爆破时使用的协议),例如 http ,在hydra中,不同协议会使用不同的模块来爆破,hydra 的 http-get 和 http-post 模块就用来爆破基于 get 和 post 请求的页面 |
OPT | 爆破模块的额外参数,可以使用 -U 参数来查看模块支持那些参数,例如命令:hydra -U http-get |
使用find提权 find 文件(真实存在的) -exec “/bin/sh” \; 示例: find flag1.txt -exec “/bin/sh” \;