欢迎光临散文网 会员登陆 & 注册

项目五:W1R3S-1

2023-07-12 00:02 作者:沙漠里的鲸  | 我要投稿

#Nmap信息收集

---存活主机探测

---端口探测和OS探测:

---思路1:21的FTP可能存在匿名登陆,收集敏感信息,根据ftp敏感信息和dirb获取80端口Web的目录、文件等,通过cewl分词组成字典对ssh进行爆破

---思路2:结合ftp和80获取Webshell,通过mysql进行提权(这里应该可以远程登陆)

---扫描端口开放的版本信息和漏洞的具体信息

---ftp存在匿名登陆,下面存在content、docs、new-employee三个文件目录

#Ftp匿名登陆

---首先通过ftp进行未授权用户的登陆:账号和密码都是:Anonymous

---进入ftp的文件目录

---将三个txt文件进行下载(另外2个目录也没有什么信息)

---这里发现01.txt和03.txt没有什么信息,02.txt存在2个加密信息(一个是base64,一个未知)

---先看base64加密的内容(也可以使用brupSuite的decode)

---通过hash-identifier识别密码发现可能是MD5

---通过在线网站进行MD5解密,需要尝试其它的思路

#Web层面的漏洞分析

---浏览器访问,界面是apache的默认界面

---dirb爆破Web写入文件:dirb http://192.168.95.131/ -o results.txt

---这里应该是存在一个管理员登陆入口,以及一个wordPress的CMS

---进入管理员界面的介绍,发现是一个名为Cuppa的CMS

---点击next发现是一个类似PHPMyAdmin的网页版本数据库管理工具(这里可能可以爆破)

---谷歌搜索exp:Cuppa CMS exploit

---这里说在/alerts/alertConfigField.php (LINE: 22)文件的22行存在文件包含漏洞

---具体是:<?php include($_REQUEST["urlConfig"]); ?>可以执行URL传参的PHP函数

---注意:单纯的文件包含只能查看敏感文件,如果配合文件上传,可以命令执行

---查看Linux的密码目录:http://target/cuppa/alerts/alertConfigField.php?urlConfig=../../../../../../../../../etc/passwd

---查看Web的数据库配置文件:http://target/cuppa/alerts/alertConfigField.php?urlConfig=php://filter/convert.base64-encode/resource=../Configuration.php

---php://filter/convert.base64-encode/resource=是一种PHP的特殊封装协议,用于读取文件并将其内容转换为Base64编码格式。这种方式常用于读取服务器上的文件内容

#文件包含漏洞原理(以PHP为例)

---require():找不到被包含的文件会产生致命错误,并停止脚本运行
---include():找不到被包含的文件只会产生警告,脚本继续执行
require_once()与require()类似:唯一的区别是如果该文件的代码已经被包含,则不会再次包含
include_once()与include()类似:唯一的区别是如果该文件的代码已经被包含,则不会再次包含

---漏洞成因分析

---利用文件包含,我们通过include函数来执行phpinfo.php页面,成功解析

---将phpinfo.php文件后缀改为txt后进行访问,依然可以解析:

---include()函数并不在意被包含的文件是什么类型,只要有php代码,都会被解析出来

---将phpinfo.jpg的内容改成一段文字:hello world!再次进行访问,可以读出文本内容

---常见的敏感目录信息路径:(一般使用相对路径读取:../../windows/system.ini
---Windows系统:

---Linux系统

---PHP协议:PHP内置了很多URL风格的封装协议

---可用于类似fopen()、copy()、file_exists()和filesize()的文件系统函数

---PHP部分协议的利用条件

---PHP协议相关内容

---文件包含的利用方式

---访问URL发现没有回显(查看前端源代码也没有):

http://192.168.95.131/administrator/alerts/alertConfigField.php?urlConfig=../../../../../../../../../etc/passwd

---源码上<?php include($_REQUEST["urlConfig"]); ?>说明get和post都可以接受

---在GET请求中无法获取到参数值,但在POST请求中可以获取到参数值的原因:

---服务器配置或限制:有些服务器或Web对GET请求中的参数进行了限制或过滤

---例如存在安全设置或防火墙规则,阻止了GET请求中的某些参数或特定字符的传递

---curl来进行访问(curl 是用来请求 Web 服务器。名字是客户端(client)URL 工具的意思)

---构造文件包含的exp:

---data-urlencode将数据进行URL编码,以便POST请求中传递特殊字符

---这对于数据中包含保留字符(如&=等)的情况非常有用

---发现Linux的账号/用户组/shell

---读取密码

curl -s --data-urlencode urlConfig=../../../../../../../../../etc/shadow http://192.168.95.131/administrator/alerts/alertConfigField.php

---注意:/etc/shadow分别对应的文件格式如下:

---在/etc/shadow中复制包含了密码的信息:

---将三个存在密码数据通过Vim写入1.txt文件进行爆破

#JoHn爆破Unix/Linux 系统密码(对大小写不敏感)

---John 自带了一个字典,字典位于/usr/share/john/password.lst

---这里爆破出来两个账号和密码

---ssh登陆ssh www-data@192.168.95.131发现账号不可用

---ssh w1r3s@192.168.95.131登陆

#SUDO提权

---发现是普通用户,但是所属组(Groups): w1r3s, adm, cdrom, sudo, dip, plugdev, lpadmin, sambashare(不知道属于sudo用户组是不是可以提权,但是root可以)

---直接通过登陆root继续提权

#利用脚本信息收集提权

---目前为止信息收集的方法:1.uname -a 2.linpeas.sh 3.linux-exploit-suggester

--执行linpeas.sh进行Linux提权的信息收集

---这里给出了系统的版本

---sudo的版本:考虑sudo提权

---这里可以利用的软件,如gcc/python/sudo等

---这里计划任务,但是非root不能修改

---这里发现了adm用户组:

linux中用户的类型

---超级用户:用户名为root,它具有一切权限
---系统用户(伪用户):Linux系统正常工作所必需的用户。主要是为了满足相应的系统进程对 文件属主的要求而建立的,例如:bin、daemon、adm、lp等用户,系统用户不能用来登录

---普通用户:是为了让使用者能够使用Linux系统资源而建立的

---这里是WordPress的配置文件

---注意:这里/etc/passwd具有可以写权限,可以通过修改/etc/passwd进行提权

---使用perl语言生成带有盐值的密码

---此地的123456便是我们要加盐的密码

---将有需要的用户user2构建root组,然后添加到/etc/passwd中

---查看一下/etc/passwd文件,发现我们添加的用户已经写入

---试进行登录用户user2,密码是我们设置的123456

---发现我们创建的用户user2,是以root的权限在登录

---进入root后通过find命令查找alertConfigField.php:

find /  -name alertConfigField.php 2> /dev/null

---发现文件包含漏洞:include_once(realpath(__DIR__ . '/..')."/classes/Cuppa.php");

---通过grep筛选urlConfig关键字:cat /var/www/html/administrator/alerts/alertConfigField.php | grep "urlConfig"

---发现这里竟然是POST提交,和EXP里面的描述略有出入

#文件包含漏洞的防护

---1、使用str_replace等方法过滤掉危险字符
---2、配置open_basedir防止目录遍历(open_basedir 将php所能打开的文件限制在指定的目录树中)
---3、php版本升级,防止%00截断
---4、对上传的文件进行重命名,防止被读取
---5、对于动态包含的文件可以设置一个白名单,不读取非白名单的文件。
---6、做好管理员权限划分,做好文件的权限管理,allow_url_include和allow_url_fopen最小权限化
#知识点总结

---1.Nmap进行存活主机、端口、OS版本、端口漏洞扫描

---2.Ftp匿名登陆漏洞下载文件

---3.hash-identifier识别base64/MD5密码,在线网站解密

---4.dirb扫描Web路径,识别Cuppa、WordPress等CMS

---5.文件包含的原理:include() ,require() ,include_once(), require_once()

---6.PHP的伪协议:file读取本地文件、php://filter用于读取源码php://input命令执行、ZIP://协议命令执行、data://协议命令执行

---7.文件包含利用方式:1.读取敏感文件获取用户密码2.和文件上传漏洞(图片马)结合3.和Apache日志文件结合命令执行(brupSuite修改URL编码)4.包含seesion文件var/lib/php/sess_PHPSESSID,BurpSuite修改session5.包含临时文件(条件竞用,暴破文件名)6.远程包含命令执行(php版本小于5.3.4,我们可以尝试使用%00截断,GET传参?截断)

---8.文件包含读取../etc/shadow,john爆破获取系统用户密码

---9.root/sudo用户组进行Sudo提权,/etc/passwd文件可写入提权

---10.Linux信息搜集:1.uname -a (内核信息收集|简洁低效)2.linpeas.sh(系统信息收集|全面繁杂) 3.linux-exploit-suggester(漏洞信息收集|方便快捷)


项目五:W1R3S-1的评论 (共 条)

分享到微博请遵守国家法律