| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> 2021-09-10 -> 正文阅读 |
|
[Python知识库]2021-09-10 |
我发现很多在校学习网络安全专业的学生,或是已经工作的利用业余时间学网上的教程、文档,他们都有共同的一个困境,虽然在花费大量时间去学习、大量精力渗透测试这项技能,但是如果真的给一个网站去让他渗透和攻击,很多人会无从下手,会感觉自己还不会,我首先承认渗透是一项面向实战的技能。很难通过从书本学习上获得这项技能,而是需要真实场景来磨练自己的能力。截至目前为止,打靶是一种最好的方式学习,我个人认为这是非常好的选择,我们知道网上有很使用的多打靶记录文章,但是这些文章存在两个主要问题,第一个是没有关于任何渗透思路的讲解,直接告诉你他是怎么做的。另外一个问题,文章作者往往会故意隐匿一部分他在打靶过程中关键技术操作步骤的重要内容,不想让别人看到。所以以上都不是一个很好的的学习途径。
先进行局域网内ip扫描: 然后对这个靶机再进行全端口扫描: 对于http服务是可以通过浏览器打开,所以我们尝试打开这个页面:
稍微细心的同学可能看到Dokerfile这个文件,对Docker容器了解的话,Docker是用来模板化来标准版部署环境的,统一标准版批量化的部署,这是个标准的转换模板文件: 通过cat命令能够看到dockerfile文件里面是个标准的docker部署语句。 我这里先是查看了当前Docker容器的ip,然后ping这个网段存活的其它ip机(因为网段很大,我这里演示就不ping所有的了,可以看到只有172.17.0.1和0.2、0.3给我回包了)。 这时候就用到内网穿透技术了! 把隧道的客户端程序传输拷贝到目标系统上,然后通过我kali上的在他们之间建立一条隧道 由于目标用的是linux64位,所以用到Venom文件里的agent_linux_x64程序。我在这里给它重命名为a(方便后面书写) 我这里cd到Venom目录里面,然后执行服务端程序,同时监听一个9999端口(这个端口随便设): 这是服务端启动监听了。 接下来是客户端要获取到刚才修改为a的那个程序(如何获取到这个a呢?): 然后我们赋予它执行a程序的权限,同时需要来连接服务器端(也就是我之前开启9999端口的那个服务器): 我们为了让kali上面所有工具都可以访问内网整个网段,需要使用另外一个工具(kali自带):proxychain命令
一切准备就绪之后可以开始对内网进行扫描了。 是不是很眼熟,同样开放了两个端口和之前目标靶机扫描出现的一样。22和5000端口。 能够看到这个页面和我们之前的靶机页面是一样的。同时在之前靶机发送消息在这个页面也能展示: 说明这个172.17.0.1这个机器就是这个10.0.2.5这个机器的宿主机(只不过172.17.0.1这个ip是面向内网的地址)。 这是对172.17.0.1的探测,还有另外一个内网段的172.17.0.2和172.17.0.3这两机器,我们也来尝试一下,其中,172.17.0.2只开放了5000端口,说明也是和之前的一样,一个web页面没什么能利用的,也是属于172.17.0.1主机的一个容器机,而对172.17.0.3扫描出了不一样的东西: 熟悉的同学应该知道9200端口是Elasticsearch的默认端口(同时截图上面扫描结果也正是如此)。 搜索出来了结果,前面连个个都是远程执行代码漏洞 打开查看一下这个执行漏洞的文件,能够看到是用python2写的,下面使用命令注意要将python3改成python2: 接着利用这个代码对目标172.17.0.3执行漏洞: 执行一下ls命令: 看到存在一个passwords文件,查看一下这个文件,发现是一些用户和密码的hash值。 可以去在线工具解密一下: 可以依次去解密,这种账号密码登陆存在于什么地方呢?是不是忽然想起来之前扫描的端口22一直没有去利用,那么这里会不会是峰回路转呢? 另外三组同样尝试发现不行,只有这个john账号可以登录。也就是这个账号是唯一可以利用的。我们用id查看一下当前用户,再用sudo命令尝试一下能否提权。 很显然不能够sudo提权,那么接下来用什么办法提权呢? 我们发现这个版本系统很古老,当前最新的linux内核版本应该是5.13左右,而这个是3.13,整整差了两个大版本,这种以前的老版本肯定有存在的系统内核漏洞。同样再次利用searchsploit搜索: 我们发现有很多这个版本的利用漏洞,然后我们挑选其中一个(真实渗透过程中需要一个个尝试): 通过观察漏洞利用代码能看出是个C语言编写的程序,同时我们需要gcc来编辑利用它(因为是C语言的源代码): 如果直接gcc的话,会失败,因为靶机上面没有gcc这个命令,所以我们需要在kali上面对这个文件编译。 这行指令定义了一个变量lib,这个变量会调用system函数,通过这个函数执行一条系统命令:系统命令又再次调用了gcc,去查找C语言的库文件,然后把这个库文件编译成so文件(也就是二进制共享库文件),然后在整个漏洞代码利用执行当中会再次加载执行之后的so文件。 然后对这个代码进行编译操作,同时指定生成exp文件: 除了这个exp文件,还需要配合上另外一个已经编译生成好的二进制库文件(用locate命令来定位,同时拷贝到当前目录,接下来就是想办法让这两个文件拷贝到目标机上面): 同样还和之前操作一样,在kali上利用python3模块监听http的80端口,再让目标机wget来下载文件: 为了能够执行成功exp文件,我将这两个文件都移动到tmp文件下,然后赋予exp文件(执行exp会读取和调用.so文件)可执行操作,执行成功输入id命令可以看到此时提权成功,已经是root账户了: 回顾:先进行了主机的发现,然后再针对发现的主机进行了端口扫描以及服务的扫描。当扫描结束之后我们发现了目标靶机存在5000端口的一个web应用,尝试访问这个web应用,web应用页面下没有收获漏洞。然后通过web路径到发现/admin后台页面,通过后台地址发现一个远程代码执行漏洞,利用这个漏洞获取到了一个目标系统的反弹shell,但是获得这个shell之后发现自己被困在一个容器系统里面。然后又基于这个容器系统对内网IP地址段进行发现,发现过程中识别出了几个内网主机,分别是172.17.0.1、0.2、0.3。再挂上代理进行内网穿透,对这几个地址全端口扫描,我们发现0.3这个地址上面开启了9200端口,也就是elastic search服务端口,尝试对这个服务漏洞利用和攻击,成功拿下了172.17.0.3这台主机,在这台主机里面继续信息搜集发现一个passwords文件,在里面收获了John账号和密码(当然密码需要破解),拿到这个密码之后尝试在内网所有22端口的主机进行登录,最终成功登录了目标靶机的系统,但是接下来之后又遇到了一个难题,我们只是一个普通账号的用户权限,并没有root权限,所以不得不考虑各种各样的提权的操作。我们想到最直接的方法,因为目标主机是个很老版本内核版本的Linux,所以挑选了针对内核漏洞来提权的利用代码,但是这个漏洞利用代码又没有办法在目标系统上进行gcc编译,所以我们不得不修改代码,重新编译,把编译之后的漏洞利用代码和二进制库文件一起传输到目标服务器上,最终在目标服务器上成功利用这个代码进行本地提权,拿到root权限。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/27 13:40:18- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |