Sql Injection
一、信息收集
操作系统,数据库系统,数据库名,数据库用户,版本信息,网站路径等
version() 数据库版本
@@version_compile_os 操作系统
user() 当前用户
database() 数据库名
二、判断注入点
information_scheme
三、注入
1.加入单引号 ’提交,
结果:如果出现错误提示,则该网站可能就存在注入漏洞。
2.数字型判断是否有注入;
语句:and 1=1 ;and 1=2 (经典)、’ and ‘1’=1(字符型)
结果:分别返回不同的页面,说明存在注入漏洞.
分析:and 的意思是“和”如果没有过滤我们的语句,and 1=1就会被代入SQL查询语句进行查询,
如果and前后的两条语句都是真的话就不会出错,但如果前后语句有一个为假的话,程序就会暴错。
也就表明程序有注入漏洞
防注入解决办法:
使用or 2>1 ; or 1>2来进行判断
结果:分别返回不同的页面,说明存在注入漏洞.
分析:or注入只要求前后两个语句只要有一个正确就为真,如果前后两个语句都是正确的,反而为
假。
记住:or注入时,or后面的语句如果是正确的,则返回错误页面!如果是错误,则返回正确页面
,说明存在注入点。
使用xor 1=1; xor 1=2
结果:分别返回不同的页面,说明存在注入漏洞.
分析:xor 代表着异或,意思即连接的表达式仅有一个为真的时候才为真。
记住:xor注入时,xor后面的语句如果是正确的,则返回错误页面积,如果是错误,则返回正确
页面,说明存在注入点。
把and 1=1转换成URL编码形式后在提交
and 1=1 URL编码:%41%4E%44%20%%31%3D%31
使用-1;-0
分析:如果返回的页面和前面不同,是另一则新闻,则表示有注入漏洞,是数字型的注入漏洞;在
URL地址后面加上 -0,URL变成 news.asp?id=123-0,返回的页面和前面的
页面相同,加上-1,返回错误页面,则也表示存在注入漏洞.
3.字符型判断是否有注入:
语句:’ and ‘1’=1;’ and '1=2(经典)
结果:结果:分别返回不同的页面,说明存在注入漏洞.
分析:加入’ and ‘1’=1返回正确页面,加入’ and '1=2返回错误页面,说明有注入漏同。
防注入解决办法:
在URL的地址后面加上’%2B’(字符型)
分析:URL地址变为:news.asp?id=123’%2B’,返回的页面和1同;加
上’2%2B’asdf,URL地址变为:news.asp?id=123’%2Basdf,返回的页面和1
不同,或者说未发现该条记录,或者错误,则表示存在注入点,是文本型的。
4.搜索型判断是否有注入:
简单的判断搜索型注入漏洞存在不存在的办法是先搜索’,如果出错,说明90%存在这个漏洞。然后搜
索%,如果正常返回,说明95%有洞了。
说明:加入如"&;“、”[“、”]“、”%“、”$“、”@"等特殊字符,都可以实现,如果出现错误,说明有问题
操作:
搜索一个关键字,比如2006吧,正常返回所有2006相关的信息,再搜索2006%'and 1=1 and ‘%’='和
2006%‘and 1=2 and ‘%’=’,存在异同的话,就是100%有洞了。
关键字%’ and 1=1 and ‘%’='%
关键字%’ and 1=2 and ‘%’='%
将and 1=1 换成注入语句就可以了
一,SQL注入的原理和防御机制
原理:就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,达到欺骗服务器执行恶意的SQL命令
防御机制:1.对用户输入的数据类型做严格限制
2.使用预编译绑定变量的SQL语句
3.过滤特殊字符
4.数据库信息加密,使用数据库防火墙,web防火墙
二,XSS注入的原理和防御机制
原理:恶意攻击者往Web页面里插入恶意javaScript代码,当用户浏览该页之时,嵌入其中Web里面的javaScript代码会被执行,从而达到恶意攻击用户的目的。
XSS与CSRF的区别:
XSS
是获取信息,不需要提前知道其他用户页面的代码和数据包。CSRF
是代替用户完成指定的动作,需要知道其他用户页面的代码和数据包。要完成一次CSRF攻击,受害者必须依次完成两个步骤:
1.登录受信任网站A,并在本地生成Cookie。
2.在不登出A的情况下,访问危险网站B。
防御机制:编码,过滤,校正,内容安全策略(CSP)
三,CSRF防御机制:
1.Token****验证
2.check Referer
3.验证码
4.使用post请求方式
四.SSRF
原理:服务器端所提供的接口中包含了所要请求的内容的URL参数,并且未对客户端所传输过来的URL参数进行过滤。
防御机制:
1.设置url白名单或者限制内网ip
2.限制协议为HTTPS,HTTP
3.不用302重定向
4.限制请求的端口为http常用的端口
5.过滤返回信息,统一错误信息
五,sqlmap常用的注入方法:
post:-r,data
绕过防火墙的方法:
1.-random-agent #使用任意浏览器进行绕过,尤其是在WAF配置不当的时候
2.–hpp 参数污染进行绕过,尤其是在ASP.NET/IIS 平台上
3.–delay=3.5 --time-sec=60 #使用长的延时来避免触发WAF的机制,这方式比较耗时
4.–proxy 使用代理注入
5.–tor # 匿名注入
6.–tamper 编码脚本
risk:越高风险越高,功能会篡改数据库内容,增加危险的sql注入语句
level:不仅仅是增加sql注入payload,还会加大注入面,更加全面的扫描
六.问题:
1.给你一个网站你是如何来渗透测试的?
在获取书面授权的前提下。
1)信息收集,1,获取域名的whois信息,获取注册者邮箱姓名电话等。
2,查询服务器旁站以及子域名站点,因为主站一般比较难,所以先看看旁站有没有通用性的cms或者其他漏洞。
3,查看服务器操作系统版本,web中间件,看看是否存在已知的漏洞,比如IIS,APACHE,NGINX的解析漏洞
4,查看IP,进行IP地址端口扫描,对响应的端口进行漏洞探测,比如 rsync,心脏出血,mysql,ftp,ssh弱口令等。
5,扫描网站目录结构,看看是否可以遍历目录,或者敏感文件泄漏,比如php探针
6,google hack 进一步探测网站的信息,后台,敏感文件
2)漏洞扫描
开始检测漏洞,如XSS,XSRF,sql注入,代码执行,命令执行,越权访问,目录读取,任意文件读取,下载,文件包含,
远程命令执行,弱口令,上传,编辑器漏洞,暴力破解等3)漏洞利用
利用以上的方式拿到webshell,或者其他权限4)权限提升
提权服务器,比如windows下mysql的udf提权,serv-u提权,windows低版本的漏洞,如iis6,pr,巴西烤肉,
linux藏牛漏洞,linux内核版本漏洞提权,linux下的mysql system提权以及oracle低权限提权
- 日志清理
6)总结报告及修复方案
2.mysql的网站注入,5.0以上和5.0以下有什么区别?
- 5.0以下没有information_schema这个系统表,无法列表名等,只能暴力跑表名。
- 5.0以下是多用户单操作,5.0以上是多用户多操做。
3.在渗透过程中,收集目标站注册人邮箱对我们有什么价值?
- 丢社工库里看看有没有泄露密码,然后尝试用泄露的密码进行登录后台。
- 用邮箱做关键词进行丢进搜索引擎。
- 利用搜索到的关联信息找出其他邮进而得到常用社交账号。
- 社工找出社交账号,里面或许会找出管理员设置密码的习惯 。
- 利用已有信息生成专用字典。
- 观察管理员常逛哪些非大众性网站,拿下它,你会得到更多好东西。
4.判断出网站的CMS对渗透有什么意义?
- 查找网上已曝光的程序漏洞。
- 如果开源,还能下载相对应的源码进行代码审计。
5.一个成熟并且相对安全的CMS,渗透时扫目录的意义?
- 敏感文件、二级目录扫描
- 站长的误操作比如:网站备份的压缩文件、说明.txt、二级目录可能存放着其他站点
6.常见的网站服务器容器。
- IIS、Apache、nginx、Lighttpd、Tomcat
7.mysql注入点,用工具对目标站直接写入一句话,需要哪些条件?
- root权限以及网站的绝对路径。
8.目前已知哪些版本的容器有解析漏洞,具体举例。
- IIS 6.0
/xx.asp/xx.jpg "xx.asp"是文件夹名
- IIS 7.0/7.5
默认Fast-CGI开启,直接在url中图片地址后面输入/1.php,会把正常图片当成php解析
- Nginx
版本小于等于0.8.37,利用方法和IIS 7.0/7.5一样,Fast-CGI关闭情况下也可利用。
空字节代码 xxx.php%00.jpg
- Apache
上传的文件命名为:test.php.x1.x2.x3,Apache是从右往左判断后缀
- lighttpd
xx.jpg/xx.php,不全,请小伙伴们在评论处不吝补充,谢谢!
9.如何手工快速判断目标站是windows还是linux服务器?
- linux大小写敏感,windows大小写不敏感。
10.为何一个mysql数据库的站,只有一个80端口开放?
- 更改了端口,没有扫描出来。
- 站库分离。
- 3306端口不对外开放
11.3389无法连接的几种情况。
- 没开放3389 端口
- 端口被修改
- 防护拦截
- 处于内网(需进行端口转发)
12.如何突破注入时字符被转义?
- 宽字符注入
- hex编码绕过
13.在某后台新闻编辑界面看到编辑器,应该先做什么?
- 查看编辑器的名称版本,然后搜索公开的漏洞。
14.拿到一个webshell发现网站根目录下有.htaccess文件,我们能做什么?
- 能做的事情很多,用隐藏网马来举例子:
插入
<FilesMatch "xxx.jpg"> SetHandler application/x-httpd-php </FilesMatch>
.jpg文件会被解析成.php文件。- 具体其他的事情,不好详说,建议大家自己去搜索语句来玩玩。
15.注入漏洞只能查账号密码?
- 只要权限广,拖库脱到老。
16.安全狗会追踪变量,从而发现出是一句话木马吗?
- 是根据特征码,所以很好绕过了,只要思路宽,绕狗绕到欢,但这应该不会是一成不变的。
17.access 扫出后缀为asp的数据库文件,访问乱码。如何实现到本地利用。
- 迅雷下载,直接改后缀为.mdb。
18.提权时选择可读写目录,为何尽量不用带空格的目录?
- 因为exp执行多半需要空格界定参数
19.某服务器有站点A,B 为何在A的后台添加test用户,访问B的后台。发现也添加上了test用户?
- 同数据库。
20.注入时可以不使用and 或or 或xor,直接order by 开始注入吗?
and/or/xor,前面的1=1、1=2步骤只是为了判断是否为注入点,如果已经确定是注入点那就可以省那步骤去。
21:某个防注入系统,在注入时会提示:
系统检测到你有非法注入的行为。 已记录您的ip xx.xx.xx.xx 时间:2016:01-23 提交页面:test.asp?id=15 提交内容:and 1=1
如何利用这个防注入系统拿shell?
- 在URL里面直接提交一句话,这样网站就把你的一句话也记录进数据库文件了 这个时候可以尝试寻找网站的配置文件 直接上菜刀链接。具体文章参见:http://ytxiao.lofter.com/post/40583a_ab36540。
22.上传大马后访问乱码时,有哪些解决办法?
- 浏览器中改编码。
23.审查上传点的元素有什么意义?
- 有些站点的上传文件类型的限制是在前端实现的,这时只要增加上传类型就能突破限制了。
24.目标站禁止注册用户,找回密码处随便输入用户名提示:“此用户不存在”,你觉得这里怎样利用?
- 先爆破用户名,再利用被爆破出来的用户名爆破密码。
- 其实有些站点,在登陆处也会这样提示
- 所有和数据库有交互的地方都有可能有注入。
25.目标站发现某txt的下载地址为http://www.test.com/down/down.php?file=/upwdown/1.txt,你有什么思路?
- 这就是传说中的下载漏洞!在file=后面尝试输入index.php下载他的首页文件,然后在首页文件里继续查找其他网站的配置文件,可以找出网站的数据库密码和数据库的地址。
26.甲给你一个目标站,并且告诉你根目录下存在/abc/目录,并且此目录下存在编辑器和admin目录。请问你的想法是?
- 直接在网站二级目录/abc/下扫描敏感文件及目录。
27.在有shell的情况下,如何使用xss实现对目标站的长久控制?
- 后台登录处加一段记录登录账号密码的js,并且判断是否登录成功,如果登录成功,就把账号密码记录到一个生僻的路径的文件中或者直接发到自己的网站文件中。(此方法适合有价值并且需要深入控制权限的网络)。
- 在登录后才可以访问的文件中插入XSS脚本。
28.后台修改管理员密码处,原密码显示为*。你觉得该怎样实现读出这个用户的密码?
- 审查元素 把密码处的password属性改成text就明文显示了
29.目标站无防护,上传图片可以正常访问,上传脚本格式访问则403.什么原因?
- 原因很多,有可能web服务器配置把上传目录写死了不执行相应脚本,尝试改后缀名绕过
30.审查元素得知网站所使用的防护软件,你觉得怎样做到的?
- 在敏感操作被拦截,通过界面信息无法具体判断是什么防护的时候,F12看HTML体部 比如护卫神就可以在名称那看到
<hws>内容<hws>
。31.在win2003服务器中建立一个 .zhongzi文件夹用意何为?
- 隐藏文件夹,为了不让管理员发现你传上去的工具
且需要深入控制权限的网络)。
- 在登录后才可以访问的文件中插入XSS脚本。
28.后台修改管理员密码处,原密码显示为*。你觉得该怎样实现读出这个用户的密码?
- 审查元素 把密码处的password属性改成text就明文显示了
29.目标站无防护,上传图片可以正常访问,上传脚本格式访问则403.什么原因?
- 原因很多,有可能web服务器配置把上传目录写死了不执行相应脚本,尝试改后缀名绕过
30.审查元素得知网站所使用的防护软件,你觉得怎样做到的?
- 在敏感操作被拦截,通过界面信息无法具体判断是什么防护的时候,F12看HTML体部 比如护卫神就可以在名称那看到
<hws>内容<hws>
。31.在win2003服务器中建立一个 .zhongzi文件夹用意何为?
- 隐藏文件夹,为了不让管理员发现你传上去的工具